Está en la página 1de 12

7. Alocarea resurselor...........................................................................................................................................................

2
7.1. Noiuni generale........................................................................................................................................................2
7.1.1. Definiii...............................................................................................................................................................2
7.1.2. Probleme n alocarea resurselor..........................................................................................................................2
7.1.3. Exemple de sisteme cu fire de ateptare.............................................................................................................3
7.2. Modele pentru alocarea unei resurse unice...............................................................................................................3
7.2.1. Alocarea procesorului.........................................................................................................................................3
7.2.1.1. Introducere...................................................................................................................................................3
7.2.1.2. Prim sosit, prim servit..................................................................................................................................4
7.2.1.3. Cererea cea mai scurt servit prima...........................................................................................................4
7.2.1.4. Caruselul i modele derivate.......................................................................................................................5
7.2.2. Disc de paginare.................................................................................................................................................6
7.3. Tratarea blocrilor.....................................................................................................................................................8
7.3.1. Enunul problemei..............................................................................................................................................8
7.3.2. Algoritmi de prevenire........................................................................................................................................8
7.3.2.1. Algoritmi de profilaxie................................................................................................................................8
7.3.2.2. Algoritmul bancherului................................................................................................................................9
7.3.3. Algoritmi de detectare i tratare.......................................................................................................................10
7.4. Exerciii la capitolul 7.............................................................................................................................................10

13.11.14

16:13

/var/www/apps/conversion/tmp/scratch_1/251050320.doc

p.1

din 12

7 . Al o c a r e a r e s u r s e l o r
n acest capitol prezentm principiile de alocare a resurselor ntr-un sistem informatic. Sunt abordate dou aspecte:
1. utilizarea rezultatelor teoriei firelor de ateptare pentru analiza ctorva modele simple ale sistemelor informatice,
n special pentru alocarea procesoarelor;
2. prezentarea unor metode de evitare a impasurilor (blocarea reciproc a mai multor procese rezultat din alocarea
eronat a unor resurse comune).

7.1. Noiuni generale


7.1.1. Definiii
Numim resurs orice obiect, care poate fi utilizat de ctre un proces. Unei resurse i sunt asociate proceduri de
acces, care permit utilizarea resursei i reguli de utilizare, care constituie modul de utilizare. Exemple de asemenea
reguli au fost aduse n capitolul 4 (acces exclusiv, cititori-redactori, etc.). Nu exist vre-o diferen fundamental ntre
noiunea de obiect i cea de resurs. Folosirea celor doi termeni semnific mai mult o diferen de domeniu: se
utilizeaz noiunea obiect atunci cnd ne intereseaz specificarea i realizarea obiectului i a funciilor sale de acces, iar
resurs pentru problemele de alocare i partajare.
Se spune c o resurs este alocat unui proces dac procesul poate utiliza resursa, folosind procedurile ei de acces.
Legarea unei resurse de un proces poate fi implicit sau explicit. n primul caz, este suficient trecerea procesului ntro anumit stare pentru ca el s devin candidat la utilizarea resursei; n cel de-al doilea caz, solicitarea trebuie s fie
formulat explicit sub forma unei cereri adresate unui alocator al resursei. Alocatoarele i cererile pot lua forme
diverse: de exemplu, un alocator poate fi un proces cruia cererile i sunt transmise prin emiterea unor mesaje; sau chiar
un monitor (v. capitolul 4) o procedur a cruia servete la emiterea unor mesaje. Reacia unui alocator la o cerere poate
de asemenea fi diferit: alocarea resursei solicitate, refuz cu sau fr blocarea procesului solicitant. Terminarea utilizrii
unei resurse de ctre un proces poate la fel lua diferite forme: eliberarea explicit sau implicit a resursei sau
retragerea forat a resursei de ctre alocator. O resurs se numete banalizat dac ea exist n mai multe exemplare
echivalente, n sensul c o cerere poate fi satisfcuta de alocator folosind indiferent care exemplar al resursei. Aceste
noiuni sunt precizate de cteva exemple.
Exemplul 7.1.

Procesorul. Procedurile de acces la procesor sunt determinate de instruciuni i cuvntul de stare; alocarea procesorului unui
proces se face prin ncrcarea cuvntului su de stare. Nu exist cereri explicite: pentru a fi n stare s depun o astfel de cerere,
procesul ar trebui s posede deja procesorul obiectul cererii! Un proces devine n mod implicit candidat la utilizarea procesorului
din momentul cnd trece n starea eligibil. Alocatorul const din dou proceduri: planificatorul i dispecerul.

Exemplul 7.2.

Memoria principal. Alocarea memoriei principale pune n funcie dou mecanisme distincte:
a)

Alocarea explicit: este mecanismul de obinere a unei zone de memorie fie de ctre un program n curs de execuie, fie de ctre
sistemul de operare naintea ncrcrii unui program nou.

