Sunteți pe pagina 1din 46

SISTEME DE OPERARE

2009/2010
Conf.Dr. Florin Fortis
Cursul #8

IMPAS
Informatii generale

IMPAS
Tipul resurselor

O situatie de impas apare de regula datorita accesului


la resurse, care se realizeaza intr-o maniera exclusiva.
Exista doua categorii majore de resurse:
Resurse preemptive: resurse care pot fi obtinute de la
procesul care le detine;
Resurse non-preemptive: resurse care nu pot fi obtinute de
la procesul care le detine, nici macar fortat.

Doar resursele non-preemptive pot conduce catre


situatii de impas

Q: De ce?

IMPAS
Tipul resurselor
Resurse non-preemptive
Vom presupune de acum inainte ca prin termenul de resursa sunt identificate
numai resurse non-preemptive

Exista o secventa tipica pentru utilizarea resurselor. Sunt necesari trei pasi
simpli:
1.
2.
3.

Acestea sunt singurele resurse care pot fi implicate intr-o situatie de impas.

O cerere pentru obtinerea resursei;


Utilizarea efectiva a resursei;
O cerere pentru eliberare resursei.

De regula, aceste activitati sunt modelate prin dispozitive simple, de


exemplu semafoare.
Atunci cand o cerere pentru o resursa esueaza, aceasta va fi rezolvata
ulterior ca urmare a unei asteptari active sau utilizarii unui semafor.

In orice situatie, se face presupunerea ca procesul asteapta.

IMPAS
Tipul resurselor
Achizitia resurselor
Resursele care sunt achizitionate de catre procese pot fi
gestionate fie la nivelul sistemului de operare fie la nivelul
fiecarui proces.
Atunci cand gestiunea se realizeaza la nivel de proces, va fi
suficienta utilizarea unui dispozitiv de excludere mutuala sau
a unui semafor pentru a asigura accesul exclusiv la resurse

Acest comportament este necesar datorita non-preemptiunii.

Gestiunea unei situatii in care doua sau mai multe resurse


sunt implicate se rezolva similar, observand ca procesele vor
urma un scenariu similar pentru a obtine sau elibera
resursele.

Impas
Definitie
O multime de procese se afla intr-o situatie de impas daca
fiecare proces din multime asteapta aparitia unui
eveniment care poate fi declansat doar de un alt proces
din multime.
Fiecare proces asteapta, nefiind astfel capabil sa
genereze niciun eveniment, inclusiv cele asteptate de
alte procese:

Toate procesele vor fi condamnate la o asteptare infinita!

Vom realiza urmatoarea presupunere:

Fiecare proces este dotat cu un singur fir de executie, si


fiecare proces poate fi trezit doar in urma aparitiei
evenimentului asteptat.

Impas
Definitie

1.

2.

3.

4.

Sunt necesare patru conditii pentru o situatie de impas:


Excluderea mutuala: fiecare resursa este fie asignata
exact unui proces, fie este disponibila;
Hold and wait: daca un proces detine resurse, acesta
este capabil sa ceara si alte resurse;
Non-preemptiunea: nicio resursa nu poate fi obtinuta
fortat de la niciun proces;
Asteptarea circulara: se poate identifica un lant de
procese, unde fiecare proces asteapta o resursa care
apartine unui proces precedent in acest lant.

Impas
Definitie

Pentru ca o situatie de impas sa apara, toate cele


patru conditii trebuie sa fie satisfacute.
De exemplu, atunci cand a treia conditie lipseste, se vor
putea obtine resurse de la proces, prin urmare situatia de
impas nu va putea sa apara.
De asemenea, daca a doua conditie lipseste, un proces va
avea posibilitatea de a detine cel mult o resursa, prin
urmare niciun proces nu va fi obligat sa astepte vreodata
dupa o alta resursa.

De observat faptul ca primele trei conditii sunt strans


legate de politica locala a sistemului;
Ultima dintre aceste conditii reflecta mai degraba o
situatie reala din activitatea unui sistem.

