Sunteți pe pagina 1din 33

Comunicaţii în sisteme de conducere

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

Cooperarea şi sincronizarea dintre procese

 Implementarea regiunilor critice


 Alocarea resurselor

Sisteme monoprocesor:
 Procesele partajează o memorie comună
 Sincronizare folosind semafoare sau monitoare.

Sisteme interconectate de tip reţea:


 Absenţa memoriei partajate.
Cap.5. Mecanisme şi algoritmi pentru sincronizarea comunicaţiilor

Evenimentul A s-a produs înaintea evenimentului B - necesită o atenţie deosebită


dacă cele două evenimente au fost sesizate de noduri diferite.

Timpul - joacă un rol fundamental în multe din metodele de sincronizare.


Modalităţile de măsurare a timpului la nivelul nodurilor.
Sincronizarea ceasurilor
Sincronizarea proceselor în sisteme distribuite:
 mai complicată decât în cele centralizate
 trebuie folosiţi algoritmi distribuiţi.

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ă.

Algoritmii distribuiţi - proprietăţi:


1. Informaţiile relevante sunt răspândite la mai multe noduri.
2. Procesele îşi fundamentează deciziile numai pe informaţiile locale.
3. Se evită apariţia unui punct de vedere catastrofală în sistem.
4. Nu există un ceas comun sau o altă sursă globală, precisă, care să furnizeze
informaţia despre timp.
Partea II. Modele, algoritmi şi protocoale de comunicaţii în sisteme de conducere

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.

Ultimul punct - la fel de important.


 Într-un sistem centralizat, timpul este uşor de măsurat şi de gestionat. Atunci
când un proces doreşte să afle valoarea acestuia, face un apel de sistem şi
executivul i-o furnizează.
 Dacă procesul A doreşte să afle cât este ceasul şi puţin mai târziu, procesul B vrea
şi el să afle cât este ceasul, atunci B primeşte (întotdeauna) o valoare mai mare
(sau cel puţin egală) cu cea pe care o primeşte procesul A.

 Î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

Element de prelucrare şi control - un circuit pentru măsurarea scurgerii timpului.


 un ceas - care furnizează în orice moment ora, minutul, secunda şi alte
subdiviziuni;
 un timer - un numărător de impulsuri care provin de la un oscilator de precizie
pilotat cu un cristal de cuarţ. Timpul în acest caz este gestionat prin software,
fiind incrementat cu fiecare depăşire a timerului, care generează o întrerupere
(tick).

 Elementele de prelucrare şi control - integrate într-o reţea - fiecare cu propriul lui


ceas.
 Deşi frecvenţa cristalului de cuarţ este destul de stabilă, nu se poate garanta că
toate nodurile din reţea lucrează cu aceeaşi frecvenţă, respectiv că întreruperile
de la timer apar cu aceeaşi rată.
 De regulă cristalele lucrează la frecvenţe proprii, care chiar dacă diferă cu foarte
puţin, aceste diferenţe se pot acumula în timp şi pot conduce la valori diferite ale
timpului măsurat pentru fiecare nod (glisarea ceasurilor).
Partea II. Modele, algoritmi şi protocoale de comunicaţii în sisteme de conducere

 Primul algoritm pentru sincronizarea ceasurilor care a demonstrat că acest lucru


este posibil a fost propus de Lamport (1978).

 Pleacă de la ideea că sincronizarea ceasurilor nu trebuie să fie absolută. Dacă


două procese nu interacţionează, nu este necesar ca ceasurile lor să fie
sincronizate, deoarece absenţa acesteia nu va fi observată şi deci nu va cauza
probleme.
 În plus, Lamport a arătat că ceea ce contează cu adevărat nu este ca toate
procesele să cadă de acord asupra valorii exacte a timpului la un moment dat, ci
mai degrabă, să cadă de acord asupra ordinii în care apar evenimentele.
 În multe situaţii, este suficient ca toate nodurile să cadă de acord asupra unei
valori a timpului, care nu este neapărat cea astronomică. Pentru o anumită clasă
de algoritmi, ceea ce contează este consistenţa internă a ceasurilor, nu măsura în
care acestea indică ora exactă absolută.
 Pentru aceşti algoritmi, ceasurile pot fi considerate ca fiind 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.

Algoritmul Lamport – de sincronizare a ceasurilor logice.

Lamport a definit o relaţie de precedenţă temporală:


Cap.5. Mecanisme şi algoritmi pentru sincronizarea comunicaţiilor

