Styresystem

(eller: operativsystem, operating system, OPSYS, OS, executive).

Styresystemet udfylder det tomrum, der er mellem den nøgne maskine, som produceres på fabrikken, og de forventninger, en bruger/programmør har, når vedkommende anskaffer et system. Bortset fra problemet med bootstrap af en tom maskine uden programmel, kan den sagtens bruges i en række sammenhænge. Det viser sig imidlertid hurtigt, at en række problemer er fælles for stort set alle større programmer og anvendelser, idet maskinens materiel i den sammenhæng savner en lang række funktioner. Det drejer sig om interruptsystemet, brug af arbejdslager og baggrundslager, etablering af fil- og katalogsystem, deling af CPU'ens kapacitet og af de ydre enheder, tilslutninger til datanet, samt beskyttelse af data mod ændringer ved uheld eller sabotage.

Disse problemer løses bedst én gang for alle ved at introducere et styresystem. Idet arbejdslager, baggrundslager, CPU osv. opfattes som ressourcer, der stilles til rådighed for brugerne, er styresystemets opgave at administrere disse ressourcer, således at de efter givne kriterier udnyttes bedst muligt. Styresystemet har dertil opgaver af sikkerhedsmæssig art og kan stille generelt anvendelige programbiblioteker (se library) til rådighed.

Det er vanskeligt at lave en præcis afgrænsning mellem styresystem og de tilhørende nytteprogrammer (utilities). Små systemer leveres med et minimalt styresystem, større systemer har en hel del programmel med, og for store systemer kan det, der falder ind under betegnelsen styresystem, have et anseligt omfang. Alene spørgsmålet, om oversættere til diverse sprog eller en browser hører til styresystemet, viser den usikkerhed, der er til stede.

Styresystemet er egentlig kun et almindeligt program (ofte et multiprogram), men det adskiller sig fra f.eks. opgaveprogrammel ved, at det er i brug hele tiden, uanset hvad der i øvrigt foregår i computeren. Et styresystemstop er en alvorlig ting, der ikke bør forekomme. Styresystemer var i 1950'erne relativt små assemblerprogrammer af størrelsesordenen 16 KB. Med indførelsen af interaktive systemer og viduesorienterede brugergrænseflader voksede størrelsen voldsomt, og vedligeholdelsen af de store programmer blev et meget alvorligt problem (jfr. allerede IBM OS/360 fra 1960'erne). Sproget PL/I blev anvendt forsøgsvis som systemprogrammeringssprog, og sproget C er opstået i kølvandet på disse eksperimenter som et sprog velegnet til programmering af styresystemer og oversættere. Der vil dog næsten altid være en lille kerne, som må kodes i assembler.

Styresystemer har to grænseflader til brugerne: Systemkald, som er måden, programmer benytter sig af styresystemets faciliteter på, og en brugergrænseflade. Denne tager ofte form af en fortolker, også kaldet en shell, der udfører kommandoer, skrevet i styresystemets kommandosprog. Dette kan ligne et programmeringssprog. Moderne styresystemer har ofte en grafisk brugergrænseflade, der ligner den, en browser stiller til rådighed. En teoretisk indfaldsvinkel til systemkaldene er, at disse sammen med de uprivilegerede maskininstruktioner kan siges at udgøre den logiske computer, som brugeren ønskede, og som ingeniøren ikke lavede.

Styresystemer findes i mange udgaver, afhængig af leverandør, computertype og formål. Tidligere var der stor variation inden for styresystemer til generelle formål, men der er i øjeblikket en tendens til, at styresystemer til mindre anlæg er ved at blive standardiserede, f.eks. UNIX til mellemstore og mindre computere og DOS, Windows og OS/2 til PC'er. Dette er en stor fordel for brugerne, idet en vigtig hindring for flytning af programmel var den store forskel på den måde, programmerne kaldte systemet på. Fuldstændig standardisering kan dog ikke forventes, idet styresystemet er bestemmende for computerens driftsform, som f.eks. kan være bundtvis, transaktionsorienteret eller tidstro databehandling. Disse driftsformer stiller meget forskellige krav til styresystemets udformning.

Standardiseringen af styresystemer vil først og fremmest ske for systemkaldenes vedkommende, idet det er en væsentlig forudsætning for udbredelsen og prissætningen af standardprogrammel. Med PC'erne er interessen øget for at skabe et sæt af begreber og internationale standarder for styresystemer, der på længere sigt gør brugerne mindre afhængige af leverandører og teknologi. Eksempelvis er UNIX under standardisering (se POSIX, System V Interface Definition og X/OPEN).

Styresystemet er normalt opdelt i et antal komponenter, der hver varetager specifikke opgaver. En komponent kan f.eks. tage sig af håndteringen af filer på baggrundslagre, en anden (eller den samme) tage sig af filkataloger. Det er velbekendt, at programmer sjældent er fejlfri (og dette gælder specielt i programmeludviklingsmiljø), men dette bør ikke få konsekvenser for andre programmer. De fleste større styresystemer indeholder derfor et sikkerhedssystem, der isolerer et program fra andre samtidigt kørende programmer.

Et andet aspekt er beskyttelse mod uautoriseret brug af programmer, data og andre ressourcer. Dette gælder især store computere, der benyttes af mange brugere til forskellige formål; det er væsentligt, at der er kontrol med, hvem der har adgang til at læse, henholdsvis ændre, i følsomme data. Denne adgangskontrol foretages af styresystemet, dels ved log-on, dels løbende, og kan f.eks. have som konsekvens, at en bruger skal angive et password for at komme til at benytte computeren og dens forskellige faciliteter.

Af andre funktioner, som styresystemet stiller til rådighed, kan nævnes: spoolfunktion, udvidelse af arbejdslageret ved hjælp af virtuelt lager, netfaciliteter (se f.eks. åbne systemer), styring af vinduer på terminaler. Specielt i forbindelse med datakommunikation er styresystemerne ved at udvikle sig fra at være "jeg alene i verden"-systemer til at blive samarbejdende systemer; her kan nævnes netstyresystemer, som er styresystemer med integrerede netfunktioner, og fordelte (eller distribuerede) styresystemer, som får et antal computere til at optræde som ét samarbejdende system. Se også lokalnetstyresystem.

Som eksempler på udbredte styresystemer kan ud over DOS, Windows og UNIX nævnes CP/M, MVS, VMS, VM/370 og UNIX-varianter som LINUX.

Forfattere: 
Klaus Hansen
Casper Thomsen