Documente Academic
Documente Profesional
Documente Cultură
Mitică Craus
1/ 14
Introducere Excluderea mutuală cu regiştri binari test&set Excluderea mutuală cu regiştri read-modify-write Excludere mutuală cu regiştri cu valori mărginite
Cuprins
Introducere
Excluderea mutuală cu regiştri binari test&set
Descriere
Pseudocod
Excluderea mutuală cu regiştri read-modify-write
Descriere
Pseudocod
Excludere mutuală cu regiştri cu valori mărginite
Excludere mutuală cu regiştri cu valori mărginite, pentru două
unităţi de procesare, cu flămânzire
Descriere
Pseudocod
Excludere mutuală cu regiştri cu valori mărginite, pentru două
unităţi de procesare, fără flămânzire
Descriere
Pseudocod
2/ 14
Introducere Excluderea mutuală cu regiştri binari test&set Excluderea mutuală cu regiştri read-modify-write Excludere mutuală cu regiştri cu valori mărginite
Introducere
3/ 14
Introducere Excluderea mutuală cu regiştri binari test&set Excluderea mutuală cu regiştri read-modify-write Excludere mutuală cu regiştri cu valori mărginite
Introducere - continuare
4/ 14
Introducere Excluderea mutuală cu regiştri binari test&set Excluderea mutuală cu regiştri read-modify-write Excludere mutuală cu regiştri cu valori mărginite
Un registru test&set memorează valori binare şi suportă două operaţii atomice, test&set
şi reset, definite astfel:
Notat, ii:
• r este un registru test&set.
Test&Set(r )
1 temp ← r
2 r ←1
3 return temp
Reset(r )
1 r ←0
5/ 14
Introducere Excluderea mutuală cu regiştri binari test&set Excluderea mutuală cu regiştri read-modify-write Excludere mutuală cu regiştri cu valori mărginite
6/ 14
Introducere Excluderea mutuală cu regiştri binari test&set Excluderea mutuală cu regiştri read-modify-write Excludere mutuală cu regiştri cu valori mărginite
Notat, ii:
• r este un registru test&set.
Premise: Iniţial, r = 0
Pseudocod pentru unitatea de procesare pi , i ∈ {0, 1, . . . , n − 1}
hEntry i /* pi are nevoie de resursa critică*/
Entry(r )
1 asteapta pana cand Test&Set(r ) = 0
7/ 14
Introducere Excluderea mutuală cu regiştri binari test&set Excluderea mutuală cu regiştri read-modify-write Excludere mutuală cu regiştri cu valori mărginite
RMW(r , f )
1 v ←r
2 r ← f (v )
3 return v
• Fiecare unitate de procesare dispune de două variabile locale, pozitie şi coada.
• Algoritmul utilizează un registru r de tip read-modify-write, care memorează o
structură formată din două câmpuri: primul s, i ultimul.
• r .primul s, i r .ultimul conţin “bilete” pentru prima s, i respectiv pentru ultima unitate
de procesare din coadă.
• Atunci când o unitate de procesare ajunge ı̂n sectiunea de intrare, se ”as, ează” la
coada, prin asignarea valoarii lui r unei variabile locale s, i prin incrementarea lui
r .ultimul. Toate acestea sunt realizate printr-o singură operatie, indivizibilă.
• Valoarea curentă a lui r .ultimul ı̂ndeplines, te rolul de ”bilet” pentru unitatea de
procesare.
• O unitate de procesare asteaptă ı̂n sect, iuneade intrare pâna devine prima din coadă,
adică până când r .primul este egal cu biletul său. În acest moment, unitatea de
procesare intră ı̂n sect, iunea critică.
• După părăsirea sect, iunii critice, unitatea de procesare se autoelimină din coadă prin
incrementrea lui r .primul, permit, ând ı̂n acest fel urmatoarei unităt, i de procesare din
coadă să intre ı̂n sect, iunea critică.
9/ 14
Introducere Excluderea mutuală cu regiştri binari test&set Excluderea mutuală cu regiştri read-modify-write Excludere mutuală cu regiştri cu valori mărginite
10/ 14
Introducere Excluderea mutuală cu regiştri binari test&set Excluderea mutuală cu regiştri read-modify-write Excludere mutuală cu regiştri cu valori mărginite
11/ 14
Introducere Excluderea mutuală cu regiştri binari test&set Excluderea mutuală cu regiştri read-modify-write Excludere mutuală cu regiştri cu valori mărginite
12/ 14
Introducere Excluderea mutuală cu regiştri binari test&set Excluderea mutuală cu regiştri read-modify-write Excludere mutuală cu regiştri cu valori mărginite