Sunteți pe pagina 1din 30

Curs 6

Blocaje
• Conceptul de blocaj
• Ignorarea blocajelor sau algoritmul struțului
• Detectarea și rezolvarea blocajelor
• Evitarea blocajelor
• Prevenirea blocajelor

1
Resurse(1)

• Exemple de resurse
– imprimante
– plottere
– Cd-recorder
• Procesele necesită acces la resurse într-o ordine rezonabilă
• Presupunând că un proces deține resursa A și cere resursa B
– În același timp un alt proces deține resursa B și cere resursa A
– Ambele procese sunt blocate

2
Resurse(2)

• Blocajele apar când


– Procesele dețin acces exclusiv asupra unui dispozitiv
– Ne referim la dispozitive cu termenul general de
resursă
• Resursele pot fi
– Preemptibile
– Nonpreemptibile

3
Resurse (3)

• Secvența de evenimente necesară utilizării unei


resurse este următoarea:
 Solicit resursa
 Utilizez resursa
 Eliberez resursa
• Dacă resursa solicitată nu este disponibilă
– Procesul poate fi blocat sau
– Poate returna un cod de eroare

4
Conceptul de blocaj
• Definiția formală :
Un set de procese este blocat dacă fiecare proces din setul
respectiv așteaptă un eveniment care poate fi cauzat doar de un alt
proces din acest set.
• De obicei evenimentul face referire la eliberarea unei
resurse.
• Nici unul din procese nu poate:
– Rula
– Elibera resurse
– Poate trece în starea awake

5
Condițiile de apariție a unui blocaj
1. De excluziune mutuală
• Fiecare resursă este fie ocupată de un proces fie liberă.
2. De deținere-așteptare a unei resurse
• Un proces ce deține resurse poate solicita resurse noi.
3. Nonpreemptivității
• Resursele ocupate nu pot fi retrase forțat unui proces.
4. De așteptare circulară
• Lanțul circular de așteptare este format din cel puțin două
procese.
• Fiecare resursă solicitată este deținută de următorul proces
din lanțul circular.

6
Modelarea blocajelor(1)
• Modelarea blocajelor utilizând grafuri orientate

– Resursa R este alocată procesului A (vezi orientarea săgeții)


– Procesul B solicită/așteaptă resursa S (vezi orientarea săgeții)
– Procesele D și C sunt blocate la solicitarea resurselor T și U

7
Modelarea blocajelor(2)

Strategii pentru rezolvarea blocajelor:


1. Ignorarea problemei blocajelor
2. Detectarea și rezolvarea blocajelor
3. Evitarea dinamică blocajelor
• Alocarea atentă a resurselor
4. Prevenirea blocajelor
• Negarea uneia din cele patru condiții de apariție a
blocajelor

8
Modelarea blocajelor(3)
A B C

Cum apare un blocaj 9


Modelarea blocajelor(4)

(o) (p) (q)

Cum poate fi evitat un blocaj 10


Ignorarea blocajelor- algoritmul
struțului
• Se bazează pe prezumpția că nu există blocaje
• Prezumpția este rezonabilă dacă
– Blocajele apar foarte rar
– Costul prevenirii blocajelor este mare
• UNIX și Windows utilizează această abordare
• Este un compromis între
– comoditate
– corectitudine

11
Detecția și rezolvarea blocajelor

• Monitorizează solicitările și eliberările de resurse.


• Poate fi identificat un ciclu care denotă apariția unui
blocaj

12
Rezolvarea blocajelor(1)
• Rezolvare prin preempțiune
– Eliberarea unei resurse alocate unui alt proces
– Metodă dependentă de natura resursei
• Rezolvare prin derulare înapoi(rollback)
– Marcarea punctelor de execuție a unui proces
– Salvarea stării unui proces și utilizarea ei
– Restartarea procesului din punctul de execuție
marcat dacă se identifică blocaj

13
Rezolvarea blocajelor(2)

• Rezolvarea blocajelor prin oprirea proceselor


– Cea mai simplă și eficientă metodă
– Oprirea unui proces din ciclul identificat dar și a
unui proces dinafara ciclului
– Este indicată oprirea unor procese a căror execuție
poate fi reluată de la început ( de exemplu NU se
oprește un proces de actualizare a unei baze de date)

14
Evitarea blocajelor
Traiectoria resurselor

Traiectoriile resurselor a două procese


15
Stări sigure și nesigure(1)

(a) (b) (c) (d) (e)

Demonstrație: starea (a) este sigură/nesigură?

16
Stări sigure și nesigure(2)

(a) (b) (c) (d)

Demonstrație: starea (b) este sigură/nesigură?

17
Algoritmul bancherului pentru o singură resursă

(a) (b) (c)

Precizați care din cele trei stări este nesigură, știind că sunt disponibile 10
unități.

18
Algoritmul bancherului pentru resurse multiple

19
Prevenirea blocajelor
Eliminăm condiția de excluziune mutuală

• Unele dispozitive cum ar fi imprimanta pot utiliza