b) Alocarea implicit: pentru acest mod de alocare cererea este emis n momentul executrii unei instruciuni, cnd adresa emis
de procesor este adresa unui amplasament nealocat procesorului. Acest mecanism st la baza realizrii memoriei virtuale.
Exemplul 7.3.

Memoria secundar. Memoria secundar este alocat prin blocuri banalizate de lungime fix. Alocarea i eliberarea poate fi
explicit sau implicit (de exemplu, extinderea unui fiier provoac emiterea unei cereri pentru un bloc suplimentar).

Exemplul 7.4.

Linii de comunicaie. Dac mai multe procese partajeaz serviciile unui dispozitiv de intrare-ieire comun (o imprimant sau o linie
de comunicaie, de exemplu), cererile sunt transmise sub form de mesaje unui proces, numit server, care administreaz acest
dispozitiv. Fiecare mesaj conine informaiile necesare execuiei transferului cerut. Mesajele sunt administrate cu ajutorul unui fir de
ateptare cu sau fr prioriti.

7.1.2. Probleme n alocarea resurselor


Obiectivul unui sistem de alocare a resurselor este s satisfac cererile ntr-un mod echitabil, asigurnd n acelai
timp i performane acceptabile. Dac toate procesele au aceeai prioritate, o alocare este echitabil, atunci cnd este
asigurat o tratare asemntoare fiecrui proces, de exemplu, ateptarea medie este identic. Dac ntre procese exist
prioriti, este dificil s se defineasc noiunea de echitate n caz general, dar ea poate fi exprimat prin faptul, c
calitatea serviciului (msurat, de exemplu, prin valoarea invers a timpului mediu de ateptare sau printr-o alt
expresie semnificativ) este funcie cresctoare de prioritate, dou procese de aceeai prioritate beneficiind de aceeai
tratare. A fost stabilit, c unii algoritmi de alocare conin riscul de a face un proces s atepte la infinit: acest fenomen,
numit privaiune, este contrar principiului de echitate i trebuie evitat.
Dac resursele sunt utilizate de mai multe procese pot avea loc dou fenomene nedorite:

13.11.14

Blocarea, deja ntlnit n capitolul 4 n cazul imbricrii seciunilor critice, este stoparea a mai multor
procese pentru un interval de timp nedefinit, fiecare dintre procese fiind n ateptarea eliberrii resurselor
alocate altor procese.

16:13

/var/www/apps/conversion/tmp/scratch_1/251050320.doc

p.2

din 12

Cderea este situaia n care o cerere excesiv a unui oarecare tip de resurse conduce la degradarea
performanelor sistemului (cderea unei reele de transport sau a unei centrale telefonice). Situaii
analogice sunt constatate i n sistemele informatice.

Vom presupune, c alocarea se va face n mod centralizat, adic algoritmii utilizai tiu situaia de alocare a mulimii
resurselor la orice moment.
Instrumentul principal, utilizat pentru studiul cantitativ a alocrii resurselor sunt modelele firelor de ateptare.

7.1.3. Exemple de sisteme cu fire de ateptare


Un sistem informatic este constituit din N instalaii identice, fiecare fiind descris de modelul M/M/1, cu parametrii
i (fig. 7.1a). Vom examina influena asupra timpului de rspuns al acestui sistem a utilizrii comune a resurselor,
caracteristicile totale de tratare fiind constante.

Fig.7.1. Modelul unui sistem de servire n mas


n sistemul din figura 7.1b, clienii celor N fire de ateptare sunt grupai ntr-un fir unic. Intensitatea sosirii, fiind
superpoziia unor intensiti poissoniene, va rmne de tip Poisson cu parametrul N. Sistemul este M/M/N cu
parametrii N i .
n sistemul din figura 7.1c, N servere paralele sunt nlocuite printr-un server unic, de N ori mai puternic. Puterea
total de tratare rmne n acest caz constant, dar timpul mediu de servire a unei cereri se mparte la N: avem un sistem
de tipul M/M/1 cu parametrii N i N.
Timpul mediu de rspuns (timpul mediu de aflare n sistem a unei cereri) pentru fiecare caz va fi:
tma = 1/[(1-)]
tmb = 1/+C(N,N)/[N(1-)]
tmc = 1/[N(1-)]
Aici avem tmc = tma/N i putem demonstra, calculnd C(N, N), c tma > tmb > tmc. De exemplu, pentru N=2, =1 i
=0,8 vom avea tma = 5, tmb = 2,8, tmc = 2,5.
Acest rezultat ilustreaz ctigul adus de concentrarea resurselor. Intuitiv, fenomenul poate fi explicat astfel: n cazul
a un server poate fi neutilizat, atunci cnd avem cereri n alte fire de ateptare, serverele acestora fiind ocupate. Aceast
situaie nu se poate produce n cazul b, ns dac exist servere neutilizate, posibilitatea lor de tratare nu este folosit,
dei ele ar putea servi la accelerarea tratrii, care are loc pe serverele ocupate. Sistemul c realizeaz folosirea deplin a
resurselor.

