Operativsystemer generelt

I kapitlene om datateknologi beskrives datamaskinens hardvare, det vil si hvilke deler en datamaskin består av, og hvordan de fungerer. Men hardvare er ikke nok. For å få nytte av maskinen, må en også ha programvare til å kjøre på den. Hvilke programmer vi legger inn på maskinen vil variere, eksempler på populære programmer er tekstbehandlingsprogrammet Microsoft Word, og nettleseren Internet Explorer.

På alle datamaskiner kjører imidlertid et hovedprogram, operativsystemet, ofte forkortet OS. Operativsystemet samordner og administrerer maskinens mange deler. Det gjør det også mulig for mennesker å kommunisere med maskinen, og å kjøre programmer, slik som Word og Explorer. Et velkjent eksempel på et operativsystem er Windows, som er dominerende på hjemme-PC-er. Andre eksempler er Linux, Unix, Mac OS, Palm OS, OS/2, MS-DOS, og det norske SINTRAN.

Operativsystemets oppgaver
Operativsystemet administrerer datamaskinen

Operativsystemets hoveddeler

Operativsystemet består av to hoveddeler, kjernen og skallet. Kjernen ligger innerst og kommuniserer med maskinvaren. Skallet ligger ytterst og kommuniserer med brukerne.

Kjerne og skall
Operativsystemets to hoveddeler, kjernen og skallet

Kjernen

Kjernens hovedoppgaver er å

Administrere ressursene på maskinen, det vil si å sørge for at brukere og programmer deler ressursene rettferdig, uten å komme i konflikt med hverandre. De viktigste ressursene er:

  • Prosessortid.
  • Internminne (RAM).
  • Filsystem.
  • Utføre basisoperasjoner:

Registrere inndata fra brukerne, slik som tastetrykk, museklikk, og musebevegelser.

Sende utdata til skjerm og skrivere.

Kommunisere med nettverket.

Få operativsystemet i gang når maskinen slås på. Dette kalles gjerne booting, eller bootstrapping.

Administrering av prosessortid

At et program kjører på en datamaskin, betyr at det behandles av datamaskinens hjerne, prosessoren (CPU). På en datamaskin kjører gjerne en mengde programmer, som igjen kan bestå av en mengde enkeltprosesser. Mange datamaskiner har også ofte mange samtidige brukere. Men selv på en datamaskin med bare én prosessor, får tilsynelatende alle brukerne kjørt sine programmer samtidig. Dette er takket være operativsystemet, som sørger for at alle prosesser får sin rettmessige del av prosessorens arbeidskraft. Vi snakker om

Fleroppgavekjøring (Multitasking). Flere programmer kjører samtidig.

Flertrådet kjøring (Multithreading). Et program deles opp i flere prosesser (tråder), som kan kjøre samtidig.

Flerbrukerkjøring (Multi-user). Flere brukere kan kjøre samtidig.

Mange brukere kan altså kjøre mange programmer, som igjen kan bestå av mange prosesser. Operativsystemet selv eier også en mengde prosesser. Ved å la prosessoren bytte lynraskt mellom prosessene, skapes en illusjon av at alt kjører samtidig.

Skjematisk kan en tenke seg at alle prosessene står i kø for å få kjøretid, og når de har fått sine millisekunder, stiller de seg bakerst igjen – inntil de er ferdige og går ut av køen. En slik strategi heter round robin, og er den enkleste formen for prosessprioritering (scheduling). I praksis brukes imidlertid ofte mer innfløkte prioriteringsstrategier.

En annen sak er at en prosess ofte ikke er klar til å kjøre fordi den venter på noe, for eksempel data fra en I/O-enhet, så som et tastetrykk. I løpet av tiden mellom to tastetrykk kan en prosessor utføre millioner av operasjoner, så det ville være meningsløst å beholde en slik ventende prosess i køen. Den plasseres i stedet i ei liste med suspenderte prosesser, inntil den igjen er klar. Dette er illustrert under:

Livsløpet til en prosess
Livsløpet til en prosess

Administrering av internminne

Programmer som kjører, så vel som data de arbeider på, ligger i internminnet (RAM). Operativsystemet sørger for at alle programmer får tildelt sitt eget område i minnet, og holder kontroll på at ikke noe program får tilgang til andre programmers data. Prosesser (tråder) som tilhører samme program, kan imidlertid dele data.

