Operativsystemer To eksepmler Kjell Åge Bringsrud (med foiler fra Olav Lysne) INF 103 OS tre eksempler 1 Oversikt over forelesningen Dere har nå en oversikt over de forskjellige problemstillingene i et operativsystem. Vi skal nå presentere hvordan flere av disse problemstillingene er løst i to svært mye brukte operativsystemer. Windows 2000 UniX/Linux Både designmålene og historien til disse to har vært svært forskjellige. Begge deler har hatt innvirkning på deres nåværende utforming. OS tre eksempler 2 1
Operativsystemer tre eksempler i boken Windows 2000 Ment å støtte både enkeltbrukere og store tjenerapplikasjoner X86 og Alpha-systemer Windows 2000 og dens forgjengere er SVÆRT utbredt UNIX/Linux Mest brukt som servere. En definert standard, og mange implementasjoner (Solaris, IBM AIX, HP-UX ) Flere kloner (Linux er en av dem). OS/390 (Ikke pensum) Går på IBM stormaskiner Et av de viktigste operativsystemene når det gjelder støtte av store applikasjoner. Først utviklet i den tiden da datasystemer var batch - orienterte. OS tre eksempler 3 Windows 2000 historie 1981: MS-DOS Enbruker, ingen skedulering Nesten ikke memory management 16-bit og korte filnavn 1985-1995: Windows (v. 1.0 3.1) Grafisk brukergrensesnitt over MS-DOS. Begrenset av MS-dos. Multitasking begrenset av ikke preemptive skedulering Ingen memoryadressering over 1 MB. 1993: Windows NT. Nytt fra bunnen av (ikke lenger MS-dos) ment for servermarkedet i tillegg til avanserte personlige brukere Preemptiv skedulering, multitasking, 32bit registre, stort adresserom. Windows 3.1 grensesnitt (senere Windows 95 grensesnitt) OS tre eksempler 4 2
Windows 2000 historie forts. 1995: Windows 95. Helt nytt fra bunnen av (ikke lenger MS-dos) Preemptiv skedulering, multitasking, 32bit registre, stort adresserom. Ment for personlige arbeidsplassmaskiner 1998: Windows 98. Mindre forbedringer fra Windows 95: Brukergrensesnitt, multimedia, plug-and-play. 2000: Windows 2000 Var ment å erstatte både Windows 9x, og Windows NT. Best of both systems stabilitet og brukergrensesnitt. Fire varianter en for personlige arbeidsplasser, og tre server varianter med varierende egenskaper. OS tre eksempler 5 Designmål for Windows 2000 Utvidbarhet Objektbasert modulært design enklere å installere modifikasjoner Enkel porting til andre plattformer Skrevet i C og C++ Hardware spesifikk assembly bare i et lite hardwareabstraksjonslag. Pålitelighet Cluster failover Sikkerhetsforanstaltninger i kjernen og i filsystemet Kompatibilitet Programmeringsgrensesnitt (API) som inneholder alle tjenestene til tidligere Windows versjoner Mulighet for å addere andre API-moduler. Skalerbarhet i ytelse Mulighet for symmetrisk multiprosessering. OS tre eksempler 6 3
Windows 2000 tekniske detaljer En-bruker system med preemptive multitasking. Støtte for trådprosessering og interprosesskommunikasjon Kan kjøre de fleste tidligere programmer, og støtter preemptive skedulering av 16 bit programmer. Utnytter de nyeste egenskapene til hardware, innen f. eks. multimedia og plug-and play. Nytt filsystem som bl. a tillater dynamisk diskpartisjonering. OS tre eksempler 7 Windows 2000 brukergrensesnitt Svært likt Windows 98 og Windows 95, som er velkjent for de fleste. Likhetene med grensesnittet til Apple Macintosh er også slående Tilleggene og endringene gjelder i hovedsak funksjonene for systemadministrasjon. Dette er den egenskapen ved WINDOWS 2000 som skiller det skarpest fra de andre operativsystemene vi skal ta opp Kanskje også dens sterkeste konkurransefortrinn? OS tre eksempler 8 4
Intern-organisasjon av W2000 Hardwareabstraksjonslaget inneholder de delene av systemet som er hardwareavhengige. Videre må vindussystemet ha kontakt med hardware (skjermen), og drivere og nettverk må ha kontakt med f. eks. innsatte kort. OS tre eksempler 9 Intern-organisasjon av W2000 Kjernen inneholder avbruddshåndtering, synkronisering, trådskedulering, og interprosesskommunikasjon. Den kan ikke swappes, er ikke trådet, og er nonpreemptible. (forslag på et godt norsk ord mottas!) OS tre eksempler 10 5
Intern-organisasjon av W2000 I/O manager, prosessmanager, virtual memory manager og vindussystemet gjør akkurat det dere tror de gjør! OS tre eksempler 11 Intern-organisasjon av W2000 Filer, mapper, prosesser, tråder, I/O porter, signaler osv. - alt er håndtert som objekter (selv om de strengt tatt ikke er implementert som det i INF 101 forstand). Object manager gir et standardisert grensesnitt til slike objekter, og sjekker blant annet om objektforespørslene er tillatte. OS tre eksempler 12 6
Intern-organisasjon av W2000 Local Procedure Call (LPC) fasiliteten er en sentral for kall på forskjellige tjenester, og for interprosesskommunikasjon OS tre eksempler 13 Intern-organisasjon av W2000 Security reference monitor har ansvar for tilgangskontroll og monitorering av aksess til objekter som filer, I/Oenheter, prosesser og minne. OS tre eksempler 14 7
Intern-organisasjon av W2000 Environmental subsystem inneholder forskjellige grensesnitt som emulerer andre operativsystemer Standard er Win32, Win16, POSIX og MS-DOS. Andre tilgjengelig fra 3. parts leverandører. OS tre eksempler 15 Intern-organisasjon av W2000 System support prosesser inkluderer prosesser for pålogging og brukersesjon Server prosesser inkluderer prosesser for logging av eventer, samt for eksempel SQLserver, X-server etc. OS tre eksempler 16 8
UNIX/Linux Flerbruker/multitasking Mange versjoner av UNIX, men de fleste er såpass like at programmer bare trenger rekompilering for å portes Integrert nettverksstøtte og støtte for distribuert prosessering. Det er få forskjeller mellom UNIX og Linux. Vi vil behandle dem som ekvivalente. Forskjellene ligger hovedsakelig i implementasjonsdetaljer. OS tre eksempler 17 UNIX historie Først utviklet av Bell Labs i 1969-70 av En enkelt programmerer Ken Thompson. Basert på et tidligere større prosjekt Multics Kjørte på en liten maskin - ment for personlig interaktiv databehandling. Programmeringsspråket C utviklet i 71-72, og en ny versjon av UNIX programmert i C dukket opp. Flerbruker Multitasking/timesharing Dokumentprosessering OS tre eksempler 18 9
UNIX historie forts. 1974-78 spredte UNIX på PDP-11 maskinger fra Digital seg til forskningsinstitusjoner jorden rundt. BSD (Berkeley Software Distribution) lager en ny UNIX distribusjon. Basert på C og derfor lett å porte. Basis for suksessen til SUN, Hewlett Packard. Virtuelt minne TCP/IP Lange filnavn etc. OS tre eksempler 19 UNIX historie forts. 1991 Linus Torvalds har første versjon av Linux-kjernen ferdig. Basert på X86 prosessorer Legges gratis ut på nettet Trekker raskt til seg svært mange programmerere tester, de-bugger og som utfyller Linux med nye fasiliteter og drivere. Er nå basis for en voksende industri som tilbyr installasjonsprogrammer, brukergrensesnitt, teknisk støtte etc. OS tre eksempler 20 10
UNIX idag Flere varianter: Linux, Solaris (Sun), AIX (IBM), Mac OSX, To standarder UNIX - Open Systems Group. De fleste (F. eks AIX og Solaris) støtter denne. POSIX (Portable Operating System-IX) IEEE, et mindre sett av kommandoer og operativsystemtjenester. Bl. a støttet av et environmental subsystem i Windows 2000. Hovedsakelig benyttet i servere. Men fremdeles førstevalg som arbeidsplassmaskin og utviklingsplattform for enkelte. OS tre eksempler 21 UNIX Målseting (fra 70-tallet) Interaktivt kraftig og enkelt brukergrensesnitt Kraftige programmeringsvertøy, kompilatorer, og tekstbehandling Enkle verktøy for å utføre enkle oppgaver. Enkel måte å sette disse verktøyene sammen på (piping). Liten og enkel kjerne, sammen med et separat, utskiftbart brukergrensesnitt (shell) Logisk filsystem, hvor filene er identifisert med navn, og ikke fysisk beliggenhet på disken. Flerbruker, multitasking, støtte for gruppesamarbeid (e-post, gruppebegrepet i filtilgang) Enkel portabilitet programmert i C som er et språk på relativt høyt abstraksjonsnivå. OS tre eksempler 22 11
Viktige UNIX-karakteristika i dag Preemptiv multitasking Ett eller flere shell gir fleksibelt brukergrensesnitt, programmeringsverktøy som shell-scripts Støtte for interaktiv oppretting og kontroll av prosesser, dispatch-prioriteter etc. Trestrukturert filsystem med støtte for nettverksaksesser av filer. Virtuelt minne, og ressursdeling. OS tre eksempler 23 UNIX brukergrensesnitt Starter med login En maskin som ikke er i bruk er i en modus hvor den kan ta imot innlogginger. Hver enkelt bruker har sitt eget login script som kjører når vedkommende logger inn. Dette scriptet setter opp omgivelsene slik den brukeren har spesifisert. Shell: linjeorienterte kommandotolkere Flere varianter UNIX: Bourne shell, C shell, Korn shell... Linux: bash, tosh, pdksh Disse har alle en felles kjerne av operatorer, men alle har noe funksjonalitet som er unik for hver enkelt. Kan bytte mellom shell på kommandolinjen. OS tre eksempler 24 12
UNIX brukergrensesnitt-strømmer Et basalt begrep i UNIX grensesnitt er byte-strøm Filer, input fra tastatur, nettverkstraffikk etc. alt sees som strømmer. Brukergrensesnittet har svært fleksible verktøy for å manipulere strømmer Piping, redirection (omdirigering) Tre predefinerte strømmer er stdin (som regel tastatur) stdout (som regel terminalen) stderr (ofte, men ikke alltid terminalen) OS tre eksempler 25 Piping Output fra en kommando kan benyttes som input til en annen: history kommandoen gir deg historien over de siste shell kommandoer du har gitt grep print gir deg bare de linjene i en strøm som inneholder ordet print. history grep print gir deg alle printkommandoene du har gitt siden sesjonen startet. OS tre eksempler 26 13
Pipe Hva gjør følgende kommando? ls -l grep rwxrwxrwx grep oblig1.c OS tre eksempler 27 Omdirigering OS tre eksempler 28 14
Omdirigering av strømmer Strømmer kan omdirigeres til og fra stdin og stdout (og stderr) på kommandolinjen. who skriver til stdout hvem som er logget inn på maskinen. who > minfil gir deg en fil ved navn minfil som inneholder output fra kommandoen who. cat minfil skriver ut innholdet på filen minfil. cat minfil>dinfil kopierer filen minfil over i dinfil. Omdirigering av input til stdin gjøres oftest ved å utelate et filnavn i kommandolinjen cat>dinfil leser fra stdin og skriver det du taster ut på fil. (Bør avsluttes med ctrl-d). OS tre eksempler 29 UNIX - Internt design OS tre eksempler 30 15
UNIX kjernen. Minnehåndtering virtuelt minne, sidetabeller, minnebeskyttelse Prosesshåndtering skedulering/dispatching, oppretting og fjerning av prosesser, interprosess kommunikasjon etc. Filhåndtering Lagring og henting, filsystem, filbeskyttelse, tilgang til fjerne filsystemer (muliggjør diskløse areidsstasjoner) I/O håndtering Kommunikasjon og nettverkshåndtering (støtte for distribuert prosessering RPC ) OS tre eksempler 31 UNIX-internt design Liten kjerne. Brukergrensesnitt (Xwindows, shell, e-post etc.) er ikke en del av kjernen, men tilleggsprogrammer. Dette gir en voldsom fleksibilitet i oppbyggingen av et UNIX system. Et shell kan lett utvides og berikes med nye fasiliteter laget av brukeren. Det er lett å designe egne fasiliteter og brukergrensesnitt. Systemkallene til UNIX-variantene er forholdsvis like. POSIX spesifikasjonen definerer et standard-bibliotek. OS tre eksempler 32 16
UNIX-prosesser Prosesser er den basale arbeidsenheten i UNIX En prosess sitt minneområde er delt i et tekstsegment av fast størrelse (inneholder programkode) en stack og et datasegment (som begge inneholder programdata) OS tre eksempler 33 UNIX prosesser En del av prosessene utfører systemoppgaver disse kalles daemons Vedlikehold av printerkø, e-post daemon, netverks-daemon, batch-jobb kontroll (cron) Noen av systemprosessene startes opp når systemet bootes. Alle andre prosesser må startes ved å bruke et fork kall. Andre utfører brukeroppgaver En prosess for hvert shell fork(); exec(); wait() sykel OS tre eksempler 34 17
Todelt prosesskontrollblokk Prosess kontroll-blokken er todelt En enkelt global prosesstabell som holder oversikt over lokasjon (memory/disk) til hver prosess, samt dens status. Denne tabellen blir aldri swappet. En brukertabell for hver prosess som inneholder tilstandsinformasjon (prosessdata, programteller, åpne filer etc.) Dette tillater deling av plass til programkode i minnet Entry i prosesstabellen for hver prosess peker på samme kodedel av minnet og effektiv swapping Når en prosess swappes ut er det bare informasjonen i prosesstabellen som forblir i minnet. OS tre eksempler 35 UNIX-prosesser Høy-nivå skedulering Generering av prosesser skjer automatisk Skedulering er bare nødvendig dersom prosesstabellen blir sprengt, eller det ikke finnes ledige minneressurser. Lav-nivå skedulering (dispatching) Kan skje på prosessnivå (Linux) eller på trådnivå (SUN-solaris) OS tre eksempler 36 18
UNIX/Linux Dispatching Vanligvis dispatching ved dynamisk prioritet LINUX har tre typer dispatching FIFO Kaster ut (preempter) andre prosesser, og kjører vanligis til de selv er ferdige (kan dog kastes ut av andre FIFO prosesser med høyere prioritet). Reservert for (få) sanntidsprosesser og prosesser av ekstrem viktighet. Round Robin er ment for prosesser med krav over gjennomsnittet (vanlige sanntidsprosesser) Other resten av brukerprosessene. Det finnes dessuten en systemfuksjonalitet (nice) som tillater prosesser og brukere å redusere prioriteten til en prosess innenfor sin dispatchtype. OS tre eksempler 37 Linux dispatching forts. Innenfor Round-robin og other gruppene blir dispatching kontrollert av en timer som gir et avbrudd hvert 10. millisekund. Dette avbruddet dekrementerer en teller i den kjørende prosessen. Telleren settes lik prosessens prioritetsnivå når den får tilgang til prosessoren. Når telleren har nådd 0 blir prosessen kastet ut (preempted), og vi får en reskedulering. OS tre eksempler 38 19
Linux dispatching forts. For hver reskedulering hvor en prosess ikke får tilgang til prosessoren oppdateres dens prioritetsnivå: teller = (forrige tellerverdi)/2 + prioritet. For en prosess med prioritet 50 gir det følgende sekvens av tellersettinger gitt at den ikke får tilgang til prosessoren etter 8 skeduleringer: 50 75 87 93 96 98 99 99 For en prosess med prioritet N konvergerer denne rekken mot 2N. Ved reskedulering velges den prosessen som har høyest prioritet. Dette er velegnet for interaktiv bruk en prosess som har måttet vente lenge får høyere prioritet. OS tre eksempler 39 UNIX- filsystem Hierarkisk struktur velkjent for de fleste Ordinære filer pluss fem typer av spesialfiler. Directory filer inneholder informasjon for mapper Symbolske linker pekere til andre steder i filstrukturen Block devices og character devices drivere som gir tilgang til I/O komponenter. Named pipes brukes til interprosess kommunikasjon. OS tre eksempler 40 20
UNIX- filsystem OS tre eksempler 41 UNIX filsystem forts. /home inneholder brukerområdene et subtre for hver bruker /bin inneholder programmer for de mest brukte kommandoer /etc inneholder administrative filer, startup filer og systemfiler. /usr inneholder forskjellige biblioteker, bl. annet programmer for kommandoer som ikke brukes så ofte. /dev inneholder filene som representerer devicedrivere. /tmp inneholder midlertidige filer for forskjellige programmer. OS tre eksempler 42 21
Nettverkstjenester. Datakommunikasjonstjenester har lenge vært en integrert del av de fleste UNIXomgivelser. De fleste, inkludert Solaris og Linux implementerer nettverkstjenester ved hjelp av et Socket grensesnitt. TCP/IP ble opprinnelig designet for UNIX. OS tre eksempler 43 Oppsummering Vi har i noen detalj gått igjennom de to operativsystemfamiliene som er mest vanlige på PC er og arbeidsstasjoner i dag. Det finnes en lang rekke av andre typer OS er f. eks. for mobiltelefoner, set-top bokser, spillmaskiner, etc. Disse tar vi ikke opp her. Forhåpentligvis har du nå en oversikt over de problemer og designvalg som inngår i byggingen av et operativsystem, samt en ide om hvilke valg som er gjort i henholdsvis Windows og UNIX-verden. OS tre eksempler 44 22