“” - “s-a întâmplat înainte”.

 a şi b - două evenimente care au apărut în sistem:


 ab - “a s-a întâmplat înaintea lui b”
 toate nodurile sunt de acord cu faptul că mai întâi a apărut evenimentul a, apoi
evenimentul b.

Relaţia  poate fi observată direct în două situaţii:


1.Dacă a şi b sunt evenimente în acelaşi proces, şi a apare înaintea lui b, atunci ab
este evident adevărată.
2.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 ab este de
asemenea adevărată. Un mesaj nu poate fi primit înainte de a fi fost transmis şi
nici măcar simultan.

Relaţia de precedenţă temporală este tranzitivă:


Dacă ab şi bc, atunci ac.

 Dacă două evenimente x şi y, au loc în două procese diferite care nu comunică


prin mesaje (nici măcar indirect, prin intermediul altor procese), atunci nici una
din relaţiile xy şi yx nu sunt adevărate cu certitudine.
Partea II. Modele, algoritmi şi protocoale de comunicaţii în sisteme de conducere

 Astfel de evenimente se numesc concurente, ceea ce înseamnă că nu se poate


afirma nimic cu certitudine despre ordinea temporală în care s-au produs.

Folosind una din metodele de măsurare a timpului:


Unui eveniment a i se asociază C(a) = valoarea timpului la momentul la care acesta
a apărut, asupra căreia considerăm că au căzut de acord toate procesele.
Aceste valori ale timpului au proprietatea că dacă ab atunci C(a)<C(b).

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

Soluţia - ataşarea numărului procesului (identificator unic) ca parte zecimală a


timpului.
Algoritmul Lamport - o cale de a asigna valori temporale distincte tuturor
evenimentelor dintr-un sistem, pe baza următoarelor condiţii:
1.Dacă a apare înaintea lui b în acelaşi proces, atunci C(a)<C(b).
2.Dacă a şi b reprezintă transmisia şi recepţia aceluiaşi mesaj, atunci C(a)<C(b).
3.C(a)C(b), a, b două evenimente din sistem.
Ceasuri fizice
Algoritmul lui Lamport - ordonare clară a evenimentelor în timp.

Valorile timpului asociate acestora nu corespund valorilor exacte ale timpului


absolut.
În sistemele de timp real, aceste valori sunt importante, deci sunt necesare ceasuri
fizice.

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

 secundă = 1/243600=1/86400 din durata unei zile solare.


 zi solară - intervalul de timp scurs între două treceri consecutive ale soarelui la
zenit.
 Perioada de rotaţie a Pământului nu este constantă - ci scade continuu datorită
fenomenelor de frecare internă şi externă (tendinţă pe termen lung).
 Mici fluctuaţii pe termen scurt ale duratei unei zile solare - datorate turbulenţelor
din straturile interne de metal topit ale Pământului.
 Calcularea unei zile solare medii - pe baza măsurătorilor pentru un număr mare
de zile.

 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.

 În prezent - zeci de laboratoare deţin ceasuri atomice.


 Periodic, aceste laboratoare raportează către BIH (Bureau International de
l’Heure) în Paris care este numărul de tranziţii ale atomului de cesiu 133 începând
cu 1 ianuarie 1958, data introducerii timpului atomic.
Cap.5. Mecanisme şi algoritmi pentru sincronizarea comunicaţiilor

 BIH mediază aceste cifre şi produce TAI (International Atomic Time).

 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.

Toţi algoritmii se bazează pe următorul model de sistem:

1.Fiecare nod dispune de un timer care generează câte o întrerupere de H ori pe


secundă.
2.Rutina de întrerupere a timerului incrementează un ceas software care
gestionează numărul de întreruperi care a apărut de la un anumit moment fixat
din trecut.
 Timerele reale - nu generează exact H întreruperi într-o secundă.
 Eroarea tipică - de ordinul 10-5.
 Pentru ca erorile să nu se acumuleze - ceasurile trebuie re-sincronizate periodic
prin software.

Algoritmul lui Cristian (1989)


 Acesta se referă la un sistem în care un nod denumit server de timp (time server)
are un receptor pentru UTC.
 Periodic, celelalte noduri transmit câte un mesaj de tip cerere prin care îi solicită
acestuia furnizarea timpului curent.
 Atunci când răspunsul soseşte, el poate fi utilizat pentru ajustarea timpului local.
Cap.5. Mecanisme şi algoritmi pentru sincronizarea comunicaţiilor