Internminnet er ofte ikke stort nok til å holde på all informasjon samtidig. Operativsystemet håndterer dette ved en prosess som heter sideveksling, der en dumper deler av minnet som for øyeblikket ikke er i bruk til harddisken, og kopierer det inn igjen ved behov. En teknikk som heter virtuelt minne gjør at alt allikevel, sett fra prosessorens synsvinkel, tilsynelatende ligger i internminnet. Det finnes en mengde teknikker for å avgjøre hvilke deler av internminnet en skal velge å dumpe til disk, en vanlig metode er LRU, ′Least Recently Used′, som velger de deler av internminnet som har vært minst brukt den siste tiden.

Jo mindre internminne en maskin har, jo oftere må operativsystemet kopiere inn og ut fra disk. Siden lesing og skriving på disk er svært mye langsommere enn lesing og skriving i internminne, vil for lite internminne føre til en treg maskin. Det finnes en kritisk grense, der maskinen brått går over fra å fungere tilfredsstillende til å bli uakseptabelt treg.

Filsystem

Data som skal beholdes når datamaskinen slås av, lagres i filer på et medium der informasjonen beholdes når strømmen blir borte. (Ikke volatilt) Dette er gjerne maskinens harddisk, men kan også være en nettverksdisk, flash-minne, eller et hvilken som helst ikke-volatilt medium. Operativsystemet holder rede på disse dataene ved hjelp av et filsystem.

I tidlige filsystemer lå alle filene på en lang rekke etter hverandre, men i dag brukes hierarkiske systemer. Det vil si at filene organiseres i mapper (kataloger), som også kan inneholde andre mapper. Øverst ligger en spesiell mappe som kalles rotmappa. Når en tegner opp et slikt filsystem, får det form som et tre med rota i været. Dette er illustrert i figuren under, som viser et filhierarki med fire nivåer. På øverste nivå finner vi rotmappa, som inneholder mappene ′Privat′, ′Fag′ og ′Sport′. ′Privat′ inneholder fila ′Brevmal.doc′ og mappa ′Velforening′. ′Velforening′ inneholder igjen fila ′Navneliste.doc′ og mappa ′Referater′, etc. I praksis inneholder et filsystem mange flere nivåer, og mange flere mapper og filer på hvert nivå.

Filehierarki
Hierarkisk filstruktur

Mens en i internminnet kan lese og skrive én og én enhet (byte), kan en i filsystemet bare lese grupper av enheter. Den teoretisk minste gruppen er en sektor, men sektorene er i praksis gruppert i klynger, (clusters) som den minste enheten som kan lese og skrives. En typisk harddisk-klynge på en PC inneholder fire kilobytes. En kan imidlertid selv justere dette, ved å endre på hvor mange sektorer en klynge skal inneholde. En klynge kalles også en tildelingsenhet.

Siden en klynge er den minste lagringsenheten, vil en fil alltid oppta minst like mange lagringsenheter som det er i en klynge. Selv en fil med et innhold på bare 1 byte vil altså legge beslag på 4 kilobytes i et filsystem med en klyngestørrelse på 4 kilobytes. Filer som er for store til å få plass i en enkelt klynge, fordeles på flere klynger. Disse kan gjerne være spredd utover lagringsmediet.

Ved hjelp av tabeller holder operativsystemet rede på den hierarkiske strukturen i filsystemet, og hvilke klynger filene befinner seg i. Tabellen inneholder også informasjon om ledige klynger, og eventuelt ødelagte klynger.

Når en sletter en fil, gjør ofte operativsystemet bare en oppdatering av filtabellen ved å markere filens klynger som ledige. Selve fildataene forblir urørt. Det vil derfor ofte være mulig å hente fram igjen en slettet fil, så lenge ikke en har lagt inn noe nytt som har overskrevet klyngene.

Administrasjon av brukere og rettigheter

En ønsker ofte å begrense hvem som får bruke en datamaskin, og det er operativsystemets oppgave å sørge for tilgangskontroll. Den som vil inn, må logge på med brukernavn og passord, som operativsystemet så kontrollerer mot sine lister.

Etter innlogging sørger operativsystemet for å begrense brukerens aktiviteter til det vedkommende har rettigheter til. Rettigheter tildeles gjerne på forskjellige nivåer. På laveste nivå finnes gjestebrukere – med svært begrensede privilegier, på høyeste nivå superbrukere / administratorer med alle rettigheter.

Når mange brukere har tilgang til samme datamaskin, må operativsystemet sørge for at de ikke går i beina på hverandre. Det vil si sørge for at hver bruker får sin private plass i internminnet, at alle brukernes prosesser får kjøre, og at de enkelte brukernes filer og mapper holdes fra hverandre.