Impas
Modelarea impasului

Pentru modelarea unei situatii de impas, se poate


folosi un graf orientat.
Procesele

sunt reprezentate prin cercuri


Resursele sunt reprezentate prin patrate.

Un arc care iese dintr-un proces si intr-o intr-o


resursa indica faptul ca procesul asteapta ca
resursa sa fie disponibila (sau procesul cere
resursa).
Un arca dinspre o resursa catre un proces specifica
faptul ca procesul detine aceasta resursa.

Resource allocation graphs


(a)

Detine resursa.

(b)

Cerere pentru resursa.

(c)

O situatie simpal de impas.

Impas
Modelarea impasului

O situatie de impas NU POATE SA APARA:


Cand

executia proceselor este secventiala,


Cand nu exista competitie pentru resurse.

Chiar daca nu se poate impune o ordine de


executie a proceselor, sistemul de operare ar putea
amana executia unor procese pentru a evita situatia
de impas (asteptand astfel o stare sigura).
Graful de alocare poate oferi informatii importante
pentru sistemul de operare, astfel incat sa se poata
detecta sau anticipa situatiile de impas.

Aparitia impasului
Un exemplu de aparitie a unei situatii de impas
si evitarea acesteia

Aparitia impasului
Un exemplu de aparitie a unei situatii de impas
si evitarea acesteia

Aparitia impasului
Un exemplu de aparitie a unei situatii de impas
si evitarea acesteia

Impasuri

1.
2.

3.

4.

Strategii pentru rezolvarea situatiilor de impas:


Ignorarea problemei.
Detectie si recuperare. Situatia de impas poate sa
apara, este detectata si apoi remediata.
Evitare dinamica printr-o alocare atenta a
resurselor.
Preventie, printr-o negare structurala a uneia
dintre cele patru conditii necesare.

Impas
Algoritmul strutului

Algoritmul strutului
Ignorarea problemei

Algoritmul strutului este bazat pe urmatoarea abordare a


problemei impasului:

Ignorarea completa a situatiei, in speranta ca lucrurile nu se vor inrautati


(sau chiar sperand ca situatie se va rezolva de la sine )

Aceasta tehnica este utilizata atunci cand frecventa de aparitie a


situatiilor de impas este incomparabil mai mica decat frecventa de
aparitie a altor probleme majore.
Deoarece frecventa de aparitie a situatiilor de impas este destul de
mica, sistemele de operare PC utilizeaza de regula aceasta solutie

Solutia este preferata pentru a evita limitarile drastice impuse de alte


abordari ale problemei impasului.
Spunem ca sistemele PC prefera comoditatea in defavoarea
obiectivitatii.

Impas
Preventie

Impas. Preventie
Conditia de excludere mutuala
Situatiile de impas pot fi prevenite prin atacarea uneia dintre
cele patru conditii.
Atacarea conditiei de excludere mutuala,

Se poate presupune ca sistemul ofera doar resurse preemptive.


Totusi, orice sistem isi bazeaza existenta pe anumite resurse, tipic
non-preemptive (ex. Imprimanta).

Conditia poate fi atacata printr-o tehnica de tip spooling.

In aceasta situatie, suntem capabili sa evitam situatia de impas,


dar in situatii extreme este posibila generarea unei noi situatii de
impas, la nivelul spatiului disc.
Q: Puteti preciza cum?

Impas. Preventie
Conditia hold and wait
Atacarea conditiei hold and wait
1.
Se poate impune proceselor care detin resurse sa astepte ca
resursele sa fie disponibile intai atunci cand cer noi resurse.

Daca procesele sunt capabile sa-si declare de la inceput resursele


necesare, acestea ar putea detine toate resursele necesare de la
inceput.
Totusi, este oarecum dificil de satisfacut aceasta abordare.

2.

Diferite sisteme (ex. De tip mainframe) folosesc totusi aceasta abordare.

Un proces care cere noi resurse va renunta temporar la toate