tehnica spooling
– Blocajul la imprimantă este eliminat.
• Nu toate resursele utilizează tehnica spooling.
• Poate funcționa dacă:
– Evitarea alocării resurselor decât în cazuri absolut
necesare.
– Cât mai puține procese realizează solicitarea unei anumite
resurse.

20
Prevenirea blocajelor
Eliminăm condiția de deținere-așteptare

• Procesele trebuie să solicite resurse înainte de fi lansate în


execuție
– Un proces nu așteaptă niciodată resursele de care are nevoie.
• Probleme
– Procesul nu știe întotdeauna de care resurse are nevoie înainte de a-
și începe execuția.
– Procesul poate ocupa inutil resurse care pot fi alocate altor procese.
• Variație:
– Procesele să poată elibera toate resursele
– și să le primească imediat înapoi dacă le solicită.

21
Prevenirea blocajelor
Eliminăm condiția de nonpreempțiune

• Nu este o opțiune viabilă deoarece nu se poate


retrage forțat o resursă unui proces.
• Exemplu: un proces ce tipărește un document
pierde accesul la imprimantă în mijlocul
operației de tipărire

22
Prevenirea blocajelor
Eliminăm condiția de așteptare circulară

(a) (b)

• Resurse accesate în ordine crescătoare


• Graful resurselor nu va prezenta cicluri

23
Recapitulare prevenirea blocajelor

Condiție Abordare

Excluziune mutuală Spooling


Deținere-Așteptare Solicită toate resursele
inițial
Nonpreempțiune Retrage resursa
Așteptare circulară Numerotează și accesează
resursele în ordine
crescătoare

24
Alte tipuri de blocaje
Two-phase locking
• Faza 1
– Procesul rezervă înregistrările de care are nevoie una câte
una
– Dacă cel puțin una din înregistrări este deja rezervată își reia
execuția
• Dacă faza 1 s-a încheiat cu succes procesul va:
– Realiza actualizări
– Elibera înregistrările
• Este similară metodei în care toate resursele sunt alocate
înainte de execuția propriu-zisă a procesului
• Algoritmul funcționează dacă programatorul este foarte atent
ca un proces care a fost oprit din execuția primei faze să poată
fi restartat.

25
Comunication deadlocks

• Două procese se pot bloca chiar dacă nu


doresc partajarea aceleiași resurse:
– Procesul A trimite o cerere către procesul B.
– Procesul A intră în starea blocked până la
recepționarea unui mesaj de la procesul B.
– Procesul B trimite mesaj către procesul A și
intră la rândul său în starea blocked.
– Mesajul se pierde și ambele procese sunt
blocate.

26
Livelock
• 2 procese A și B accesează 2 resurse R1 și R2 în
ordinea de mai jos:
void A(void){ void B(void){
enter_region(&R1); enter_region(&R2);
enter_region(&R2); enter_region(&R1);
use_both_resources(); use_both_resources();
leave_region(&R2); leave_region(&R1);
leave_region(&R1); leave_region(&R2);
} }

Nici unul din procese nu va realiza un progres în execuția


sa dar nici nu va intra în starea blocked. Acest tip de blocaj
se numește livelock. 27
Starvation
• Algoritm pentru alocarea imprimantei: fișierele de
dimensiune mai mică au prioritate la tipărire.
• Algoritmul funcționează dacă imprimanta primește
numeroase cereri de tipărire a unor fișiere de
dimensiune mică.
• Totuși dacă apare o cerere de tipărire a unui fișier de
dimensiune mare, această cerere va fi amânată la infinit
fără a comuta procesul aferent în starea blocked (The
process is starving to death.)
• Soluția este: aplicarea strategiei de alocare primul sosit
primul servit.

28

De știut...
Definiți blocajul.
• Ce este o resursă preemptibilă?
• Ce este o resursă nonpreemptibilă?
• Care sunt condițiile de apariție a unui blocaj?
• Cum se pot modela blocajele?
• Caracterizați algoritmul struțului.
• Cum se realizează detecția și rezolvarea blocajelor?
• Cum se evită blocajele?
• Caracterizați starea sigură și nesigură.
• Caracterizați algoritmul bancherului pentru o singură resursă.
• Caracterizați algoritmul bancherului pentru resurse multiple.
• Cum se previn blocajele?
• Explicați și dați exemplu de two-phase blocking.
• Explicați și dați exemplu de comunication deadlock.
• Ce reprezintă un livelock? Exemplificați.
• Exemplificați noțiunea de starvation.
• Explicați diferențele dintre blocaj, livelock și starvation. 29
Bibliografie
• A. Silberschatz, P. Galvin, Operating
System Concepts, John Wiley and Sons
Inc., 2005, pag 90-108, 245-275.
• A. Tanembaum, Modern Operating
Systems, Prentice Hall, 2007, pag 433-466.
• Gh. Dodescu, Sisteme de operare, Ed.
Economică, 2003, pag 208-215.

30

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