DVA315 Operativsystem Mats Björkman Mälardalens högskola 1
Kursen i korthet n Föreläsningar: OS-koncept och teori n Ser på OS från OS- utvecklarens perspek4v n Labbar: Programmering med OS-support n Ser på OS ur programmerarens synvinkel n Systemanrop, Mul4programmering, Händelsestyrd programmering n Skriftlig tentamen: Betyg 3,4 & 5 n Seminarium: Välj ett ämne ur en lista 2
Laborationerna/uppgifterna n 3 uppgifter (som kommer att ta tid!) n Lab 1: Win32 API- programmering, trådar, synkronisering och kommunika4on. n Lab 2: Planetlab Klient/Server- arkitektur, processkommunika4on, kri4ska avsnim. n Lab 3: Grafisk klient Fönsterhantering, händelse- och callback- hantering, alterna4vt utökning av Lab 2, alterna4vt eget projekt 3
Resurser n Litteratur: Modern Operating Systems 4th ed., A. Tanenbaum, H. Bos (OBS! Global edition billigare). 3:e upplagan fungerar också. n Föreläsare och kursansvarig: Mats Björkman n Labassistenter: Meng Liu, Sara Abbaspour n Kurshemsida: http://www.idt.mdh.se/kurser/dva315/ 4
Förkunskapskrav n n Programmering Datastrukturer och algoritmer n Ev dispenser: Ingen dispens för programmering, för DoA: ett moment möjligt att få dispens för, en gång 5
Förra årets kursutvärdering Svarsfrekvens: 36 svarande av 94 studenter Egen arbetsinsats (60%) <25h/vecka Några betyg (skala 1-5) Övergripande betyg 3.7 Kursens undervisning 3,9 Tydlighet i examination 4.0 Kurslitteraturen gav stöd 3.5 Studiehandledning 3.6 Annat Fick du vid början av kursen information om tidigare kursutvärderingar: 97% ja 6
Förra årets kursutvärdering Svarsfrekvens: 36 svarande av 94 studenter Egen arbetsinsats (60%) <25h/vecka Några betyg (skala 1-5) Övergripande betyg 3.7 Kursens undervisning 3,9 Tydlighet i examination 4.0 Kurslitteraturen gav stöd 3.5 Studiehandledning 3.6 Annat Fick du vid början av kursen information om tidigare kursutvärderingar: 97% ja 7
Förra årets kursutvärdering Svarsfrekvens: 36 svarande av 94 studenter Egen arbetsinsats (60%) <25h/vecka Några betyg (skala 1-5) Övergripande betyg 3.7 Kursens undervisning 3,9 Tydlighet i examination 4.0 Kurslitteraturen gav stöd 3.5 Studiehandledning 3.6 Annat Fick du vid början av kursen information om tidigare kursutvärderingar: 97% ja 8
Förra årets kursutvärdering Svarsfrekvens: 36 svarande av 94 studenter Egen arbetsinsats (60%) <25h/vecka Några betyg (skala 1-5) Övergripande betyg 3.7 Kursens undervisning 3,9 Tydlighet i examination 4.0 Kurslitteraturen gav stöd 3.5 Studiehandledning 3.6 Annat Fick du vid början av kursen information om tidigare kursutvärderingar: 97% ja 9
Förra årets kursutvärdering Svarsfrekvens: 36 svarande av 94 studenter Egen arbetsinsats (60%) <25h/vecka Några betyg (skala 1-5) Övergripande betyg 3.7 Kursens undervisning 3,9 Tydlighet i examination 4.0 Kurslitteraturen gav stöd 3.5 Studiehandledning 3.6 Annat Fick du vid början av kursen information om tidigare kursutvärderingar: 97% ja 10
Förändringar till i år Labbarna genomgångna Lab 3 med valmöjligheter Seminarier, nya regler 11
Föreläsningsserien n Introduktion - vad är ett OS och varför OS? n Processer och processhantering n Baklås n Minneshantering n Filsystem n Input och output I/O n Skydd, Virtualisering 12
Innehållet n Operativsystem är ett stort område n Föreläsningarna hinner bara ta upp de mest grundläggande koncepten n Labbarna ger erfarenhet av ett (1) API n Boken + era egna seminarier kompletterar detta med exempel från andra verkliga system och med detaljer som föreläsningarna inte hinner med att ta upp 13
14
Vad är ett operativsystem? n Ett stödsystem till hjälp när man vill köra ett program på en dator 15
Vad är ett program? n Kod och data n Koden finns typiskt i form av en körbar (exekverbar) fil på datorn (minfil.exe) n Koden körs på datorn, använder indata och levererar utdata (även detta ofta från/ till filer) 16
Vad är en process? n Ett exekverande program kallar vi en process n Processer använder resurser i form av processorkraft (CPU-kraft) och minne (tillfälligt minne för variabler etc. och permanent lagring för filer), m.m. 17
Vad är ett operativsystem? n Operativsystemet (OS:et) är en resurshanterare som hjälper processer n Operativsystemet ger stöd i form av enhetliga gränssnitt mot gemensamma resurser (exv. hårdvara) 18
Närliggande områden n Området operativsystem gränsar till (eller överlappar) flera andra områden: n Kompilatorteknik (program/processer etc.) n Datorarkitektur (CPU, minne, filsystem, ) 19
Kompilatorteknik på 1 bild Källkod Bibliotek Kompilator Runtimesystem Runtimebibliotek Objektkod Process 20
Datorarkitektur bild 1 21
Datorarkitektur bild 2 22
Vad gör OS:et? n Operativsystemet behöver alltså kunna hantera processer, och fördela resurser som CPU-tid och minnesutrymme till processerna på ett effektivt och rättvist sätt n Dessutom behöver OS:et tillhandahålla möjligheter för kommunikation mellan processer och med I/O-enheter 23
Vad gör OS:et? n Förutom detta behöver OS:et ha säkerhet för att skydda processer mot varandra och för att skydda OS:et mot användarprocesser n och även hålla reda på hur mycket resurser processerna förbrukar (för rättvisa eller debitering) 24
Vad är ett operativsystem? n Ett stödsystem för: n Programmerare av tillämpningar n Användare av tillämpningar 25
Två huvudsyften med OS n 1: Förenkla programmering av tillämpningar genom att tillhandahålla avancerat stöd för ofta efterfrågade funktioner och för att ge enhetliga gränssnitt mot hårdvara 26
Förenkla programmering n Exempel: Filsystem. OS:et tillhandahåller rutiner för vanliga filoperationer (skapa, skriv, läs, etc.) n Rutinerna ser likadana ut för tillämpningsprogrammeraren oavsett vilket fysiskt lagringsmedium som används 27
Förenkla programmering n Stödet definieras som ett gränssnitt för programmering (Application Programming Interface, API) n Exempel: Win32 API för att få stöd från Windows 28
Förenkla programmering n För att förenkla för dem som programmerar OS:et finns gränssnitt mellan OS och hårdvara. n För att översätta mellan generella OSkommandon och de specifika instruktioner en viss hårdvara kräver, används drivrutiner n Drivrutiner skrivs typiskt av hårdvarutillverkaren, olika OS kräver olika drivrutiner 29
Två huvudsyften med OS n 2: Förenkla användning av tillämpningar genom att tillhandahålla avancerat stöd för resurshantering och för att möjliggöra flera tillämpningar att vara aktiva samtidigt 30
Förenkla användning n Exempel: Processhantering. Flera tillämpningar kan vara igång samtidigt och dela på gemensamma resurser (CPU, minne, I/O) 31
Förenkla användning n Användaren samverkar med OS:et genom ett användargränssnitt (User Interface, UI), ofta grafiskt (Graphical User Interface, GUI) 32
Operativsystem på 1 bild Processer API Användare UI/ GUI OS Drivrutiner 33 Hårdvara
Typiska OS-funktioner n Tillhandahålla högnivåabstraktioner för: n Processhantering n Minneshantering n I/O n Filsystem n Säkerhet och skydd 34
Inga baksidor? n Jodå, det kostar! n Operativsystemet kostar resurser i form av processorkraft och minne (just de viktiga resurser som ett OS skall vara duktigt på att hantera) 35
Inga baksidor? n Eftersom OS:et är byggt för standardprocesser så är det mesta inte perfekt för en given process n Om vi skräddarsydde alla funktioner för en given speciell process, så skulle det kunna bli effektivare än med ett OS som skall kunna hantera olika typer av processer 36
Ett matexempel n Det sägs att det finns inte något sådant som en gratis lunch, så ett matexempel vore kanske på sin plats för att förklara vad OS:et gör och varför det kostar men ändå är värt det 37
Pizza till lunch? n Antag att du vill äta pizza till lunch n Två (av flera) alternativ: n Göra pizzan själv, eller n Gå till en pizzeria och äta där 38
Pizza till lunch? n Om du köper alla råvaror och går hem och bakar pizzan själv så blir det billigare n Om du går på pizzerian så slipper du jäsa en deg och koka tomatsås och riva ost och en massa annat kletigt och så slipper du diska! n Ofta är vi beredda att betala för bekvämligheten (och tiden vi sparar) 39
OS till lunch? n Samma med ett OS: vi skulle kunna skriva all kod för all hårdvaruhantering själva och köra direkt på hårdvaran n Vi skulle slippa overheaden som OS:et tar (CPU och minne), men n det skulle vara ett hästarbete! 40
Multitasking i restaurangen n En restaurang kan dessutom utnyttja sin dyra mästerkock och sitt stora kök genom att ha flera gäster samtidigt n Med lite bra timing behöver inte gästerna vänta väldigt mycket längre än om de hade varit ensamma i restaurangen 41
Multitasking i datorn n OS:et gör precis samma sak, det hanterar flera processer samtidigt men försöker få det att se ut som om varje process var ensam på datorn och hade alla resurser för sig själv n Illusionen av att ha alla resurser själv är typisk för ett OS med multitasking 42
43
OS:ets historia n OS:ets historia är naturligt nog intimt kopplat till datorernas historia n I parallellkursen Datakommunikation (DVA218) ges en översikt över datorernas historia i introduktionsföreläsningen (ni som är datavetare har hört denna översikt i introduktionskursen till DVP) 44
OS:ets historia n Kortversionen av datorernas historia är att de har gått från att vara stora och inte särskilt kraftfulla till att vara små och kraftfulla n Generationsnumren här används för att matcha bokens numrering, notera dock gärna att jag har avvikande åsikter ibland 45
Generation 1: Inget OS n De första datorerna hade inget alls som liknar ett operativsystem, utan all kodning gjordes från grunden för varje program som skulle köras n Datorerna programmerades att lösa en (1) uppgift (köra ett (1) program) 46
Generation 1: ENIAC 47
Generation 2: Kompilatorer, bibliotek och batchsystem n Under 1950-talet kom kompilatorer för att man skulle slippa skriva alla program i maskinkod n En styrka med kompilatorer är att man kan använda sig av biblioteksrutiner, så att man slipper skriva all kod själv 48
Generation 2: Kompilatorer, bibliotek och batchsystem n Biblioteksrutiner fanns redan tidigare, men lite knöligare att använda, typ en färdig lista med maskininstruktioner som programmeraren kunde kopiera n Kompilatorerna gjorde återanvändning enklare 49
Generation 2: Kompilatorer, bibliotek och batchsystem n Vissa biblioteksrutiner länkas in i objektfilen, andra anropas först när programmet körs n För att hantera rutiner som anropas när programmet körs krävs ett runtimesystem n Tidiga kompilatorers runtimesystem innehöll funktioner som finns i OS idag, exv. rutiner för I/O 50
Kompilatorteknik på 1 bild Källkod Bibliotek Kompilator Runtimesystem Runtimebibliotek Objektkod Process 51
Generation 2: Kompilatorer, bibliotek och batchsystem n Det var fortfarande 1 program (1 process) som körde på datorn, så den enda processen hade full access till alla datorns resurser n OS:en som utvecklades på 1950-talet liknade runtimesystem och hade som huvudfunktioner att sköta gemensamma lågnivåfunktioner: I/O, filsystem etc. 52
Generation 2: Kompilatorer, bibliotek och batchsystem n Här har vi redan en av dagens operativsystems huvudfunktioner, att hjälpa programmeraren med kod för ofta använda rutiner och kod för att komma åt hårdvaran 53
Generation 2B: Kompilatorer, bibliotek och batchsystem n Boken nämner batchsystem: Ett tidigt sätt att köra flera program på en gång var att ge datorn en samling (en batch ) program som skulle köras, istället för att mata datorn med ett program i taget n Datorn körde sedan programmen, ett i taget, och producerade output 54
Generation 2B: Kompilatorer, bibliotek och batchsystem n Datorn behövde då ett program (resident monitor, Master Control Program) som styrde start och avslut av de olika programmen n Detta var en tidig form av processhantering, fast med bara en process åt gången 55
Generation 2B: Kompilatorer, bibliotek och batchsystem n Batchsystemen markerade övergången till mer moderna operativsystem eftersom den resident monitor (kontrollprogrammet) som hanterade användarnas program behövde ha full kontroll över datorn, medan användarprogrammen som kördes inte alltid hade det 56
Generation 2B: Kompilatorer, bibliotek och batchsystem n I tidiga system var interaktion begränsad, oftast hade programmet sina inputdata på en fil och producerade en fil med outputdata n Idag används ibland fortfarande uttrycket batchorienterat om ett program som inte interagerar med användaren 57
Generation 2: Bokhållning n Det var vanligt med datacenter där kunder lämnade in program för körning, då var det viktigt för debiteringen att veta hur mycket resurser som ett visst program förbrukat n Eftersom en process var ensam om datorn var det främst tiden för hela körningen som var viktig 58
Generation 2: Kompilatorer, bibliotek och batchsystem n Här har vi ytterligare en av dagens operativsystems huvudfunktioner, att hantera resurser som processer använder 59
Generation 2B: Säkerhet/skydd n Att skydda användare/kunder från andras processer som beter sig dåligt eller felaktigt, har varit viktigt sedan tidigt n Redan före batchtiden var korta väntetider viktiga 60
Generation 2B: Skydd n Redan under batchtiden infördes skydd mellan användarprocess och operativsystem n Detta för att kunderna inte skulle kunna fuska med resursåtgången och därmed debiteringen 61
Generation 2B: Skydd n Detta gav upphov till att skilja på vad en användarprocess fick göra (user mode), och vad OS:et fick göra (system mode, kernel mode eller supervisor mode) n I user mode får processen bara komma åt sin egen del av minnet och förbjuds använda vissa instruktioner som OS:et använder för kontroll av datorn 62
Generation 2B: Kompilatorer, bibliotek och batchsystem n Här har vi ytterligare en av dagens operativsystems huvudfunktioner, att skydda datorsystemet och andra processer från elaka eller felfungerande processer 63
Generation 3: Multiprogrammering n Ett typiskt datorprogram är en blandning av beräkningar och I/O, exempelvis läsningar och skrivningar av filer n För att förhindra att CPU:n stod sysslolös medan man väntade på I/O, introducerades multiprogrammering (multitasking), möjligheten att köra flera processer samtidigt 64
Generation 3: Multiprogrammering n Först med multiprogrammering var den brittiska LEO III år 1961 n Tanken var följande: Datorn har redan en monitor som håller koll på när processer skall startas eller avslutas n Om monitorn kan hålla koll på när en process skall göra I/O, kan en annan process få använda CPU:n samtidigt 65
Generation 3: Multiprogrammering n Det som krävs extra är att kunna spara processens tillstånd, så att den kan återupptas senare precis där den var n Processtillståndet är dynamiskt och innehåller förutom koden för programmet som körs även exv. innehållet i allt minne som processen skapat, innehållet i CPU:ns register och var i programmet processen är 66
Generation 3: Timesharing n I tidiga multitaskingsystem bytte man process bara för att maximera CPUutnyttjandet n I lite senare system kom en rättviseaspekt in, de olika processerna skulle få en rättvis del av tiden, timesharing-systemen uppfanns 67
Generation 3: Timesharing n Med timesharing blev mer interaktiva program möjliga på multitasking-datorer n Tidigare hade interaktiva program (grafiska användargränssnitt, spel!) bara varit möjliga på icke-multitasking-datorer, och då förstås för en användare i taget 68
Generation 3: Timesharing n MULTICS är ett klassiskt tidigt timesharing-system som givit influenser till mycket inom OS, bl.a. är UNIX en ordlek på MULTICS 69
Generation 3: Säkerhet n Att skydda användare/kunder från andras processer som beter sig dåligt eller felaktigt, blev ännu viktigare i multitasking-system n Minneshantering används för att begränsa en process till dess egna del av minnet, access till andra processers minne omöjliggörs 70
Generation 3: Bokhållning n När multitasking infördes blev det viktigt att hålla rätt på vilken process som förbrukade vilka resurser n Att bara hålla reda på klocktiden räckte inte, nu behövde förbrukad CPU-tid, minnesutrymme som togs upp, plats som togs upp i filsystemet, etc, bokföras 71
Generation 3: Bokhållning n Multitasking/timesharingsystemen (1960- tal) är de första moderna operativsystemen som innehåller allt det ett modernt operativsystem behöver innehålla 72
Bokens generation 4-5 n I boken presenteras generation 4 som persondatorgenerationen och (i 4:e upplagan) generation 5 som mobiltelefongenerationen 73
Bokens generation 4-5 n Såväl generation 4 som 5 är dock inte nya generationer i betydelsen nya mekanismer, utan snarare nya tillämpningsområden n Tvärtom innebar persondator-os:en ursprungligen liksom mobiltelefon-os:en en återgång till enanvändarsystem, i tidiga persondatorer utan skydd mellan användare och OS 74
75
Några viktiga mekanismer n En kortversion av vad som kommer att tas upp i de olika föreläsningarna 76
Processhantering n Hur startas en process? n Hur prioriterar OS:et när flera processer vill köra? n Vad behövs hållas reda på för att kunna byta mellan flera processer? n Är OS-kärnan själv en process? När kör den? 77
Processhantering n Om nu processer är skyddade från varandra, hur kommunicerar processer? n Om nu OS:et är skyddat från processen, hur utnyttjar processen OS:ets resurser? 78
Minneshantering n Hur skyddas OS:ets minne från processerna? n Hur skyddas processernas minne från varandra? n Kan processer trots allt dela minne? n Hur allokeras minne till processer? n Vad gör vi när minnet inte räcker för alla processer? 79
I/O n Hur kommer en process åt enheter för I/O? n Hur gör OS:et när input från en enhet skall till en process? n Hur delar processer på access till I/Oenheter? 80
Filsystem n Hur hanterar man data på lagringsminne? n Hur sker allokering av minne till filer? n Hur skyddas filer från andra processer? 81
Skydd och säkerhet n Hur ser OS:et till att endast behöriga processer får göra behöriga operationer? n Hur skyddar OS:et processer från varandra? n Hur skyddar OS:et systemet från hackers och andra mikroorganismer (virus etc.)? 82
Föreläsningsserien n Introduktion - vad är ett OS och varför OS? n Processer och processhantering n Baklås n Minneshantering n Filsystem n Input och output I/O n Skydd, Virtualisering 83