Documente Academic
Documente Profesional
Documente Cultură
Cap.5
Mecanisme şi algoritmi pentru sincronizarea comunicaţiilor
Comunicaţia dintre procese:
Transferul de mesaje
Protocoale stratificate
Mesaje de tip cerere/răspuns
Comunicaţii de grup
Sisteme monoprocesor:
Procesele partajează o memorie comună
Sincronizare folosind semafoare sau monitoare.
Nu este posibilă (şi nici de dorit) colectarea tuturor informaţiilor despre sistem într-
un singur loc, în care să fie examinate pentru luarea unei decizii, aşa cum se
întâmplă într-o abordare centralizată.
Primele trei puncte arată că nu se poate accepta colectarea tuturor informaţiilor într-
un singur loc în vederea procesării lor.
Exemplu:
Pentru a realiza alocarea resurselor, nu se poate accepta varianta transmiterii
tuturor solicitărilor unui singur manager de resurse, care să le examineze şi să
acorde sau să refuze alocarea resurselor cerute în funcţie de informaţiile pe care
le deţine despre întregul sistem.
Supraîncărcarea managerului odată cu creşterea numărului de noduri care pot
emite cereri
Raţiuni de fiabilitate şi de toleranţă la defecte a sistemului în ansamblu.
Într-un sistem distribuit, obţinerea unei înţelegeri asupra valorii timpului nu este o
problemă banală, aşa cum este în cazul centralizat.
Cap.5. Mecanisme şi algoritmi pentru sincronizarea comunicaţiilor
Întrucât timpul este o noţiune fundamentală pentru modul în care este construit
raţionamentul uman, efectul nesincronizării ceasurilor poate fi dramatic.
Este posibilă sincronizarea tuturor ceasurilor într-un sistem distribuit?
Ceasuri logice
Atunci când ceasurile nu trebuie să fie numai egale între ele, ci să nu difere de
timpul astronomic cu mai mult de o valoare limită impusă, atunci ceasurile se
numesc ceasuri fizice.
Cele două condiţii evidente de precedenţă temporală prezentate mai sus pot fi acum
reformulate astfel:
Dacă a şi b sunt evenimente în acelaşi proces, şi a apare înaintea lui b, atunci
C(a)<C(b).
Dacă a este evenimentul transmiterii unui mesaj de către un proces, iar b este
evenimentul recepţiei mesajului de către un alt proces, atunci C(a) şi C(b)
trebuie asignate astfel încât toate procesele sunt de acord cu aceste valori şi
C(a)<C(b).
În plus, valoarea măsurată a timpului, C, trebuie să fie monoton crescătoare.
Eventualele corecţii efectuate asupra acestor valori trebuie făcute prin adunarea
unor cantităţi pozitive, niciodată prin scădere.
Exemplu:
Cap.5. Mecanisme şi algoritmi pentru sincronizarea comunicaţiilor
Fie trei procese, a căror evoluţie în timp este ilustrată în figura de mai jos. Cele trei
procese se execută pe trei noduri distincte, fiecare având propriul său ceas, rulând
într-un ritm propriu.
Fiecare ceas rulează cu o rată constantă, dar ratele diferă între ele datorită
diferenţelor dintre cristale.
Partea II. Modele, algoritmi şi protocoale de comunicaţii în sisteme de conducere
0 1 2 0 1 2
0 0 0 0 0 0
6 A 8 10 6 A 8 10
12 16 20 12 16 20
18 24 B 30 18 24 B 30
24 32 40 24 32 40
30 40 50 30 40 50
36 48 C 60 36 48 C 60
42 56 70 42 61 70
48 D 64 80 48 D 69 80
54 72 90 70 77 90
60 80 100 76 85 100
a) b)
a) Trei procese, fiecare cu propriul său ceas
b) Corecţia ceasurilor conform algoritmului Lamport
Condiţie suplimentară: două evenimente nu pot să apară simultan.
Cap.5. Mecanisme şi algoritmi pentru sincronizarea comunicaţiilor
Din considerente de eficienţă şi fiabilitate, fiecare nod utilizează propriul său ceas
fizic, ceea ce ridică două probleme:
1.Cum le sincronizăm cu timpul absolut?
2.Cum le sincronizăm între ele?
Metode de măsurare a timpului fizic. Scurt istoric.
Secolul al XVII-lea - ceasuri mecanice - timpul măsurat după un procedeu
astronomic.
Partea II. Modele, algoritmi şi protocoale de comunicaţii în sisteme de conducere
1948 - inventarea ceasului atomic - măsurarea timpului s-a putut realiza cu mai
mare precizie şi independent de mişcarea de rotaţie a Pământului.
Numărarea tranziţiilor atomului de cesiu 133.
Sarcina măsurării timpului a fost transferată de la astronomi la fizicieni.
secundă = timpul necesar pentru ca un atom de cesiu 133 să efectueze exact
9.192.631.770 de tranziţii.
Această cifră - determinată făcând o secundă atomică egală cu o secundă medie
solară în anul introducerii ei.
Durata unei zile exprimată în sistemul atomic este mai mică decât durata zilei
solare medii – în timp, diferenţele se acumulează în mod sistematic.
Din acelaşi motiv, în 1582 papa Grigorie al XIII-lea a decretat tăierea a 10 zile din
calendar.
Pentru a nu se ajunge la o astfel de soluţie radicală, BIH introduce câte o secundă
ori de câte ori discrepanţa dintre TAI şi timpul solar ajunge la 800 ms.
Această corecţie - un sistem de timp bazat pe secunde constante TAI, dar care
rămâne sincronizat pe termen lung cu timpul solar.
Acest sistem este numit UTC – Universal Coordinated Time - în prezent stă la baza
măsurării timpului fizic.
UTC - accesibil celor care au nevoie de o măsurare exactă a timpului
Prin intermediul unor staţii radio pe unde scurte.
Prin serviciile unor sateliţi geostaţionari.
Algoritmi de sincronizare a ceasurilor
Dacă unul dintre noduri are un receptor pentru UTC, atunci se urmăreşte ca toate
celelalte ceasuri să se sincronizeze cu acesta.
Partea II. Modele, algoritmi şi protocoale de comunicaţii în sisteme de conducere
Dacă nici un nod nu dispune de un receptor pentru UTC - fiecare nod măsoară
timpul cu mijloace proprii, urmărindu-se ca valorile acestor timpi să difere între
ele cu cât mai puţin posibil.
Într-o primă variantă, timpul local poate fi setat direct cu valoarea primită. Apar însă
două probleme:
1.Timpul nu poate curge înapoi, deci dacă valoarea curentă este mai mare decât
valoarea primită, atunci aceasta din urmă nu poate înlocui imediat valoarea
curentă.
2.Transmisia valorii timpului nu se poate face instantaneu, deci valoarea primită ar
trebui corectată cu durata transmisiei.
Algoritmul Berkeley
Algoritmul lui Cristian - serverul de timp are un rol pasiv: celelalte noduri solicită
valoarea timpului, iar el nu face decât să răspundă acestor cereri.
Algoritmul Berkeley - serverul de timp are un rol activ: el le solicită celorlalte
noduri valorile timpului local.
În funcţie de răspunsuri calculează o valoare medie, pe baza căreia le transmite
celorlalte noduri instrucţiuni privind avansarea ceasurilor sau încetinirea lor pentru
un anumit timp.
Această metodă este aplicabilă în cazul în care nici un nod nu are un receptor
UTC.
Algoritmi distribuiţi
Primele două tipuri de algoritmi sunt centralizate - au dezavantaje specifice unei
asemenea abordări.
categorie de algoritmi distribuiţi de sincronizare a ceasurilor apelează la folosirea
unor intervale fixe de resincronizare.
La începutul fiecărui interval, fiecare nod transmite valoarea timpului aşa cum
este ea înregistrată de ceasul local, apoi aşteaptă un anumit interval de timp
sosirea răspunsurilor.
Atunci când toate răspunsurile au sosit, ele sunt folosite pentru calcularea unei
noi valori pentru timpul local.
Cap.5. Mecanisme şi algoritmi pentru sincronizarea comunicaţiilor
Aceasta se poate face prin simpla mediere a valorilor primite, sau prin filtrarea
acestora urmată de mediere.
altă posibilitate este aceea de a încerca corectarea fiecărui mesaj cu o estimare a
duratei transmisiei mesajului.
Excluderea mutuală
Aplicaţiile în care sunt implicate mai multe procese sunt adeseori mai uşor de
programat folosind regiuni critice.
Atunci când un proces trebuie să citească sau să actualizeze anumite structuri de
date partajate, acesta mai întâi intră într-o regiune critică pentru a-şi asigura
accesul exclusiv la date, adică pentru a fi sigur că nici un alt proces nu va folosi
variabilele partajate în acelaşi timp cu el.
La nivelul unui singur nod, regiunile critice pot fi protejate spre exemplu prin
semafoare.
Algoritm centralizat de excludere mutuală
Calea cea mai directă - de a simula modul în care problema este rezolvată în
cadrul sistemelor cu un singur nod.
Unul dintre procese - coordonator.
Ori de câte ori un proces (1) doreşte să intre într-o regiune critică, el cere
permisiunea coordonatorului printr-un mesaj (REQ - Request) în care precizează
care este regiunea critică în care doreşte obţinerea accesului exclusiv.
Partea II. Modele, algoritmi şi protocoale de comunicaţii în sisteme de conducere
0 1 2 0 1 2
REQ GT REQ
Coada 2
a) este b)
C goală C
0 1 2 0 1 2
REL GT
2
c) d)
C C
Ricart şi Agrawala (1981) - variantă îmbunătăţită a unui algoritm mai vechi al lui
Lamport (1978).
Necesită o ordonare totală a evenimentelor din sistem.
Algoritmul lui Lamport asigură această condiţie şi poate fi utilizat pentru a marca
fiecare eveniment cu momentul producerii lui (timestamp).
Atunci când un proces doreşte să intre într-o regiune critică, el construieşte un
mesaj conţinând numele regiunii, identificatorul procesului şi valoarea timpului
curent.
Apoi transmite mesajul tuturor proceselor din sistem, inclusiv lui însuşi.
Dacă timpul mesajului recepţionat este mai mic, înseamnă că a apărut primul şi
acesta câştigă: receptorul transmite înapoi un mesaj GT.
Dacă propriul său mesaj are un timp mai mic, atunci receptorul memorează
cererea intr-o coadă şi nu răspunde.
Cap.5. Mecanisme şi algoritmi pentru sincronizarea comunicaţiilor
Intră în
8 regiunea
critică
a) b)
0 0
8 9 GT GT
8
1 2 1 2
9 GT
9
c) d)
0 0
GT
1 2 1 2
Aşteaptă şi Intră în
ultima regiunea
confirmare critică
Numărul de mesaje este 2(N-1) pentru fiecare acces într-o regiune critică, unde N
este numărul de procese care pot cere acces la ea.
Dezavantaj:
A fost înlocuit un punct de cădere catastrofală cu N astfel de puncte.
Dacă oricare dintre procese cade (procesul 2), el nu va mai răspunde la cereri, ceea
ce ar putea fi interpretat în mod greşit ca o interzicere a accesului la regiunea
critică.
Algoritmul poate fi îmbunătăţit astfel încât procesul care a cerut accesul la o regiune
critică să nu trebuiască să aştepte toate confirmările, ci doar majoritatea acestora.
În acest caz, dacă un proces a acordat permisiunea de acces unui alt proces, atunci
nu va transmite un alt mesaj GT până când nu este informat că primul a eliberat
regiunea critică.
Algoritm distribuit bazat pe tehnica jetonului
O abordare cu totul diferită - care nu necesită o ordonare temporală a
evenimentelor.
Presupune construirea unui inel logic în software (listă circulară), în care intră
toate procesele care pot cere accesul într-o regiune critică.
Fiecare proces ştie care este următorul proces în lista circulară.
Partea II. Modele, algoritmi şi protocoale de comunicaţii în sisteme de conducere
La iniţializare, unul dintre procese deţine un jeton, care îi conferă dreptul de acces
la regiunea critică.
Acesta circulă continuu de-a lungul inelului, cu ajutorul unor mesaje punct-la-
punct.
Atunci când un proces doreşte să intre în regiunea critică, aşteaptă să primească
jetonul, intră în regiunea critică, iar la ieşire transmite jetonul următorului proces
din listă.
Dacă un proces primeşte jetonul şi nu intenţionează să intre în regiunea critică,
atunci pur şi simplu îl transmite mai departe succesorului său în lista circulară.
Cap.5. Mecanisme şi algoritmi pentru sincronizarea comunicaţiilor
Procese
0 2 4 7 1 5 3 6
0 3
7
4
6
5
Un singur proces deţine jetonul în orice moment, deci numai acel proces se poate
afla în regiunea critică.
Întrucât jetonul circulă între procese într-o ordine bine stabilită, nu pot să apară
cereri nesatisfăcute sau blocaje.
Deşi este mai simplu, şi acest algoritm are probleme.
Dacă jetonul se pierde, trebuie regenerat.
De fapt, detectarea acestui fapt este dificilă, întrucât perioada de rotaţie a
jetonului nu este limitată superior.
Faptul că jetonul nu a apărut de mult timp nu înseamnă că s-a pierdut, este
posibil ca un proces să-l utilizeze încă.
Algoritmul este sensibil şi la căderea unui nod, dar mai puţin.
Atunci când un proces încearcă să-i transmită succesorului său jetonul, iar acesta
nu confirmă primirea, înseamnă că nodul respectiv a căzut, iar jetonul este pasat
mai departe următorului din listă.
Aceasta înseamnă însă ca fiecare nod să deţină întreaga configuraţie a listei şi să
o actualizeze continuu.
Cap.5. Mecanisme şi algoritmi pentru sincronizarea comunicaţiilor
Algoritmi de selecţie
Mulţi algoritmi distribuiţi necesită ca unul dintre noduri să joace la un moment dat
rolul de coordonator, iniţiator, secvenţiator, sau orice alt rol special.
Vom atribui în cele ce urmează unui astfel de proces special denumirea generică de
coordonator.
Dacă toate nodurile sunt echivalente logic, nu există nici o cale pentru a selecta unul
dintre ele în funcţie de caracteristicile sale speciale.
posibilitate folosită în general de algoritmi este aceea de a selecta nodul având cel
mai mare cod de identificare.
Până la urmă toate procesele renunţă, cu excepţia celui care are codul de
identificare cel mai mare.
Acesta îşi anunţă victoria printr-un mesaj adresat tuturor celorlalte noduri, care
astfel află care este noul coordonator.
Dacă un nod care anterior a fost oprit porneşte, atunci el iniţiază o nouă alegere.
Dacă se întâmplă să deţină cel mai mare cod de identificare, atunci va câştiga şi
va prelua rolul de coordonator.
Partea II. Modele, algoritmi şi protocoale de comunicaţii în sisteme de conducere
2 1 2 1
ELECTION OK
4 5 4 5
ELECTION
OK
0 ELECTION 0
6 6 2 1
7 7 5
3 3 4
Coordonatorul
anterior a căzut COORDINATOR
a) b)
0
6
2 1 2 1
7
3
4 5 4 5
e)
ELECTION
ELECTION OK
0 0
6 6
ELECTION
7 7
3 3
F
c) d)
Atunci când mesajul ajunge din nou la iniţiatorul alegerilor, acesta recunoaşte
mesajul după codul de identificare care este prezent în mesaj.
În acel moment, tipul mesajului este schimbat în COORDINATOR şi circulă încă o
dată în listă pentru a informa toate nodurile care este nodul coordonator (cel cu
codul de identificare cel mai mare din listă) şi care sunt membrii actuali ai listei.
După ce acest mesaj a făcut un tur complet el nu mai este transmis mai departe
şi fiecare nod se întoarce la activitatea sa.
Partea II. Modele, algoritmi şi protocoale de comunicaţii în sisteme de conducere
5
6 1 2
0 2
ELECTION ELECTION
ELECTION
0 ELECTION 3
2
5 3
6
Coordonatorul 4
anterior a căzut
6
Nici un 5 5
răspuns
ELECTION