Sunteți pe pagina 1din 19

Universitatea Politehnica Bucureti - Facultatea de Automatic i Calculatoare

Ceasuri logice si ordonarea evenimentelor


Intr-un algoritm distribuit, fiecare proces executa o succesiune de
actiuni (operatii)
vom numi eveniment producerea unei actiuni
Evenimentele aceluiasi proces sunt ordonate in timp
ordinea este usor de stabilit datorita executiei secventiale a
procesului
Ordonarea unor evenimente din procese diferite este importanta
de ex. intrarea intr-o sectiune critica se face in ordinea cererilor
(politica echitabila!) facute de procese diferite
Cum se poate face ordonarea ???
Ordonarea conform timpului fizic de producere este dificila!
11/20/16

Algoritmi Paraleli si distribuiti

Universitatea Politehnica Bucureti - Facultatea de Automatic i Calculatoare

Ordinea relativa a evenimentelor


Solutie Lamport folosirea unor ceasuri logice
Ordinea este definita de relatia petrecut inainte (!):
dac a i b sunt evenimente din acelai proces i a l precede in
timp pe b, atunci a!b;
cnd a reprezint transmiterea unui mesaj de ctre un proces, iar
b recepia aceluiai mesaj de ctre un altul, atunci a!b;
dac a!b i b!c atunci a!c.

11/20/16

Algoritmi Paraleli si distribuiti

Universitatea Politehnica Bucureti - Facultatea de Automatic i Calculatoare

Ordinea relativa a evenimentelor (2)


Solutia lui Lamport foloseste relatia !" pentru a face ordonarea
partiala a evenimentelor dintr-un algoritm distribuit
Se pastreaza:
pentru fiecare proces o variabila cl (clock) initial 0
pentru fiecare mesaj un camp tt (timestamp)

11/20/16

Algoritmi Paraleli si distribuiti

Universitatea Politehnica Bucureti - Facultatea de Automatic i Calculatoare

Reguli:
la producere eveniment intern
cl este incrementat
valoarea sa este asociata evenimentului ca amprenta de timp
la transmitere mesaj
incrementeaz cl al procesului transmitator cu 1
actualizeaz amprenta de timp a mesajului tt = cl;
la primire mesaj cu amprenta de timp tt
actualizeaz ceasul receptorului cl = maxim (cl, tt) + 1

11/20/16

Algoritmi Paraleli si distribuiti

Universitatea Politehnica Bucureti - Facultatea de Automatic i Calculatoare

Aplicatie: excluderea mutuala distribuita


Foloseste implementari distribuite ale primitivelor P, V si ale
semafoarelor
Solutia foloseste transmitere de mesaje, mecanismul unic de
partajare a datelor comune intre procese distribuite
In particular, solutia se bazeaza pe transmitere de mesaje de la
un proces la toate celelalte
cnd un proces execut o operaie P sau V el difuzeaz un
mesaj celorlalte procese
broadcast ch[m]

trimite m pe fiecare din ch[1:n]

mesajul m are aceeasi amprenta de timp pe toate canalele


apoi analizeaza rspunsurile pentru a decide continuarea
execuiei.
11/20/16

Algoritmi Paraleli si distribuiti

Universitatea Politehnica Bucureti - Facultatea de Automatic i Calculatoare

Implementarea semafoarelor distribuite


Implementarea semafoarelor distribuite separa procesele in doua categorii
un proces utilizator Utiliz[i]
iniiaz o operae P prin difuzarea unui mesaj pe canalele opsem
apoi asteapta un mesaj de permisiune pe canalul start
iniiaz o operae V prin difuzarea unui mesaj pe canalele opsem
un proces Ajutor[i] implementeaz operaiile P si V
primeste mesaje pe canalul opsem de la procesele Utiliz si Ajutor
confirma (ack) mesajele P si V
decide cand Utiliz[i] poate intra in sectiunea critica si trimite un
mesaj pe canalul start
Utiliz[i]
start[i]

opsem[i]
Ajutor[i]

11/20/16

Utiliz[j]
Ajutor[j]

Algoritmi Paraleli si distribuiti

Universitatea Politehnica Bucureti - Facultatea de Automatic i Calculatoare

enum fel {V, P, ack};


