Sunteți pe pagina 1din 26

Lecția 3

3
Planificarea proceselor

16.02.2021
Cuprins

• Nivele de planificare
• Criterii de planificare și cerințe către algoritmii de planificare

• Parametrii planificării
• Planificare preemtivă și non-preemtivă

• Algoritmi de planificare

16.02.2021
Nivele de planificare

• Planificare pe termen lung


• Planificare pe termen scurt
• Planificare pe termen mediu

16.02.2021

Criterii de planificare

• Echitate - garantarea fiecărui proces un anumit procent din timpul


procesorului, încercând de a evite situația, când procesul unui utilizator
ocupă constant procesorul, în timp ce procesul unui alt utilizator nu a început
să ruleze.
• Eficiență – a ocupa procesorul 100% din timpul de lucru, fără a-l lăsa să
stea inactiv în timp ce așteaptă lansarea proceselor gata de execuție. În SC
reale, încărcarea procesorului variază de la 40 la 90%.
• Reducerea timpului total de execuție (turnaround time ) - a asigura
timpul minim dintre începutul unui proces sau plasarea unei sarcini în coada
de așteptare și finalizarea acestuia.
• Reducerea timpului de așteptare (waiting time) - reducerea timpului
petrecut de procese în starea de pregătire și de lucrări în firul de așteptare.
• Reducerea timpului de răspuns (response time) - minimizarea timpului
necesar unui proces în sistemele interactive pentru a răspunde la o cerere a
utilizatorului.

16.02.2021
Parametrii planificării

 Parametri statici :

• Parametrii statici ai unui sistem de calcul


• Parametrii statici ai procesului

 Parametri dinamici

• Parametrii dinamici ai unui sistem de calcul


• Parametrii dinamici ai procesului

16.02.2021
Parametrii planificării

Parametrii dinamici ai procesului:


Activitatea oricărui proces reprezintă o succesiune de cicluri
de utilizare CPU și așteptarea finalizării operațiilor i/o.
Perioada de utilizare continuă a procesorului se numește
CPU burst, iar perioada continuă a operațiilor de i/o se
numește I/O burst .

16.02.2021
Planificare preemtivă și non-preemtivă

Planificatorul de procese poate lua decizii cu privire la alegerea


executării unui nou proces dintre cei aflați în stare gata pentru
execuție în următoarele patru cazuri:
1. Când procesul este transferat din starea RUN în starea de execuție
terminată.
2. Când un proces este transferat din starea RUN în starea WAIT
3. Când un proces este transferat din starea RUN în starea READY
(de exemplu, după o întrerupere a taimerului).
4. Când un proces este transferat din starea WAIT în starea READY
(o operație i/o s-a finalizat sau s-a produs un alt eveniment).

16.02.2021
Planificare preemtivă și non-preemtivă

Dacă SO planifică numai în situații forțate (cazurile 1, 2,4)


se spune că este o planificare nepreemptivă. Dacă
planificatorul ia decizii atât forțate, cât și neforțate, se
vorbește despre planificare preemtivă. Terminul „planificare
preemtivă” a apărut deoarece un proces în desfășurare,
contrar voinței sale, poate fi „împins” din starea de execuție
de un alt proces.

16.02.2021
Algoritmi de planificare

Fiecare dintre operaţiile executate de componentele SO


pentru gestionarea proceselor se bazează pe algoritmi
care trebuie să îndeplinească următoarele condiţii:
• să realizeze criteriile de performanţă ale SC
• să aibă timpi de execuţie foarte mici şi un consum
redus de resurse sistem.

16.02.2021
Algoritmi de planificare

1. Algoritmul First-Come, First-Served (FCFS)


Acest algoritm efectuează o planificare non-preemtivă: un
proces care are la dispoziție procesorul îl deține până expiră
CPU burst al său (timpul necesar pentru execuție). După
aceea, un nou proces este selectat pentru executare de la
începutul cozii.
procese p0 p1 p2
CPU burst 13 4 1
Timpul mediu de așteptare:
(0 + 13 + 17) / 3 = 10
Timpul mediu de execuție:
(13 + 17 + 18) / 3 = 16

16.02.2021
Algoritmi de planificare

Dacă aceleași procese sunt aranjate în ordinea p2, p1, p0:

Timpul mediu de așteptare:


(5 + 1 + 0) / 3 = 2

Timpul mediu de execuție:


(18 + 5 + 1) / 3 = 8

16.02.2021
Algoritmi de planificare

2. Algoritmul Round Robin (RR)


O modificare a algoritmului FCFS este algoritmul RR implementat
doar în modul de planificare preemtivă.
SO stabilește un cuantum de

timp, pe parcursul căruia


se execută fiecare proces.

16.02.2021
Algoritmi de planificare
Algoritmul Round Robin (RR) q = 4 u.t.(1u.t)

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
P0
E E E E G G G G G E E E E E E E E E
P1
G G G G E E E E
P2 G G G G G G G G E

