Operativsystem - Processkedulering Mats Björkman 2015-02-02
Innehåll n Processer (föreläsning 2) 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, den här) n n Kriterier för en skedulerare Skeduleringsalgoritmer Operativsystem, Mats Björkman, MDH 2
Lärandemål n Mål för en skedulerare n Preemptive, Icke-preemptive n Skeduleringsalgoritmer för- och nackdelar n Beräkning av medelomloppstid Operativsystem, Mats Björkman, MDH 3
Skedulering och kontextbyte 1. Spara den exekverande processens tillstånd i processens PCB 2. Låt skeduleraren välja en ny process för exekvering 3. Ladda den nya processens tillstånd i processorn 4. Starta processorn med den nya processen Operativsystem, Mats Björkman, MDH 4
Kontextbyten är kostsamma! n Den stora kostnaden för ett kontextbyte är inte själva exekveringen av kontextbytet (spara register etc.) n Den stora kostnaden kommer av att det blir en massa cachemissar i systemet Operativsystem, Mats Björkman, MDH 5
Lokalitet (Locality of Reference) n Programexekvering uppvisar ofta stor lokalitet i användandet av både kod och data n Sannolikheten är stor att kod som just exekverats kommer att exekveras igen n Likaså är sannolikheten stor att data som just accessats kommer att accessas igen Operativsystem, Mats Björkman, MDH 6
Cachning är effektivt n På grund av lokalitet är det effektivt med cachning, att spara kod och data som vi använder i ett snabbare minne närmare CPU:n n Cachning sker i flera nivåer: den mest intensivt använda datan ligger i register n Därefter i en liten snabb cache n Sedan i allt större och långsammare Operativsystem, Mats Björkman, MDH 7
Kontextbyten bryter lokaliteten n Vid ett kontextbyte tar man bort den process som precis har fyllt cacharna med kod och data som just den processen använde, och ersätter den processen med en annan process Operativsystem, Mats Björkman, MDH 8
Kontextbyten bryter lokaliteten n Den nya processen vill (troligen) använda helt annan kod och andra data n Den nya processen kommer att råka ut för en lång rad cachemissar eftersom den nya processens nyligen använda kod och data inte finns i cacharna Operativsystem, Mats Björkman, MDH 9
Kontextbyten bryter lokaliteten n Samma sak händer med minneshanteringen, den gamla processens använda sidor finns tillgängliga i primärminnet, men troligen inte den nya processens sidor n Detsamma drabbar cachar för sidtabeller Operativsystem, Mats Björkman, MDH 10
Kontextbyten bryter lokaliteten n Ett kontextbyte innebär alltså att cachar för kod och data och minnessidor och cachar för sidtabeller och annat behöver fyllas på med innehåll från långsammare minnen n Detta gör att den nya processen exekverar långsammare till dess allt är inläst Operativsystem, Mats Björkman, MDH 11
Kontextbyten och thrashing n Kontextbyten är även en viktig orsak till thrashing n Thrasing är ett oönskat tillstånd i operativsystemet när en process inte hinner få effektivt arbete gjort för att alltför stor del av tidskvantat går åt till att läsa in saker som ramlat ut ur cachar och primärminne Operativsystem, Mats Björkman, MDH 12
Kontextbyten och thrashing n Problemet bakom thrashing är ett för litet tidskvantum och för små minnesresurser i förhållande till processens working set, d.v.s. den uppsättning av kod och data som processen för närvarande behöver för att kunna arbeta Operativsystem, Mats Björkman, MDH 13
Kontextbyten och thrashing n För lite minnesresurser gör att processens kod och data inte finns kvar i cachar och/eller primärminnet när det är dags för processen att exekvera igen n För kort tidskvantum gör att processen får ägna en stor del av tidskvantat till att läsa in till primärminne och cachar Operativsystem, Mats Björkman, MDH 14
Kontextbyten och thrashing n En lösning på thrashing är att öka tidskvantat, det försämrar dock responstiden n En annan lösning är att minska graden av multiprogrammering, d.v.s. antalet processer som är aktiva samtidigt Operativsystem, Mats Björkman, MDH 15
Swapping n Minska graden av multiprogrammering görs genom att swappa ut ett antal processer, lägga dem åt sidan en stund (görs av medeltidsskeduleraren ) n Detta ökar förstås responstiden för de processer som blir utswappade Operativsystem, Mats Björkman, MDH 16
Swapping vs swapping n För att förvirra används begreppet swapping både om att tillfälligt flytta undan processer ur readykön, och om det som borde kallas paging, att flytta minnessidor mellan primärminne och disklagring Operativsystem, Mats Björkman, MDH 17
Skedulerare n Skeduleraren bestämmer vilken process som skall få exekvera, när och hur länge n Flyttar aktiva processer mellan READY och RUNNING (och ev. andra tillstånd) n Skeduleringen kan antingen vara n n Preemptive Icke-preemptive n Tidskvantum/timeslice Operativsystem, Mats Björkman, MDH 18
Vad gör idle-processen? n De flesta OS håller sig med en idle-process n Idle-processen gör ingenting n Idle-processen har lägst prioritet och exekveras endast om det inte finns någon annan process i ready-kön Operativsystem, Mats Björkman, MDH 19
Varför idle-process? n Det finns flera anledningar till att vilja ha en idle-process: n Förenklar implementationen av skeduleraren; det finns alltid en process att skedulera n Idle-processens förbrukade CPU-tid är ett mått på hur mycket underutnyttjad CPU:n är Operativsystem, Mats Björkman, MDH 20
När skall det skeduleras? n När en ny process skapas n När en process avslutas/termineras n När den exekverande processen blockerar exv. p.g.a. I/O eller väntan på en semafor n Ett I/O-interrupt inträffar n Vid preemption: när tidskvantat tagit slut Operativsystem, Mats Björkman, MDH 21
En ny process skapas n Någon (en process) har bett OS:et att skapa en ny process n När detta sker måste skeduleraren ta ställning till om den nya processen skall få exekvera direkt, eller om den skapande processen skall fortsätta exekvera (eller om en tredje process skall exekvera) Operativsystem, Mats Björkman, MDH 22
En process avslutas/ termineras n När den exekverande processen avslutas, antingen frivilligt genom att den är klar, eller genom att den termineras av en eller annan anledning, då måste en ny process väljas att exekvera Operativsystem, Mats Björkman, MDH 23
En process blockeras n När den exekverande processen blockerar exv. p.g.a. I/O eller väntan på en semafor måste skeduleraren välja en annan process som skall exekvera Operativsystem, Mats Björkman, MDH 24
Ett I/O-interrupt inträffar n När ett I/O-interrupt inträffar kan det betyda att en väntande process borde få exekvera n Exempel: fil-i/o klar, inläsnng p.g.a. sidfel i minnet klar, nätverks-i/o (exv. inkommande paket) n När något sådant inträffar finns det troligen en process i ett väntetillstånd som skall flyttas till ready-kön och som kan vara aktuell att få exekvera Operativsystem, Mats Björkman, MDH 25
När skall det skeduleras? n Sammanfattningsvis, skedulera: n När det blir färre processer att välja mellan (den exekverande processen är inte längre aktuell att exekvera) n När det blir fler processer att välja mellan (nytillkomna i ready-kön) n Vid preemption: När tidskvantat tagit slut Operativsystem, Mats Björkman, MDH 26
Tidskvantat n Tidskvantats storlek är viktigt vid skedulering med preemption n Varje processbyte p.g.a. att tidskvantat tar slut innebär ett kontextbyte n Kontextbyten är kostsamma n Alltså borde tidskvantat vara stort n men n då blir responstiden lidande Operativsystem, Mats Björkman, MDH 27
Tidskvantat n Vissa system (exv. Windows) har olika eller variabelt tidskvantum för olika processer n Syftet är att ge bättre responstid åt interaktiva processer utan att ha alltför små (genomsnittliga) tidskvanta Operativsystem, Mats Björkman, MDH 28
Tidskvantat - implementation n Tidskvantat implementeras som ett regelbundet klockavbrott till processorn n Variabla tidskvanta implementeras som att processer får exekvera en viss multipel av klockavbrott n Exempel Windows: interaktiva trådar får tredubbelt tidskvantum, tråden får då exekvera till det tredje klockavbrottet innan den byts ut Operativsystem, Mats Björkman, MDH 29
Tidskvantat - implementation n Klockavbrott utan omskedulering är inte alls lika kostsamma, därför funkar det att ge en process en multipel av klockavbrott som tidskvantum Operativsystem, Mats Björkman, MDH 30
Typer av system n Olika typer av system kräver olika typer av skedulerare n Boken ger följande tre kategorier: n Batchsystem (utan interaktion med användare) n Interaktiva system (med interaktion med användare) n Realtidssystem (förutsägbarhet viktigt) Operativsystem, Mats Björkman, MDH 31
Typer av jobb n Olika typer av jobb finns också, beroende på vilka resurser de använder mest n CPU-bundna jobb utför många tunga beräkningar, exv. bildbehandling, simulering n I/O-bundna jobb utför mycket I/O, exv. databassökningar, filkopieringar n Dessa olika typer av jobb är inte hårt kopplade till föregående olika typer av system Operativsystem, Mats Björkman, MDH 32
Batchsystem n Inte riktigt som gamla tiders batchsystem, men: n Liten eller ingen interaktion med användare n Ofta stora jobb (mycket data att processa) med lång körtid n Tidskvantat kan vara stort, responstiden är mindre viktig än att inte slösa systemresurser på ideliga kontextbyten Operativsystem, Mats Björkman, MDH 33
Batchsystem n Exempel I/O-bundna: lönekörning, bankränta, data mining n Exempel CPU-bundna: väderprognoser, rendrering av animeringar, simuleringar Operativsystem, Mats Björkman, MDH 34
Interaktiva system n System där en eller flera processer interagerar med en eller flera användare n Kort responstid viktigt för att användaren skall vara glad och nöjd n Tidskvantats storlek blir ett avvägande mellan kort responstid och overheadkostnad Operativsystem, Mats Björkman, MDH 35
Interaktiva system n I vanliga system (Windows, UNIX, ) ligger tidskvantat typiskt mellan 10ms och 100 ms n Vissa system anpassar tidskvantat efter processen. Exempelvis Windows håller reda på vilka processer/trådar som är interaktiva och ger dessa ett längre tidskvantum Operativsystem, Mats Björkman, MDH 36
Interaktiva system n Interaktionen innebär i sig mycket I/O, därför är många interaktiva processer I/O-bundna n Spel etc. kan vara CPU-bundna Operativsystem, Mats Björkman, MDH 37
Realtidssystem n System som utför uppgifter där tidsåtgången måste vara förutsägbar n Exempel: Styrsystem för bromsar och airbag i bilar, reglersystem för kärnkraftverk n Ovanstående är exempel på hårda realtidssystem, system där tidskraven bara måste hållas Operativsystem, Mats Björkman, MDH 38
Realtidssystem n Det finns även en klass som kallas mjuka realtidssystem n Mjuka realtidssystem har fortfarande strikta tidskrav, men konsekvenserna av att inte hålla tiden är mindre n Exempel på detta är uppspelning av video och audio Operativsystem, Mats Björkman, MDH 39
Realtidssystem n Det är svårt för ett operativsystem att ge hårda realtidsgarantier om inte väldigt många förutsättningar är kända n Exempel är att i ett hårt realtidssystem måste ofta alla processer vara kända från början och inget dynamiskt skapande av processer tillåts n Ofta finns också krav på att det finns kända gränser för utnyttjande av resurser, exv. känd exekveringstid för alla processer Operativsystem, Mats Björkman, MDH 40
Realtidssystem n Realtidssystem är I/O-bundna närmast som regel, de flesta styr- och reglertillämpningar har relativt enkla algoritmer och spenderar en stor del av tiden med att få in sensordata från omgivningen och skicka ut styrdata n Realtidssystem som hanterar video kan använda mycket processorkraft, ofta dock på separata grafikprocessorer (GPU:er) Operativsystem, Mats Björkman, MDH 41
Vart är vi på väg? n Notera gärna Tanenbaums notering att eftersom CPU-er blir snabbare snabbare än I/O blir snabbare, så blir fler och fler jobb I/O-bundna n Den gamla principen att optimera för att hålla CPU:n maximalt sysselsatt kan därför diskuteras Operativsystem, Mats Björkman, MDH 42
Vart är vi på väg? n En annan intressant notering (som inte är Tanenbaums utan min) är att tidskvantat inte blivit kortare i takt med att CPU:er har blivit snabbare n Om processorerna blivit typ 1000 gånger snabbare på 15 år, varför är inte tidskvantat 1000 gånger kortare idag? Operativsystem, Mats Björkman, MDH 43
Vart är vi på väg? n Varför? n Min gissning: människor har inte blivit 1000 gånger snabbare på 15 år n Den stora anledningen till korta tidskvanta är responstid för interaktiva processer n För oss människor räcker en responstid i området 10-100 ms för att vi skall uppleva samtidighet Operativsystem, Mats Björkman, MDH 44
Olika skeduleringsalgoritmer n Eftersom olika typer av system har olika krav, så är det inte säkert att den skeduleringsalgoritm som är bra för en typ av system även passar till en annan typ av system Operativsystem, Mats Björkman, MDH 45
Mål för skeduleringsalgoritmer n Alla system: n Rättvisa alla processer med samma prioritet skall ges lika möjligheter att utnyttja systemets resurser n Policy Enforcement (exv. safety, security) n Balans i systemet alla delar skall vara så väl utnyttjade som möjligt Operativsystem, Mats Björkman, MDH 46
Mål för skeduleringsalgoritmer n Batchsystem n Minimera omloppstiden (turnaround time), dvs tiden för ett jobb att utföras n Maximera genomströmningen (throughput), dvs antalet jobb per tidsenhet n Maximera CPU-utnyttjandet (CPU utilization) Operativsystem, Mats Björkman, MDH 47
Mål för skeduleringsalgoritmer n Interaktiva system n Minimera svarstiden (Response Time), användaren skall inte behöva vänta i onödan n Proportionalitet, väntetiden skall stå i rimlig proportion till vad man väntar på Operativsystem, Mats Björkman, MDH 48
Mål för skeduleringsalgoritmer n Realtidssystem n Möta deadlines övergripande mål för realtidsskedulering n Förutsägbarhet ett mål för de flesta realtidssystem Operativsystem, Mats Björkman, MDH 49
Skeduleringsalgoritmer 50
Skeduleringsalgoritmer First come first served (FCFS) Interactive programs P1 P2 P3 P4 Starvation free Efficiency CPU Preemptive Operativsystem, Mats Björkman, MDH 51
Skeduleringsalgoritmer Round robin (Cirkulär kö) Interactive programs Quantum P2 Starvation free P1 CPU P3 Efficiency Preemptive Setting the Quantum? P4 Operativsystem, Mats Björkman, MDH 52
Skeduleringsalgoritmer Prioritetsbaserad Interactive programs P4 High P1 Medium P2 Low P3 Low Starvation free CPU Efficiency Preemptive Operativsystem, Mats Björkman, MDH 53
Skeduleringsalgoritmer Multipla köer Interactive programs High P4 P1 P1 Quantum = 1 unit Starvation free Medium P2 P4 Quantum = 2 units Efficiency Low P3 Quantum = 4 units Preemptive CPU Operativsystem, Mats Björkman, MDH 54
Skeduleringsalgoritmer Shortest job first (sjf) Interactive programs P4 P1 P2 P3 Starvation free Efficiency CPU Preemptive Operativsystem, Mats Björkman, MDH 55
Skeduleringsalgoritmer Lotteriskedulering Interactive programs P2? Starvation free P1 P3? Efficiency P4 Preemptive CPU Operativsystem, Mats Björkman, MDH 56
Skedulering i Windows n Prioritetsdriven n n Preemptive n n n Tråden (som är ready) med högst prioritet kommer alltid att skeduleras Trådar kan avbrytas av andra trådar Round robin inom varje prioritetsnivå Använder flera olika tidskvanta n Processor affinity n I multiprocessorsystem kan trådar bindas till ett subset av tillgängliga processorer Operativsystem, Mats Björkman, MDH 57
Prioritetsnivåer (interna) n 16 realtids -prioriteter (16-31) n 15 variabla prioriteter (1-15) Operativsystem, Mats Björkman, MDH 58
Prioritetsnivåer (Win32 API) Win32 definierar: n Fyra prioritetsklasser för processer: real-time, high, normal och idle n Sju prioritetsnivåer för trådar: time critical, highest, above normal, normal, below normal, lowest och idle Operativsystem, Mats Björkman, MDH 59
Mappning av Win32 API-prioriteter till interna prioriteter P R O C E S S Realtime Time critical Highest Above normal T H R E A D Normal Below normal 31 26 25 24 23 22 High 15 15 14 13 12 11 Normal 15 10 9 8 7 6 Idle 15 6 5 4 3 2 Lowest Idle 16 1 1 1 Operativsystem, Mats Björkman, MDH 60
Justeringar i Windows av prioriteter och tidskvanta n Varför gör de på detta viset? n Bättre responstider n Bättre throughput n Exempel på justeringar n Öka tidskvantat för just nu interaktiva trådar n Öka prioriteten för nyss väckta trådar n Öka prioritet och tidskvanta för trådar som fått vänta ett tag på CPU:n Operativsystem, Mats Björkman, MDH 61
Beräkningar av egenskaper för skeduleringsalgoritmer 62
Medelomloppstid (Average turnaround time) n Ett mått på genomströmning R n n Var är den genomsnittliga omloppstiden för alla processer? p = = Turnaround Number of time Average turnaround for processes time = process n x= 1 R n x p = end start Operativsystem, Mats Björkman, MDH 63
Övning Beräkna medelomloppstiden för 5 batchjobb som alla vill starta vid tid=0 (i ordningen A, B, C, D, E), och som har exekveringstiderna A=10, B=6, C=2, D=4 respektive E=8. Beräkna medelomloppstiden för var och en av följande skeduleringsalgoritmer: 1. FCFS 2. SJF 3. Round Robin, kvanta = 1 enhet R n p = Turnaround time = Number Average turnaround processes time x= 1 Operativsystem, Mats Björkman, MDH 64 of for = process n R n x p
Lösning - FCFS Exekveringstider A=10, B=6, C=2, D=4 och E=8 A B C D E 0 R n p = 10 = Turnaround Number of 1618 time for processes 22 30 process n R = x Average turnaround time x= 1 n 10 + 16 + 18 + 22 + 30 Average turnaround time = 5 Operativsystem, Mats Björkman, MDH 65 p = 96 5 = 19.2
Lösning - SJF Exekveringstider A=10, B=6, C=2, D=4 och E=8 C D B E A 0 R n 2 p = 6 12 20 = Turnaround Number of time Average turnaround Average turnaround for processes time time = process Operativsystem, Mats Björkman, MDH 66 = n x= 1 R n x 30 p 2 + 6 + 12 + 5 20 + 30 = 70 5 = 14
Lösning - Round robin Execution times A=10, B=6, C=2, D=4 and E=8 A B C D E 1 6 11 15 19 22 25 27 29 30 2 7 12 16 20 23 Average turnaround 3 8 time = 4 9 13 17 30 + 23 + 8 + 17 5 + 28 106 5 21.2 Operativsystem, Mats Björkman, MDH 67 5 10 14 18 21 24 26 28 = =
Lärandemål, igen n Mål för en skedulerare n Preemptive, Icke-preemptive n Skeduleringsalgoritmer för- och nackdelar n Beräkning av medelomloppstid Operativsystem, Mats Björkman, MDH 68
Processer, summering CPU PSEUDOPARALLELL MULTITASKING 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 PC SP REGS P R I O R I T Y I B A y++ y=0 8aea: 4f e0 4f e0 ble.-32 (8acc) 00008aec <.L5>: 8aec: 54 70 54 70 rts t 0 t 1 t 2 t 3 t 4 T I M E KRAV KONTEXTBYTE SKEDULERARE SYNKRONISERING SEMAFORER EGENSKAPER MEDDELADESYSTEMN Operativsystem, Mats Björkman, MDH 69