Sunteți pe pagina 1din 47

Cursul 4:

Planificarea CPU
Cursul 3: Recapitulare

• Proces – un program
in executie; executie
secventiala
Cursul 3: Recapitulare (Cont.)
Cursul 3: Recapitulare (Cont.)
Cursul 5: Planificarea CPU
• Concepte de baza
• Algoritmi de planificare
• Planificare multiprocesor
• Exemple din SO
Concepte de baza ale planificarii
Concepte de baza
• Planificarea proceselor ~
planificarea threadurilor
• Planificarea se poate aplica
tuturor resurselor
computerului
• Planificarea CPU:
• Utilizarea eficienta a CPU
folosind multiprogramarea/
multitaskingul
• Ciclul de viata al unui
proces – executia unui
proces consta dintr-un ciclu
de executie CPU urmat apoi
de un ciclu asteptare a
operatiilor de I/O
Histograma duratei “CPU
burst”
Planificatorul CPU
• Selecteaza dintre procesele din memorie gata de executie
(care se gasesc in cozile PCB) si aloca CPU unuia dintre ele
• Deciziile de planificare CPU pot aparea atunci cand un proces:
1. Isi schimba starea din executie in asteptare
2. Isi schimba starea din executie in gata de executie
3. Isi schimba starea din asteptare in gata de executie
4. Se termina
• Planificarea in cazul punctelor 1 si 4 este nonpreemptiva
• Pentru celelalte puncte planificarea este preemptiva
Dispatcher
• Modulul dispatcher ofera controlul asupra
CPU proceselor selectate de planificator;
acest lucru implica:
• Schimbare de context
• Comutare in user mode
• Saltul la locatia de memorie adecvata din
programul utilizatorului pentru a reporni
programul
• Lantenta dispatcher-ului – timpul necesar
dispatcher-ului pentru a opri un proces si
pentru a porni un altul
Criterii de planificare
• Utilizarea CPU – CPU trebuie sa fie cat mai
ocupat [40% ~ incarcare usoara, 90% ~
incarcare masiva]
• Rata de transfer (throughput) – numarul de
procese care termina executia intr-o unitate
de timp
• Timpul de ciclare (turnaround)– perioada
de timp necesara pentru a executa un proces
anume, inclusiv timpii de asteptare
• Timpul de asteptare – perioada de timp in
care un proces a asteptat in coada
proceselor gata de executie
• Timpul de raspuns – perioada de timp de la
lansarea unei cereri pana la primirea primului
raspuns
Criteriul de Optimizare
• General
• Utilizarea maxima a CPU
• Rata de transfer maxima
• Timp minim de ciclare
• Timp minim de asteptare
• Timp minim de raspuns

• Contextual:
• Sisteme interactive– minimizarea variatiei
timpului de raspuns
Algoritmi de planificare
Context algoritmi in discutie
• Un proces pentru fiecare utilizator
• Un thread pe fiecare proces
• Procesele sunt independente
• Unic procesor, un singur core
Planificarea de tipul Primul venit – Primul servit
(FCFS)
Process Burst Time
P1 24
P2 3
P3 3
P1 P2 P3

0 24 27 30

Presupunem ca procesele ajung in ordinea: P1 , P2 , P3


Graficul Gantt pentru proces este afisat mai sus.
• Timp de asteptare pentru P1 = 0; P2 = 24; P3 = 27
• Timp mediu de asteptare: (0 + 24 + 27)/3 = 17
Planificarea FCFS (Cont.)
Sa presupunem ca procesele ajung in ordinea urmatore:
P2 , P3 , P1
Tabelul Gantt pentru planificare este :
P2 P3 P1

0 3 6 30

• Timp de asteptare pentru P1 = 6; P2 = 0; P3 = 3


• Timp mediu de asteptare: (6 + 0 + 3)/3 = 3
• O imbunatatire vizibila fata de cazul anterior
• Convoy effect -procese scurte in spatele proceselor lungi
• FCFS – nu este optim pentru sistemele de tip time-sharing
Planificarea FCFS (Cont.)
• Avantaje
• simplu
• Dezavantaje
• Convoy effect -procese scurte in spatele proceselor lungi
• FCFS – nu este optim pentru sistemele de tip time-sharing
• Eficienta proasta pentru procesele cu I/O intensiv
Planificarea de tipul “Cel mai scurt
job primul”(SJF)
• Se asociaza cu fiecare proces lungimea urmatorului sau
“CPU burst”. Aceste lungimi se folosesc pentru a planifica
procesul cu cel mai scurt timp posibil.
• Doua scheme:
• nonpreemptiva – odata ce CPU este folosit de un proces nu
poate fi intrerupt pana nu se termina burstul CPU
• preemptive – daca apare un nou proces ce are o lungime a
burst-ului mai mica decat lungimea ramasa a procesului ce inca
se desfasora, se intrerupe procesul curent. Aceasta schema este
cunoscuta ca “Shortest-Remaining-Time-First” (SRTF)
• SJF este optim– acorda un timp minim de asteptare pentru
un anumit set de procese
SJF non-preemtiv
Process Arrival Time Burst Time
P1 0.0 7
P2 2.0 4
P3 4.0 1
P4 5.0 4
• SJF (non-preemptive)

