Operativsystem IS1350 7.5hp Jim Dowling Docent, PhD [email protected] [Bilder av Robert Rönngren] Innehåll Om kursen www.it.kth.se/courses/IS1350 Vad är ett operativsystem och varför ser de ut som de gör? kap. 1.1-1.3, 1.6-1.7 Processer kap. 1.5, 2.1, 2.5 OS Föreläsning 1, Introduktion, historia och processer 2 Om kursen -varför Varför läsa OS? De flesta datorsystem behöver ett OS för att fungera OS:et påverkar vad man kan göra med ett datorsystem, hur det programmeras, prestanda hos applikationerna OS är märkvärdigt långlivade!!! - bra abstraktioner och API - krav på bakåtkompatibilitet OS Föreläsning 1, Introduktion, historia och processer 3 Om kursen – mål och krav Mål god förståelse för hur OS - är uppbyggda och fungerar - hur de påverkar applikationer, prestanda etc - kunna dra egna slutsatser utgående från kunskaperna i kursen på egen hand kunna programmera med systemanrop (dvs klara av C-programmering med systemanrop) Krav aktuell laborationskurs Tentamen OS Föreläsning 1, Introduktion, historia och processer 4 Exempeloperativsystem UNIX -> SunOS, Mac OS, Linux, (Windows) LINUX -> Android, Chrome Windows OS Föreläsning 1, Introduktion, historia och processer 5 Om kursen – det praktiska https://www.kth.se/social/course/IS1350/ Labbassistenter Lars Kroll, [email protected] Alexandru-Adrian (Alex) Ormenisan, [email protected] C-programmering OBLIGATORISK TENTAANMÄLAN VIA DAISY OS Föreläsning 1, Introduktion, historia och processer 6 Hur klarar man kursen? SKAFFA OCH LÄS BOKEN! Tips från tidigare års studenter Börja med labbarna i tid! Labbarna är realistiska programmeringsuppgifter Inte tillrättalagda Realistiska felmöjligheter Inte ”toy-examples/proof-of-concept” Ska lyfta er till en nivå: Lösa enklare civilingenjörsmässiga uppgifter OS Föreläsning 1, Introduktion, historia och processer 7 Professionalism Ni ska ut och jobba om 1-1.5 år! Hur mycket är en kurs om 7.5hp värd? Hur ska ni värdera 3 labbrapporter och program? (2 personer * 80 h) Ställ frågor!!!!!!! OS Föreläsning 1, Introduktion, historia och processer 8 Vilka krav ska man ställa på en prestandautvärdering? Mät rätt saker Alldeles för ofta mäter man inte det man tror att man mäter Mätnogrannhet – felmarginaler Bör normalt kunna anges Reproducerbarhet Experimenten måste vara sådan och så väl beskrivna att de kan upprepas av någon annan OS Föreläsning 1, Introduktion, historia och processer 9 Vad är ett operativsystem och varför ser de ut som de gör? Vad är ett operativsystem? (Det program som startas när datorn slås på) Det program som implementerar alla systemanrop Det/de program som exekverar i ”kernelmode” Operativsystemet skall göra datorsystemet användbart för dess ändamål! OS Föreläsning 1, Introduktion, historia och processer 11 Varför ser operativsystem ut som de gör? En liten historisk överblick av dator- och operativsystemens utveckling från 1940-talet och framåt Historia-första generationen –45-55 Datorer som fyller hela rum (kvarter) Mekaniska reläer och vakumtuber I/O kontrollpanel med switchar/kopplingspanel senare – hålkortsläsare Inget OS! Ex: ENIAC, BARK, BESK Bara en användare i taget - otympligt "I think there is a world market for maybe five computers." -- Thomas Watson, chairman of IBM, 1943 OS Föreläsning 1, Introduktion, historia och processer 13 Återanvändning av kod Måste varje användare skriva all kod från början? Återanvänd kod i form av biblioteksrutiner Kräver Relokerbarhet Länkare Laddare OS Föreläsning 1, Introduktion, historia och processer 14 Historia – andra generationen –55-65 Transistorer – tillförlitliga Kommersiella datorer, sk ”mainframes” Hålkort - band Front-end Exekvering Mainframe Band - printer Back-end Batch – flera ”job” samlas på band ”Off-line” – utskrift av resultat OS Föreläsning 1, Introduktion, historia och processer 15 Batch-Sequential Bearbetning Scanna → Sortera IBM 082 MapReduce OS Föreläsning 1, Introduktion, historia och processer Inte feltolerant Historia – tredje generationen –65-80 Integrerade kretsar – billigare Mainframes – minidatorer (PDP) Operativsystemen viktiga OS/360, MULTICS, UNIX Multiprogrammering Flera jobb samtidigt – överlappa I/O med beräkningar Spooling – läsa in jobb till kö samtidigt som andra jobb igång Timesharing – flera interaktiva användare delar CPU:n OS Föreläsning 1, Introduktion, historia och processer 17 UNIX MULTICS UNIX System V BSD POSIX MINIX OS Föreläsning 1, Introduktion, historia och processer LINUX 18 Dennis Ritchie Invented the C programmingLanguage and help Ken Thompson build the Unix Operating System OS Föreläsning 1, Introduktion, historia och processer 19 Historia – fjärde generationen –80-nu Ökande integration (kretsar) Superdatorer – mikrodatorer (persondatorer) inbyggda datorer Nätverk Persondatorer Användarvänlighet GUI – grafiska användargränssnitt CP/M, MS-DOS, WINDOWS OS Föreläsning 1, Introduktion, historia och processer 20 En närmare titt på vad OS gör och hur de organiseras Operativsystem för olika ändamål Olika tillämpningar/plattformar kan ställa speciella krav på operativsystem Speciella OS eller anpassade versioner av mer generella OS för: Stordatorer Servrar Multi-processorer Persondatorer Inbyggda system Realtidssystem Smart-cards OS Föreläsning 1, Introduktion, historia och processer 22 Vad gör ett operativsystem Filsystem (persistent lagring av information) I/O enheter (hantering utan alla detaljer) Processer (virtuella maskiner) Kommunikation Säkerhet, accesskontroll OS Föreläsning 1, Introduktion, historia och processer 23 Ett operativsystem levereras med Kärna Kör i kernel (supervisor) mode Kan ej bytas av enskilda användare Gemensam för alla användare Systemprogram (tcsh, ls, wc, ...) Kör i user mode (användarläge) Kan bytas av enskilda användare Ej gemensamma – olika användare kör normalt olika instanser av systemprogramvaran OS Föreläsning 1, Introduktion, historia och processer 24 Ett operativsystem kan levereras med Servers (mail, telnet, ...) Kör i user mode Kan ej bytas av enskilda användare Gemensamma för alla OS Föreläsning 1, Introduktion, historia och processer 25 Datorsystem Applikationer – ex. Webb, spel, administrativa system Kommandotolk/shell Editorer Kompilatorer Systemanrop Operativsystem CPU/Processer User space Minneshantering Filsystem Kommunikation Säkerhet I/O Kernel space Maskininstruktioner Mikroarkitektur Fysiska komponenter OS Föreläsning 1, Introduktion, historia och processer 26 Två vyer av operativsystem? Virtuell (utökad/extended) maskin Isolera program från hårdvaran Bättre programmeringsmodell Portabilitet Resurshanterare Filsystem Minne CPU tid I/O enheter OS Föreläsning 1, Introduktion, historia och processer 27 Operativsystemet som virtuell maskin Pascal, C, OZ, ML, Lisp.... Kompilator Assembly Assembler Binärkod med systemanrop Operativsystem Binärkod utan systemanrop Mikroprogram Mikrokod Digital logik OS Föreläsning 1, Introduktion, historia och processer 28 Olika synvinklar på ett operativsystem Användarens bild Kommandon (ls, wc, ...) Fönstersystem Programmerarens bild Systemanrop (fork(), exec(), ...) Minnesmodell (text, data, stack, ...) Implementatörens bild Struktur (monolitiskt, lagrat, ...) OS Föreläsning 1, Introduktion, historia och processer 29 Operativsystemsstruktur Monolitisk (vanlig) Lagrad, jfr OSI-modellen, MULTICS, WINDOWS NT Virtuella maskiner, VM-370, Pentium emulerar 8086, JAVA Virtual Machine Mikrokärnor – Client-Server modeller MACH, WINDOWS-98-2000 OS Föreläsning 1, Introduktion, historia och processer 30 Systemanrop Hur får vi kontrollen att övergå från user-mode (användarprogram) till kernel-mode (OS)? Systemanrop startas med någon form av TRAP instruktion Koden finns i kärnan Anropande process byter normalt stack tilll en kärnstack och fortsätter exekvera systemanropet i kärnan Exekverar i kernel (supervisor) mode Cirka 100 stycken i Posix (350+ i Linux, många fler i Windows) OS Föreläsning 1, Introduktion, historia och processer 31 count = read (fd, buffer, nbytes) FFFF nbytes buffer 1 fd SP R0 stack read 3 HELLO WORLD count = read (fd, buffer, nbytes) read() TRAP OS 2 data - heap text - programkod read - biblioteksfunktion 4 5 HELLO WORLD 0 OS Föreläsning 1, Introduktion, historia och processer 32 LÄS kap 1.6 – bra för labbarna! OS Föreläsning 1, Introduktion, historia och processer 33 Varför har vi valt UNIX som exempelsystem? Ett fleranvändar OS med många användningsområden Öppen källkod Först eller bland de första med många viktiga koncept Har influerat många andra OS (MS-DOS) Enkelt och rent API (systemanrop) Tillgång till vettiga labbmaskiner Används i många industriella applikationer där systemnära eller utveckling av kärnan krävs OS Föreläsning 1, Introduktion, historia och processer 34 Processer En av grundpelarna i operativsystem Program och processer Ett program är en följd av instruktioner En process är ett program under exekvering kod data (stack, heap, ...) registerinnehåll fildeskriptorer ytterligare administrativ info OS Föreläsning 1, Introduktion, historia och processer 36 Ett funktionsanrop – int main(int argc, char *argv[]) { int tal = 4; printTal(4); } void printTal(int param) { int aLokalVariable; printf(”tal %d\n”, param); } Aktiverings post 1 (stack frame) för main Aktiverings post 2 för PrintTal() Hur hittar man returadress och adress till föregående aktiveringspost om man tilllåter ett variabelt antal parametrar som man gör i C? OS Föreläsning 1, Introduktion, historia och processer Lokala variabler: tal OXFF Adress till aktiveringspost 0 Returadress efter main() Parametrar till main(): argv argc Lokala variabler: aLokalVariable Adress tilll aktiveringspost 1 Returadress efter printTal: Parametrar till printTal(): param DATA + HEAP TEXT OXO 37 Varför processer? Bättre programmeringsmodell – många problem hanteras naturligt av processer Bättre feltolerans – om en process går ned så behöver inte hela programmet/OS:et krascha Möjlighet till bättre resursutnyttjande genom överlappning av CPU-användning och perifera enheter (I/O-enheter) OS Föreläsning 1, Introduktion, historia och processer 38 Att skapa och terminera processer Processer i UNIX skapas med systemanropet fork() Processer fås att exekvera ett nytt program med ett systemanrop ur familjen exec() Processer kan terminera på fyra sätt: Normalt programslut (frivilligt) Med fel som programmet upptäckt (frivilligt) Fatalt fel (ofrivilligt) Dödas av annan process OS Föreläsning 1, Introduktion, historia och processer 39 Process hierarkier Två alternativ: Den process som skapar (föräldraprocessen) associeras med den skapade processen (barnprocessen) på något sätt, ex. UNIX Godtycklig eller ingen association mellan processer (ex. Windows) OS Föreläsning 1, Introduktion, historia och processer 40 Multitasking Multitasking innebär att flera processer exekverar samtidigt En process startar innan föregående avslutar De behöver inte bägge exekvera i samma ögonblick Processerna kan vara Program körda av olika användare vid timesharing Program för samma användare på en arbetsstation eller PC (t.ex. emacs och en kompilator) Systemprocesser OS Föreläsning 1, Introduktion, historia och processer 41 Förgrunds och bakgrundsprocesser i UNIX En process i UNIX kan antingen exekvera i förgrunden – vara den som man interaktivt arbetar mot bakgrunden (background) – processen exekverar men är inte den man interaktivt arbetar mot Bakgrundsprocesser används för att implementera delar av OS:et, serverprocesser för mail etc. Serverprocesser som exekverar i bakgrunden kallas ofta demoner (daemons) OS Föreläsning 1, Introduktion, historia och processer 42 Processtillstånd RUNNING schemaläggaren beslutar att köra processen blockerande systemanrop preemption BLOCKED något händer, t.ex. I/O klar READY Varför finns inte alla tänkbara tillståndsövergångar med i bilden? OS Föreläsning 1, Introduktion, historia och processer 43 Processtabell Operativsystemet behöver hålla information om processerna i systemet Implementeras i en processtabell Ett entry i processtabellen kallas ofta ProcessControl Block (PCB) Processhantering register programräknare stackpekare register prioritet process id föräldraprocessens PID signaler statistik Minneshantering text data/heap stack Filhantering root directory fildescriptorer User ID Group ID OS Föreläsning 1, Introduktion, historia och processer 44 Frågor Varför går det bra/vill man ofta ha, flera processer igång samtidigt? 100% CPU utnyttjande grad 20% I/O wait 50% I/O wait 80% I/O wait 0 #processer Vilken process skall få exekvera? OS Föreläsning 1, Introduktion, historia och processer 45 Schemaläggning Fördela exekveringstid mellan processer på ett rättvist och effektivt sätt Offline: alla processer är givna i förväg (batch jobb) Online: processer tillkommer kontinuerligt (ex. interaktivt fleranvändarsystem) OS Föreläsning 1, Introduktion, historia och processer 46 Mål för schemaläggning Allmänt Rättvis (fair) Implementera policy Balans – alla delar av systemet skall utnyttjas Batchsystem Maximera throughput Minimera turnaroundtid Maximera CPU-utnyttjandegraden Interaktiva system Minimera responstid Proportionalitet – möt användarens förväntningar Realtidssystem Klara deadlines Förutsägbarhet OS Föreläsning 1, Introduktion, historia och processer 47 Offline schemaläggning Shortest Job First (SJF) kan användas om man vet processernas exekveringstid i förväg Man tar processerna i ordning från processer med kort exekveringstid till processer med lång tid Om man vill ha en algoritm som ger den kortaste medelsluttiden för processerna är SJF bevisbart optimal OS Föreläsning 1, Introduktion, historia och processer 48 SJF och medelsluttid M Medelsluttid = (3+9)/2=6 Medelsluttid = (6+9)/2=7,5 0 3 6 9 OS Föreläsning 1, Introduktion, historia och processer 49 Avbrytande schemaläggning (preemptive scheduling) Exekverande process kan avbrytas utan att ha bett om det (RUNNINGREADY) Bra om vissa processer är interaktiva men inte nödvändigtvis alla En process avbryts om den kört länge/förbrukat sitt tidskvanta en process med högre prioritet blir körbar (BLOCKEDREADY) OS Föreläsning 1, Introduktion, historia och processer 50 Schemaläggning med tidsdelning (time-slicing) Alla processer som är READY ligger på readykön När en process har kört en stund, t.ex. 100ms, läggs den sist i ready-kön och den som ligger först får köra i stället Tiden som en process får köra kallas för time slice För bra prestanda krävs rimlig relation mellan time-slice och context-switch (processbytes) tid OS Föreläsning 1, Introduktion, historia och processer 51 Prioriteter Varje process har en prioritet 0-159 i Unix System V release 4 -20 – 20 i ”original” UNIX Processen med högst prioritet får köra (om ej BLOCKED) En process prioritet kan ändras under exekvering Prioriteter anger hur bråttom en process har Ta emot paket från nätet: Bråttom! Kompilera ett program: Inte så bråttom. OS Föreläsning 1, Introduktion, historia och processer 52 Prioriteter och tidsskivning En ready-kö för varje prioritet Processer som använder hela sin time slice utan att bli BLOCKED får lägre prioritet En process som ligger länge i ready-kön får så småningom ökad prioritet för att undvika svältning Kan ge bättre utnyttjande, ökad parallellitet, mellan CPUn och I/O-enheterna OS Föreläsning 1, Introduktion, historia och processer 53 Några ytterligare exempel på schemaläggningsstrategier Round-robin Shortest process next Uppskatta processens längd med längden av nästa CPU-burst (Tn+1) Tn+1 = aTn + (1-a)Tn-1, 0<= a <= 1 Probabilistisk schemaläggning, lotterischemaläggning OS Föreläsning 1, Introduktion, historia och processer 54 Policy och mekanism Ofta vill man skilja på policy och mekanism Ex: mekanismen är prioritetsschemaläggning policy är hur prioriteter väljs/bestäms OS Föreläsning 1, Introduktion, historia och processer 55 Sammanfattning Applikationer – ex. Webb, spel, administrativa system Kommandotolk/shell Editorer Kompilatorer Systemanrop Operativsystem CPU/Processer Minneshantering Maskininstruktioner Mikroarkitektur Fysiska komponenter OS Föreläsning 1, Introduktion, historia och processer 56 Kommande föreläsningar Tors 13-15 D2: Minneshantering: del 1 Mån 15-17 D3: Minneshantering: del 2 OS Föreläsning 1, Introduktion, historia och processer 57