Sunteți pe pagina 1din 16

Universitatea Politehnica Bucure!ti - Facultatea de Automatic" !

i Calculatoare

Ceasuri logice si ordonarea evenimentelor


Intr-un algoritm distribuit, fiecare proces este caracterizat de o multime de stari actiuni care schimba starea eveniment = producerea unei actiuni Evenimentele pot fi ordonate conform timpului fizic de producere Dificil pentru evenimente din procese diferite

12/3/13

Algoritmi Paraleli si distribuiti

Universitatea Politehnica Bucure!ti - Facultatea de Automatic" !i Calculatoare

Ordinea relativa a evenimentelor


! Solutie mai simpla ! Definita de relatia petrecut inainte (->): ! dac! a "i b sunt evenimente din acela"i proces "i a l precede in timp pe b, atunci a->b; ! cnd a reprezint! transmiterea unui mesaj de c!tre un proces, iar b recep#ia aceluia"i mesaj de c!tre un altul, atunci a->b; ! dac! a->b "i b->c atunci a->c. ! Algoritmul lui Lamport foloseste relatia "->" pentru a face ordonarea partiala a evenimentelor: ! pentru fiecare proces o variabila cl (clock) initial 0 ! pentru fiecare mesaj un camp tt (timestmp)

12/3/13

Algoritmi Paraleli si distribuiti

Universitatea Politehnica Bucure!ti - 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 cu 1 ! actualizeaz! tt := cl; ! la primire mesaj cu amprenta de timp tt ! actualizeaz! cl := maxim (cl, tt) + 1

12/3/13

Algoritmi Paraleli si distribuiti

Universitatea Politehnica Bucure!ti - Facultatea de Automatic" !i Calculatoare

Aplicatie: excluderea mutuala distribuita


! Foloseste primitive P si V ! cnd un proces execut! o opera#ie 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 r!spunsurile pentru a decide continuarea execu#iei. ! Implementarea semafoarelor distribuite
! procesele Utiliz(i) ini#iaz" opera#iile P sau V ! procesele Ajutor(i) implementeaz" opera#iile P si V.

12/3/13

+----------------+ +-------->! Utiliz[i] !--->-+ ! +----------------+ !+-<- Utiliz[j] ! !! Ajutor[j] +---+ +-vv+ +---+ start[i] +---+ opsem[i] + ^ + +---+ ! +----------------+ ! +----<----! Ajutor[i] !<----+ +----------------+
Algoritmi Paraleli si distribuiti

Universitatea Politehnica Bucure!ti - Facultatea de Automatic" !i Calculatoare

type fel = enum(V, P, ack); chan opsem[1:n](transm: int, op: fel, timp: int); chan start[1:n](timp: int); Utiliz(i: 1..n):: var cl: int :=0; {ceas logic} var ts: int; {timestamp mesaj} ... cl := cl+1; broadcast opsem(i, P, cl); {operatia P} receive start[i](ts); cl := max(cl, ts) + 1; ... cl := cl+1; broadcast opsem(i, V, cl); {operatia V} ... Ajutor(i: 1..n):: var qm: queue of (transm: int, k: fel, ts: int); var cl: int := 0;
12/3/13

{ordonata dupa ts}

Algoritmi Paraleli si distribuiti

Universitatea Politehnica Bucure!ti - Facultatea de Automatic" !i Calculatoare

var sem: int := valoare_initiala; var transm: int, k: fel, ts: int; do 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); [] k=ack -> inregistreaza transmiterea unui ack; fa mesajele V complet confirmate -> scoate mesaj din qm; sem := sem+1; af; fa 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) fi af fi od
12/3/13

Algoritmi Paraleli si distribuiti

Universitatea Politehnica Bucure!ti - Facultatea de Automatic" !i Calculatoare

mesajele trimise de P1 ajung in ordinea transmisiei la P2 M2 P1 M1 M2 M1 P2

mesaje primite de P8 si pastrate in qm Prefix stabil 28 P1 22 P2 21 P3 19 P8 17 P4 13 P5 10 P6 9 P7 7 P8 5 P5 3 P3

timp producere
12/3/13

Algoritmi Paraleli si distribuiti

Universitatea Politehnica Bucure!ti - Facultatea de Automatic" !i Calculatoare

Ceasuri logice vectoriale


Cu solu#ia Lamport: daca e precede f atunci amprenta_logic! (e) < amprenta_logic! (f) Dar, in figura: amprenta_logic! (e) < amprenta_logic! (f) & e precede f amprenta_logic! (e) < amprenta_logic! (c) & e NU precede f In general, daca amprenta_logic! (a) < amprenta_logic! (b) NU putem spune daca a ! b Solutia: ceasuri logice vectoriale.

12/3/13