timpul mediu de așteptare este (5 + 4 + 8) / 3 = 5,6 (4)

timpul mediu de execuție este (18 + 8 + 9) / 3 = 11,6 (10)

16.02.2021
Algoritmi de planificare

3. Algoritmul Shortest-Job-First (SJF)

Analizând algoritmii FCFS și RR, am observat cât de


importantă este ordinea proceselor în coada proceselor
gata de execuție. Dacă am ști momentul următoarei
CPU - burst pentru procesele în starea RUN, atunci am
putea alege pentru execuție nu primul proces din firul
de așteptare, ci procesul cu durata minimă de CPU -
burst .
Algoritmul SJF poate fi preemtiv și non-preemtiv. Să
vedem un exemplu de algoritm non-preemtiv SJF.

16.02.2021
Algoritmi de planificare

Proces p0 p1 p2 р3
CPU burst 5 3 7 1

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Timpul
G G G G E E E E E
Р0
Р1 G E E E

Р2 G G G G G G G G G E E E E E E E

Р3 E

timpul mediu de așteptare : (4 + 1 + 9 + 0)/4 = 3,5 u.c.


timpul mediu de execuție : (9 + 4 + 16 + 1)/4 = 7,5 u.c.

16.02.2021
Algoritmi de planificare

Să vedem un exemplu al modului în care funcționează algoritmul


preeemtiv SJF. Fie o serie de procese p0, p1, p2 și p3 cu diferite
perioade de CPU-burst și diferite momente ale apariției lor în coada
proceselor gata de execuție.
Proces p0 p1 p2 р3
CPU burst 6 2 7 5
Apariția 1 3 7 1

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
Timpul
G G G G G G G E E E E E E
Р0
E E
Р1
G G G G G G G E E E E E E E
Р2
E E G G E E E
Р3
timpul mediu de așteptare : (7 + 0 + 7 + 2)/4 = 4 u.c.
timpul mediu de execuție : (13 + 2 + 14 + 7)/4 = 9 u.c.
16.02.2021
Algoritmi de planificare

Principala dificultate în implementarea algoritmului SJF este


imposibilitatea de a cunoaște durata exactă a următoarei durate
CPU burst pentru procesele care rulează. În sistemele batch,
cantitatea de timp procesor este specificată de utilizator atunci
când jobul este creat. Dacă utilizatorul specifică mai mult timp
decât are nevoie, va aștepta rezultatul mai mult, deoarece
sarcina va fi încărcată în sistem mai târziu. Dacă specifică mai
puțin timp, este posibil ca sarcina să nu fie executată până la
capăt. Astfel, în sistemele de calcul soluția la problema estimării
timpului de utilizare a procesorului este lăsată în sarcina
utilizatorului. Cu o planificare pe termen scurt, putem prognoza
doar durata următoarei CPU burst, pe baza istoricului procesului.

16.02.2021
Аlgoritmi de planificare

La o planificare pe termen scurt, putem prognoza durata următoarei


CPU burst în baza istoricului procesului. Fie  τ (n) – valoarea a n  CPU
burst,  T(n + 1) valoarea prezisă pentru a n + 1 CPU burst, α - o anumită
valoare în intervalul de la 0 la 1.
Definim relația de recurență T(n + 1)= α τ(n) +(1- α)T(n).
Fie T(0) o constantă arbitrară. Primul termen ia în considerare ultimul
comportament al procesului, al doilea termen ține cont de preistorie.
Când  α = 0   nu mai monitorizăm ultimul comportament al procesului,
deoarece are loc T(n+1)= T(n)=...=T(0) adică, evaluăm toate valorile CPU
burst la fel, pe baza unor presupuneri inițiale.
Când α =1 uităm de istoricul procesului, deoarece T(n+1)= τ(n).
În sistemele reale este ales α = 1/2 pentru a ține cont atât de
comportamentul recent al procesului cât și de preistoric în mod egal.

16.02.2021
Аlgoritmi de planificare
4. Planificare garantată
Algoritmul de planificare garantată presupune egalitatea ca importanță din
punct de vedere al utilizatorilor, nu al proceselor. Daca sunt „n” utilizatori,
atunci fiecăruia îi va reveni ~1/n din timpul de lucru al UCP. Numerotăm toți
utilizatorii de la 1 la N. Pentru utilizatorul cu numărul i introducem două
valori: Ti - timpul în care utilizatorul se află în sistem sau, cu alte cuvinte,
durata sesiunii sale de comunicare cu SC și τi - timpul total al procesorului
deja alocat tuturor proceselor sale în timpul sesiunii. Ar fi corect ca utilizatorul
să obțină Ti/N timp procesor. Dacă τi < Ti/N atunci utilizatorul i este privat pe
nedrept de timpul procesorului. Dacă
τi > Ti/N atunci sistemul favorizează în mod evident utilizatorul i. Se
calculează pentru procesele fiecărui utilizator valoarea coeficientului de
echitate τi•N/Ti și se furnizează următorul cuant de timp procesului cu cea
mai mică valoare a acestui raport. Algoritmul propus se numește algoritmul
de planificare garantat.