7.2. Modele pentru alocarea unei resurse unice


Vom trata dou cazuri: alocarea procesorului i gestiunea schimburilor cu o memorie secundar paginat.

7.2.1. Alocarea procesorului


7.2.1.1. Introducere
Algoritmii de alocare a procesorului pot fi clasificai n funcie de mai multe caracteristici.
1) Algoritmi cu sau fr retragere
Retragerea presupune alocarea procesorului unui alt proces nainte ca procesul curent s-i termine execuia. Ea
permite s se ia n consideraie:
prioritatea cererilor nou sosite,
timpul deja consumat de ctre procesul ales.
2) Noiuni de prioritate i modul de determinare a prioritii

13.11.14

16:13

/var/www/apps/conversion/tmp/scratch_1/251050320.doc

p.3

din 12

Prioritatea unui proces este o informaie, care permite clasificarea procesului n cadrul altor procese, dac trebuie
fcut o alegere (intrarea sau ieirea dintr-un fir de ateptare, de exemplu). Prioritatea poate fi definit prin mai multe
moduri:
prioritate constant: definit apriori, funcie de timpul de servire cerut.
prioritate variabil n timp: funcie de timpul de ateptare scurs, de serviciul deja acordat, etc.
Variabila principal, care va prezenta interes este timpul mediu de rspuns. Cererea este caracterizat de repartiia
intervalelor de sosire i de timpul de servire. Aceti parametri nu sunt ntotdeauna bine cunoscui i este important s se
evidenieze influena variaiei lor.
Din practic este cunoscut, c un utilizator suport cu att mai greu ateptarea servirii unei cereri cu ct lucrul trimis
de el este de durat mai mic; aceasta este adevrat att pentru lucrul interactiv, ct i pentru cel de fond. Din aceste
considerente metodele de alocare a procesorului au drept scop reducerea timpului mediu de ateptare a lucrrilor celor
mai scurte. Ele difer conform modului de estimare a duratei lucrrilor i n dependen de privilegiile acordate
lucrrilor funcie de aceast durat estimat.
7.2.1.2. Prim sosit, prim servit
Disciplina Prim sosit, prim servit (n englez, First In, First Out, sau FIFO) utilizeaz un fir unic, fr prioritate
i fr retragere. Procesul ales este executat pn la terminarea sa, iar cel care va urma este procesul din topul firului de
ateptare. Un proces nou intr n coada firului.
Pentru modelul M/G/1 timpul mediu de rspuns este dat de formula Pollaczek-Khintchine:
tm = tms[1+(1+C2ts)/2(1- )],

C2ts= Var(ts)/(tms)2

(7.1)

Figura 7.2 arat variaia timpului mediu de rspuns funcie de ncrcarea sistemului i de variaia timpului de
servire. Putem remarca:
creterea rapid a timpului mediu de rspuns, atunci cnd sistemul se apropie de saturaie: un sistem este cu att
mai sensibil la o variaie a arjei, cu ct este mai ridicat gradul lui de ncrcare,
influena dispersiei timpilor de servire asupra timpilor de rspuns.
tm

Var(ts)

1
=ts
Fig.7.2. Timpul mediu de rspuns pentru disciplina FIFO
Aceste dou efecte pot fi ntlnite n toate disciplinele de alocare.
7.2.1.3. Cererea cea mai scurt servit prima
n acest caz cererile sunt ordonate n cadrul firului de ateptare conform timpului lor de servire, presupus apriori
cunoscut, cererile cu durata de servire cea mai scurt aflndu-se n top.
Timpul mediu de ateptare tm funcie de timpul de servire ts este dat de formula (7.1):

13.11.14

16:13

/var/www/apps/conversion/tmp/scratch_1/251050320.doc

p.4

din 12

tm(ts) =

t (1 C )
2
2[1 (ts )]
2
ms

2
ts

ts

cu

(t s ) tdB(t )

(7.2)

Formulele de aproximare sunt


pentru valori mici ale ts, unde (ts) poate fi neglijat:

tm(ts)

t (1 C )
2
2
ms

2
ts

(7.3)

pentru valori mari ale ts, unde (ts) este aproape de tms, fie :

tm(ts)

t (1 C )
2
2(1 )
2
ms

2
ts

(7.4)

Figura 7.3 prezint dependena timpului mediu de rspuns de timpul de servire cerut pentru cazurile FIFO i Cererea
cea mai Scurt Servit Prima (CSSP). Pentru disciplina de servire FIFO acest timp depinde doar de gradul ncrcrii
sistemului , considerat de noi constant. Figura pune n eviden tratarea privilegiat a lucrrilor scurte.
tm

CSSP
FIFO

