Documentos de Académico
Documentos de Profesional
Documentos de Cultura
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).
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.
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.
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)
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
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
13.11.14
16:13
/var/www/apps/conversion/tmp/scratch_1/251050320.doc
p.7
din 12
1 N iR
N i 1 N
tms =
R ( N 1)
,
2N
(7.6)
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)
n mi
R 2 / N
N 2
R
=
.
2(1 R / N )
2N
i
(7.11)
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
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.
13.11.14
16:13
array[0..m-1] of integer
/var/www/apps/conversion/tmp/scratch_1/251050320.doc
p.9
din 12
Disp[j]=Res[j]-
i 0
Aloc[i, j ]
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.
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
13.11.14
16:13
/var/www/apps/conversion/tmp/scratch_1/251050320.doc
p.12 din 12