16.02.2021
Algoritmi de planificare

5. Planificarea cu priorități

În planificarea prioritară, fiecărui proces i se atribuie o


anumită valoare numerică – prioritatea, în funcție de care i
se alocă procesorul. Procesele cu aceeași prioritate sunt
planificate în ordine FCFS. Pentru algoritmul SJF, această
prioritate este estimarea duratei următoarei CPU burst. Cu
cât această valoare este mai mică, cu atât prioritatea
procesului este mai mare.

16.02.2021
Algoritmi de planificare

Planificarea prioritară poate fi preemtivă sau non-


preemtivă. În planificarea preemtivă, un proces cu prioritate
mai mare care apare în coada proceselor pregătite de
execuție suspendă procesul care rulează, care are o
prioritate mai mică. În cazul planificării non-preemtive,
acesta devine primul în coada proceselor gata de execuție.

Fie un exemplu de utilizare a planificării prioritare non


preemptive.

16.02.2021
Algoritmi de planificare

Proces p0 p1 p2 р3
CPU burst 6 2 7 5
Apariția 1 3 7 1
Prioritatea 4 3 2 1 – prioritatea cea mai mare

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
Timpul
Р0 G G G G G G G G G G G G G G E E E E E E

Р1 G G G E E

Р2 G E E E E E E E

Р3 E E E E E

timpul mediu de așteptare : (14 + 3 + 1 + 0)/4 = 4.5 u.c.


timpul mediu de execuție : (20 + 5 + 8 + 5)/4 = 9.5 u.c.
16.02.2021
Algoritmi de planificare

Altfel va fi furnizarat procesorul în cazul planificării prioritare


preemtive.
Proces p0 p1 p2 р3
CPU burst 6 2 7 5
Apariția 1 3 7 1
Prioritatea 4 3 2 1

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
Timpul
G G G G G G G G G G G G G G E E E E E E
Р0
G G G E G G G G G G G E
Р1
Р2 E E E E E E E

Р3 E E E E E

timpul mediu de așteptare : (14 + 10 + 0 + 0)/4 = 6 u.c.


timpul mediu de execuție : (20 + 12 + 7 + 5)/4 = 11 u.c.
16.02.2021
Algoritmi de planificare

În exemplul de mai sus, prioritățile proceselor nu s-au


schimbat în timp. Astfel de priorități sunt numite statice.
Mecanismele de stabilire a priorităților statice sunt ușor de
implementat și implică cheltuieli relativ mici în selectarea
procesului cu cea mai mare prioritate. Cu toate acestea,
prioritățile statice nu răspund la schimbările de situații din
sistemul de calcul, ceea ce poate face necesară ajustarea ordinii
de execuție a proceselor. Mai flexibile sunt prioritățile dinamice
ale proceselor, care își schimbă valorile în timpul executării
proceselor. Valoarea inițială a priorității dinamice atribuite unui
proces este valabilă doar pentru o perioadă scurtă de timp, după
care i se atribuie o valoare nouă, mai mare. De regulă,
schimbarea priorității proceselor se realizează odată cu
efectuarea altor operații: la inițierea unui proces, la deblocarea
sau blocarea procesului, după ce a expirat cuantumul de timp
sau când procesul se încheie. Un exemplu de algoritm cu
prioritate dinamică este algoritmul SJF.
16.02.2021
Algoritmi de planificare

Concluzie
Una dintre cele mai limitate resurse ale SC este timpul
procesorului. Pentru a-l distribui între numeroasele procese din
sistem, trebuie aplicată procedura de planificare a proceselor.
În funcție de durata influenței planificării asupra
comportamentului SC, există planificarea proceselor pe termen
scurt, pe termen mediu și pe termen lung. Algoritmii specifici de
planificare a proceselor depind de obiectivele stabilite, de clasa
sarcinilor de rezolvat și se bazează pe parametrii statici și
dinamici ai proceselor și sistemelor de calcul. Deosebim
planificare preemtivă și non-preemtivă. Cu planificarea non-
preemtivă, procesul în execuție cedează procesorul către alt
proces doar din propria sa voință; cu planificarea preemtivă,
procesul în execuție poate fi împins din starea de execuție
contra voinței sale.

16.02.2021
Algoritmi de planificare

Cel mai simplu algoritm de planificare este algoritmul FCFS


non-preemtiv, care poate întârzia semnificativ procesele scurte
care nu au intrat la timp în starea pregătită. În sistemele de
partajare a timpului, versiunea preemtivă a acestui algoritm, RR,
a devenit răspândită. Dintre toți algoritmii non-preemtivi,
algoritmul SJF este optim în ceea ce privește timpul mediu de
așteptare al proceselor.

Fiind cei mai dificil de implementat, algoritmii de planificare


prioritară oferă un comportament flexibil al sistemelor de calcul
și adaptabilitatea lor la rezolvarea problemelor din diferite clase.

16.02.2021

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