ts
Fig.7.3.
Dependena timpului mediu de rspuns de timpul de
servire n cazul disciplinelor FIFO i CSSP
n plan practic disciplina CSSP are dou dezavantaje: ea prezint un risc de privaiune pentru cererile lungi, dac
rata de sosire a cererilor scurte este ridicat i necesit cunoaterea apriori exact a timpului de servire.
O modalitate de evitare a riscului de privaiune este de a acorda cererilor prioriti care vor crete odat cu creterea
timpului lor de aflare n firul de ateptare, prioritatea iniial fiind determinat de timpul de servire estimat. De exemplu,
n cadrul disciplinei HRN (Highest Response Ratio Next) prioritatea unei cereri la un moment de timp este dat de
relaia
p(t) = [t()+ts)]/ts
(7.5)

13.11.14

16:13

/var/www/apps/conversion/tmp/scratch_1/251050320.doc

p.5

din 12

unde t() este timpul de aflare a unei cereri n firul de ateptare (fie t()= s, aici s fiind momentul sosirii cererii), iar
ts timpul de servire estimat. Pentru dou cereri cu acelai timp de ateptare, prioritate are cererea mai scurt. n practic,
prioritile sunt recalculate n momente discrete de timp i firul de ateptare este reordonat la necesitate.
Ideea directoare a acestui algoritm este de a partaja echitabil procesorul, ncercnd s se menin o valoare constant
a raportului k = t/ts, unde t este timpul total de aflare a unei cereri n sistem. Dac aceasta se respect, totul se va petrece
pentru fiecare lucrare ca i cum ea ar dispune de un procesor de k ori mai slab (mai puin rapid) dect procesorul real.
Disciplina HRN privilegiaz lucrrile scurte, ns penalizarea lucrrilor de lung durat este redus de efectul prioritii
variabile.
Algoritmii descrii mai jos vizeaz la fel partajarea echitabil a procesorului, dar nu necesit cunoaterea apriori a
timpului de servire.
7.2.1.4. Caruselul i modele derivate
n modelul caruselului (round robin) procesorul este alocat succesiv proceselor eligibile pentru o perioad
constant de timp , numit cuant. Dac un proces se termin sau se blocheaz nainte de sfritul cuantei, procesorul
este imediat alocat procesului urmtor. Aceast disciplin de servire este implementat ordonnd procesele ntr-un fir de
ateptare circular; un pointer de activare, care avanseaz cu o poziie la fiecare realocare a procesorului, desemneaz
procesul ales (fig.7.4).

ieire
intrare
proc_ales

f_eligibil

Fig.7.4. Alocarea procesorului: metoda caruselului


Caruselul este un exemplu de disciplin cu retragere. Ea poate fi considerat o aproximare a disciplinei cel mai
scurt primul pentru cazul cnd durata execuiei lucrrilor nu este cunoscut anticipat. Este utilizat n sistemele
interactive; valoarea cuantei este aleas astfel ca majoritatea cererilor interactive s poat fi executate n timpul unei
cuante. Evident, valoarea cuantei trebuie s fie net mai mare dect durata comutrii procesorului.
Analiza modelului caruselului nu este defel simpl. Doar cazul limit ( 0, iar timpul de comutare a procesorului
neglijat) este mai simplu. n acest model, zis procesor partajat, totul are loc ca i cum fiecare proces dispune imediat
(fr ateptare) de un procesor viteza de procesare a cruia este cea a procesorului real, divizat la numrul curent al
proceselor servite. Se poate arta c timpul de ateptare n modelul procesorului partajat este
ta(ts) = ts/(1-),
iar timpul de rspuns este
t(ts) = ts/(1-).
Modelul procesorului partajat realizeaz, deci, o alocare echitabil, n care timpul de aflare a unui proces n sistem
este proporional cu durata serviciului cerut.
O mbuntire a modelului caruselului, chemat s reduc timpul de servire a lucrrilor de scurt durat, este
caruselul multinivel. Acest model conine n fire de ateptare F0, F1,..., Fn-1. Fiecrui fir Fi i este asociat o cuant
proprie i, valoarea creia crete odat cu i. O lucrare din Fi este servit doar dac firele de numr inferior lui i sunt
vide. Dac o lucrare din Fi i-a epuizat cuanta sa fr a se termina, ea intr n firul Fi+1; lucrrile din Fn-1 se ntorc tot
aici. Lucrrile noi intr n F0 (fig. 7.5).

intrare
13.11.14

16:13

procesor

/var/www/apps/conversion/tmp/scratch_1/251050320.doc
Fig. 7.5. Carusel cu mai multe

niveluri

ieire
p.6

din 12

Aceast disciplin sporete privilegiile acordate lucrrilor de scurt durat n raport cu CSSP; ca i ultima, ea
conine un risc de privaiune pentru lucrrile de lung durat. La fel poate fi definit un model limit pentru 0, iar
n, pentru care poate fi calculat valoarea timpului mediu de ateptare. Figura 7.6 ilustreaz caracteristicile
disciplinelor de servire examinate [16].
t(ts)

t(ts)
CM PP

CM
PP
CSSP
CSSP

ts

ts
FIFO prim sosit prim servit
CSSP cerere scurt servit prima