Î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.

 Ca o rezolvare a primei probleme, actualizarea înapoi a ceasului - încetinirea


curgerii timpului curent.
 În ce priveşte cea de-a doua problemă, corecţia nu este atât de simplă întrucât
durata transmisiei nu este constantă, ci depinde de încărcarea reţelei.
 Ea poate fi estimată pe baza măsurării timpului scurs între transmiterea
solicitării şi primirea răspunsului, bazându-ne pe faptul că transmisia cererii şi
recepţia răspunsului se fac în intervale egale.
 De asemenea, mai poate fi luat în calcul şi timpul de răspuns la întrerupere al
serverului de timp.
 Se pot face mai multe măsurători care se mediază sau se poate reţine durata
cea mai scurtă, ca fiind cea mai reprezentativă pentru propagarea mesajelor în
reţea.
Partea II. Modele, algoritmi şi protocoale de comunicaţii în sisteme de conducere

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

 Dacă nici un alt proces nu se află în regiunea critică specificată, coordonatorul


răspunde cu un mesaj prin care precizează că se acordă accesul (GT- Grant).
 Atunci când primeşte permisiunea, solicitantul intră în regiunea critică.
Cap.5. Mecanisme şi algoritmi pentru sincronizarea comunicaţiilor

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

Excludere mutuală centralizată - două cereri de acces într-o regiune critică


 Un al doilea proces (2) solicită accesul în aceeaşi regiune critică.
Partea II. Modele, algoritmi şi protocoale de comunicaţii în sisteme de conducere

 Coordonatorul ştie că deja este un proces în regiunea critică şi nu va acorda


permisiunea.
 Modul concret în care face acest lucru depinde de implementarea sistemului. Spre
exemplu - coordonatorul poate amâna transmiterea răspunsului, blocând astfel
procesul solicitant până când primul proces iese din regiunea critică.
 În acest moment coordonatorul primeşte un mesaj prin care este informat asupra
eliberării regiunii critice (REL - Release).
 altă posibilitate este transmiterea unui mesaj prin care solicitantul este informat
despre ne-acordarea permisiunii de a intra în regiunea critică (DENY).
 În ambele cazuri, coordonatorul reţine într-o coadă cererile până când le poate
rezolva.
Algoritmul garantează excluderea mutuală şi acordă permisiunea de a intra în
regiunea critică în ordinea sosirii cererilor.
Schema este uşor de implementat întrucât necesită doar trei mesaje pentru fiecare
acces într-o regiune critică şi poate fi folosită pentru gestionarea accesului la resurse
în general (şi altele decât regiunile critice).
Dezavantaje:
 foloseşte un coordonator - un punct de cădere catastrofală.
Cap.5. Mecanisme şi algoritmi pentru sincronizarea comunicaţiilor

 dacă procesele se blochează în aşteptarea permisiunii, iar coordonatorul se


blochează, ele nu pot să detecteze blocarea coordonatorului (confuzie cu
permisiune ne-acordată).

Algoritm distribuit de excludere mutuală

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.

Se presupune că serviciul de transmisie garantează livrarea mesajelor la destinaţie,


adică fiecare mesaj recepţionat este însoţit de o confirmare.

Se pot folosi în acest scop primitive fiabile de comunicaţie de grup.


Partea II. Modele, algoritmi şi protocoale de comunicaţii în sisteme de conducere

Atunci când un proces primeşte o cerere de la un alt proces, se comportă diferenţiat,


în funcţie de raportul pe care acesta îl are cu regiunea critică specificată în cerere:

1.Dacă receptorul nu este în regiunea critică şi nici nu doreşte să intre în acel


moment, transmite înapoi un mesaj de acordare a permisiunii – GT (procesul 1).

2.Dacă receptorul este deja în regiunea critică, atunci nu răspunde, ci memorează


cererea într-o coadă.

3.Dacă receptorul doreşte şi el să intre în regiunea critică, dar încă nu a primit


permisiunea (procesele 0 şi 2), compară timpul asociat mesajului recepţionat cu
cel asociat cererii pe care a transmis-o celorlalte procese.

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

Are acces Iese din


în regiunea regiunea
critică critică

c) d)
0 0

GT

1 2 1 2

Aşteaptă şi Intră în
ultima regiunea
confirmare critică

Excludere mutuală în varianta distribuită - două cereri de acces într-o regiune