P1 P3 P2 P4

0 3 7 8 12 16

• Timpul mediu de asteptare= (0 + 6 + 3 + 7)/4 = 4


SJF preemtiv
Process Arrival Time Burst Time
P1 0.0 7
P2 2.0 4
P3 4.0 1
P4 5.0 4
• SJF (preemptive)

P1 P2 P3 P2 P4 P1

0 2 4 5 7 11 16

• Perioada medie de asteptare= (9 + 1 + 0 +2)/4 = 3


Determinarea lungimii urmatorului burst
CPU
• Se poate doar estima lungimea!
• Se poate aproxima utilizand lungimile
anterioare ale burst-urilor CPU, folosindu-se
media exponentiala
t n+1 = a tn + (1 - a )t n .

1. tn = actual length of n th CPU burst


2. τ n+1 = predicted value for the next CPU burst
3. α, 0 ≤ α ≤ 1
4. Define:
Anticiparea lungimii urmatorului burst CPU
Exemple de medii
exponentiale
• a =0
• tn+1 = tn
• Istoricul recent nu se ia in calcul
• a =1
• tn+1 = a tn
• Conteaza doar ultimele burst-uri CPU
• Daca extindem formula, obtinem:
tn+1 = a tn+(1 - a)a tn -1 + …
+(1 - a )j a tn -j + …
+(1 - a )n +1 t0

• Din moment ce a si (1 - a) sunt mai mici sau


egale cu 1, fiecare termen succesiv va avea un
impact mai mic decat predecesorul
SFJ
• Avantaje
• Timp mediu de asteptare optim
• Are atat varianta non-preemptiva cat si varianta
preemptiva
• Joburile I/O au precedenta in fata celor de calcul
intensiv
• Dezavantaje
• Imposibil de anticipat durata ramasa a unui job
• Joburile de calcul intensiv pot ajunge sa fie infometate
Planificarea in functie de
prioritati
• Un numar de prioritate (un intreg) este asociat fiecarui proces
• Prioritatea poate fi calculata luand in considerare: limitele de timp,
necesitatile de memorie, nr. de fisiere deschise, media I/O burst,
media CPU burst
• CPU este alocat catre procesul cu cea mai mare prioritate (cel mai
mic intreg º cea mai mare prioritate)
• Preemtiv
• Non-preemtiv
• SJF este o planificare pe baza de prioritati unde prioritatea
reprezinta valoarea anticipata a urmatorului burst CPU
• ProblemaºInfometare – procesele cu prioritate mica au sansa de
a nu fi deloc executate
• Solutia ºImbatranirea – pe masura ce timpul trece, prioritatea
fiecarui proces creste
Round Robin (RR)
• Fiecare proces primeste o cuanta de timp de CPU(time
quantum), de obicei intre 10-100 millisecunde. Dupa ce
cuanta se termina, procesul este intrerupt si adaugat in
coada proceselor gata de executie.
• Daca sunt n procese in coada proceselor gata de executie
si cuanta este q, atunci fiecare proces primeste 1/n din
timpul CPU in cuante de maxim q unitati de timp. Nici un
proces nu asteapta mai mult de (n-1)q unitati de timp.
• Performanta
• q mare Þ FIFO
• q mic Þ q trebuie sa fie considerabil mai mare decat durata
comutarii de context, altfel ar fi ineficient
RR cu cuanta de 20 ms
Process Burst Time
P1 53
P2 17
P3 68
P4 24
• Tabelul Gantt ():

P1 P2 P3 P4 P1 P3 P4 P1 P3 P3

0 20 37 57 77 97 117 121 134 154 162

• De obicei ofera un timp de ciclare mai mare decat SFJ, insa


timp de raspuns mai bun
Cuanta RR si timpul de comutare de context
Timpul de ciclare variaza in functie de cuanta
Round Robin (RR)
• Avantaj
• Nu face discriminari; fiecare job primeste cate o cuanta egala