PP procesor partajat
CM carusel multinivel

Fig. 7.6. Compararea disciplinelor de alocare a procesorului


Putem aprecia, n conformitate cu gradul de ncrcare a procesorului, avantajele acordate de diferite discipline de
servire lucrrilor de scurt durat.

7.2.2. Disc de paginare


Vom cerceta acum metodele de gestiune a schimburilor ntre memoria principal i un disc cu dispozitive de citirescriere (DCS, capuri) fixe. Astfel de discuri sunt organizate pe piste i sectoare i are cte un DCS per pist.
Schimburile sunt comandate de un server care primete cererile de transfer; fiecare cerere presupune transferul unui
sector cu indicaia direciei de transfer, o adres n memorie i una pe disc (pista i sectorul) [17].
Vom cerceta dou discipline de tratare a cererilor:
1) Fir de ateptare unic. Cererile de transfer sunt ordonate ntr-un fir unic i tratate n ordinea sosirii lor,
2) Un fir per sector. Un fir distinct este administrat pentru fiecare sector; se sper s poat fi redus timpul mediu de
ateptare, eliminnd timpul mort.
Aceste dou discipline sunt prezentate schematic n figura 7.7. Un disc administrat conform schemei b este numit
disc de paginare, deoarece acest mod de funcionare este adesea utilizat pentru gestiunea memoriilor paginate.
Sectorul i
Cereri
(toate sectoarele)
Cerere a
sectorului i
(a)

(b) Cu sectoare fixe i


DCS mobil

Fig. 7.7. Gestiunea transferelor memorie-disc


Vom compara aceste dou discipline, n ipoteza unor cereri poissoniene la sosire i repartizate uniform ntre
sectoare. Notm
fluxul mediu de sosire a cererilor,
R durata unei rotaii a discului,
N numrul de sectoare pe pist,

13.11.14

16:13

/var/www/apps/conversion/tmp/scratch_1/251050320.doc

p.7

din 12

Durata de derulare a unui sector sub DCS este, deci, de R/N.


1) Fir unic de cereri. Discul poate fi considerat un server M/G/1, durata servirii ia N valori echiprobabile din [R/N,
(N-1)R/N]. Timpul mediu de servire tms este n acest caz:

1 N iR

N i 1 N

tms =

R ( N 1)
,
2N

(7.6)

iar coeficientul de variaie


2

Ct s =

1 iR


2
t m s i 1 N N
1

1,

sau 1+ C t s =

2 2N 1

3 N 1

(7.7)

Lungimea medie a unui fir de ateptare, fiind inclus i cererea n curs de servire, este obinut din formula
Pollaczeck-Khinchine:

t m (1 C t2 )

2(1 t ms )

1
nm = tms
i timpul mediu de servire este:
tm =

(7.8)

( 2 N 1)R
n m R ( N 1)
=
1

2N
3[ 2 N R ( N 1)]

(7.9)

2) Disc de paginare. Fiecare fir poate fi tratat independent, utiliznd modelul lui Skinner (server cu restabilire), cu
i = /N
T=R

ts = R/N,
tr = (N-1)R/N,
S = ts + tr = R

Pentru un fir de ateptare vid, ca i pentru nceperea tratrii urmtoarei cereri, este necesar s se atepte o rotaie
complet. Lungimea medie a unui fir de sector este:
nmi =

2 R 2 / N 2
R 1 1

2(1 R / N )
N N 2

(7.10)

i timpul mediu de servire:


tm =

n mi
R 2 / N
N 2
R
=
.
2(1 R / N )
2N
i

(7.11)

n figura 7.8 sunt comparate cele dou modele de administrare a discului.

a) fir unic

b) disc de paginare

Compararea pragurilor de saturare pentru cele dou discipline permite calcularea ctigului obinut pentru discul de
paginare. Pragul de saturare este definit prin = 1. Vom obine n acest caz: pentru discul cu fir unic: R(N+1)/2N = 1,
iar pentru discul de paginare: R/N = 1.

2N/R(N+1)
N/R
Raportul pragurilor critice pentru este, deci, (N+1)/2;
raport este
o msur
a ctiguluia discului
obinut prin
Fig. 7.8.acest
Compararea
modelelor
de administrare
organizarea firelor pentru sectoare.

13.11.14

16:13

/var/www/apps/conversion/tmp/scratch_1/251050320.doc

p.8

din 12

7.3. Tratarea blocrilor


7.3.1. Enunul problemei
Un exemplu de blocare reciproc (impas) a fost prezentat n capitolul 4, cnd dou seciuni critice, corespunztoare
la dou resurse distincte, sunt imbricate eronat, existnd un risc de blocare pentru o perioad de timp nedefinit.
O atare situaie poate fi generalizat pentru un numr oarecare de procese i resurse, dac sunt ndeplinite
urmtoarele condiii:
1) resursele sunt utilizate n excludere mutual,
2) fiecare proces trebuie s utilizeze simultan mai multe resurse, i acapareaz fiecare resurs pe msura
necesitilor sale, fr a le elibera pe cele pe care le posed deja,
3) cererile de resurse sunt blocante i resursele nu pot fi retrase,
4) exist o mulime de procese {p0,..., pn}, astfel nct p0 cere o resurs ocupat de p1, p1 cere o resurs ocupat de
p2, ..., pn cere o resurs ocupat de p0.
Exemplul 7.5.