Algoritmi Paraleli si distribuiti

Universitatea Politehnica Bucure!ti - Facultatea de Automatic" !i Calculatoare

Fiecare Pi are asociat un vector V(i)[1..n] n care: V(i)[i] este num!rul de evenimente produse n procesul Pi; V(i)[j] este num!rul de evenimente despre care Pi "tie (a aflat din amprentele mesajelor primite) c! au avut loc la Pj. Procesul Pi actualizeaz! V(i) la fiecare eveniment din Pi La un eveniment intern Pi incrementeaza V(i)[i]

12/3/13

Algoritmi Paraleli si distribuiti

Universitatea Politehnica Bucure!ti - Facultatea de Automatic" !i Calculatoare

Cnd Pi transmite mesajul m (eveniment send m): Pi incrementeaz! V(i)[i] Pi adaug! V(i) la m ca vector de amprente de timp curent vt(m) Cnd Pj prime!te m si vt(m) (eveniment receive m): Pj ajusteaz!: V(j) [k] = max{V(j)[k],vt(m)[k]} pentru fiecare k Pj incrementeaz! V(j)[j] cu 1

12/3/13

Algoritmi Paraleli si distribuiti

Universitatea Politehnica Bucure!ti - Facultatea de Automatic" !i Calculatoare

Aplicarea regulilor ceasurilor logice vectoriale


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 asocia#i 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
12/3/13

Algoritmi Paraleli si distribuiti

Universitatea Politehnica Bucure!ti - 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

12/3/13

Algoritmi Paraleli si distribuiti

12

Universitatea Politehnica Bucure!ti - Facultatea de Automatic" !i Calculatoare

Ordonare Cauzal" Multicast


Procesele unei colec#ii P comunic! ntre ele doar prin mesaje cu difuzare Se cere ca mesajele s! respecte dependen#a cauzal" vt(m) < vt(m') => livrareP (m) -> livrareP (m') Ex: vt(m1) < vt(m2) # m1 trebuie livrat inainte de m2; m1 si m3 sunt concurente # pot fi livrate oricum (similar m2 si m3)
Obs. in figura nu sunt marcate toate copiile mesajelor multicast!

12/3/13

Algoritmi Paraleli si distribuiti

Universitatea Politehnica Bucure!ti - Facultatea de Automatic" !i Calculatoare

Protocolul (vectori de timp)


! fiecare proces Pi (i = 1..n) are asociat un vector V(i)[1..n], cu toate elementele ini#ial 0 ! conteaza doar operatiile de transmitere de mesaje ! V(i)[i] este nr evenimente transmitere de mesaje produse de Pi; ! V(i)[j] este nr evenimente transmitere de mesaje despre care Pi "tie (a aflat) c! au avut loc la Pj. ! Procesul Pi actualizeaz! V(i) la fiecare eveniment de trimitere sau recep#ie de mesaj din Pi.

12/3/13

Algoritmi Paraleli si distribuiti

Universitatea Politehnica Bucure!ti - Facultatea de Automatic" !i Calculatoare

Cnd procesul sursa Ps transmite mesajul m: Ps incrementeaz" V(s)[s] Ps adaug" V(s) la m ca vector de amprente de timp curent vt(m) ! Obs. Pentru ordonare cauzala, incrementarea lui V(s)[s] se face doar la transmitere de mesaje de catre s vt(m) spune receptorului cte evenimente (din alte procese) au precedat m "i ar putea influen#a cauzal pe m. Cnd destinatia Pd prime!te mesajul m mpreun! cu vt(m), mesajul este p!strat ntr-o coad! de ntrziere "i este livrat doar dac!: vt(m) [s] = V(d)[s] + 1 vt(m) [k] =< V(d)[k] pentru k <> s Cnd mesajul este livrat, V(d) este actualizat conform regulilor vectorilor de timp: V(d) [k] = max{V(d)[k], vt(m)[k]} pentru fiecare k = 1,n.

12/3/13

Algoritmi Paraleli si distribuiti

Universitatea Politehnica Bucure!ti - Facultatea de Automatic" !i Calculatoare

Alte ac#iuni ale protocolului la livrarea mesajelor:


dac" vt(m)[k] > V(d)[k] pentru un oarecare k atunci se ntrzie m Ps a primit mesaje de care mesajul curent poate fi cauzal dependent, dar pe care Pd nc" nu le-a primit; dac" vt(m)[s] > V(d)[s]+1 atunci se ntrzie m mai sunt mesaje de la Ps pe care Pd nu le-a primit (asigura ordinea FIFO pentru canale nonFIFO) dac" vt(m)[s] <= V(d)[s] atunci rejecteaz" m m este un duplicat al unui mesaj primit anterior.
12/3/13

Algoritmi Paraleli si distribuiti

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