resursele pe care le detine, pentru a le obtine din nou impreuna cu
noile resurse.

De data aceasta procesele pot fi obligate sa suporte o comunicare


continua cu sistemul de operare in privinta resurselor!

Impas. Preventie
Conditia de non-preemptiune
Atacarea conditiei de non-preemptiune
Resursele non-preemptive sunt extrem de
importante intr-un sistem de operare.
Q:

puteti preciza de ce?

Aceasta conditie nu poate fi atacata pentru resurse


care sunt capabile sa salveze/restaureze
informatiile de stare (ex. Procesorul).
Q:

puteti specifica mai multe resurse?

Impas. Preventie
Conditia de asteptare circulara
Atacarea conditiei de asteptare circulara
1.
Prin limitarea resurselor care sunt la dispozitia proceselor (de
exemplu, o singura resursa la un moment dat).
Astfel, pentru a obtine noi resurse, procesele ar putea fi obligate sa
renunte la resursele curente.

Prin numerotarea resurselor intr-o maniera circulara.

2.

1.

2.

Noile resurse pot fi obtinute in ordinea stricta a valorilor asociate.


Situatia de impas poate fi evitata deoarece se poate interzice accesul
la resurse pentru anumite procese.
Totusi, aceasta nu este o solutie fezabila, datorita imposibilitatii
mentinerii unei scheme de numerotare pentru toate resursele sistemului
de operare.
Mai mult, ar putea fi posibil ca mai multe procese sa nu fie capabile sa
acceseze resurse care nu sunt detinute de alte procese!

Atacarea conditiei de asteptare circulara


(a)
(b)

Resurse numerotate.
Graful de alocare pentru acestea.

Impas
Detectie si recuperare

Impas. Detectie si recuperare

Aceasta tehnica poate fi utilizata cand, in locul


prevenirii situatiilor de impas, sistemul prefera sa
detecteze aparitia unei situatii de impas si sa
reactioneze doar in acest moment.
Actiunile care au loc formeaza actiuni de recuperare
care urmeaza detectiei situatiei de impas.

Impas. Detectie si recuperare


O resursa de fiecare tip

Cea mai simpla situatie care poate fi imaginata


este cea in care se utilizeaza cate o singura resursa
de fiecare tip.
Pentru

aceasta situatie, existenta unei situatii de impas


poate fi semnalata prin analiza grafului de resurse.
Un ciclu in acest graf va indica o situatie de impas.

Un sistem in care nu se poate pune in evidenta un


asemenea ciclu este liber de impas.

Impas. Detectie si recuperare


O resursa de fiecare tip

Algoritmul:
1.
2.
3.
4.
5.
6.

Pentru fiecare nod N al grafului, se vor executa urmatorii pasi, cu un


nod N ca nod de start.
Se initializeaza lista de noduri, L, cu lista vida. Toate arcurile sunt
nemarcate.
Se adauga nodul curent in lista L. Daca acesta apare de doua ori in
lista, a fost identificat un ciclu. STOP
Daca exista arce nemarcate care PLEACA din nodul curent, continua
cu pasul 5, altfel continua cu pasul 6.
Se marcheza unul dintre arcele nemarcate. Nodul in care intra arcul
devine nod curent. Continua cu pasul 3, folosind noul nod curent.
Elimina nodul din lista si mergi la nodul precedent (acesta devine din
nou nod curent). Daca este nodul initial, STOP. Altfel, mergi la pasul 3.

Impas. Detectie si recuperare


Mai multe resurse de fiecare tip

Algoritmul precedent nu este extrem de util atunci cand


exista mai multe resurse de fiecare tip.

Procesele sunt identificate prin Pi, in timp ce numarul de


resurse dintr-o clasa se regasesc in Ej (unde j este numarul
clasei)

De data aceasta resursele sunt regrupate in clase de resurse


(resursele de acelasi tip, evident, sunt in aceeasi clasa).

Resursele existente sunt grupate impreuna intr-un vector E.

