operativsystemer – to eksepmlerheim.ifi.uio.no/~inf103/forelesninger/uke-46o.pdf · lagring og...
TRANSCRIPT
1
OS – tre eksempler 1
Operativsystemer –To eksepmler
Kjell Åge Bringsrud(med foiler fra Olav Lysne)
INF 103
OS – tre eksempler 2
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.
2
OS – tre eksempler 3
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 4
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)
3
OS – tre eksempler 5
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 6
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 hardware-
abstraksjonslag.❒ 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.
4
OS – tre eksempler 7
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 disk-partisjonering.
OS – tre eksempler 8
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…?
5
OS – tre eksempler 9
Intern-organisasjon av W2000❒ Hardware-
abstraksjonslaget inneholder de delene av systemet som er hardware-avhengige. Videre må vindussystemet ha kontakt med hardware (skjermen), og drivere og nettverkmå ha kontakt med f. eks. innsatte kort.
OS – tre eksempler 10
Intern-organisasjon av W2000❒ Kjernen inneholder
avbruddshåndtering, synkronisering, tråd-skedulering, og interprosess-kommunikasjon. Den kan ikke swappes, er ikke trådet, og er ”nonpreemptible”. (forslag på et godt norsk ord mottas!)
6
OS – tre eksempler 11
Intern-organisasjon av W2000❒ I/O manager,
prosess-manager, virtualmemory manager og vindus-systemet gjør akkurat det dere tror de gjør!
OS – tre eksempler 12
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). Objectmanager gir et standardisert grensesnitt til slike objekter, og sjekker blant annet om objektforespørslene er tillatte.
7
OS – tre eksempler 13
Intern-organisasjon av W2000❒ Local Procedure
Call (LPC) fasiliteten er en sentral for kall på forskjellige tjenester, og for interprosess-kommunikasjon
OS – tre eksempler 14
Intern-organisasjon av W2000❒ Security
referencemonitor har ansvar for tilgangskontroll og monitoreringav aksess til objekter som filer, I/O-enheter, prosesser og minne.
8
OS – tre eksempler 15
Intern-organisasjon av W2000❒ Environmental
subsysteminneholder forskjellige grensesnitt som emulerer andre operativsystemer
❒ Standard er Win32, Win16, POSIX og MS-DOS.
❒ Andre tilgjengelig fra 3. parts leverandører.
OS – tre eksempler 16
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 SQL-server, X-server etc.
9
OS – tre eksempler 17
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 18
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
10
OS – tre eksempler 19
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 20
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.
11
OS – tre eksempler 21
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 22
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å.
12
OS – tre eksempler 23
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-prioriteteretc.
❒ Trestrukturert filsystem med støtte for nettverksaksesser av filer.
❒ Virtuelt minne, og ressursdeling.
OS – tre eksempler 24
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.
13
OS – tre eksempler 25
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 26
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 print-
kommandoene du har gitt siden sesjonen startet.
14
OS – tre eksempler 27
Pipe
Hva gjør følgende kommando?ls -l | grep rwxrwxrwx | grep ’oblig1.c’
OS – tre eksempler 28
Omdirigering
15
OS – tre eksempler 29
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 30
UNIX - Internt design
16
OS – tre eksempler 31
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 32
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.
17
OS – tre eksempler 33
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 stackog et datasegment (som begge inneholder programdata)
OS – tre eksempler 34
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
18
OS – tre eksempler 35
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 36
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)
19
OS – tre eksempler 37
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 38
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.
20
OS – tre eksempler 39
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 40
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.
21
OS – tre eksempler 41
UNIX- filsystem
OS – tre eksempler 42
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 device-drivere.
❒ /tmp inneholder midlertidige filer for forskjellige programmer.
22
OS – tre eksempler 43
Nettverkstjenester.
❒ Datakommunikasjonstjenester har lenge vært en integrert del av de fleste UNIX-omgivelser.
❒ De fleste, inkludert Solaris og Linux implementerer nettverkstjenester ved hjelp av et Socket grensesnitt.
❒ TCP/IP ble opprinnelig designet for UNIX.
OS – tre eksempler 44
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.