290 likes | 616 Views
Introduksjon til operativsystemer Jan Høiberg November 2009. IKT for lærere. Innhold. Generelt om operativsystemer Grensesnitt mot brukere og programmer Klassifisering av systemene Historikk (og religionskriger) Prosesshåndtering Minnehåndtering Filer og filsystem
E N D
Introduksjon til operativsystemer Jan Høiberg November 2009 IKT for lærere
Innhold • Generelt om operativsystemer • Grensesnitt mot brukere og programmer • Klassifisering av systemene • Historikk (og religionskriger) • Prosesshåndtering • Minnehåndtering • Filer og filsystem • Styring av maskinvareenheter (device handling)
Hva er et operativsystem (OS)? • En samling med programvare som “ligger mellom” brukeren/ brukerprogrammene og maskinens hardware . • Vanlige OS: Microsoft Windows, Linux, Mac Os X, BSD Unix. • OS'et er et (av mange) lag av abstraksjon som gjør datamaskinen “operativ” for oss – vi kan bruke den uten å vite hvordan hardware og nettverk og mye annet egentlig fungerer.
OS’ets viktigste oppgaver • Prosessorstyring • Minnestyring • Maskinvarestyring • Diskplasstyring (I/O) • Applikasjonsgrensesnitt • Brukergrensesnitt
Brukeren og OS'et • Brukergrensesnittet mot OS: • - Vindussystem (GUI) • - Vanlige brukerprogrammer. • Tekstbaserte “skall” (Linux) Brukergrensesnittene gjør anvendelsen av OS’et og datamaskinen enklere for brukeren.
Brukerprogrammer og OS'et • “Kjernen” i OS'et styrer prosessoren(e), RAM og periferienheter (disker, printere, nettverksporter, mus, etc.) • Brukerprogrammer (eks. Word, nettlesere) kommuniserer med hardware gjennom såkalte system-tjenester som tilbys fra kjernen gjennom et API. • OS'et forenkler dermed jobben for de som skal programmere datamaskinene.
Klassifisering av OS • Spesialiserte real-time operativsystemer • Styringssystemer, sikkerhetskritisk programvare (ABS-bremser), trafikkkontroll – må garantere rask respons på endringer. • Single-user – single-task • Én bruker kjører et program om gangen (MS-DOS, Palm) • Single-user – multi-tasking (trad. PC) • Én bruker kan kjøre flere programmer ”samtidig” (Windows, Mac) • Multi-user (krever multi-tasking) • Flere brukere deler maskinen (Linux/Unix, OS for servere, Windows 2000 og proprietære OS for tradisjonelle ”mainframes)
OS-historikk (1) • Tidlige datamaskiner (ZUSE-X, ENIAC, Colossus, NUSSE) ble brukt til komplekse beregninger, programmert i hardware, pluggebord og maskinkode. De hadde ikke noe operativsystem, men ble betjent av (oftest kvinnelige) operatører
OS-historikk (2) • Første OS fra IBM ca 1955, ”tvunget” fram av transistoren og FORTRAN – batchsystemer: Én jobb kjøres om gangen. • Multitasking systemer kom på 1960-tallet for å unngå dyre mainframes på ”tomgang”. • MULTICS – første multi-user system UNIX ca. 1969 (Ken Thompson) • NB: GUI, mus, hypertekst, internett og videokonferanser ble demonstrert allerede i 1968 på ”The Mother of all demos” (Douglas Engelbart).
OS-historikk (3) • Første GUI-OS fra Xerox Parc, 1973. • Tekstbaserte OS for PC: MS-DOS og CP/M, ca. 1980. • Første PC med GUI: Apple Macintosh, 1984 (stjålet fra Xerox). • Windows 1.0, 1985 (saksøkt 1988). • Unix med GUI i 1982 • Gratis open-source Unix for PC (Linux) i 1991. • Arpanett fra 1968 ble til Internett (for Unix-brukere i Akademia) på 80-tallet. • 1995 : ”Alle” får PC og nett-tilknytning, Microsoft Windows dominerer markedet.
Hva slags OS får vi i fremtiden? • 3D grensesnitt?: • Microsoft Surface • Beryl (for Linux) • Konvergens av OS’ene på 2000-tallet: • Windows mere stabilt. • Linux mere brukervennlig. • Mac OS X basert på BSD Unix. • Får vi ett ”universelt” OS-GUI om noen år?
OS og religionskrigen • religious war An argument, which usually takes place in a NEWSGROUP, in which the participants take violent, uncompromising positions. A typical religious war is that between the proponents of Microsoft's Windows operating system and non-Windows systems such as LINUX. • -- fra ”A Dictionary of the Internet”
"How I hate this damned machine,I wish that I could sell it,It never does what I want it to,But only what I tell it".
Prosesser • En prosess er et program som kjører og alle ressursene som trengs til dette (programkode, hukommelse, filer etc.). • Operativsystemet starter, stopper og håndterer alle prosessene på maskinen. • En prosess startes ved at OS’et laster programmet inn i RAM, reserverer ressursene som trengs og overlater deretter kontrollen/prosessoren til programmet. • Alle data som tilhører en prosess lagres i en Process Control Block (PCB) som til enhver tid inneholder prosessens tilstand.
Hvordan kommer det hele i gang? • OS’et består selv av flere prosesser som kjører hele tiden for å kontrollere maskinen. • Men: Hvordan kan maskinen starte når det ikke er noe OS til stede som kan sette i gang det hele? Hvem skal starte den første prosessen? • Oppstart av maskinen kalles derfor ”bootstrapping”, i.e. ”løfte seg selv etter skolissene”. • Når maskinen slås på kjøres først et program som kalles BIOS (Basic Input-Output System) som ligger ”brent” i hardware (ROM) og ikke må lastes i RAM. • BIOS starter en ”boot-loader” som sørger for at OS’et lastes inn i RAM og starter den første OS-prosessen (”init” i Linux).
Multi-tasking • PC’en har (ofte) bare én prosessor (CPU), men kan tilsynelatende gjøre flere ting samtidig? • Multi-tasking er mulig gjennom time-sharing: • En prosess lastes inn, startes og får bruke CPU’en i et kort tidsintervall, ”time-slice”. • OS’et gjør deretter et ”interrupt” som avbryter prosessen og lagrer unna prosessens PCB. • Deretter lastes neste prosess (og dens PCB) inn og får kjøre inntil neste interrupt, osv. • Byttet mellom to prosesser calles ”context switch”.
Multi-tasking og trashing • Typisk time-slice: 10 ms. • Context-switch: 0.001 ms • Trashing: OS’et bruker for mye tid på å håndtere prosessene (eldre Windows). • Trashing kan unngås ved å dele prosessene opp i mindre ”threads” som kjøres parallelt. • Skifte mellom threads er vesentlig raskere enn å gjøre en full context switch.
Scheduling • Problem: Når en prosess har kjørt ferdig i en time-slice, hvilken av de ventende prosessene skal velges som den neste som får kjøre? • Finnes mange ulike algoritmer for scheduling. • Vanligst er ”Round Robin”: • Prosessene ”står i kø”. Førstemann i køen velges. • En prosess som er ferdig må gå bakerst i køen. • Prioritering gjøres ved å variere lengden på time-slice. • Ulempe: RR kan ikke garantere responstider.
Operativsystemet og minne • To hovedproblemer OS’et må løse: • Hver prosess må ha nok minne til å kunne kjøre. • Ingen prosesser må kollidere, i.e. bruke samme minneadresser. Vil forårsake program-crash eller at maskinen stopper (Windows 3.1X...).
Tre hovedtyper av datamaskinhukommelse • Høyhastighetscache: • Meget raskt minne som er ”nære” CPU. • Hovedminne: • Random Acess Memory (RAM). BIOS “teller opp”/ sjekker RAM ved booting. VideoRAM på skjermkort regnes også med som hovedminne. • Sekundærminne/virtuell hukommelse: • Dette er disken (harddisk med roterende magnet-plater eller Flash-memory). Brukes bare som minne hvis det er fullt i RAM, er svært mye langsommere.
Minnehåndtering • De forskjellige typene minne må brukes effektivt, slik at prosessene kjører så raskt mulig. • Flytting av PCB’ene i minnesystemet må hele tiden gjøres slik at det er ”kort vei” fra CPU til dataene for den aktive prosessen. • Algoritmene for minnehåndtering i et OS er svært kompliserte og av helt avgjørende betydning for datamaskinenes ytelse. • Spesielt bør bruk av virtuell hukommelse unngås hvis mulig.
”Memory is like an orgasm. It's a lot better if you don't have to fake it.” • -- Seymour Cray om virtuell hukommelse
Filer og filsystem • Fil: En samling data som logisk hører sammen: Word-dokument, webside, JPG-bilde, lyd- eller videoklipp i MPEG-format etc. Fysisk er en fil ofte spredt på disk. • I Linux: En fil er et medium som data kan leses fra eller skrives til – dvs. alt er filer(!). • OS’et må tilby brukere og programmer en systematisk måte for å lagre, finne igjen og beskytte filer i et filsystem. • Filhåndtering var eneste reelle oppgave til en del tidlige ”primitive” operativsystemer som f.eks. MS-DOS (”Disk Operating System”).
Hierarkiske filsystemer • Filene organiseres i ”mapper” – en samling filer som ”hører sammen” (fra MULTICS, 1963). • Mappen er også en fil, slik at mapper kan inneholde mapper -- vi får et hierarki (”et tre”) av mapper med en ”rot” på toppen. • En mappe inneholder egentlig bare en liste med filene som ligger i mappen. • Linux har bare et toppnivå i hierarkiet (aka ”root”). • Windows har et mappe-tre (”drive”) for hver disk.
Hva er ”inne i” filsystemet? • Et ”tabellverk” med informasjon om alle filene (”I-node table” i Linux”, ”File Allocation Table” – FAT – i MS). • Mappefiler med filnavn, som gir hierarkisk struktur. • Metadata for ”bokføring” og organisering. • Mekanismer for å lage, fjerne, flytte og finne igjen filer og mapper. • Beskyttelse i form av tilgangsbegrensning til filene (for ”eier”, andre brukere av disken og ”resten av verden”).
Flash-disk vs. vanlig hard-disk • Flash-RAM (overskrivbar ROM, aka SSD) erstatter HD i små enheter og for flytting av data. • Raskere enn HD, billigere enn RAM. • Krever nye filsystemer: • HD overskrives direkte, SSD må ”blankes” før skriving. Flash-filsystemer må utnytte ”tomgang” til å slette ledig plass. • SSD trenger ikke å optimalisere søking. • SSD ”slites ut” ved gjentatt overskriving, må spre data jevnere ut enn for en HD.
Device-håndtering • External Device (ED): Hardware som ikke er på maskinens hovedkort (motherboard): Disk, scanner, printer, CD/DVD-spiller, Flash-ROM, USB-, nettverk- og serie/parallelporter, etc. • OS’et ”snakker med” ED gjennom små hjelpe-programmer som kalles ”drivere” (abstraksjon). • En driver er en ”protokoll” som oversetter OS’ets systemkall til ED’ets ”innfødte” styresignaler. • Et OS bør i størst mulig grad forholde seg til generiske drivere, for ikke å bli utdatert når teknologien endres. • Drivere som er innebygget i OS’et kalles ”Plug & Play” (aka ”Plug & Pray” i tidlige utgaver).