Sunteți pe pagina 1din 32

Curs 6

Blocaje
Conceptul de blocaj Ignorarea blocajelor sau algoritmul struului Detectarea i rezolvarea blocajelor Evitarea blocajelor Prevenirea blocajelor

Resurse(1)
Exemple de resurse
imprimante plottere Cd-recorder

Procesele necesit acces la resurse ntr-o ordine rezonabil Presupunnd c un proces deine resursa A i cere resursa B
n acelai timp un alt proces deine resursa B i cere resursa A Ambele procese sunt blocate

Resurse(2)
Blocajele apar cnd
Procesele dein acces exclusiv asupra unui dispozitiv Ne referim la dispozitive cu termenul general de resurs

Resursele pot fi
Preemptibile Nonpreemptibile

Resurse (3)
Secvena de evenimente necesar utilizrii unei resurse este urmtoarea:
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
Definiia formal :
Un set de procese este blocat dac fiecare proces din setul respectiv ateapt 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

Condiiile de apariie a unui blocaj


1. De excluziune mutual
Fiecare resurs este fie ocupat de un proces fie liber. Un proces ce deine resurse poate solicita resurse noi. Resursele ocupate nu pot fi retrase forat unui proces.

2. De deinere-ateptare a unei resurse

3. Nonpreemptivitii
4. De ateptare circular

Lanul circular de ateptare este format din cel puin dou procese. Fiecare resurs solicitat este deinut de urmtorul proces din lanul circular.
6

Modelarea blocajelor(1)
Modelarea blocajelor utiliznd grafuri orientate

Resursa R este alocat procesului A (vezi orientarea sgeii) Procesul B solicit/ateapt resursa S (vezi orientarea sgeii) 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 Negarea uneia din cele patru condiii de apariie a blocajelor

4. Prevenirea blocajelor

Modelarea blocajelor(3)
A B C

Cum apare un blocaj

Modelarea blocajelor(4)

(o)

(p)

(q)
10

Cum poate fi evitat un blocaj

Ignorarea blocajelor- algoritmul struului


Se bazeaz pe prezumpia c nu exist blocaje Prezumpia 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

Detecia i rezolvarea blocajelor

Monitorizeaz solicitrile i eliberrile de resurse. Poate fi identificat un ciclu care denot apariia unui blocaj
12

Rezolvarea blocajelor(1)
Rezolvare prin preempiune
Eliberarea unei resurse alocate unui alt proces Metod dependent de natura resursei

Rezolvare prin derulare napoi(rollback)


Marcarea punctelor de execuie a unui proces Salvarea strii unui proces i utilizarea ei Restartarea procesului din punctul de execuie 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 cror execuie poate fi reluat de la nceput ( de exemplu NU se oprete un proces de actualizare a unei baze de date)

14

Evitarea blocajelor Traiectoria resurselor

Traiectoriile resurselor a dou procese


15

Stri sigure i nesigure(1)

(a)

(b)

(c)

(d)

(e)

Demonstraie: starea (a) este sigur/nesigur?


16

Stri sigure i nesigure(2)

(a)

(b)

(c)

(d)

Demonstraie: starea (b) este sigur/nesigur?


17

Algoritmul bancherului pentru o singur resurs

(a)

(b)

(c)

Precizai care din cele trei stri este nesigur, tiind c sunt disponibile 10 uniti.

18

Algoritmul bancherului pentru resurse multiple

19

Prevenirea blocajelor
Eliminm condiia 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 funciona dac:
Evitarea alocrii resurselor dect n cazuri absolut necesare. Ct mai puine procese realizeaz solicitarea unei anumite resurse.

20

Prevenirea blocajelor
Eliminm condiia de deinere-ateptare

Procesele trebuie s solicite resurse nainte de fi lansate n execuie


Un proces nu ateapt niciodat resursele de care are nevoie.

Probleme
Procesul nu tie ntotdeauna de care resurse are nevoie nainte de a-i ncepe execuia. Procesul poate ocupa inutil resurse care pot fi alocate altor procese.

Variaie:
Procesele s poat elibera toate resursele i s le primeasc imediat napoi dac le solicit.
21

Prevenirea blocajelor
Eliminm condiia de nonpreempiune