chan opsem[1:n](int transm, fel op, int timp);
chan start[1:n](int timp);
process Utiliz [i = 1 to n]{
int cl = 0;
int ts;
...
cl = cl+1;
broadcast opsem(i, P, cl);
receive start[i](ts);
cl = max(cl, ts) + 1;
sectiune critica;
cl = cl+1;
broadcast opsem(i, V, cl);
sectiune ne-critica;

}
11/20/16

/*ceas logic*/
/*timestamp numar intreg*/
/*operatia P*/
/*asteapta permisiune*/

/*operatia V*/

Algoritmi Paraleli si distribuiti

Universitatea Politehnica Bucureti - Facultatea de Automatic i Calculatoare

process Ajutor [i = 1 to n){


typedef struct {int transm, fel k, int ts} queue;
queue qm [lmax]; /*coada ordonata dupa timestamp ts*/
int cl = 0;
int sem = valoare_initiala;
/*semafor generalizat*/
int transm;
fel k;
int ts;

11/20/16

Algoritmi Paraleli si distribuiti

Universitatea Politehnica Bucureti - Facultatea de Automatic i Calculatoare

while (true) {
receive opsem[i](transm, k, ts);
cl = max(cl, ts) + 1;
if (k==P or k==V) {
insereaza (transm, k, ts) in locul corespunzator in qm;
cl = cl+1; broadcast opsem(i, ack, cl);}
/*confirmare cu cl > ts*/
else if (k==ack) {
inregistreaza primirea unui ack;
for [mesajele V complet confirmate ] {
scoate mesaj din qm;
sem = sem+1;}
for [mesajele P complet confirmate st sem>0] {
scoate mesaj (transm, k, ts) din qm;
sem = sem-1;
if (transm=i) {cl = cl+1; send start[i](cl); }
}
} /*end process*/
11/20/16

Algoritmi Paraleli si distribuiti

Universitatea Politehnica Bucureti - Facultatea de Automatic i Calculatoare

mesajele trimise de P1 ajung in ordinea transmisiei la P2


M2

M1

M2

M1

P1

P2

mesaje primite de P8 si pastrate in qm; in total sunt 8 procese


Prefix stabil e urmat de un mesaj de la fiecare proces
28

22

21

19

17

13

10

P1

P2

P3

P8

P4

P5

P6

P7

P8

P5

P3

de la cine ?
11/20/16

Algoritmi Paraleli si distribuiti

timp producere

Universitatea Politehnica Bucureti - Facultatea de Automatic i Calculatoare

Ceasuri logice vectoriale


Cu soluia Lamport:
daca e precede f atunci amprenta_logic (e) < amprenta_logic (f)
Reciproca nu este adevarata; in figura:
amprenta_logic (e) < amprenta_logic (f) & e precede f
amprenta_logic (e) < amprenta_logic (c) & e NU precede c
In general, daca
amprenta_logic (a) < amprenta_logic (b) NU putem spune daca a ! b
Solutia: ceasuri logice vectoriale.

11/20/16

Algoritmi Paraleli si distribuiti

Universitatea Politehnica Bucureti - Facultatea de Automatic i Calculatoare

Fiecare proces P[i] are asociat un vector Vi [1..n] n care:


Vi [i] este numrul de evenimente produse n procesul P[i];
Vi [j] este numrul de evenimente despre care P[i] tie (a aflat din
amprentele mesajelor primite) c au avut loc la P[j].
Procesul P[i] actualizeaz Vi la fiecare eveniment din P[i]
La un eveniment intern P[i] incrementeaza Vi [i]

11/20/16

Algoritmi Paraleli si distribuiti

Universitatea Politehnica Bucureti - Facultatea de Automatic i Calculatoare

Cnd P[i] transmite mesajul m (eveniment send m):


P[i] incrementeaz Vi [i]
P[i] adaug Vi la m ca vector de amprente de timp curent vt(m)
Cnd P[j] primete m si vt(m) (eveniment receive m):
P[j] ajusteaz:
Vj [k] = max{Vj [k],vt(m)[k]} pentru fiecare k
P[j] incrementeaz Vj [j] cu 1
P[j] incrementeaz si Vj [i] ???

11/20/16

Algoritmi Paraleli si distribuiti

Universitatea Politehnica Bucureti - Facultatea de Automatic i Calculatoare

Cu ceasuri logice vectoriale putem spune daca a precede b, sau nu


Reguli
VT1 = VT2 " VT1[i] = VT2[i],
pentru i = 1, ..., N
VT1 <= VT2 " VT1[i] <= VT2[i],
pentru i = 1, ..., N
VT1 < VT2 " VT1 <= VT2 i VT1 != VT2
Fie vt(a) i vt(b) vectorii de amprente de timp asociai ev a i b.
Atunci:
vt(a) < vt(b) => ev a precede cauzal b
vt(a) !< vt(b) and vt(a) !> vt(b) and vt(a) != vt(b) " ev a i b sunt
concurente
11/20/16

Algoritmi Paraleli si distribuiti

Universitatea Politehnica Bucureti - Facultatea de Automatic i Calculatoare

Receptia si livrarea mesajelor


Mesajele destinate unui proces sunt receptionate si memorate
temporar de un modul de comunicare
Mesajele sunt livrate procesului (de aplicatie) cand sunt
indeplinite anumite conditii

11/20/16

Algoritmi Paraleli si distribuiti

15

Universitatea Politehnica Bucureti - Facultatea de Automatic i Calculatoare

Ordonare Cauzal Multicast


Procesele unei colecii P comunic ntre ele doar prin mesaje cu difuzare
Se cere ca mesajele s respecte dependena cauzal
vt(m) < vt(m') => livrareP (m) ! livrareP (m)
Ex: vt(m1) < vt(m2) # m1 trebuie livrat inainte de m2;
Obs. in figura nu sunt marcate toate copiile mesajelor multicast!

Ordine m1 si m3?

m1 si m3 sunt concurente # pot fi livrate oricum (similar m2 si m3)

11/20/16

Algoritmi Paraleli si distribuiti

Universitatea Politehnica Bucureti - Facultatea de Automatic i Calculatoare

Protocolul (vectori de timp)


fiecare proces P [i = 1 to n] are asociat un vector Vi [1..n], cu
toate elementele iniial 0
se numara doar operatiile de transmitere de mesaje
Vi [i] este numarul de evenimente transmitere de mesaje
produse de P[i];
Vi [j] este nr evenimente transmitere de mesaje despre care
P[i] tie (a aflat) c au avut loc la P[j].
Procesul P[i] actualizeaz Vi la fiecare eveniment de trimitere
sau recepie de mesaj

11/20/16

Algoritmi Paraleli si distribuiti

Universitatea Politehnica Bucureti - Facultatea de Automatic i Calculatoare

Cnd procesul sursa P[s] transmite mesajul m:


P[s] incrementeaz Vs [s]
P[s] adaug Vs la m ca vector de amprente de timp curent vt(m)
Obs. Incrementarea lui Vs [s] se face doar la transmiterea
unui mesaj de catre s
vt(m) spune receptorului cte evenimente (din alte procese) au precedat m
i ar putea influena cauzal pe m.
Cnd destinatia P[d] primete de la s mesajul m mpreun cu vt(m),
mesajul este pstrat ntr-o coad de ntrziere i este livrat doar dac
vt(m) [s] = Vd [s] + 1
m urmeaza ultimului mesaj primit de la P[s] si livrat de P[d]
vt(m) [k] =< Vd [k] pentru k <> s
P[d] a primit mesajele de care m depinde cauzal
Cnd mesajul este livrat, Vd este actualizat la amprentele maxime astfel:
Vd [k] = max{Vd [k], vt(m)[k]} pentru fiecare k = 1,n.
11/20/16

Algoritmi Paraleli si distribuiti

Universitatea Politehnica Bucureti - Facultatea de Automatic i Calculatoare

Alte aciuni ale protocolului la livrarea mesajelor:


dac vt(m)[k] > Vd [k] pentru un oarecare k atunci se ntrzie m
P[d] nu a primit toate mesaje de care mesajul curent poate fi cauzal
dependent;
dac vt(m)[s] > V(d)[s]+1 atunci se ntrzie m
mai sunt mesaje de la P[s] pe care P[d] nu le-a primit
(asigura ordinea FIFO pentru canale nonFIFO)
dac vt(m)[s] <= Vd [s] atunci rejecteaz m
m este un duplicat al unui mesaj primit anterior.
11/20/16

Algoritmi Paraleli si distribuiti

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