Operativsystemet Internt Kjell Åge Bringsrud INF 103 Opsys. internt 1 Singletasking OS Små og enkle Trenger Filhåndtering og device-drivere Trenge brukergrensesnitt Trenger ikke skedulering av I/O Trenger ikke skedulering av prosesser Begrenset behov for sikkerhet mot interference Enkel minneadministrasjon (fast lokasjon for det kjørende programmet) Trenger ikke interprosesskommunikasjon Opsys. internt 2 1
Multitasking OS Betydelig større Trenger ressurshåndtering av CPU-tid Minne I/O Enkelte moderne multitasking operativsystemer for PC er krever flere titalls megabyte memory. Opsys. internt 3 MINOS et lite multitasking operativsystem Opprinnelig laget for små maskiner som foretok målinger Forskjellige operasjoner har forskjellig prioritet Tre prioritetsnivåer høy, middels og lav Målinger har høy prioritet, intern systemsjekk har lav prioritet Opp til fem aktive prosesser av gangen. En høyprioritets, tre middelsprioritets, og en lavprioritetsjobb. Opsys. internt 4 2
Minnehåndtering i MINOS Hele operativsystemet er resident Et område per aktivt prosess P-1 reservert for høyprioritetsprosesser P-2 til P-4 til prosesser av middels prioritet P-5 til lavprioritets prosesser Opsys. internt 5 CPU-skedulering i MINOS En sanntidsklokke gir avbrudd hvert hundredels sekund Alle aktive prosesser blir gjennomgått i prioritetsrekkefølge Den prosessen som har høyest prioritet, og som ikke er blokkert fordi den venter på I/O, får tildelt neste CPU-tidsslot De tre prosessene som har middels prioritet blir valgt etter en round-robin rekkefølge ( prosess1 prosess2- prosess3-prosess1- ) Opsys. internt 6 3
Egenskaper til MINOS Kan bare håndtere et begrenset antall aktive prosesser (5) Den høyest prioriterte prosessen vil maksimalt måtte vente 10 millisekunder på å få tildelt CPU-tid Dersom en prosess med høy prioritet er grådig, vil ingen av de lavere prioriterte prosessene få tildelt tid i det hele tatt I det følgende skal vi studere andre, mer generelle, og i de fleste sammenhenger bedre måter å gjøre dette på. Opsys. internt 7 Prosesser og Program Vi skiller mellom prosess og program. Et program er en fil eller en utskrift En prosess er en eksekvering av et program En prosess er den minste arbeidsenheten et operativsystem forholder seg til I en maskin kan det være flere prosesser som eksekverer samme program Det behøver bare være ett Emacs program i maskinhukommelsen selv om det er flere brukere som er logget inn på samme maskin og kjører Emacs på forskjellige filer Opsys. internt 8 4
Opprettelse og fjerning av prosesser En prosess opprettes Av en bruker når han/hun taster en kommando Av en annen prosess som vil skille ut en del av prosesseringen i en separat prosess Prosesser deles grovt i to kategorier Systemprosesser som er en del av aktiviteten til operativsystemet Brukerprosesser alle andre prosesser. Opsys. internt 9 Prosesshierarki Opprettelse av en ny prosess kalles gjerne forking eller spawning. En prosess assosieres som regel med den prosessen som skapte den (foreldreprosess), og med de prosessene den selv har skapt (barneprosesser). Dette gir et hierarki av prosesser Fjerning av en foreldreprosess resulterer som regel i at barneprosessene også blir borte. Opsys. internt 10 5
Prosesstilstander Tre basale tilstander Ready, running og blocked. Kun en prosess kan være running Blocked betyr at den venter på I/O Ready betyr at den kan tildeles Cpu-tid Opsys. internt 11 Prosesstilstander Andre mulige tilstander er terminated, killed, destroyed, suspended Langt på vei er disse tilstandene forfininger av tilstander fra figuren på forrige slide. Ikke-preemptive systemer vil la en prosess som er running fortsette til den blokkert av venting på I/O eller til den er terminert. Preemptive systemer begrenser den sammenhengende tiden en prosess kan være running for å sikre at andre prosesser slipper til Opsys. internt 12 6
CPU-skedulering Husk fra forrige forelesning at CPUskedulering skjer i to nivåer Høy-nivå skedulering Velger programmer som skal få lov til å legges i prosesseringskøen. Mest aktuelt for Batch-jobber. Interaktive jobber blir skedulert med en gang. Dispatching Valg av prosess i prosesseringskøen som slipper til CPU en nå Opsys. internt 13 Mulige designmål for dispatching Rettferdighet Maksimalisere antall jobber ferdigstilt Minimalisere den tiden en prosess bruker fra skedulering til ferdigstillelse Maksimalisere utnyttelse av CPU Maksimalisere utnyttelse av de totale ressursene Naturlig ytelsesdegradering Minimalisere responstid Konsistent responstid Hindre sulting. Opsys. internt 14 7
Designmålene er konflikterende Det vil til ethvert bruksområde være enkelte av designmålene som fremtrer som viktigere enn andre. En batch-maskin krever? En maskin som kjører en WEB-server krever? En maskin som er en server for IPtelefoni En PC-på en kontorpult krever Opsys. internt 15 Fifo-dispatching (first in first out) Ikke-preemptiv Grunnleggende rettferdig Ingen sulting Negativt for jobber med mye IO Må ofte legge seg bakerst i køen igjen Kan gi urimelig lange ventetider for korte jobber. Opsys. internt 16 8
Korteste-jobb-først dispatching Ikke-preemptiv Gir korte ventetider på korte jobber Maksimaliserer antall ferdigstilte jobber (i det minste på kort sikt) Unngår ikke sulting Inkonsistent responstid tiden hver jobb tar er avhengig av hvilken miks av jobber den konkurrerer med (og ikke bare antallet). Opsys. internt 17 Ikke preemptiv prioritetsdispatcing Ikke-preemptiv (selvfølgelig) Hver jobb har en prioritet knyttet til seg Prioriteten er satt av bruker eller av systemet Når CPU-tid koster penger kan høy prioritet være dyrere Når systemet er begrenset av CPU-kapasitet, kan systemet gi I/O tunge jobber en høyere prioritet. Jobben med høyest prioritet får tilgang til CPU Opsys. internt 18 9
Round-robin Den enkleste preemptive algoritmen. Prosessene får tildelt tidsintervaller på CPU i en gitt rekkefølge. Kan gi dårlig ressursutnyttelse. Negativt for prosesser med mye I/O (får kortere tidsintervaller) Opsys. internt 19 Flernivåkøer Preemptiv Systemet har flere ready-køer Hver prosess starter i den første køen. Etter hver dispatching blir den lagt neste kø. Round robin i siste kø. Streng prioritet mellom køene. Prosesser fra en kø blir dispatched bare dersom alle køene over er tomme Sulting er mulig, men ikke sannsynlig. Korte prosesser fort ferdig, I/O-prosesser kommer fort til I/O-køen Opsys. internt 20 10
Flernivåkøer illustrasjon Opsys. internt 21 Dynamisk prioritet En preemptiv variant av prioritetsdispatcing. Systemet avbryter den kjørende jobben med jevne mellomrom, og gir den en lavere prioritet Gjør at jobber går fort til å begynne med Sørger for at korte jobber får prioritet, uten at noen behøver å legge inn informasjon om jobblengde. En variant av dynamisk prioritet benyttes i Windows 2000 og Linux. Opsys. internt 22 11
Minneadministrasjon Minneadministrasjon går ut på å organisere forbruket av internminne mellom prosesser. Tildeling av plass til prosesser Utnyttelse av minneområdet Håndtere fragmentering Er banalt for single-tasking systemer. Er beslektet med CPU-skedulering og dispatcing En prosess som ikke har fått tildelt plass i minnet kan ikke kjøres Opsys. internt 23 Enkel minnehåndtering Overlay-teknikk Programmene er delt opp i logiske deler som lastes oppå (overskriver) hverandre etter behov. Kan garantere at applikasjonen ikke benytter mer enn en fast mengde av hukommelse Gjøres ofte av applikasjonen og ikke av opsys Vanlig i tidlige tekstbehandling- og regnearkprogrammer Problem: Hindrer applikasjonen i å benytte mer memory når mer memory blir tilgjengelig. Partisjonering Fast partisjonering hukommelsen deles opp statisk (en gang for alle) Dynamisk partisjonering Best fit (prosesser lastes inn i den minste ledige partisjon som er stor nok) Largest fit ( største ledige partisjon) First fit ( første og beste partisjon som er stor nok) Problem: FRAGMENTERING Opsys. internt 24 12
Enkel minnehåndtering forts. Minne-relokering (adresse justering) Et kompilert program har adressereferanser inne i seg Disse adressereferansene ble generert uten kunnskap om hvor i hukommelsen programmet ble lastet vanligvis ut ifra en antakelse om at programmet ble lastet fra adresse 0 og oppover. Minne-relokering består i justering av disse adressene når programmet blir lastet inn i memory på en gitt fysisk plass som regel fra en adresse forskjellig fra 0. Opsys. internt 25 Virtuelt minne Virtuelt (logisk) minne er et sett av adresser som adresserer det fysiske minnet på en annen måte enn de fysiske adressene Opsys. internt 26 13
Virtuelt minne forts. Krever en tabell som oversetter mellom virtuelle adresser og fysiske adresser Side tabell (Vi kommer tilbake til hva en side er) Oversettelses prosessen (oppslaget i side tabellen) kalles dynamic address translation DAT Dette gjøres på en slik måte at problemer med overlay-teknikk, fragmentering og prosessisolering løses av seg selv Opsys. internt 27 sider og rammer Det fysiske minnet deles opp i rammer - alle av lik størrelse Et lastbart program (prosess) deles opp i sider alle av lik størrelse Ramme-størrelsen er lik side størrelsen, slik at en side passer akkurat inn i en ramme OBS: Boken bruker av og til ordene frame og page om hverandre. Dette virker noen ganger forvirrende!! Opsys. internt 28 14
sider og rammer Hver prosess har sin egen side-tabell Side-tabellen gir oversikt over hvilke sider som er lastet inn i hvilke rammer: Opsys. internt 29 Virtuelle adresser En virtuell adresse er todelt Side nummer Offset som angir en gitt posisjon i siden Da rammestørrelsen som regel er en potens av 2, blir offset bitene lik de siste bitene i den oversatte fysiske adressen Opsys. internt 30 15
Virtuelt minne løser Problemer med Overlay-teknikk Enkelt å laste en ny side fra prosessen over en gammel side fra samme prosess Fragmenteringsproblemer En prosess kan lastes i rammer som ikke er kontinuerlige, men likevel få et kontinuerlig sett av adresser Relokeringsproblemet Alle prosesser har sin egen sidetabell, og får da et virtuelt adresserom som starter på 0. Problemet med isolering av prosesser Siden hver prosess har sin egen side-tabell vil ingen prosess kunne skrive inn i en del av hukommelsen som er avsatt til en annen tabell. Opsys. internt 31 Side swapping og side- feil Virtuelt minne kan være større enn fysisk minne ved at noen sider er lagret på disken (swap space). Sidetabellen angir da det stedet på disken hvor siden ligger. Ved minneoppslag kan det da vise seg at den siden som etterspørres ikke er lastet inn. Dette kalles side-feil (page fault) Minneadministratoren må da finne en (helst ledig) ramme som siden kan lastes inn i. Dersom ingen er ledig må den sende en annen side ut til disk for å få lastet inn den nye. Dette kalles swapping. Swapping gir økt virtuelt minne, men SIDE-FEIL ER SVÆRT KOSTBARE - JFR THRASHING!! Opsys. internt 32 16
Antall rammer per prosess Minimum 3 Instruksjonen, side-tabellen og dataene. Det har vist seg at moderne modulær programmering fører til at programmer holder seg innenfor et lite antall sider i avgrensede tidsintervall (concept of locality). Det settet med sider som er i jevnlig bruk hos en prosess vil vi kalles working set. Det antall frames som settes av til en prosess er ideelt sett akkurat stor nok til enhver tid å huse prosessens working set. Dette tallet endrer seg noe fra program til program. Et operativsystem kan balansere dette: Mye swapping -> øk antallet frames per prosess Lite swapping, men trangt om plassen -> reduser antallet frames per prosess Opsys. internt 33 Swapping algoritmer Vi skiller mellom lokal og global swapping Lokal swapping tillater bare utswapping av sider som tilhører den samme prosessen. Global swapping er mer fleksibel, men gjør at andre prosesser blir påvirket av at en prosess trenger mer minne Noen sider må aldri swappes ut Deler av operativsystemet, spesielt disk driveren (ellers ville ingen ting kunne swappes inn igjen). Et eget bit i sidetabellen angir at disse sidene ikke kan swappes ut. Opsys. internt 34 17
Swapping algoritmer forts. First-In First-Out Regnes som dårlig Sider som har vært lenge i hukommelsen tenderer til å være hyppig i bruk. Lengst-siden-brukt Forholdsvis god til å hindre swapping, men kostbar i bruk (tidspunkt må oppdateres for hver aksess) Ikke brukt nylig Forenkling av Lengst-siden-brukt To bit som settes nå den brukes (referanse bit) hhv. Endres ( dirty bit) Referansebitene resettes periodisk Forsøk å swappe ut bare sider som ikke har noen bit satt. (ikke endret siden sist swappet, og ikke referert på en stund). Opsys. internt 35 Swapping algoritmer Second chance Kombinasjon av FiFo og Ikke-brukt-nylig Dersom den eldste siden har satt sitt referansebit, får den sin alder redusert til 0, og får en ny runde før den igjen blir eldst. Den eldste siden uten referansebit satt blir swappet. Kostnad: Enkelte sider blir beholdt for lenge. En variant holder et antall rammer ledige for å ta vare på sider som nylig har blitt swappet ut. Dette hindrer at sider som ikke burde bli swappet ut må lastes helt inn fra disk igjen. Kostnad: færre rammer tilgjengelig for aktive sider. Opsys. internt 36 18
Implementasjon av side-tabell Oppslag i sidetabellen skjer gjerne flere ganger i løpet av en fetch and execute sykel raske oppslag er derfor viktige. Mange systemer har spesial-hardware til dette formålet associative memory som er velegnet til ekstremt raske tabelloppslag. Associative memory er kostbart, og det er derfor bare en liten andel av sidetabellen som får plass. Translation lookaside buffer (TLB). Dersom de hyppigst refererte sidene er representert i TLB, får man maksimert antall TLB-hit. TLB-miss fører til at systemet må slå opp i resten av tabellen, som ligger i konvensjonelt minne. Opsys. internt 37 Segmentering Enkelte systemer deler programmene opp i segmenter i stedet for sider. Segmenter er av varierende størrelse, og inneholder derfor en logisk sammenhengene enhet av programmet - bestemt av kompilator eller programmerer. En segment-tabell må derfor inneholde informasjon om start og sluttadressen til segmentet, slik at man kan sjekke om offset i en adresse er innenfor segmentets ramme. Dette hindrer intern fragmentering (et segment kan være akkurat stort nok til å inneholde programmet) Segmenteringer langt mer komplisert å håndtere for operativsystemet, og er derfor sjelden i bruk. Opsys. internt 38 19
Diskhåndtering-skedulering Operativsystemet vedlikeholder en kø av diskforespørsler Effektueringen av disse forespørslene kaller vi disk-skedulering First-come first-served Rettferdig, men ineffektiv pga. bevegelsene til diskhodet Shortest distance first Effektiv, men har store problemer med rettferdighet. Scan-scheduling Beveg hodet først innover, så utover Områder ved midten av disken betjenes dobbelt så ofte som andre områder Forbedringer av Scan-scheduling Betjen i en retning, og la så hodet hoppe helt tilbake Betjen bare de forespørslene som var i køen da hodet sist skiftet retning. Opsys. internt 39 Disk skedulering - illustrasjon Opsys. internt 40 20
Disk skedulering illustrasjon Opsys. internt 41 Nettverkstjenester Protokollstack (beskrevet tidligere) Filtjenester filsystemet spenner flere maskiner Skrivertjenester tilgang til skriverressurser som er koblet til en annen maskin Meldingstjenester E-mail Application program interface (API) gir programmer tilgang til nettjeneste Annet denne delen av feltet er i rivende utvikling Opsys. internt 42 21
Vranglåsproblemer Et system kan gå i stå når flere prosesser gjensidig venter på hverandre før de kan fortsette: Prosess A har allokert printer P men venter på tilgang til fil F, samtidig som prosess B har allokert fil F men venter på tilgang til printer P. Vranglås unngåelse Legg til algoritmer som sørger for at vranglåssituasjoner ikke oppstår Dette har som regel en negativ effekt på utnyttelsen av systemet. Vranglås oppdagelse og reparasjon Reparasjon er kostbart det krever ofte at en prosess kastes ut, eller rulles tilbake til en tidligere tilstand. Opsys. internt 43 Annet støtte for samarbeidende prosesser Interprosess kommunikasjon. Samarbeidende prosesser må kunne kommunisere med hverandre Deling av variable, eller sending av meldinger Prosess synkronisering. Samarbeidende prosesser har behov for å styre eksekveringshastigheten i forhold til hverandre Prosess 1 Prosess 2 a = b+d; c = a*a; Opsys. internt 44 22
Virtuelle maskiner Et operativsystem gir en illusjon om at ethvert program har maskinen for seg selv. Denne illusjonen kan bygges på et lavere nivå, hvor man i software bygger illusjonen om flere enn en maskin Hver av disse maskinene kan så kjøre sitt eget (forskjellige) operativsystem. Java Virtual Machine (JVM) er et program som illuderer oppførselen til en tenkt maskin. Binærkoden til JVM ligner strukturelt på binærkoden til en vanlig fysisk maskin (og operativsystem) Nesten alle moderne plattformer inneholder en JVM Portabilitet - ny plattform krever ny JVM implementasjon, men ingen ny kompilator Effektivitetskostnad? Opsys. internt 45 Oppsummering Vi har nå gått igjennom Prosesser og prosesstilstander CPU-skedulering og dispatching Minneadministrasjon og virtuelt minne Diskhåndtering og i tillegg så vidt berørt Nettverkstjenester Vranglåsproblemer Støtte for samarbeidende prosesser Opsys. internt 46 23