Nu este o opiune viabil deoarece nu se poate retrage forat o resurs unui proces. Exemplu: un proces ce tiprete un document pierde accesul la imprimant n mijlocul operaiei de tiprire

22

Prevenirea blocajelor
Eliminm condiia de ateptare circular

(a)

(b)

Resurse accesate n ordine cresctoare Graful resurselor nu va prezenta cicluri


23

Recapitulare prevenirea blocajelor

24

Alte tipuri de blocaje Two-phase locking


Faza 1 Procesul rezerv nregistrrile de care are nevoie una cte una Dac cel puin una din nregistrri este deja rezervat i reia execuia Dac faza 1 s-a ncheiat cu succes procesul va: Realiza actualizri Elibera nregistrrile Este similar metodei n care toate resursele sunt alocate nainte de execuia propriu-zis a procesului Algoritmul funcioneaz dac programatorul este foarte atent ca un proces care a fost oprit din execuia primei faze s poat fi restartat.
25

Comunication deadlocks
Dou procese se pot bloca chiar dac nu doresc partajarea aceleiai resurse:
Procesul A trimite o cerere ctre procesul B. Procesul A intr n starea blocked pn la recepionarea unui mesaj de la procesul B. Procesul B trimite mesaj ctre procesul A i intr la rndul su 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){ enter_region(&R1); enter_region(&R2); use_both_resources(); leave_region(&R2); leave_region(&R1); } void B(void){ enter_region(&R2); enter_region(&R1); use_both_resources(); leave_region(&R1); leave_region(&R2); }

Nici unul din procese nu va realiza un progres n execuia sa dar nici nu va intra n starea blocked. Acest tip de blocaj se numete livelock.

27

Starvation
Algoritm pentru alocarea imprimantei:fiierele de dimensiune mai mic au prioritate la tiprire. Algoritmul funcioneaz dac imprimanta primete numeroase cereri de tiprire a unor fiiere de dimensiune mic. Totui dac apare o cerere de tiprire a unui fiier de dimensiune mare, aceast cerere va fi amnat la infinit fr a comuta procesul aferent n starea blocked (The process is starving to death.) Soluia este: aplicarea strategiei de alocare primul sosit primul servit.
28

Definii blocajul. Ce este o resurs preemptibil? Ce este o resurs nonpreemptibil? Care sunt condiiile de apariie a unui blocaj? Cum se pot modela blocajele? Caracterizai algoritmul struului. Cum se realizeaz detecia i rezolvarea blocajelor? Cum se evit blocajele? Caracterizai starea sigur i nesigur. Caracterizai algoritmul bancherului pentru o singur resurs. Caracterizai algoritmul bancherului pentru resurse multiple. Cum se previn blocajele? Explicai i dai exemplu de two-phase blocking. Explicai i dai exemplu de comunication deadlock. Ce reprezint un livelock? Exemplificai. Exemplificai noiunea de starvation. Explicai diferenele dintre blocaj, livelock i starvation.

De tiut...

29

De tiut...
Un sistem lanseaz dou procese care pot solicita 3 resurse. Fiecare proces are nevoie de maximum 2 resurse. Sistemul se poate bloca? Explicai. Un sistem lanseaz patru procese care pot solicita cinci resurse. Alocarea curent a resurselor i maximul necesar sunt:
Procesul Procesul Procesul Procesul A B C D 1 2 1 1 Alocate 0 2 1 0 1 1 1 0 1 1 1 1 1 0 0 0 Maximum Disponibil 1 1 2 1 3 0 0 x 1 1 2 2 2 1 0 2 1 3 1 0 1 1 2 2 1

Care este cea mai mic valoare a lui x pentru ca aceasta s fie o stare sigur?

30

De tiut...
Dou procese A i B au nevoie de 3 nregistrri 1, 2, 3 dintr-o baz de date. Dac A solicit nregistrrile n ordinea 1,2,3 i B n ordinea 1,2,3 nu va exista blocaj. Dac n schimb A solicit nregistrrile n ordinea 1,2,3 i B n ordinea 3,2,1 va exista blocaj. Avnd la dispoziie trei resurse exist posibilitatea apariiei a 3!=6 solicitri din partea proceselor. Ce procent din aceste solicitri nu vor genera blocaje?

31

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.

32

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