Mats Björkman Mälardalens högskola DVA315 Operativsystem Mats Björkman Mälardalens högskola
Kursen i korthet Föreläsningar: OS-koncept och teori Ser på OS från OS-utvecklarens perspektiv Labbar: Programmering med OS-support Ser på OS ur programmerarens synvinkel Systemanrop, Multiprogrammering, Händelsestyrd programmering Tenta: Betyg 3,4 & 5 Seminarium: Välj ett eget ämne
Laborationerna/uppgifterna 3 uppgifter (som kommer att ta tid!) Lab 1: Win32 API-programmering, trådar, synkronisering och kommunikation. Lab 2: Planetlab – Klient/Server-arkitektur, Interprocesskommunikation, kritiska avsnitt. Lab 3: Grafisk klient – Fönsterhantering, händelse- och callback-hantering DVA315 - Operativsystem
Resurser Litteratur: Modern Operating Systems 4th ed., A. Tanenbaum, H. Bos (OBS! ”Global edition” billigare). 3:e upplagan fungerar också. Föreläsare och kursansvarig: Mats Björkman Labassistenter: Meng Liu, Sara Abbaspour, Saad Mubeen Kurshemsida: http://www.idt.mdh.se/kurser/dva315/ DVA315 - Operativsystem
Förra årets kursutvärdering Svarsfrekvens: 13 svarande av 45 studenter Egen arbetsinsats (54%) <25h/vecka Några betyg (skala 1-5) Övergripande betyg 3.8 Kursens undervisning 4.3 Tydlighet i examination 4.0 Kurslitteraturen gav stöd 3.2 Studiehandledning 3.8 Annat Fick du vid början av kursen information om tidigare kursutvärderingar: 69% ja DVA315 - Operativsystem
Förra årets kursutvärdering Svarsfrekvens: 13 svarande av 45 studenter Egen arbetsinsats (54%) <25h/vecka Några betyg (skala 1-5) Övergripande betyg 3.8 Kursens undervisning 4.3 Tydlighet i examination 4.0 Kurslitteraturen gav stöd 3.2 Studiehandledning 3.8 Annat Fick du vid början av kursen information om tidigare kursutvärderingar: 69% ja DVA315 - Operativsystem
Förra årets kursutvärdering Svarsfrekvens: 13 svarande av 45 studenter Egen arbetsinsats (54%) <25h/vecka Några betyg (skala 1-5) Övergripande betyg 3.8 Kursens undervisning 4.3 Tydlighet i examination 4.0 Kurslitteraturen gav stöd 3.2 Studiehandledning 3.8 Annat Fick du vid början av kursen information om tidigare kursutvärderingar: 69% ja DVA315 - Operativsystem
Förra årets kursutvärdering Svarsfrekvens: 13 svarande av 45 studenter Egen arbetsinsats (54%) <25h/vecka Några betyg (skala 1-5) Övergripande betyg 3.8 Kursens undervisning 4.3 Tydlighet i examination 4.0 Kurslitteraturen gav stöd 3.2 Studiehandledning 3.8 Annat Fick du vid början av kursen information om tidigare kursutvärderingar: 69% ja DVA315 - Operativsystem
Föreläsningsserien Introduktion - vad är ett OS och varför OS? Processer och processhantering Baklås Minneshantering Filsystem Input och output – I/O Skydd, Virtualisering DVA315 - Operativsystem
Innehållet Operativsystem är ett stort område Föreläsningarna hinner bara ta upp de mest grundläggande koncepten Labbarna ger erfarenhet av ett (1) API 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 DVA315 - Operativsystem
Vad är ett operativsystem? Ett stödsystem till hjälp när man vill köra ett program på en dator DVA315 - Operativsystem
Vad är ett program? Kod och data Koden finns typiskt i form av en körbar (exekverbar) fil på datorn (minfil.exe) Koden körs på datorn, använder indata och levererar utdata (även detta ofta från/till filer) DVA315 - Operativsystem
Vad är en process? Ett exekverande program kallar vi en process 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. DVA315 - Operativsystem
Närliggande områden Området operativsystem gränsar till (eller överlappar) flera andra områden: Kompilatorteknik (program/processer etc.) Datorarkitektur (CPU, minne, filsystem, …) DVA315 - Operativsystem
Kompilatorteknik på 1 bild Runtime-bibliotek Källkod Kompilator Bibliotek Runtime-system Process Objektkod DVA315 - Operativsystem
Datorarkitektur – bild 1 DVA315 - Operativsystem
Datorarkitektur – bild 2 DVA315 - Operativsystem
Vad gör OS:et? 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 Dessutom behöver OS:et tillhandahålla möjligheter för kommunikation mellan processer och med I/O-enheter DVA315 - Operativsystem
Vad gör OS:et? 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 …och även hålla reda på hur mycket resurser processerna förbrukar (för rättvisa eller debitering) DVA315 - Operativsystem
Vad är ett operativsystem? Ett stödsystem för: Programmerare av tillämpningar Användare av tillämpningar DVA315 - Operativsystem
Två huvudsyften med OS 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 DVA315 - Operativsystem
Förenkla programmering Exempel: Filsystem. OS:et tillhandahåller rutiner för vanliga filoperationer (skapa, skriv, läs, etc.) Rutinerna ser likadana ut för tillämpningsprogrammeraren oavsett vilket fysiskt lagringsmedium som används DVA315 - Operativsystem
Förenkla programmering Stödet definieras som ett gränssnitt för programmering (Application Programming Interface, API) Exempel: Win32 API för att få stöd från Windows DVA315 - Operativsystem
Förenkla programmering För att förenkla för dem som programmerar OS:et finns gränssnitt mellan OS och hårdvara. För att översätta mellan generella OS-kommandon och de specifika instruktioner en viss hårdvara kräver, används drivrutiner Drivrutiner skrivs typiskt av hårdvarutillverkaren, olika OS kräver olika drivrutiner DVA315 - Operativsystem
Två huvudsyften med OS 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 DVA315 - Operativsystem
Förenkla användning Exempel: Processhantering. Flera tillämpningar kan vara igång samtidigt och dela på gemensamma resurser (CPU, minne, I/O) DVA315 - Operativsystem
Förenkla användning Användaren samverkar med OS:et genom ett användargränssnitt (User Interface, UI), ofta grafiskt (Graphical User Interface, GUI) DVA315 - Operativsystem
Operativsystem på 1 bild Processer API Användare UI/ GUI OS Drivrutiner Hårdvara DVA315 - Operativsystem
Typiska OS-funktioner Tillhandahålla högnivåabstraktioner för: Processhantering Minneshantering I/O Filsystem Säkerhet och skydd DVA315 - Operativsystem
Inga baksidor? Jodå, det kostar! Operativsystemet kostar resurser i form av processorkraft och minne (just de viktiga resurser som ett OS skall vara duktigt på att hantera) DVA315 - Operativsystem
Inga baksidor? Eftersom OS:et är byggt för “standardprocesser” så är det mesta inte perfekt för en given process Om vi skräddarsydde alla funktioner för den givna speciella processen, så skulle det kunna bli effektivare än med ett OS DVA315 - Operativsystem
Ett matexempel 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 DVA315 - Operativsystem
Pizza till lunch? Antag att du vill äta pizza till lunch Två (av flera) alternativ: Göra pizzan själv, eller Gå till en pizzeria och äta där DVA315 - Operativsystem
Pizza till lunch? Om du köper alla råvaror och går hem och fixar pizzan själv så blir det billigare 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! Ofta är vi beredda att betala för bekvämligheten DVA315 - Operativsystem
OS till lunch? Samma med ett OS: vi skulle kunna skriva all kod för all hårdvaruhantering själva och köra direkt på hårdvaran Vi skulle slippa overheaden som OS:et tar (CPU och minne), men… …det skulle vara ett hästarbete! DVA315 - Operativsystem
Multitasking i restaurangen En restaurang kan dessutom utnyttja sin dyra mästerkock och sitt stora kök genom att ha flera gäster samtidigt Med lite bra timing behöver inte gästerna vänta väldigt mycket längre än om de hade varit ensamma i restaurangen DVA315 - Operativsystem
Multitasking i datorn 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 DVA315 - Operativsystem
DVA315 - Operativsystem
OS:ets historia OS:ets historia är naturligt nog intimt kopplat till datorernas historia I parallellkursen Datakommunikation (DVA218) ges en översikt över datorernas historia i introduktionsföreläsningen (tisdag 20/1 2015 kl 13-15 i Beta) DVA315 - Operativsystem
OS:ets historia 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 Generationsnumren här används för att matcha bokens numrering DVA315 - Operativsystem
Generation 1: Inget OS 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 Datorerna programmerades att lösa en (1) uppgift (köra ett (1) program) DVA315 - Operativsystem
Generation 1: ENIAC DVA315 - Operativsystem
Generation 2: Kompilatorer, bibliotek och batchsystem Under 1950-talet kom kompilatorer för att man skulle slippa skriva alla program i maskinkod En styrka med kompilatorer är att man kan använda sig av biblioteksrutiner, så att man slipper skriva all kod själv DVA315 - Operativsystem
Generation 2: Kompilatorer, bibliotek och batchsystem Vissa biblioteksrutiner länkas in i objektfilen, andra anropas först när programmet körs För att hantera rutiner som anropas när programmet körs krävs ett runtimesystem Tidiga kompilatorers runtimesystem innehöll funktioner som finns i OS idag, exv. rutiner för I/O DVA315 - Operativsystem
Generation 2: Kompilatorer, bibliotek och batchsystem Det var fortfarande 1 program (1 process) som körde på datorn, så den enda processen hade full access till alla datorns resurser OS:en som utvecklades på 1950-talet hade som huvudfunktioner att sköta gemensamma lågnivåfunktioner: I/O, filsystem etc. DVA315 - Operativsystem
Generation 2: Kompilatorer, bibliotek och batchsystem 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 Datorn körde programmen, ett i taget, och producerade output DVA315 - Operativsystem
Generation 2: Kompilatorer, bibliotek och batchsystem Datorn behövde då ett program (resident monitor, Master Control Program) som styrde start och avslut av de olika programmen Detta var en tidig form av processhantering, fast med bara en process åt gången DVA315 - Operativsystem
Generation 2: Kompilatorer, bibliotek och batchsystem I tidiga system var interaktion begränsad, oftast hade programmet sina inputdata på en fil och producerade en fil med outputdata Idag används ibland fortfarande uttrycket “batchorienterat” om ett program som inte interagerar med användaren DVA315 - Operativsystem
Generation 2: Bokhållning 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 Eftersom en process var ensam om datorn var det främst tiden för hela körningen som var viktig DVA315 - Operativsystem
Generation 2: Säkerhet/skydd Att skydda användare/kunder från andras processer som beter sig dåligt eller felaktigt, har varit viktigt sedan tidigt Redan före batchtiden var korta väntetider viktiga DVA315 - Operativsystem
Generation 2: Skydd Redan under batchtiden infördes skydd mellan användarprocess och operativsystem Detta för att kunderna inte skulle kunna fuska med resursåtgången och därmed debiteringen DVA315 - Operativsystem
Generation 2: Skydd 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) 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 DVA315 - Operativsystem
Generation 3: Multiprogrammering Ett typiskt datorprogram är en blandning av beräkningar och I/O, exempelvis läsningar och skrivningar av filer 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 DVA315 - Operativsystem
Generation 3: Multiprogrammering Först med multiprogrammering var den brittiska LEO III år 1961 Tanken var följande: Datorn har redan en monitor som håller koll på när processer skall startas eller avslutas 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 DVA315 - Operativsystem
Generation 3: Multiprogrammering Det som krävs extra är att kunna spara processens tillstånd, så att den kan återupptas senare precis där den var Processtillståndet är dynamiskt och innehåller förutom 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 DVA315 - Operativsystem
Generation 3: Timesharing I tidiga multitaskingsystem bytte man process bara för att maximera CPU-utnyttjandet I lite senare system kom en rättviseaspekt in, de olika processerna skulle få en rättvis del av tiden, timesharing-systemen uppfanns DVA315 - Operativsystem
Generation 3: Timesharing Med timesharing blev mer interaktiva program möjliga på multitasking-datorer 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 DVA315 - Operativsystem
Generation 3: Timesharing MULTICS är ett klassiskt tidigt timesharing-system som givit influenser till mycket inom OS, bl.a. är UNIX en ordlek på MULTICS DVA315 - Operativsystem
Generation 3: Säkerhet Att skydda användare/kunder från andras processer som beter sig dåligt eller felaktigt, blev ännu viktigare i multitasking-system Minneshantering används för att begränsa en process till dess egna del av minnet, access till andra processers minne omöjliggörs DVA315 - Operativsystem
Generation 3: Bokhållning När multitasking infördes blev det viktigt att hålla rätt på vilken process som förbrukade vilka resurser 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 DVA315 - Operativsystem
Bokens generation 4-5 I boken presenteras generation 4 som persondatorgenerationen och (i 4:e upplagan) generation 5 som mobiltelefongenerationen DVA315 - Operativsystem
Bokens generation 4-5 Såväl generation 4 som 5 är dock inte “nya” generationer i betydelsen “nya mekanismer”, utan snarare nya tillämpningsområden 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 DVA315 - Operativsystem
Några viktiga mekanismer En “kortversion” av vad som kommer att tas upp i de olika föreläsningarna DVA315 - Operativsystem
Processhantering Hur startas en process? Hur prioriterar OS:et när flera processer vill köra? Vad behövs hållas reda på för att kunna byta mellan flera processer? Är OS-kärnan själv en process? När kör den? DVA315 - Operativsystem
Processhantering Om nu processer är skyddade från varandra, hur kommunicerar processer? Om nu OS:et är skyddat från processen, hur utnyttjar processen OS:ets resurser? DVA315 - Operativsystem
Minneshantering Hur skyddas OS:ets minne från processerna? Hur skyddas processernas minne från varandra? Kan processer trots allt dela minne? Hur allokeras minne till processer? Vad gör vi när minnet inte räcker för alla processer? DVA315 - Operativsystem
I/O Hur kommer en process åt enheter för I/O? Hur gör OS:et när input från en enhet skall till en process? Hur delar processer på access till I/O-enheter? DVA315 - Operativsystem
Filsystem Hur hanterar man data på lagringsminne? Hur sker allokering av minne till filer? Hur skyddas filer från andra processer? DVA315 - Operativsystem
Skydd och säkerhet Hur ser OS:et till att endast behöriga processer får göra behöriga operationer? Hur skyddar OS:et processer från varandra? Hur skyddar OS:et systemet från hackers och andra mikroorganismer (virus etc.)? DVA315 - Operativsystem
Föreläsningsserien Introduktion - vad är ett OS och varför OS? Processer och processhantering Baklås Minneshantering Filsystem Input och output – I/O Skydd, Virtualisering DVA315 - Operativsystem