• Dezavantaj
• Timpul mediu de asteptare poate fi rau
Cozi pe mai multe niveluri
• Coada cu procesele gata de executie (ready queue) este partajata
in cozi separate:
• foreground (interactive)
• background (batch)
• Fiecare coada are propriul algoritm de planificare
• foreground – RR
• background – FCFS
• Planificarea trebuie realizata intre cozi
• Planificare cu prioritate fixa (ex: servirea tuturor proceselor din
coada foreground si abia apoi pe cele din coada de fundal).
Exista sansa de a infometa anumite procese.
• Transa de timp – fiecare coada primeste un timp de procesor pe
care il poate imparti intre procesele din coada; ex: 80% pt coada
foreground alocabil RR; 20% pt coada de fundal alocabil FCFS
Planificare pe cozi multinivel
Coada multinivel cu Feedback
- MFQ
• Un proces se poate muta de la o coada la
alta; in acest fel se poate implementa
“imbatranirea”
• Planificatorul MFQ este definit de urmatorii
parametri:
• Numarul de cozi
• Algoritmul de planificare pentru fiecare coada
• Metoda folosita pentru a determina cand un
proces trebuie trecut in coada superioara
• Metoda utilizata pentru a determina cand un
proces este trecut in coada inferioara
• Metoda utilizata pentru a determina in ce coada
se va duce in prima instanta un proces
proaspat initializat
Exemple MFQ
• Trei cozi:
• Q0 – RR cu cuanta de 8 milisecunde
• Q1 – RR cu cuanta de 16
millisecunde
• Q2 – FCFS
• Planificarea
• Un job nou intra in coada Q0 care
este RR. Cand este alocat la CPU,
job-ul primeste 8 millisecunde. Daca
nu termina in 8 millisecunde, job-ul
este mutat in coada Q1.
• In coada Q1 job job-ul este planificat
din nou RR si primeste 16
milisecunde suplimentare. Daca tot
nu termina, este intrerupt si mutat in
coada Q2
Planificare multi-procesor
Planificare multi-procesor
• Planificarea CPU devine mult mai
complexa atunci cand exista mai
multe CPU
• Multiprocesare asimetrica – doar un
procesor acceseaza structurile de
date din sistem, atenuând nevoia de
partajare a datelor
• Multiprocesare simetrica- fiecare
procesor este auto-planificat
Afinitatea fata de procesor
• Cele mai recente date se afla in cache
• Daca un proces este mutat de la un
procesor la altul, exista un cost
reprezentat de invalidarea si repopularea
cache-ului
Echilibrarea sarcinilor (load
balancing)
• Volumul de munca este distribuit uniform
pentru toate procesoarele
• Este necesar pentru sistemele care au
cozi multiple
• Impacteaza regula de afinitate fata de
procesor
Procesoare multi-threading
• Mai multe procesoare/nuclee pe acelasi chip
• Blocajul memoriei = perioada de timp necesara pt
ca datele sa devina disponibile in momentul
accesarii memoriei
• Pentru a optimiza blocajul memoriei=> se lucreaza
cu nuclee multi-thread, fiecare thread hardware
parând a fi un procesor logic
• Apar doua nivele de planificare– OS, hardware
Exemple din SO
Exemple din SO
• Planificatorul Solaris
• Planificatorul Windows XP
Planificarea in
Solaris
• 6 clase de prioritizare, TS la baza
• Relatie inversa intre prioritati si
bucatile de timp pe fiecare categorie
(time slice)
• Procese interactive – prioritate
crescuta, procesele CPU-bound au
o prioritate scazuta
• Planificatorul transforma prioritatile
din fiecare clasa in prioritati globale
si alege firul de executie cu
prioritatea cea mai mare
Tabela dispecerului in Solaris (threaduri
interactive si TS)
• Planificatorul transforma prioritatile
din fiecare clasa in prioritati globale
si alege firul de executie cu
prioritatea cea mai mare
• Un thread va rula pana cand:
• Se va bloca
• Va termina cuanta de timp
• Va fi preemtat de un proces cu
prioritate mai mare
Prioritatile Windows XP
■ Preemtiv
■ 6 clase de prioritate/prioritate relativa in fiecare clasa
Planificarea Linux
• Doi algoritmi: “time-sharing” si “real-time”
• Time-sharing
• Prioritizarea se face in functie de credit-procesul cu
cele mai multe credite este planificat pentru
executie
• Creditul scade atunci cand apare o intrerupere
• Cand creditul= 0, se alege un alt proces
• Cand toate procesele au creditul= 0, apare re-
creditarea
• Bazandu-se pe factori ca prioritate si istoric
• Real-time
• Ref. Posix.1b – 2 clase
• FCFS si RR
• Procesul cu cea mai mare prioritate ruleaza intotdeauna
primul
Relatia dintre Prioritati si lungimea Time-Slice
Sfarsitul cursului 4

S-ar putea să vă placă și