Föreläsning 3
Download
Report
Transcript Föreläsning 3
Kapitel 5: CPU-schemaläggning
Operating System Concepts – 8th Edition,
Silberschatz, Galvin and Gagne ©2009
Innehåll
Introduktion av CPU-schemaläggning, vilket är grunden
för multiprogrammerade OS
Beskrivning av olika schemaläggningsalgoritmer
Kriterier för att välja algoritm för ett specifikt system
Operating System Concepts – 8th Edition
5.2
Silberschatz, Galvin and Gagne ©2009
Grundläggande koncept
Schemaläggning är en grundläggande funktion i
OS – nästan alla resurser schemaläggs innan
användning
CPU-schemaläggning:
En process alternerar mellan att använda CPU:n
och att göra I/O (CPU–I/O Burst Cycle)
Viktigt att veta distributionen av CPU-burstarna
när man väljer algoritm
Operating System Concepts – 8th Edition
5.3
Silberschatz, Galvin and Gagne ©2009
Alternating Sequence of CPU And I/O Bursts
Operating System Concepts – 8th Edition
5.4
Silberschatz, Galvin and Gagne ©2009
Histogram of CPU-burst Times
Operating System Concepts – 8th Edition
5.5
Silberschatz, Galvin and Gagne ©2009
CPU-schemaläggaren
Väljer en av processerna i minnet som är redo att
exekvera och allokerar CPU:n till den
Schemaläggningsbeslut kan göras när en process:
1. Växlar från tillståndet running till tillståndet waiting
2.
Växlar från tillståndet running till tillståndet ready
3.
Växlar från tillståndet waiting till tillståndet ready
4. Avslutas (terminerar)
Schemaläggning enligt 1 och 4 är nonpreemptive
All annan schemaläggning är preemptive
Operating System Concepts – 8th Edition
5.6
Silberschatz, Galvin and Gagne ©2009
Dispatcher
En annan viktig komponent för CPU-
schemaläggningen är dispatchern
Dispatchern ger den utvalda processen kontroll
över CPU:n, vilket innebär att den:
Gör en context switch
Växlar till user mode
Hoppar till det ställe i programmet där det skall
återstartas
Dispatch latency – tiden det tar att stoppa en
process och starta en annan.
Operating System Concepts – 8th Edition
5.7
Silberschatz, Galvin and Gagne ©2009
Kriterier för schemaläggning
CPU-utnyttjande – CPU:n ska utnyttjas så
mycket som möjligt
Throughput – antal processer som exekverar
klart per tidsenhet
Turnaround time – tiden det tar att exekvera en
specifik process
Waiting time – tiden en process får vänta i ready
queue
Response time – tiden det tar från det en
förfrågan görs tills det systemet svarar
Operating System Concepts – 8th Edition
5.8
Silberschatz, Galvin and Gagne ©2009
First-Come, First-Served (FCFS)
Process
Burst Time
P1
24
P2
3
P3
3
Anta att processerna anländer i följande ordning: P1 , P2 , P3
Gantt-schemat blir då:
P1
P2
0
24
P3
27
30
Väntetid för P1 = 0; P2 = 24; P3 = 27
Genomsnittlig väntetid: (0 + 24 + 27)/3 = 17
Operating System Concepts – 8th Edition
5.9
Silberschatz, Galvin and Gagne ©2009
FCFS-schemaläggning (forts)
Anta att processerna istället anländer i följande ordning:
P2 , P3 , P1
Gantt-schemat blir då:
P2
0
P3
3
P1
6
30
Väntetid för P1 = 6; P2 = 0; P3 = 3
Genomsnittlig väntetid: (6 + 0 + 3)/3 = 3
Mycket bättre än föregående fall
Nonpreemptive, inte bra för tidsdelningssystem
Operating System Concepts – 8th Edition
5.10
Silberschatz, Galvin and Gagne ©2009
Shortest-Job-First (SJF)
SJF associerar varje process med längden på dess
nästa CPU-burst
När CPU:n blir ledig får processen med den kortaste
CPU-bursten exekvera
SJF är optimal – den ger en minimal genomsnittlig
väntetid för en given mängd processer
Svårigheten är att veta längden på nästa CPUburst… (går ej i short-term scheduling)
Operating System Concepts – 8th Edition
5.11
Silberschatz, Galvin and Gagne ©2009
Example of SJF
Process
Burst Time
P1
6
P2
8
P3
7
P4
3
Gantt-schema med SJF
P4
0
P3
P1
3
9
P2
16
24
Genomsnittlig väntetid = (3 + 16 + 9 + 0) / 4 = 7
Operating System Concepts – 8th Edition
5.12
Silberschatz, Galvin and Gagne ©2009
Bestämma längden på nästa CPU-burst
Vi kan inte veta längden, men vi kan uppskatta den
Kan göras genom att använda längderna på föregående CPU-
burstar, genom att beräkna ett exponentiellt medelvärde.
1. tn = längden på CPU-burst n
2. Τn+1 = uppskattat värde på nästa CPU-burst
3. En konstant α som ligger mellan 0 och 1, typiskt 0,5
4. Definition: Τn+1 = α tn + (1- α) Τn
Operating System Concepts – 8th Edition
5.13
Silberschatz, Galvin and Gagne ©2009
Prediction of the Length of the Next CPU Burst
Operating System Concepts – 8th Edition
5.14
Silberschatz, Galvin and Gagne ©2009
Preemptive SJF
Process
Arrival time
Burst Time
P1
0
8
P2
1
4
P3
2
9
P4
3
5
Hur kommer Gantt-schemat att se ut?
Vad blir den genomsnittliga väntetiden?
Operating System Concepts – 8th Edition
5.15
Silberschatz, Galvin and Gagne ©2009
Prioritets-schemaläggning
En prioritet (integer) associeras med varje process
CPU:n allokeras till processen med högst prioritet (lägst heltal högst
prioritet)
Preemptive
Nonpreemptive
Problem Starvation (svält) – processer med låg prioritet kanske aldrig får
exekvera
Lösning Aging – prioriteten ökar med väntetiden
Operating System Concepts – 8th Edition
5.16
Silberschatz, Galvin and Gagne ©2009
Round Robin (RR)
Varje process exekverar en kort tid (tidskvanta
q), vanligtvis 10-100 millisekunder. När denna
tid har gått placeras processen sist i ready
queue
Prestanda
q stort FIFO
q litet q måste vara stort i förhållande till
context switch time
Riktvärde: 80% av CPU-burstarna ska vara
mindre än q
Operating System Concepts – 8th Edition
5.17
Silberschatz, Galvin and Gagne ©2009
Exempel: RR med tidskvanta = 4
Process
P1
P2
P3
Burst Time
24
3
3
Gantt-schemat blir:
P1
0
P2
4
P3
7
P1
10
P1
14
P1
18 22
P1
26
P1
30
Oftast längre turnaround-tid än SJF, men lägre response-tid
Operating System Concepts – 8th Edition
5.18
Silberschatz, Galvin and Gagne ©2009
Tidskvanta and Context Switch
Operating System Concepts – 8th Edition
5.19
Silberschatz, Galvin and Gagne ©2009
Turnaround Time Varies With The Time Quantum
Operating System Concepts – 8th Edition
5.20
Silberschatz, Galvin and Gagne ©2009
Köer med flera nivåer
Ready queue delas upp i olika köer:
foreground (interactive)
background (batch)
Varje kö har sin egen schemaläggningsalgoritm
foreground – RR
background – FCFS
Schemaläggning måste göras mellan köerna
Prioritetsschemaläggning; (dvs, först alla från foreground och sen alla
från background)
80% till foreground med RR
20% till background med FCFS
Operating System Concepts – 8th Edition
5.21
Silberschatz, Galvin and Gagne ©2009
Multilevel Queue Scheduling
Operating System Concepts – 8th Edition
5.22
Silberschatz, Galvin and Gagne ©2009
Multilevel Feedback Queue
En process kan flytta mellan olika köer
Schemaläggaren måste definiera följande
parametrar:
Antal köer
Algoritmer för varje kö
Bestämma när en process skall uppgraderas
Bestämma när en process skall nedgraderas
Bestämma vilken kö en process skall läggas i
från början
Operating System Concepts – 8th Edition
5.23
Silberschatz, Galvin and Gagne ©2009
Exempel på en Multilevel Feedback Queue
Tre köer:
Q0 – RR med tidskvanta 8 millisekunder
Q1 – RR med tidskvanta 16 millisekunder
Q2 – FCFS
Schemaläggning:
En ny process läggs i kö Q0. När den får CPU:n, får den
exekvera 8 millisekunder. Om den inte är klar efter 8
millisekunder flyttas den till kö Q1.
I kö Q1 får processen ytterligare 16 millisekunder. Om den
fortfarande inte är klar flyttas den till kö Q2.
Operating System Concepts – 8th Edition
5.24
Silberschatz, Galvin and Gagne ©2009
Multilevel Feedback Queues
Operating System Concepts – 8th Edition
5.25
Silberschatz, Galvin and Gagne ©2009