Dou procese p1 i p2 utilizeaz dou tipuri de resurse, r1 i r2. Sistemul conine 7 uniti de tipul r1 i 6 r2. Cantitile respective de
r1 i r2 necesare pentru execuia proceselor sunt 6 i 3 pentru p1, 4 i 5 pentru p2. Presupunem c sistemul se afl n starea

urmtoare:
r1
r2
alocat lui p1
4
2
alocat lui p2
2
3
disponibil
1
1
Oricare ar fi ordinea de execuie a proceselor, nici unul nu va putea obine totalitatea resurselor necesare, dac nici o resurs nu este
eliberat sau retras. Pornind de la aceast stare a sistemului, impasul este inevitabil.

Problema impasului poate fi abordat n dou moduri:


prin prevenire: algoritmul de alocare a resurselor garanteaz, c o situaie de blocare nu se poate produce,
prin detectare i tratare: nu sunt luate msuri preventive; blocarea este detectat doar dac are loc, iar tratarea i
nsntoirea const n aducerea sistemului ntr-o stare, n care procesele sunt deblocate, n caz general, cu o
pierdere de informaii.

7.3.2. Algoritmi de prevenire


7.3.2.1. Algoritmi de profilaxie
Atunci cnd nu se cunoate anticipat nimic despre cererile proceselor, metodele de prevenire constau n nlturarea
uneia din condiiile 1) 4) de mai sus.
Metoda alocrii globale vizeaz eliminarea condiiei 2: fiecare proces cere toate resursele de care are nevoie n
bloc; el poate elibera o resurs dac nu mai are nevoie de ea. Metoda dat conduce la imobilizarea unor resurse n mod
neproductiv, i aduce adesea n practic la suprimarea oricrui paralelism n execuie; totui aceast metod nu trebuie
refuzat din start.
Metoda claselor ordonate vizeaz eliminarea situaiei unei ateptri circulare (condiia 4). Resursele sunt divizate
n clase C1, C2,..., Cm. Un proces poate primi o resurs din clasa Ci numai dac el a primit deja toate resursele necesare
n clasele Cj, j<i. Toate procesele cer resursele de care au nevoie n aceeai ordine, cea a claselor.
Presupunem, c avem o ateptare circular, adic exist procese p0, p1,..., pn-1 astfel nct pi ateapt o resurs ri
alocat procesului pi1 (simbolul desemneaz suma modulo n). Fie c(ri) numrul clasei resursei ri. Deoarece procesul
pi1 ateapt resursa ri1 i posed resursa ri, avem c(ri)<c(ri1), de unde, datorit tranzitivitii, obinem c(r0)<c(r0).
Ateptarea circular este astfel imposibil i blocarea evitat.
7.3.2.2. Algoritmul bancherului
Algoritmul de prevenire poate fi mbuntit dac exist informaii anticipate despre cererile de resurse. Dac fiecare
proces prezint n avans o declaraie de intenii (anun), adic valoarea unei borne superioare ale cererilor sale pentru
numrul de resurse de fiecare tip, algoritmul bancherului permite evitarea blocrii reevalund riscul acestora la fiecare
alocare. Acest algoritm se bazeaz pe noiunea de stare fiabil: o stare de alocare este numit fiabil dac, pornind de la
aceast stare este posibil s se asigure funcionarea sistemului fr blocri n ipoteza cea mai pesimist, cea n care
fiecare proces cere efectiv cantitatea maxim presupus de fiecare dintre resurse. Algoritmul bancherului va aloca o
resurs doar dac aceast alocare pstreaz starea fiabil a sistemului.
Considerm un sistem care conine n procese i m clase de resurse. Starea sa este reprezentat de urmtoarele
structuri de date:
Res, Disp:

13.11.14

16:13

array[0..m-1] of integer

/var/www/apps/conversion/tmp/scratch_1/251050320.doc

p.9

din 12

Anunt, Aloc: array[0..n-1, 0..m-1] of integer


unde
Res[j]:
Anunt[i, j]:
Aloc[i, j]:
Disp[j]:

este numrul total de resurse din clasa j,


numrul maxim de resurse din clasa j necesare la un moment de timp procesului i,
numrul maxim de resurse din clasa j alocate la un moment de timp procesului i,
numrul de resurse din clasa j disponibile la un moment de timp dat.

Avem, prin definiie, pentru un moment oarecare de timp:


n 1

Disp[j]=Res[j]-

i 0

Aloc[i, j ]

pentru j=0, 1,..., m-1.

