Operativsystem - Processer I Mats Björkman 2015-01-21
Innehåll n Processer (föreläsning 2, den här) n n n Processmodell Processtillstånd Trådar n Processkommunikation (föreläsning 3) n n n Semaforer Monitorer Meddelandesystem n Skedulering/schemaläggning (föreläsning 4) n n Kriterier för en skedulerare Skeduleringsalgoritmer Operativsystem, Mats Björkman, MDH 2
Lärandemål n Program, process, tråd, task n Programräknare, stackpekare, processorregister n Kontextbyte n Skedulerare Operativsystem, Mats Björkman, MDH 3
Förenklingar för stunden n Vi antar ett enprocessorsystem med en processorkärna i processorn n Vi antar att processorn är sekventiell och utför en instruktion i taget n Vi antar att kompilatorer skapar objektkod där saker händer i samma ordning som i källkoden Operativsystem, Mats Björkman, MDH 4
Vad menas med exekvering? n När processorn kör ett program, stegar den sig igenom objektkoden och utför en instruktion i taget Operativsystem, Mats Björkman, MDH 5
Kraschkurs i assembler: 00008abe <_E>: 8abe: 79 00 00 05 79 00 00 05 mov.w #0x5 8ac2: 55 02 55 02 bsr.+2 (8ac6) 00008ac4 <.ef>: 8ac4: 54 70 54 70 rts PC 00008ac6 <_E_sub>: 8ac6: 19 11 19 11 sub.w r1,r1 8ac8: 1d 01 1d 01 cmp.w r0,r1 8aca: 4e 20 4e 20 bgt.+32 (8aec) 00008acc <.L6>: 8acc: 0d 13 0d 13 mov.w r1,r3 8ace: 09 33 09 33 add.w r3,r3 8ad0: 6b 02 a8 d4 6b 02 a8 d4 mov.w @0xa8d4:16,r2 8ad4: 09 32 09 32 add.w r3,r2 8ad6: 6b 82 a8 d4 6b 82 a8 d4 mov.w r2,@0xa8d4:16 8ada: 09 13 09 13 add.w r1,r3 8adc: 6b 02 a8 d6 6b 02 a8 d6 mov.w @0xa8d6:16,r2 8ae0: 09 32 09 32 add.w r3,r2 8ae2: 6b 82 a8 d6 6b 82 a8 d6 mov.w r2,@0xa8d6:16 8ae6: 0b 01 0b 01 adds #0x1,er1 8ae8: 1d 01 1d 01 cmp.w r0,r1 8aea: 4f e0 4f e0 ble.-32 (8acc) 00008aec <.L5>: 8aec: 54 70 54 70 rts Operativsystem, Mats Björkman, MDH 6
Programräknare n Programräknaren (PC) pekar ut den aktuella instruktionen som skall utföras n Programräknaren sparas ibland för att man skall kunna hitta tillbaka om man ger sig ut på tillfälligt besök i en annan del av koden Operativsystem, Mats Björkman, MDH 7
Subrutiner 00008abe <_E>: 8abe: 79 00 00 05 79 00 00 05 mov.w #0x5 8ac2: 55 02 55 02 bsr.+2 (8ac6) 00008ac4 <.ef>: 8ac4: 54 70 54 70 rts 00008ac6 <_E_sub>: 8ac6: 19 11 19 11 sub.w r1,r1 8ac8: 1d 01 1d 01 cmp.w r0,r1 8aca: 4e 20 4e 20 bgt.+32 (8aec) 00008acc <.L6>: 8acc: 0d 13 0d 13 mov.w r1,r3 8ace: 09 33 09 33 add.w r3,r3 8ad0: 6b 02 a8 d4 6b 02 a8 d4 mov.w @0xa8d4:16,r2 8ad4: 09 32 09 32 add.w r3,r2 8ad6: 6b 82 a8 d4 6b 82 a8 d4 mov.w r2,@0xa8d4:16 8ada: 09 13 09 13 add.w r1,r3 8adc: 6b 02 a8 d6 6b 02 a8 d6 mov.w @0xa8d6:16,r2 8ae0: 09 32 09 32 add.w r3,r2 8ae2: 6b 82 a8 d6 6b 82 a8 d6 mov.w r2,@0xa8d6:16 8ae6: 0b 01 0b 01 adds #0x1,er1 8ae8: 1d 01 1d 01 cmp.w r0,r1 8aea: 4f e0 4f e0 ble.-32 (8acc) 00008aec <.L5>: 8aec: 54 70 54 70 rts Operativsystem, Mats Björkman, MDH 8
Subrutinanrop n Subrutinanrop stöds av processorn: n Programräknaren sparas när man hoppar iväg (BSR Branch to Subroutine) Operativsystem, Mats Björkman, MDH 9
Subrutinanrop n När man vill hoppa tillbaka (RTS Return from Subroutine) plockas den sparade programräknaren (kallas då ofta återhoppsadressen) fram och man hoppar tillbaka till där man var n Exekveringen fortsätter med instruktionen efter BSR Operativsystem, Mats Björkman, MDH 10
Subrutinanrop BSR RTS Operativsystem, Mats Björkman, MDH 11
BSR Subrutinanrop PC sparas PC återhämtas RTS Operativsystem, Mats Björkman, MDH 12
Subrutiner på hög nivå n I språk på högre nivåer motsvaras subrutinen av proceduranrop och funktionsanrop Operativsystem, Mats Björkman, MDH 13
Var sparas programräknaren? n För att möjliggöra nästade subrutiner, d.v.s. ett subrutinanrop inuti en subrutin, behöver vi mer än en fix plats att lagra programräknaren n I tidiga arkitekturer fanns fasta register som användes, vilket begränsade möjligheten till nästade anrop till ett fix antal (exv. 7 i 8008) Operativsystem, Mats Björkman, MDH 14
Var sparas programräknaren? n Reentrant kod (att kunna anropa en procedur medan proceduren själv redan exekveras) är ett måste i de flesta moderna programspråk, exv. för att möjliggöra rekursion. n Då måste vi potentiellt kunna spara ett stort antal återhoppsadresser Operativsystem, Mats Björkman, MDH 15
Stacken n För att kunna spara undan programräknare och även andra data som kan behöva sparas vid reentranta proceduranrop, har moderna processorer en eller flera stackar n Stacken är ett minnesutrymme där man lagrar dessa data Operativsystem, Mats Björkman, MDH 16
Stackpekaren n Processorn har en stackpekare (SP), ett register som pekar ut aktuell position i stackminnet n Vid subrutinanrop läggs återhoppsadressen överst på stacken (push) n Vid återhopp plockas återhoppsadressen av från stacken (pop) Operativsystem, Mats Björkman, MDH 17
Stackpekaren n Stackminnet (och stackpekaren) är unikt för den pågående exekveringen, varje process behöver sitt eget stackminne, och har man flera trådar i en process (mer om detta strax), så behöver man en egen stack för varje tråd Operativsystem, Mats Björkman, MDH 18
Varför: Multiprogrammering n Fördelar: n Flera aktiviteter samtidigt n Förbättrar utnyttjandet av hårdvaran n Möjliggör fleranvändarsystem Operativsystem, Mats Björkman, MDH 19
Varför: Multiprogrammering n Nackdelar: n Ökad overhead för kontextbyten mellan processer n Konflikter (baklåsproblem m.m.) n Komplexitet!! Operativsystem, Mats Björkman, MDH 20
Processmodell n Definition: Concurrency (Pseudoparallellism) Program counter 4 Program Counters Context Switch A B C D D C B A A B C D Time Operativsystem, Mats Björkman, MDH 21
Lite terminologi n En process kallas även: n Jobb från batchtiden n Task från realtidsvärlden n Inuti en process kan det finnas flera trådar (threads) som exekverar (mer om detta senare) n Lite förvirrande kallas även trådar ibland för tasks Operativsystem, Mats Björkman, MDH 22
Lite terminologi n Multiprogrammering och multitasking är samma sak n Timesharing är multitasking++! n och: multi i multiprogrammering och multitasking har inget att göra med hur mycket hårdvara man har! Operativsystem, Mats Björkman, MDH 23
Uniprogrammering n Processorn måste vänta på att I/Ooperationen blir klar innan exekveringen kan fortsätta Operativsystem, Mats Björkman, MDH 24
Multiprogrammering n När ett jobb (en process) måste vänta på I/O, kan processorn byta till ett annat jobb (process) Operativsystem, Mats Björkman, MDH 25
Multiprogrammering Operativsystem, Mats Björkman, MDH 26
Olika modeller för multitasking n Cooperative multitasking processerna talar själva om när de vill att någon annan skall få exekvera n Preemptive multitasking OS:et avbryter processen när det är dags för en annan process att få exekvera Operativsystem, Mats Björkman, MDH 27
Cooperative multitasking n Vanligast i små system (typ inbyggda system) när man har full koll på vilka processer som exekverar n Enkelt, processen säger själv till när den vill lämna ifrån sig processorn n Mycket felkänsligt och säkerhetskänsligt! Operativsystem, Mats Björkman, MDH 28
Preemptive multitasking n Det allra vanligaste i större system och i system där man inte kan lita på alla processer n Operativsystemet sätter upp en maximal tid som en process får exekvera i ett svep (tidskvanta eller timeslice) Operativsystem, Mats Björkman, MDH 29
Preemptive multitasking n Om en process exekverar maxtiden i ett svep så genererar operativsystemet ett avbrott (interrupt) och byter process Operativsystem, Mats Björkman, MDH 30
Vad gör egentligen ett OS? Loop forever { Run the process for a while } Stop the process and save its state Load state of another process Operativsystem, Mats Björkman, MDH 31
Vad är en process? n n n n n n n n n Wikipedia: En process är en instans av ett program som exekveras sekventiellt av en processor Resurshanterare: Håller reda på alla resurser ett program behöver Minne för programkod och data Processtillstånd Öppna filer Håller också reda på tillståndet för varje resurs Operativsystem, Mats Björkman, MDH 32
Processtillstånd vs processtillstånd n En process har ett tillstånd, det är en ögonblicksbild med all den specifika information som behövs om vi vill återskapa processen precis som den är just nu n I ett OS befinner sig också processen i ett tillstånd, exempelvis körklar, väntande, exekverande, suspenderad Operativsystem, Mats Björkman, MDH 33
Processtillstånd n I ögonblickbilden (tillståndet) ingår bland annat ett antal hårdvaruregister som finns i processorn Operativsystem, Mats Björkman, MDH 34
Hårdvarutillstånd, exempel n PC (programräknare), som pekar ut var i programkoden processen befinner sig n Register, som håller variabler som processen just arbetar med n Stackpekare (SP), arbetsstacken är ett måste för en process (proceduranrop, interrupts) Operativsystem, Mats Björkman, MDH 35
Hårdvarutillstånd, exempel forts. n Statusregister för processen (privilegienivå exv.) n Minnespekare, processens minnesareor måste pekas ut (mer om detta i avsnittet om virtuellt minne) Operativsystem, Mats Björkman, MDH 36
Processer i OS n Operativsystemet hanterar processer genom att: n n n n n n n Skapa processer Kontrollera processer Byta mellan processer Avbryta processer Avsluta processer Kommunicera med processer och mellan processer Hålla rätt på processtillstånd Operativsystem, Mats Björkman, MDH 37
Processmodell med 2 tillstånd n Varje process befinner sig i endera av två tillstånd: n Körande n Icke körande Operativsystem, Mats Björkman, MDH 38
Ködiagram 2 tillstånd Operativsystem, Mats Björkman, MDH 39
Processmodell med 3 tillstånd Tillstånd n Running n Ready n Waiting Tillståndsövergångar Ready 1. En ny process väljs att exekvera Running Waiting 2. Processen avbryts för att en annan process skall exekvera 3. Processen blockeras (exv. i väntan på I/O) 4. Processen är inte längre blockerad Operativsystem, Mats Björkman, MDH 40 1 2 4 3
Ködiagram tre tillstånd Operativsystem, Mats Björkman, MDH 41
Processmodell från UNIX Operativsystem, Mats Björkman, MDH 42
Processmodell från Windows Operativsystem, Mats Björkman, MDH 43
Implementering av processmodellerna n OS:et behöver en processtabell, varje process behöver ett: n Process Control Block (PCB) n Processtillstånd n PC, SP, registerinnehåll, n Pekare till dataarea n Pekare till kod n Fildeskriptorer med filtillstånd n Skeduleringsinformation (ägare, prio etc.) Operativsystem, Mats Björkman, MDH 44
Implementering forts. n I OS-kärnan: n Mekanism för processbyten (dispatcher) n Skedulerare n Semaforhanterare n Kommunikationshanterare n Minneshanterare Operativsystem, Mats Björkman, MDH 45
PCB Code Data Stack R0 Rn PC SP STATE Exempel på implementation PCB Code Data Stack R0 Rn PC SP STATE Process Table PCB Code Data Stack R0 Rn PC SP STATE Synchronization Manager Inter Process Communication Manager OS Kernel Context Switch Scheduler Memory Manager File Manager CPU Memory HD Operativsystem, Mats Björkman, MDH 46
När skall OS:et byta process? n Klockavbrott n Processen har exekverat sitt tillåtna tidskvanta (quantum, time slice) n I/O-interrupt n Sidfel (sidan fanns inte i primärminnet) n Trap (något slags fel har uppstått, eller ) n Systemanrop (exv. open file, wait for user input)) Operativsystem, Mats Björkman, MDH 47
Skedulering och kontextbyte n En process kan frivilligt ge upp CPU:n genom: n att utföra I/O (exv. getchar()) n att gå till ett väntetillstånd (exv. sleep) n Alternativt kan OS:et välja att byta process på grund av: n Processen har exekverat tillräckligt länge n Processen råkar ut för något som tar tid (exv. sidfel, en minnessida måste hämtas från disk) Operativsystem, Mats Björkman, MDH 48
Skedulering och kontextbyte n När en process skall bytas ut, gör OS:et: n Växla ut den gamla processen n Välj en annan process att köra n Växla in den nya processen Operativsystem, Mats Björkman, MDH 49
Policies och mekanismer n Skedulering och kontextbyte är bra exempel på hur OS:ets arbete kan separeras i policies och mekanismer (boken 2.4.5) n Policies är vad som skall göras och varför n Mekanismer är hur något skall göras n Mekanismerna kan och bör implementeras fristående från policies Operativsystem, Mats Björkman, MDH 50
Skedulering och kontextbyte n I exemplet skedulering och kontextbyte: n Policies är till exempel: n Hur länge skall en process få exekvera innan den blir avbruten? n Vilken ny process skall väljas av flera möjliga? n Mekanismer är till exempel: n n Hur avbryts en pågående process? Hur sparas processtillståndet? Operativsystem, Mats Björkman, MDH 51
Skeduleraren n Beslutar vilken process som skall exekvera n Flyttar processerna mellan tillstånd Processes 0 1 n-2 n-1 Scheduler Operativsystem, Mats Björkman, MDH 52
Kontextbyte Görs av hårdvaran n Ett interrupt inträffar processormode sätts till kernel mode hårdvaran lägger PC+SP+REG på stacken Interruptrutinen lokaliseras Interruptrutinen sparar REG+PC+ i PCB:n + hanterar interruptet Skeduleraren väljer en process (PCB) att köra härnäst Informationen som finns i den nya PCB:n läggs in på sina rätta ställen Återgång till processen förbereds, processormode sätts till user mode, återhopp sker från interruptrutinen Timer PCB1 PCB2 PCB3 Interrupt Service Procedure (ISP) Scheduler CPU IRQ Vector Stack 53
Skeduleringsexempel: Earliest deadline first Time Running Ready Waiting Hur ser exekveringen ut? Notation: Pn(m) = Process n har m enheter exekvering kvar Pn[m] = Process n har en starttid (release time) m. Process Execution Time Release Time Deadline P1 2 0 3 P2 3 8 16 P3 5 0 12 P4 1 2 5 P5 3 6 10 S 0 1 2 3 4 5 6 7 8 9 10 11 12 13 - P1(2), P3(5) P4[2], P5[6], P2[8] P1(2) P3(5) P1(1) P4(1) P3(5) P5[6], P2[8] P3(5) - P3(4) P3(3) P5(3) P3(2) P2[8] P5(2) P5(1) P3(2), P2(3) - P3(2) P2(3) P3(1) P2(3) - P2(2) P2(1) 54
Flera nivåer av skedulerare n Skeduleraren vi har talat om hittills kallas ibland korttidsskedulerare n Om man har väldigt många processer som vill köra kommer resurserna att bli för snuttifierade (facktermen är för hög grad av multiprogrammering, d.v.s. för många processer igång samtidigt) Operativsystem, Mats Björkman, MDH 55
Flera nivåer av skedulerare n För att begränsa antalet körande processer kan OS:et välja att låta vissa processer (typiskt sådana med låg prioritet) vänta helt och hållet n Dessa processer läggs ut på disk (swapping, processerna swappas ut), och plockas vid ett senare tillfälle in i gen (swappas in) Operativsystem, Mats Björkman, MDH 56
Flera nivåer av skedulerare n Skeduleraren som avgör vad som swappas ut och in jobbar över större tidsrymder än korttidsskeduleraren n Kallas ibland medium-time scheduler (medeltidsskedulerare?) Operativsystem, Mats Björkman, MDH 57
Systemanrop n n Systemanropet är processernas sätt att be OS:et om att få något utfört Anropet är omgivet av begränsningar och skydd eftersom: n n OS:et är priviligierat (kör i kernel mode) och kan göra vad som helst Användarprogram kan vara illasinnade Operativsystem, Mats Björkman, MDH 58
Systemanrop i UNIX och Win32 Några exempel på systemanrop Operativsystem, Mats Björkman, MDH 59
Flera exekveringsmoder n Många OS har någon variant på ringar för skydd n Ringkonceptet kommer från MULTICS n En process som exekverar i en inre ring har alla privilegier från alla yttre ringar + några till n MULTICS hade 8 nivåer Operativsystem, Mats Björkman, MDH 60
Flera exekveringsmoder n Intels x86-processorer har (sedan 80286) en ringmodell med fyra nivåer n I praktiken används dock bara två Operativsystem, Mats Björkman, MDH 61
Olika exekveringsmoder n User Mode n Mode med få/inga/låga privilegier n De flesta användarprocesser exekverar i user mode n Supervisory Mode/Kernel Mode n Höga (alla) privilegier; kan exekvera alla instruktioner n OS-kärnan exekverar i kernel mode(!) Operativsystem, Mats Björkman, MDH 62
Olika exekveringsmoder n Byte från user mode till kernel mode: n Exekvera TRAP-instruktionen (systemanropsexemplet) n För att komma tillbaka till user mode? n Sätt om moden (peta i processorns statusregister), i kernel mode kan man göra det! Operativsystem, Mats Björkman, MDH 63
Flera stackar n Det är vanligt att en process har flera stackar n En stack för vanlig exekvering i User mode n En stack för exekvering i Kernel mode n (eventuellt flera) Operativsystem, Mats Björkman, MDH 64
Varför flera stackar? n OS:et kan använda processens stack från User mode, men n eftersom användarprocessen kan hantera den stacken, så kan den också missbruka den, och då ställa till problem för OS:et Operativsystem, Mats Björkman, MDH 65
Varför flera stackar? n Exempel: Antag att användarstacken har precis nått upp till toppen på en minnessida n Om man försöker lägga något på stacken så utlöses ett sidfel för att en ny minnessida behöver allokeras Operativsystem, Mats Björkman, MDH 66
Varför flera stackar? n Nu gör användaren ett systemanrop med sin stack fylld till toppen på sidan n TRAP-rutinen försöker pusha PC m.m. på stacken, men utlöser då ett sidfelsinterrupt n Interruptrutinen försöker pusha PC m.m. på stacken, men utlöser då ett sidfelsinterrupt Operativsystem, Mats Björkman, MDH 67
Varför flera stackar? n För att undvika dessa saker har man oftast en separat kernel stack för varje process n Denna stack är oåtkomlig från User mode och användarprocessen kan därför inte göra något dumt med den Operativsystem, Mats Björkman, MDH 68
Varför flera stackar? n Så fort man kommit in i kernel mode (via TRAP, interrupt etc.) byts stackpekaren från användarstacken till kernel stack n Vid återgång från kernel mode sker byte till användarstacken innan återhopp sker Operativsystem, Mats Björkman, MDH 69
Trådar (threads) n Traditionella processer har bara en exekveringstråd n Ett sätt att åstadkomma mer lättviktiga alternativ till processer är att tillåta mer än en pågående exekvering i samma process n Tänk det som att vi låter flera processer dela minne Operativsystem, Mats Björkman, MDH 70
Trådar (threads) n Trådtabell n PC, Register, - Unikt för tråden n Tillstånd - Unikt för tråden n Adressrymd - Delas inom hela processen n Stackpekare - Unikt för tråden n Stackminne - Delas oftast inom processen Thread Process Single threaded OS Multi threaded OS Operativsystem, Mats Björkman, MDH 71
Processer och trådar n Resursägande (process) n Öppnade filer, minnessidor, etc. n Skedulering/exekvering (tråd) n Programräknare, stackpekare(!!!), register etc. n Varje process har minst en exekveringstråd n Multitrådning n OS:et stöder flera samtidiga exekveringstrådar inom en och samma process Operativsystem, Mats Björkman, MDH 72
Processer kontra trådar n Process n n n Tråd En adressrymd där processen exekverar Skyddas av OS:et mot andra processer vad gäller minne, filer, I/O etc. n Ett exekveringstillstånd (running, ready, waiting,...) n n En exekveringsstack (parametrar, lokala variabler) Kommer åt processens minne och övriga resurser Operativsystem, Mats Björkman, MDH 73
Processer kontra trådar Operativsystem, Mats Björkman, MDH 74
Varför trådar? n Tar mindre tid att skapa och terminera än en process (slipper allokera/lämna tillbaka minne) n Går snabbare med kontextbyte, minneskontexten är densamma n Trådar kan kommunicera med varandra utan att behöva gå via OS:et Operativsystem, Mats Björkman, MDH 75
Varför trådar? n Trådar används ofta när ett program har flera saker den vill göra samtidigt n Exempel: Rättstavning i Word n Exempel: Webläsare laddar bilder parallellt n Varför inte egna processer? n De jobbar på delat data (Wordfil respektive websida) n Mindre kostsamt än att ha flera processer Operativsystem, Mats Björkman, MDH 76
Windows - trådtillstånd Operativsystem, Mats Björkman, MDH 77
Tasks n Används ibland i realtidssystem som ett alternativt namn på processer n I vissa språk (Ada exv.) är tasks benämningen på trådar n I Linux är tasks enheten som OS:et skedulerar Operativsystem, Mats Björkman, MDH 78
Lärandemålen igen n Program, process, tråd, task n Programräknare, stackpekare, processorregister n Kontextbyte n Skedulerare Operativsystem, Mats Björkman, MDH 79