critică
Partea II. Modele, algoritmi şi protocoale de comunicaţii în sisteme de conducere

După ce a transmis o cerere, un proces aşteaptă până când primeşte confirmări de


la toate celelalte procese, după care intră în regiunea critică.

Atunci când părăseşte regiunea critică, transmite mesaje GT tuturor proceselor de la


care are cereri memorate în coada de aşteptare, care astfel redevine goală (procesul
0).

 Este evidentă asigurarea excluderii mutuale, fără blocarea proceselor la nesfârşit.

 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ă.

Aceasta blochează orice încercare de a se intra în regiunea critică.


Pentru a se evita o astfel de situaţie, algoritmul poate fi ameliorat:
 Receptorul va transmite întotdeauna un mesaj, fie de acordare a permisiunii (GT)
fie de interzicere a accesului în zona critică (DENY).
Cap.5. Mecanisme şi algoritmi pentru sincronizarea comunicaţiilor

 Ori de câte ori o cerere sau o confirmare se pierde, transmiţătorul aşteaptă un


timp finit;
 după care reîncearcă de un anumit număr de ori
 numai în cazul în care nu primeşte nici un răspuns conchide că nodul respectiv a
căzut.

 După primirea unui mesaj de interzicere a accesului, procesul se blochează în


aşteptarea unui mesaj GT.

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

Deţinătorul jetonului poate


1 2 intra în regiunea critică sau
poate transmite jetonul mai
departe

0 3

7
4

6
5

Excludere mutuală în varianta distribuită - tehnica jetonului


Corectitudinea acestui algoritm este evidentă.
Partea II. Modele, algoritmi şi protocoale de comunicaţii în sisteme de conducere

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.

 În general, nu contează care dintre noduri joacă acest rol.


 Important este să existe un astfel de nod şi el să fie unic.

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.

În general, fiecare nod are un identificator unic în cadrul sistemului.

posibilitate folosită în general de algoritmi este aceea de a selecta nodul având cel
mai mare cod de identificare.

Algoritmii de selecţie diferă în funcţie de modul în care se realizează localizarea


noului coordonator.
Partea II. Modele, algoritmi şi protocoale de comunicaţii în sisteme de conducere

De asemenea, vom presupune că fiecare nod cunoaşte codurile de identificare ale


celorlalte noduri. Ceea ce nu se cunoaşte este care dintre acestea sunt funcţionale şi
care nu.

Scopul algoritmului de selecţie - de a asigura că atunci când procesul de alegere


începe, se va încheia cu o înţelegere din partea tuturor proceselor funcţionale asupra
nodului care va deveni noul coordonator.

Algoritm de selecţie bazat pe codul de identificare


Algoritmul Garcia-Molina (1982).

Atunci când un proces P constată că coordonatorul curent nu mai răspunde la cereri,


iniţiază o nouă alegere, astfel:
1.P transmite un mesaj ELECTION tuturor proceselor cu coduri de identificare mai
mare decât al său.
2.Dacă nu primeşte nici un răspuns, consideră că a câştigat alegerile şi devine noul
coordonator.
3.Dacă primeşte un răspuns de la un alt proces, acesta preia rolul lui P.

 În orice moment, un proces poate primi un mesaj ELECTION de la unul dintre


procesele având codul de identificare mai mic decât al său.
Cap.5. Mecanisme şi algoritmi pentru sincronizarea comunicaţiilor

 Atunci când soseşte un astfel de mesaj, confirmă primirea mesajului (ACK),


indicând că este funcţional şi că a preluat sarcina de a stabili noul coordonator.

 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)

Funcţionarea algoritmului de selecţie bazat pe codul de identificare


Cap.5. Mecanisme şi algoritmi pentru sincronizarea comunicaţiilor

Algoritm de selecţie în inel


Un alt algoritm foloseşte un inel, dar fără jeton.
 Se presupune că nodurile sunt interconectate fizic sau logic într-un inel, astfel
încât fiecare nod cunoaşte care este succesorul său.

 Atunci când un nod constată că coordonatorul curent nu mai funcţionează,


construieşte un mesaj de tip ELECTION care conţine propriul cod de identificare şi
îl transmite către următorului nod din inel.
 Dacă acesta este oprit, atunci sare peste el şi îl transmite către următorul care
răspunde la mesaj.
 La fiecare pas, procesul transmiţător adaugă propriul său cod de identificare la
mesaj şi îl transmite mai departe.

 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

Funcţionarea algoritmului de selecţie în inel

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