Notm prin A[i,*] vectorul format din linia i a matricei A. Dac U i V sunt doi vectori de aceeai lungime k, vom
conveni s scriem:
UV dac i numai dac U[i] V[i] pentru i=0, 1,..., k-1
U<V dac i numai dac U V i UV.
Specificaiile sistemului impun urmtoarele restricii:
0 Aloc[i,*] Anunt[i,*] Res, pentru i=0,...,n-1
Aloc[i,*] Res
Disp 0 vectorul nul.
Aceste relaii exprim, pentru fiecare clas de resurse, c anunul nu poate depi numrul resurselor disponibile, c
cantitatea resurselor alocate unui proces nu poate depi anunul su i, n sfrit, c sistemul nu poate aloca mai multe
resurse dect exist n total. O stare a sistemului se numete realizabil, dac este conform acestor specificaii.
Fie E0 o stare realizabil a sistemului. ncercm s gsim un proces pi, care, dac el era executat singur pornind de la
starea E0, utiliznd totalitatea resurselor specificate de anunul su, procesul ar putea ajunge pn la sfrit. Un
asemenea proces trebuie s verifice , n starea E0:
Anunt[i, *]-Aloc[i, *] Disp.
Presupunem c a fost gsit un astfel de proces, fie pi0, i c el este executat pn la sfrit. El elibereaz atunci toate
resursele sale i sistemul trece ntr-o stare realizabil E1, definit prin
DispE1=DispE0+Aloc[i0,*].
Operaia poate fi repetat, cutnd un proces nou pi1 i tot aa ct este posibil. Suita de procese, obinut n acest
mod se numete fiabil. O stare a sistemului se numete fiabil, dac, pornind din aceast stare, putem construi o suit
fiabil complet (adic, care conine toate procesele sistemului).
Urmnd aceast definiie, un sistem ntr-o stare fiabil nu este n blocare, deoarece poate fi definit o ordonare a
proceselor, care permite execuia tuturor proceselor. Putem demonstra afirmaia reciproc (exerciiu): dac un proces nu
este n blocare, el se afl ntr-o stare fiabil. Algoritmul bancherului se bazeaz pe aceast proprietate; el este executat la
fiecare cerere de resurs de un proces. Fie Cerere[i, j] numrul de resurse cerute din clasa j n starea curent a
sistemului, de ctre procesul i.
if Aloc[i,j]+Cerere[i,j]>Anunt[i,j] then
<eroare>
-- cererea total > anunul
else
if Cerere[i,j]>Disp[j] then
<pune procesul p n ateptare>
else
-- simularea alocrii
<definire stare nou prin:
Aloc[i,j]:=Aloc[i,j]+Cerere[i,j]
Disp[j]:=Disp[j]-Cerere[i,j]>
endif;
if starea nou este fiabil then
<efectuare alocare>
else
<restaurare stare primitiv>
<pune procesul p n ateptare>
endif
endif
Locul central al acestui algoritm l constituie testarea fiabilitii unei stri, care se reduce la ncercarea construirii
unei suite fiabile. Este vorba de un algoritm combinator, care presupune iniial o complexitate de ordinul n!, ns
complexitatea poate fi redus la n2 datorit urmtoarei proprieti, care elimin necesitatea ntoarcerii napoi n caz de
eec: dintr-o stare fiabil orice suit fiabil poate fi prelungit pn la o suit fiabil complet.
Cu alte cuvinte, dac tentativa de extindere a unei suite fiabile pariale eueaz, starea sistemului nu este fiabil i
este inutil s se ncerce construirea unei alte suite.

13.11.14

16:13

/var/www/apps/conversion/tmp/scratch_1/251050320.doc

p.10 din 12

innd cont de aceast proprietate, testarea fiabilitii este realizat cu ajutorul algoritmului de mai jos:
Dispcurente : array[0..m-1] of integer;
Rest
: set of procese;
Dispcurente:=Disponibil;
Rest:={toate procesele};
posibil:=true;
while posibil do
cutare p din Rest astfel ca
Anunt[i,*]-Aloc[i,*] Dispcurente;
if gsit then
-- simularea execuiei procesului p
Dispcurente:=Dispcurente+Aloc[i,*];
Rest:=Rest-{p}
else
posibil:=false
endif
endwhile;
stare fiabil:=(Rest=<vid>)
Acest algoritm poate fi simplificat, dac exist o singur clas de resurse.

7.3.3. Algoritmi de detectare i tratare