Toate resursele disponibile sunt depozitate intr-un vectorA


(resurse care nu sunt alocate altor procese),
Matricea C pastreaza informatiile de alocare curenta.
Matricea R pastreaza cererile proceselor.

Impas. Detectie si recuperare


Mai multe resurse de fiecare tip
Cele patru structuri necesare in algoritmul de detectie a impasului

Impas. Detectie si recuperare


Mai multe resurse de fiecare tip
Algoritmul de detectie:
1.
Se cauta un proces nemarcat Pi, astfel incat linia acestuia
in matricea R sa fie mai mica sau egala cu valorile
vectorului A (adica se pot satisface cerintele de alocare
ale procesului).
2.
Daca exista un asemenea proces, adauga linia i din
matricea C la vectorul A, marcheaza procesul, si treci la
pasul 1.
3.
Daca nu exista un asemenea proces, STOP.
4.
Dupa executia algoritmului, toate procesele care nu sunt
marcate se gasesc intr-o situatie de impas. Toate procesele
marcate sunt libere de impas.

Impas. Detectie si recuperare


Mai multe resurse de fiecare tip
Exemplu de utilizare a algoritmului de detectie

Impas. Detectie si recuperare


Recuperare in urma impasului

Detectia nu poate rezolva problema impasului fara


mecanisme de recuperare.
Pentru

eficienta, urmeaza sa fie stabilite momentele


potrivite pentru executia metodelor de detectie si
recuperare.
O executie frecventa ar putea scadea performanta
sistemului.
Printre momentele potrivite se pot regasi momentele de
activitate scazuta a sistemului, sau momentele in care se
aplica metode de verificare.

Impas. Detectie si recuperare


Recuperare in urma impasului
Mecanismele de deblocare a situatiilor de impas se bazeaza pe cele patru
conditii:
1.
Preemptiune: sistemul trebuie sa obtina (fortat, daca este cazul) cateva
resurse de la un numar de procese pentru a debloca celelalte procese.
2.
Revenire: sistemul trebuie sa fie capabil sa mentina informatii care
definesc puncte de verificare.

La aparitia unei situatii de impas, graful de resurse este recuperat pe baza


acestor informatii.
Procesele aflate in situatia de impas vor fi fortate sa revina la un punct de
verificare precedent, oferind resursele necesare altor procese.

Eliminarea proceselor: aceasta este solutia finala.

3.

Mai multe procese ar putea fi distruse, in speranta ca alte procese vor fi


capabile sa treaca peste situatia de impas.
Acest mecanism va fi utilizat astfel incat consecintele asupra sistemului sa fie
minime.

Impas
Evitare

Impas. Evitare
Tipuri de stari

Matricile si vectorii E, A, C, R definesc acum starea curenta a


sistemului.
O stare este sigura daca nu exista impas si procesele pot fi
planificate astfel incat sa-si poata termina activitatile.
O stare care nu este sigura este nesigura (desigur ).
Este posibil ca, intr-o anumita ordine de planificare a
proceselor, o stare sigura sa poata conduce la o stare
nesigura.
Situatia de impas poate fi evitata daca intr-un sistem starea
urmatoare este totdeauna sigura.

Impas. Evitare
Tipuri de stari

Starea din (a) (linia 1) este sigura; cea din (b) (linia 2) este nesigura

Impas. Evitare
Algoritmul bancherului

Algoritmul Bancherului (datorat lui Dijkstra) este


utilizat pentru a verifica daca prin satisfacerea
cererilor unui proces (prin planificarea acestuia) este
posibila atingerea unei stari nesigura. Cererea este
refuzata intr-o astfel de situatie.
Pentru a verifica daca o stare este sigura, bancherul
trebuie sa verifica in prealabil daca resursele
disponibile sunt suficiente pentru cererile vreunui
client.
De observat ca fiecare situatie este analizata
imediat dupa aparitia ei. Cererile care pot conduce
catre o situatie de impas vor fi refuzate sau amanate,
daca este necesar.