Filer og mapper har rettigheter som administreres av operativsystemet. Typiske rettigheter er ′lese′, ′skrive′, ′opprette′, ′endre′ og ′kjøre′. Rettighetene eieren av ei fil eller mappe har, vil kunne være forskjellig fra det andre har. Operativsystemene har avanserte mekanismer for å styre fil- og mappetilganger.

Bootstrapping

For at en skal kunne bruke en datamaskin, må den ha et operativsystem på plass. Når maskinen starter opp, må det derfor finnes en mekanisme som sørger for at operativsystemet kommer i gang. At denne mekanismen er operativsystemets oppgave, later til å være en cactch 22: En trenger et operativsystem for å få lastet inn operativsystemet. Dette har gitt opphav til navnet bootstrapping, som visstnok kommer fra en historie der Baron von Münchhausen unnslapp drukningsdøden ved å hale seg selv opp etter skolissene.

I praksis løser en problemet ved å la prosessen gå i flere trinn. En liten del av operativsystemet ligger hardkodet i datamaskinen, og begynner automatisk å kjøre når maskinen skrues på. Denne delen sørger så for at en større del av operativsystemet lastes inn fra disk, og denne kan igjen brukes til å laste inn enda mer, etc.

På en PC lokaliseres de første delene i et ROM-minne som heter BIOS. BIOS er forkortelse for Basic Input Output System, men betyr også ′liv′ på gresk. En del av innholdet i BIOS kan endres av brukeren, en kan for eksempel velge om den videre oppstarten skal skje fra harddisk, CD-ROM eller nettverk.

BIOS sørger for at det kjøres POST, Power On Self Test, der det sjekkes hva slags hardvare som er til stede, for eksempel hvor mye internminne maskinen har, og at hardvaren fungerer.

Deretter overføres kontrollen til en oppstartsenhet, det vil si harddisk, CD-ROM eller nettverk, alt etter hva brukeren har satt i BIOS. Fra oppstartsenheten leses først hovedpartisjonssektor (Master Boot Record), deretter lastes resten av systemet.

Skallet

Skallets oppgave er å gjøre brukeren i stand til å kommunisere med kjernen. I tidlige datamaskiner foregikk dette ved hjelp av et tekstskall, der brukeren skrev kommandoer på tastaturet, og fikk svar i form av tekst. Moderne datamaskiner har imidlertid ofte grafiske skall (GUI). Her kommuniserer brukeren ved å peke, klikke og dra. Et slikt skall er for eksempel det som møter oss når vi starter Windows.

Selv om grafiske skall er brukervennlige, har tekstskall også sine fordeler. De er lite ressurskrevende, og mye mer fleksible enn grafiske skall. Har en for eksempel hundre filer der en vil bytte ut ′.txt′ i filnavnet med ′.java′, gjøres det enkelt med noen få kodelinjer, i stedet for å hundre ganger måtte klikke på en fil, velge ′bytt navn′ fra en meny, og skrive inn navneendringen.

Figuren under bruker et tekstskall og et grafisk skall fra Windows til å vise innholdet i ei mappe som heter ′Privat′, og inneholder fila ′Brevmal.doc′ og mappa ′Velforening′.

Grafisk skall
Grafisk skall
Tekstskall
Tekstskall. («<DIR>» betyr ′directory′, altså ′mappe′.)

Kjernemodus og brukermodus

Det kan virke underlig at det er kjernen som tar imot tastetrykk fra brukerne, siden brukerkommunikasjon er skallets oppgave. Imidlertid er det kjernens oppgave å kommunisere med alle enheter som er tilkoplet datamaskinen. Det som skjer er at skallet ved hjelp av systemkall ber kjernen om å utføre oppgaver for seg, for eksempel å få data fra tastaturet. Når dette skjer, går prosessoren over fra å kjøre i brukermodus til å kjøre i kjernemodus, og det er kun i kjernemodus at det gis tilgang til vitale deler av maskinen. På den måten sikrer en seg mot at brukere tilsiktet eller utilsiktet ødelegger for seg selv eller andre.

I praksis bruker en ofte mange lag av sikkerhetsringer i stedet for bare to modi.

Noen gamle operativsystemer, slik som MS-DOS, hadde ingen slike sikkerhetssystemer, slik at brukeren enkelt kunne krasje maskinen fullstendig.

Kilder

  • Forelesningsnotater av Marit Fagernes
  • Bård Kjos: Informasjonsteknologi. Tapir Akademisk forlag, 2004