Pentru detectarea unei blocri putem utiliza testul de fiabilitate a unei stri, nlocuind pentru fiecare proces cererea
maxim Anunt[i,*]-Aloc[i,*] cu cererea efectiv la instana considerat. Dac n aceste condiii este imposibil s se
gseasc o suit fiabil complet, sistemul se afl n blocare. Mai precis, procesele blocate sunt elementele mulimii
Rest, la terminarea algoritmului.
Lecuirea blocrii vizeaz reluarea execuiei sistemului; aceasta poate fi fcut doar recupernd resursele deja alocate.
O metod mai dur const n distrugerea proceselor blocate, ncepnd cu cele pentru care preul distrugerii este cel mai
mic (conform unui criteriu definit), pn la procesele pentru care execuia poate fi reluat. Aceast metod nu este fr
pericole, dac procesele distruse au lsat date ntr-o stare incoerent. De asemenea este preferabil s se salveze periodic
starea proceselor, definind puncte de reluare, corespunztoare unor stri semnificative. n caz de retragere forat a
resurselor unui proces, acesta poate fi repus n starea corespunztoare ultimului su punct de reluare.
Tratarea blocrilor prin distrugere sau ntoarcerea la o stare anterioar prezint un risc de privaiune, dac criteriul
de pre ales conduce ntotdeauna la desemnarea aceluiai proces. Pentru remediere au fost propuse diferite metode:
acordarea unor privilegii care ar proteja procesele protejate contra distrugerilor forate sau factor de pre cresctor
odat cu creterea numrului de retrageri.
Atunci cnd retragerea este autorizat i dac ea are loc fr pierdere de informaii, poate fi utilizat o form
particular de detecie i lecuire, evitarea continu. Aceast metod este folosit pentru sistemele repartizate [18].

7.4. Exerciii la capitolul 7


Exerciiul 7.1. Un sistem informatic funcioneaz conform schemei de mai jos.

Fiecare terminal este o surs de cereri poissoniene pentru care timpul de servire are repartiie exponenial. Calculai:
debitul la intrarea serverului,
numrul de terminale, care aduce sistemul n starea de saturaie, presupunnd constante ceilali parametri.
Exerciiul 7.2. Un sistem informatic funcioneaz conform schemei de mai jos.

13.11.14

16:13

/var/www/apps/conversion/tmp/scratch_1/251050320.doc

p.11 din 12

Cu aceleai ipoteze ca i n exerciiul precedent, calculai:


debitele la intrarea celor dou servere,
numrul de terminale, care aduce sistemul n starea de saturaie, presupunnd constante ceilali parametri,
relaia care ar trebui s existe ntre parametrii sistemului pentru ca cele dou servere s fie echilibrate (acelai
grad de ncrcare).
Exerciiul 7.3. S se arate, c disciplina Lucrarea cea mai scurt prima minimizeaz timpul mediu de rspuns pentru
o mulime de lucrri. Indicaii: Se va stabili timpul total de execuie pentru o mulime de lucrri, apoi se vor permuta
dou lucrri.
Exerciiul 7.4. Dou procese ciclice p i q folosesc dou resurse comune A i B. Fiecare proces traverseaz o faz n
care are nevoie de ambele resurse simultan, cerndu-le una dup alta, conform necesitilor (deoarece alt proces poate
avea nevoie de o singur resurs) i elibereaz ambele resurse la sfritul fazei. Dac ordinea de achiziie a resurselor
este diferit pentru cele dou procese, este oare posibil programarea lor pentru evitarea blocrii fr retragere sau
rezervare global?
Exerciiul 7.5. Considerm un sistem de prelucrare pe loturi monoprogram, cu tampoane de intrare-ieire n memorie,
conform schemei din exerciiul 3.13. Zonele de memorie, care servesc drept tampoane de intrare i de ieire sunt alocate
i eliberate n mod dinamic, la necesitate, pornind de la o zon comun de lungime constant.
Identificai riscul unei blocri i propunei un algoritm pentru a o evita.
Exerciiul 7.6. Trei procese partajeaz trei resurse nebanalizate cu acces exclusiv i fr retragere. Utiliznd procedurile
alocare(resurs) i eliberare(resurs), elaborai algoritmul programelor pentru aceste procese:
cu risc de blocare global a celor trei procese,
cu risc de privaiune pentru doar unul din procese, fr blocare.
Fiecare proces nu va utiliza mai mult de dou resurse.
Exerciiul 7.7. Demonstrai, c dac un sistem nu se afl n blocare, este posibil s se construiasc o suit complet de
procese.
Exerciiul 7.8. Demonstrai, c dac un sistem se afl ntr-o stare fiabil, este posibil s se prelungeasc orice suit
fiabil de procese ntr-o suit fiabil complet.
Exerciiul 7.9. S se elaboreze un program detaliat pentru alocarea resurselor conform algoritmului bancherului,
introducnd structurile de date necesare.
Exerciiul 7.10. Artai c, n caz general, complexitatea algoritmului bancherului este de ordinul n2m, unde n este
numrul total al proceselor i m este numrul total de clase de resurse.
Exerciiul 7.11. Completai algoritmul bancherului presupunnd, c procesele pot fi create i distruse dinamic i, c un
proces poate modifica anunul su. Precizai, care sunt operaiile care trebuie s fie supuse unei autorizri a sistemului
de alocare a resurselor.

13.11.14

16:13

/var/www/apps/conversion/tmp/scratch_1/251050320.doc

p.12 din 12

También podría gustarte