Impas. Evitare
Algoritmul bancherului pentru o singura resursa
Aceasta descrie o situatie extrem de
simpla.
In acest algoritm, fiecare cerere este
tratata indata ce apare:

O cerere care poate conduce la o stare


nesigura este refuzata sau amanata pana
cand poate conduce la o stare sigura.
Dintr-o stare sigura, bancherul trebuie sa
verifice doar daca resursele ramase sunt
suficiente pentru cerintele unui singur client.

Impas. Evitare
Algoritmul bancherului pentru o singura resursa

Impas. Evitare
Algoritmulbancheruluipentruo singuraresursa
Daca Avail=1, aceasta stare devine nesigura!
De asemenea, daca procesul A primeste o
singura resursa, prin oferirea acesteia catre
procesul A se va atinge o stare nesigura.
Urmand algoritmul simplu al Bancherului, din
aceasta stare orice cerere din partea
procesului A va fi refuzata.
Si procesul C ar putea fi refuzat, chiar daca
alocarea unei singure resurse catre acesta nu
schimba pentru moment starea sistemului!

Impas. Evitare
Algoritmul bancherului pentru o singura resursa
Situatia initiala

Cereri demo

Has

Max

Available: 10

Pentru cererea (1, 1,


2, 4) noua stare este
sigura.

Totusi, un singur proces este


capabil sa continue!

Daca dupa aceasta


avem o cerere (0, 1, 0,
0), noua stare este
nesigura.

Puteti preciza de ce?

Impas. Evitare
Algoritmul bancherului pentru o singura resursa
Situatia initiala

Cereri demo

Has

Max

70

45

60

40

60

15

Total: 150

Este aceasta stare sigura?


Aratati o cale posibila pentru a
justifica raspunsul.

Daca apare un proces nou, D,


cu Max=60 si Has (initial)=25,
este noua stare sigura?

Ce se intampla daca pentru noul


proces Has=35?

Detectati valoarea maxima


pentru Has pentru procesul D
astfel incat noua stare sa fie
sigura

Impas. Evitare
Algoritmul bancherului pentru o resurse multiple
Versiunea generalizata a acestui algoritm.
Pentru acest algoritm vom folosi din nou

Matricea

curenta de alocare (C),


Matricea de cereri (R),
Vectorul resurselor disponibile (A),
Vectorul de resurse existente (E),
Un vector al resurselor aflate la dispozitia
proceselor (P).

Algoritmul consta din urmatorii pasi simpli:

Impas. Evitare
Algoritmul bancherului pentru o resurse multiple
1.

2.

3.

Cautam o linie, R, pentru care resursele necesare sunt


A. Daca nu exista o astfel de linie, sistemul ar putea
intra intr-o stare de impas, deoarece niciun proces nusi poate incheia activitatea
Presupunem ca procesul din linia aleasa cere toate
resursele necesare si apoi isi incheie activitatea. Se
marcheaza procesul ca terminat, toate resursele sale
se adauga la vectorul A.
Se repeta pasii 1 si 2 pana cand fie toate procesele
sunt marcate (starea initiala este sigura), fie nu mai
exista procese ale caror cereri sa poata fi satisfacute
(exista posibilitatea de impas).

Impas. Evitare
Algoritmul bancherului pentru o resurse multiple
Descrierea matricelor de stare
The R Matrix
2

A=(2,1,0,0)

The C Matrix
0

Se considera

Determinati valoarea
vectorului E.
Este

aceasta o situatie
de impas?

Impas. Evitare
Algoritmul bancherului pentru o resurse multiple
Descrierea matricelor de stare
The MAX Matrix

Considerati

Determinati valoarea vectorului E.

The C Matrix
0

Este aceasta o stare sigura?

Este sistemul intr-o stare de impas?

A=(2,1,0,0)

Care dintre aceste procese poate


atinge situatia de impas?
Ce se intampla daca o cerere
(0,1,0,0) a fost garantata pentru
Procesul 3?

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