Documente Academic
Documente Profesional
Documente Cultură
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
0 3 6 30
P1 P3 P2 P4
0 3 7 8 12 16
P1 P2 P3 P2 P4 P1
0 2 4 5 7 11 16
P1 P2 P3 P4 P1 P3 P4 P1 P3 P3
• 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