sincronizarea cu tacte logice

55
 2. Sincro nizare a în sisteme distribui te Am arătat mai sus că una dintre cele mai mari probleme ale algoritmilor distribuiţi e aceea că pe fiecare nod al sistemului, ceasul fizic local poate fi desincronizat de celelalte ceasuri fizice. De aceea , în multe aplicaţii de timp real în care ordinea în care se procesează evenimentele contează, este necesară sincronizarea nodurilor. 2.1. Sincronizarea ceasurilor fizice. Algoritmul Cristian Vom discuta mai întâi despre ceasurile fizice aflate pe fiecare maşină de calcul. Problema măsurării timpului este mai complicată decât pare, mai ales în cazurile în care este necesară o mare  precizie. În trecut, timpul se măsura raportându-se la mişcarea solară. Intervalul de timp dintre momentele când soarele este la punctul său maxim pe cer se numeşte zi. O zi conţine 24 de ore, fiecare oră conţine 3600 de secunde, deci 1 secundă solară este reprezintă a 1/86400 a part e dintr-o zi solară. Î n 1940 s-a cons tatat că peri oada de rotaţ ie a Pamantul ui în jurul Soa relui nu este consta ntă. Oame nii de ştiinţă susţineau că, în urmă cu 300 milioane de ani în urmă, un an solar dura cu aproximaţie 400 zile. Pentru a compen sa durata var iabil ă a unei zile solare, s-a introdus conceptu l de secundă medie sol ară. Astf el ast ronomii au l uat dura tele mai mu ltor zile solare de-a lu ngul t impulu i, au făc ut medi a lor, şi apoi 1/86400 din rezultatul obţinut a fost aşa numita secundă medie solară. În 1948 a apărul ceasul atomic. Inventarea ceasului atomic a permis măsurarea timpului cu o  precizie mult mai mare. S-a definit, de către fizicieni de data aceasta, că durata unei secunde este intervalul de timp în care atomul de cesiu 133 face exact 9 192 631 770 de tranziţii. S-a ales această valoare pentru ca rezultatul să coincidă cu valoarea secundei medii solare calculată de astronimi la acea dată. La ora actuală în lume există aproximativ 50 de laboratoare care deţin ceasuri cu atomi de cesiu133. Periodic toate cele 50 de laboratoare raportează câte secunde a numărat ceasul de cesiu de la  punerea sa în funcţiune. Prin medierea celor 50 de rezultate, se poate o bţine cu cea mai mare precizie, câte secunde au trecut de la 1 Ianuarie 1958, data l a care a intrat în funcţiune primul ceas atomic. Metoda ceasurilor cu atomi de cesiu are însă o problemă. După cum am spus în rândurile de mai sus, o zi solară are o durată de timp var iabilă.Dacă s-ar folosi ceasurile cu cesiu pentru rapor tarea timpului, cum ele măsoară secundele cu preci zie mare, şi cum durata unei zile solare este în scădere, atunci de exemplu ora 12:00 ar f i din ce în ce mai aproa pe de zorii zile i dacă ne raport ăm la moment ul când răsare soarele. De aceea, la timpul măsurat cu ceasul atomic, s-au mai adăugat nişte corecţii. Au fost introduse nişte aşa numite secunde scurte. O secundă scurtă este mai scurtă decât o secundă raportată de ceasul atomic. Rostul secundelor scurte este acela de a face, în mod controlat ca ceasul atomic să raporteze un timp sincronizat cu poziţia soarelui. Acest mod de a măsura timpul se numeşte timp UTC (Universal Coordinated Time). Pentru a raporta timpul UTC echipamentelor care necesită precizie ridicată în măsurarea timpului se folosesc unde scurte radio. În Fort Collins Colorado, dar şi în alte părţi ale lumii există staţii radio care la fiecare secundă UTC, trimit un semnal radio către t oate receptoarele. Totuşi din cauza mediului de transmisiune, acest semnal poate ajunge la receptoare cu o variaţie de până la 10 ms. De asemenea, o alternativă la staţiile radio pot fi si sateliţii geo-staţionari. În concluzie putem spune că sincronizarea unui echipament la timpul UTC este destul de dificilă. Este nevoie de un receptor radio care să recepţioneze semnalul de la o staţie cum e cea din Fort Collins sau cum sunt sateliţii geo-staţionari. De asemenea, chiar dacă echipamentul respectiv va avea un receptor de acest fel, el va putea menţine ceasul UTC cu o precizie de 10 ms. După cum am văzut mai sus, există foarte puţine ceasuri atomice în lume, şi acestea sunt foarte scumpe. Pentru a face accesibil ceasul UTC la toată lumea, s-au folosit staţii care emit periodic or a exactă. Chiar şi aşa, costul unui receptor WWV pentru ceasul UTC este destul de ridicat. De aceea, se  preferă ca într-un sistem distribuit o singură maşină să deţină receptorul WWV, iar celelalte să îşi

Upload: ionut-piticas

Post on 08-Oct-2015

54 views

Category:

Documents


1 download

DESCRIPTION

Sincronizarea

TRANSCRIPT

  • 2. Sincronizarea n sisteme distribuiteAm artat mai sus c una dintre cele mai mari probleme ale algoritmilor distribuii e aceea c pe

    fiecare nod al sistemului, ceasul fizic local poate fi desincronizat de celelalte ceasuri fizice. De aceea, nmulte aplicaii de timp real n care ordinea n care se proceseaz evenimentele conteaz, este necesarsincronizarea nodurilor.2.1. Sincronizarea ceasurilor fizice. Algoritmul Cristian

    Vom discuta mai nti despre ceasurile fizice aflate pe fiecare main de calcul. Problemamsurrii timpului este mai complicat dect pare, mai ales n cazurile n care este necesar o mareprecizie. n trecut, timpul se msura raportndu-se la micarea solar. Intervalul de timp dintremomentele cnd soarele este la punctul su maxim pe cer se numete zi. O zi conine 24 de ore, fiecareor conine 3600 de secunde, deci 1 secund solar este reprezint a 1/86400 a parte dintr-o zi solar. n1940 s-a constatat c perioada de rotaie a Pamantului n jurul Soarelui nu este constant. Oamenii detiin susineau c, n urm cu 300 milioane de ani n urm, un an solar dura cu aproximaie 400 zile.Pentru a compensa durata variabil a unei zile solare, s-a introdus conceptul de secund medie solar.Astfel astronomii au luat duratele mai multor zile solare de-a lungul timpului, au fcut media lor, iapoi 1/86400 din rezultatul obinut a fost aa numita secund medie solar.

    n 1948 a aprul ceasul atomic. Inventarea ceasului atomic a permis msurarea timpului cu oprecizie mult mai mare. S-a definit, de ctre fizicieni de data aceasta, c durata unei secunde esteintervalul de timp n care atomul de cesiu 133 face exact 9 192 631 770 de tranziii. S-a ales aceastvaloare pentru ca rezultatul s coincid cu valoarea secundei medii solare calculat de astronimi la aceadat. La ora actual n lume exist aproximativ 50 de laboratoare care dein ceasuri cu atomi decesiu133. Periodic toate cele 50 de laboratoare raporteaz cte secunde a numrat ceasul de cesiu de lapunerea sa n funciune. Prin medierea celor 50 de rezultate, se poate obine cu cea mai mare precizie,cte secunde au trecut de la 1 Ianuarie 1958, data la care a intrat n funciune primul ceas atomic.

    Metoda ceasurilor cu atomi de cesiu are ns o problem. Dup cum am spus n rndurile de maisus, o zi solar are o durat de timp variabil.Dac s-ar folosi ceasurile cu cesiu pentru raportareatimpului, cum ele msoar secundele cu precizie mare, i cum durata unei zile solare este n scdere,atunci de exemplu ora 12:00 ar fi din ce n ce mai aproape de zorii zilei dac ne raportm la momentulcnd rsare soarele. De aceea, la timpul msurat cu ceasul atomic, s-au mai adugat nite corecii. Aufost introduse nite aa numite secunde scurte. O secund scurt este mai scurt dect o secundraportat de ceasul atomic. Rostul secundelor scurte este acela de a face, n mod controlat ca ceasulatomic s raporteze un timp sincronizat cu poziia soarelui. Acest mod de a msura timpul se numetetimp UTC (Universal Coordinated Time).

    Pentru a raporta timpul UTC echipamentelor care necesit precizie ridicat n msurareatimpului se folosesc unde scurte radio. n Fort Collins Colorado, dar i n alte pri ale lumii exist staiiradio care la fiecare secund UTC, trimit un semnal radio ctre toate receptoarele. Totui din cauzamediului de transmisiune, acest semnal poate ajunge la receptoare cu o variaie de pn la 10 ms. Deasemenea, o alternativ la staiile radio pot fi si sateliii geo-staionari.

    n concluzie putem spune c sincronizarea unui echipament la timpul UTC este destul dedificil. Este nevoie de un receptor radio care s recepioneze semnalul de la o staie cum e cea din FortCollins sau cum sunt sateliii geo-staionari. De asemenea, chiar dac echipamentul respectiv va aveaun receptor de acest fel, el va putea menine ceasul UTC cu o precizie de 10 ms.

    Dup cum am vzut mai sus, exist foarte puine ceasuri atomice n lume, i acestea sunt foartescumpe. Pentru a face accesibil ceasul UTC la toat lumea, s-au folosit staii care emit periodic oraexact. Chiar i aa, costul unui receptor WWV pentru ceasul UTC este destul de ridicat. De aceea, seprefer ca ntr-un sistem distribuit o singur main s dein receptorul WWV, iar celelalte s i

  • 2sincronizeze ceasurile fizice dup aceast main. n continuare, vom discuta nite exemple dealgoritmi folosii pentru sincronizarea ceasurilor fizice.

    Dup cum am spus mai sus, pentru meninerea ceasurilor fizice, se folosesc cristale de quartz.Cnd sunt puse sub tensiune, cristalele oscileaz pe o anumit frecven care depinde de proprietilefizice ale cristalului de quartz i de valoarea tensiunii la care este supus. Pe lnga cristalul de quartz, semai folosesc i doi regitrii, un numrtor i un registru n care se stocheaz valoarea iniial anumratorului. La fiecare oscilaie a cristalului, numrtorul se decrementeaz. Cnd numrtorulajunge la valoarea 0, se genereaz o ntrerupere i numrtorul se va ncrca cu valoarea reinut deregistrul cu valoarea iniial, i procesul se reia. Astfel, prin alegerea cristalului i prin reglareatensiunii la care este supus, se poate face astfel nct sistemul s genereze ntreruperi cu o rat de 60 deori pe secund, sau orice alt frecven dorit. Fiecare ntrerupere generat poate fi considerat un tactde ceas fizic. Cnd s-au realizat 60 de ntreruperi, se incrementeaz cu 1 registrul care ine ceasul afiatutilizatorului. S notm cu C aceast valoare i cu t timpul real. n cazul ideal, ceasul afiat deechipament este identic cu ceasul UTC, deci dC / dt = 1. n realitate, din cauza imperfeciunilorcristalelor de quartz, din cauza variaei frecvenei de oscilaie a cristalelor de quartz cu temperatura, nutoate mainile de calcul vor avea exact 60 de ntreruperi pe secund. De aceea, vor fi maini cu ceasurimai rapide dect ceasul ideal, sau cu ceasuri fizice mai lente dect ceasul ideal. Aceste cazuri suntafiate n figura de mai jos.

    Fig 2.1 Ceas fizic ideal n comparaie cu ceasuri realeDin figura de mai sus se observ faptul c, periodic, mainile de calcul trebuie s i actualizeze

    ceasul fa de ceasul ideal de referin. Algoritmul Cristian se folosete de acest principiu. Sconsiderm un sistem distribuit n care o singur main de calcul va avea un receptor WWV. Aceamain va avea rolul de server de timp. Din cauz c celelalte maini au fenomenul de drift al ceasului,ele vor avea o deviaie fa de ceasul ideal, conform formulei

    11 dtdC(2.1)

  • 3unde este rata maxim de drift i este o constant pe care o afieaz productorul de cristale de quartz.n cazul cel mai defavorabil, putem avea un nod de sistem distribuit care va avea un ceas mai rapid cui altul care s aib un ceas mai ncet cu Aceasta nseamn c ntr-o perioad de timp t, va apreao diferen de 2t ntre cele dou ceasuri fizice. De obicei un proiectant de sisteme distribuite trebuies garanteze c diferena dintre dou ceasuri fizice s nu depeasc o anumit valoare. Dac notmaceast valoare cu rezult c ceasurile fizice ale nodurilor din sistemul distribuit trebuieresincronizate la fiecare //2secunde.

    Avnd n vedere cele spuse n paragraful de mai sus, n algoritmul lui Cristian maina care arereceptorul WWV va fi server de timp. Celelalte maini care au un drift de maxim , la fiecare //2secunde vor iniia cte o cerere ctre serverul de timp. Serverul de timp, imediat ce primete cererea, seactiveaz o ntrerupere i raspunde cu un mesaj coninnd timpul de referin CUTC.

    Fig 2.2 Algoritmul Cristian pentru sincronizarea ceasurilor fizice

    Algoritmul descris mai sus are dou probleme. Prima ar fi c pot exista cazuri n care CUTC estemai mic dect ceasul local de pe maina client care face cererea. n astfel de cazuri, timpul nu are voies fie dat napoi. De aceea, se prefer ca s se ncetineasc n mod voit ceasul fizic pe maina client.Acest lucru se poate face n modul urmtor. S zicem c pe maina client, cnd cristalul de quartzgenereaz o ntrerupere, se incrementeaz ceasul fizic cu valoarea X msec. Ca s se ncetineasc ceasuln mod voit, la fiecare ntrerupere se va incrementa ceasul cu Y

  • 4momentul n care primete rspunsul de la server, (T1 T0 ). Clientul ar trebui s mai adauge la CUTCntrzierea de la server la client. n algoritmul lui Cristian se pornete de la premiza c ntrzierea va fijumtate din intervalul de timp msurat, deci (T1 T0 )/2. Exist reele n care mesajele de cerere o iaupe alt cale dect mesajele de rspuns. n aceste sisteme, metoda Cristian de sincronizare a ceasurilorfizice nu este recomandat. Pentru a mai mbunti estimarea ntrzierii de la server la client,algoritmul Cristian mai sugereaz s se fac mai multe msurtori (T1 T0 ) i s se fac media lor.ntr-un sistem centralizat, problema sincronizrii nodurilor este mult mai simpl. Dac procesul A arenevoie s afle timpul, face o cerere la sistemul de operare central i obine o valoare. Dac la unmoment ulterior procesul B dorete s afle timpul, procesul B va obine o valoare cel puin egal cuvaloarea primit de A.2.2 Algoritmul Berkley de sincronizare a ceasurilor fiziceUn al doilea exemplu de algoritm de sincronizare a ceasurilor fizice este reprezentat n figurile de maijos.

    Fig 2.3 Prima etap n algoritmul Berkley

  • 5Fig 2.4 A doua etap n algoritmul Berkley

    Fig 2.5 A treia etap n algoritmul Berkley

    Algortmul Berkley de sincronizare a ceasurilor fizice este reprezentat n cele trei figuri de mai sus.Acest algoritm se potrivete mai mult pentru sistemele distribuite n care nu exist nicio main cureceptor WWV, ci se dorete doar sincronizarea tuturor ceasurilor ntre ele, fr a se dori neaprat caceasurile s se potriveasc cu UTC.Spre deosebire de algoritmul Cristian, n care serverele stteau pasive i doar rspundeau la cereri, nalgoritmul Berkley lucrurile stau pe dos. Proiectantul sistemului distribuit este liber s aleag ce serverva folosi. n prima etap, descris n primul desen din cele trei de mai sus, serverul trimite un mesajctre toate mainile n care pune valoarea ceasului fizic local, de pe propria main. n a doua etap,reprezentat n a doua figur, fiecare main client rspunde la mesajul serverului cu cte un mesaj ncare spune cu ct difer ceasul local fa de ceasul serverului. De exemplu, maina Cl 1, are ceasul local3:25 i de aceea rspunde cu un mesaj n care pune un decalaj de +25 ntre propriul ceas i ceasulserverului. Maina Cl2 are ceasul 2:50 i trimite un mesaj n care scrie un decalaj de -10 ntre ceasulpropriu i ceasul serverului.Dup ce primete toate mesajele de la toate mainile client, maina server calculeaz media tuturorceasurilor din sistem i i seteaz ceasul local la valoarea medie. Apoi procesul se reia cu etapa nti.

  • 62.3 Ceasuri LogiceS considerm un sistem distribuit cu mai multe procese care lucreaz n paralel. Pe fiecare

    proces are loc o secven de evenimente. n funcie de sistemul distribuit considerat, un evenimentpoate fi execuia unui subprogram, sau chiar execuia unei instruciuni. De asemenea, i faptul c unproces trimite sau recepioneaz un mesaj se consider tot un eveniment. La prima vedere, se poatespune ca evenimentul a s-a petrecut naintea evenimentului b dac timpul fizic asociat evenimentului aeste mai mic dect timpul fizic asociat evenimentului b. Dac se folosee aceast metod de a ordonaevenimentele, atunci trebuie ca n sistemul distribuit s se foloseasc ceasuri fizice pe toate nodurile.Am vzut n paragrafele de mai sus c n sistemele distribuite, ceasurile fizice ale nodurilor, cu trecereatimpului, se desincronizeaz. De asemenea, am vzut c metodele de sincronizare a ceasurilor fizice auunele limitri i unele dezavantaje.

    Pentru a evita problemele sincronizrii ceasurilor fizice, putem s folosim un alt mod de aordona evenimentele ntr-un sistem distribuit. n 1978 Leslie Lamport, n lucrarea sa [ 1 ] a introdus oalt metod pentru a ordona evenimentele ntr-un sistem distribuit. El susine c nu e neaprat necesarca ntr-un sistem distribuit s se foloseasc ceasuri fizice, ci e suficient ca toate nodurile s cad deacord asupra ordinii n care un eveniment s-a petrecut. Pentru aceasta, Lamport a introdus relaia decauzalitate (happened before), notat cu . Relaia ntr-un sistem distribuit trebuie ssatisfac urmtoarele trei condiii: Dac a i b sunt evenimente n acelai proces al sistemului distribuit i a are loc naintea lui b,

    atunci ab. Dac a reprezint evenimentul de transmitere a unui mesaj pe un anumit nod, iar b este

    evenimentul de recepie a aceluiai mesaj pe nodul destinaie, atunci ab. Dac ab i bc, atunci ac.

    Dou evenimente a i b sunt concurente dac ab i ba.Este mai uor de neles relaia de , dac folosim o diagram spaiu-timp pentru a reprezentasistemul distribuit.

    Fig 2.6 Diagram pentru reprezentarea unui sistem distribuitLiniile orizontale reprezint nodurile sau procesele din sistemul distribuit. Timpul fizic crete de

    la stnga spre dreapta. Cu bulinue sunt reprezentate evenimentele care se petrec n sistemul distribuit.Cu sgeat sunt reprezentate mesajele de la un nod la altul. Se observ c pentru un mesaj, avemeveniment i la transmiterea mesajului de ctre nodul surs, ct i la recepia mesajului la noduldestinaie.

  • 7Avnd n vedere definiia relaiei de happened before dat de Lamport i folosind i diagramadin figura de mai sus, putem spune c evenimentul a s-a petrecut naintea evenimentului b dac pediagrama reprezentat mai sus gsim un drum de la evenimentul a la evenimentul b mergnd doar pesgeile mesajelor si mergnd doar nainte. De exemplu, primul eveniment al nodului P1, s-a petrecutnaintea evenimentului al doilea al procesului P2, pentru c gsim pe diagram un drum de la primuleveniment la al doilea. n schimb, primul eveniment al procesului P3 i al doilea eveniment alprocesului P2 , nu putem spune care s-a ntmplat mai devreme i care mai trziu.

    Acum se poate defini noiunea de ceas logic. Ceasul logic este o funcie C:H->T, unde H estemulimea tuturor evenimentelor din sistemul distribuit, iar T este mulimea tuturor valorilor numericepe care le poate lua un ceas logic. Funcia C asigneaz fiecrui eveniment din H un numr din mulimeaT. Vom nota funcia cu Ci(a), unde i este identificatorul procesului pe care are loc evenimentul, a esteevenimentul. Un astfel de ceas se poate implementa printr-un registru pe fiecare nod al sistemuluidistribuit. Acest regstru, spre deosebire de ceasurile fizice, nu se va incrementa la fiecare oscilaie acristalului de quartz, ci se va incrementa dup alte reguli. Pentru a putea folosi aceast tip de ceas logicla determinarea cauzalitii, trebuie respectat urmatoarea regul

    Dac ab , atunci C(a)

  • 8o Trimite mesajul mai departe

    Fig 2.7 Exemplu de sincronizare folosind ceasuri scalare

    Se observ c proprietatea de consisten slab este respectat: evenimentele a i b, )()( bCaCba .

    Ceasurile logice scalare pot fi folosite pentru a ordona evenimentele n sistemele distribuite.Principala problem const n faptul c dou sau mai multe evenimente de pe procese diferite pot aveatampile de timp identice. De exemplu, n figura de mai sus al treilea eveniment al procesului P1 i aldoilea proces al evenimentului P2 au ceasuri scalare identice. De aceea, este nevoie de o regul care sdefineasc care eveniment s-a petrecut mai devreme. Putem defini tampila de timp a unui evenimentca un cuplu (t,i) n care t reprezint valoarea ceasului logic, iar i reprezint identitatea procesului undes-a petrecut evenimentul. Relaia de ordonare total pentru dou evenimente x i y, avnd tampilele detimp (h,i), respectiv (k,j) este definit n modul urmtor:

    khyx sau h=k i i

  • 9logice locale proprii fiecrui proces din sistemul distribuit. Acest vector va fi ataat i la mesajele de laun proces la altul ca i tampil de timp.

    Procesul Pi folosete urmtoarele dou reguli pentru a-i corecta ceasul: R1 nainte de execuia unui eveniment intern,

    divtivt ii ][][(2.6)

    R2 Fiecare mesaj are ataat un timestamp cu ceasul logic vectorial al procesului caretrimite. La recpia acestul mesaj, procesul pi execut urmtoarea suit de aciuni

    o i actualizeaz ceasul logic vectorial1 k n, vti[k] =max (vti[k], vt[k])(2.7)

    o Execut regula R1o Trimite mesajul mai departen figura de mai jos este reprezentat metoda vectorial:

    Fig 2.8 Exemplu de sincronizare folosind ceasuri vectorialePentru a compara dou ceasuri vectoriale se folosesc relaiile

    xvkvh : ][][ xvkxvh (2.8)xvkvh : ][][ xvkxvh (2.9)vkvhvkvh si x : ][][ xvkxvh (2.10)

    )(!)(!|| vhvkivkvhvkvh (2.11)

    Am scris mai sus ca relaia introduce o ordonare parial a mulimii de evenimentecare sunt produse de un sistem distribuit. Dac evenimentele dintr-un sistem distribuit suntmarcate cu tampile de timp folosind ceasuri vectoriale, avem urmtoarea proprietateinteresant. Dac dou evenimente x i y care au timestaps vh respectiv vk, atunci

    vkvhyx (2.12)

  • 10

    vkvhyx |||| (2.13)

    Se poate observa c exist un izomorfism ntre mulimea de evenimente parial ordonateprodus de un sistem distribuit i calculul distribuit al tampilelor de timp asociate. Aceasta esteo proprietate foarte puternic a sistemelor de ceasuri logice vectoriale.

    Dac se cunoate procesul care a generat un anumit eveniment, testul pentru a comparadou tampile de timp poate fi simplificat n felul urmtor. Daca dou evenimente x i y s-aupetrecut la procesele pi respectiv pj, avnd tampilele de timp vh i vk, atunci

    ][][ ivkivhyx (2.14)

    ][][][][|| jvkjvhivkivhyx (2.15)

    Sistemul cu ceasuri logice vectoriale are proprietatea de consisten puternic. Astfel,dac se examineaz tampila de timp pentru orice dou mesaje, putem determina dacevenimentele au o relaie de cauzalitate.

    Folosind ceasurile logice vectoriale se poate determina numrul de evenimente carepreced un anumit eveniment cu o anumit tampil de timp. Pentru procesul pi, numrul vti[i]reprezint numrul de evenimente care s-au petrecut in cadrul procesului pi pn n acelmoment de timp. Dac un eveniment e are tampila de timp vh, vh[j] reprezint numrul deevenimente executate de ctre procesul pi care preced evenimentul e. Deci, vh[j]-1 reprezintnumrul total de evenimente care preced evenimentul e i care sunt n relaie de cauzalitate cu edin cadrul sistemului distribuit.

    2.6 Metoda de sincronizare a ceasurilor logice folosind ceasuri matricialentr-un sistem distribuit cu ceasuri logice matriciale, timpul este reprezentat de o mulime de

    matrici de dimensiune n x n cu elemente avnd valori ntregi ne-negative. Un proces pi reine o matricemti[1,...n,1,..n] unde:

    mti[i,i] reprezint ceasul logic al procesului pi i urmrete progresul calculriiceasului logic local la procesul pi.

    mti[i,j] reprezint ceea ce procesul pi tie despre valoarea ceasului local al procesuluipj.

    mti[j,k] reprezint ceea ce procesul pi tie c procesul pj tie despre valoarea ceasuluilocal al procesului pk.

    ntreaga matrice mti reprezint imaginea local a procesului pi asupra timpului logic global.tampila de timp care va fi ataat la un mesaj va avea ataat matricea care reprezint ceasul logic alevenimentului de pe procesul care trimite mesajul.

    Procesul pi folosete urmtoarele reguli pentru a face corecie de ceas: R1 nainte de execuia unui eveniment, procesul pi face urmatoarea corecie de ceas

    diimtiimt ii ],[],[ , d>0(2.16)

  • 11

    R2 Fiecare mesaj are ataat timpul logic matricial mt. Cnd procesul pi recepioneaz mesajul(m, mt) de la procesul pj, pi efectueaz urmtoarea suit de aciuni

    o i incrementeaz ceasul logic astfel 1 k n : mti[i,k] = max( mti[i,k], mt[j,k] )(2.17)adic i actualizeaz rndul mti[i,*] cu rndul corespunztor procesului pj dintampila de timp a mesajului pe care l recepioneaz. 1 k, l n : mti[k,l] = max( mti[k,l], mt[k,l] )

    (2.18)o Execut R1o Trimite messajul m mai departe

    Ceasurile logice matriciale au toate proprietile pe care le au i ceasurile logice vectoriale. nplus, ceasurile matriciale mai au i urmtoarea proprietate

    Min (mti[k,l]) t implic faptul c procesul pi tie c orice alt proces pk tie c ceasul local alprocesului pls local time a ajuns pn la valoarea t.

    Fig 2.9 Exemplu de sincronizare folosind ceasuri matriciale

    2.7. Algoritmul Birman Schiper Stephenson (BSS)Ceea ce este de dorit ntr-un sistem distribuit este ordonarea mesajelor dup cauzalitate. Pe scurt,aceasta nseamn c dac avem dou mesaje, M1 si M2, i timpul la care a fost transmis M1 este maimic dect timpul la care a fost transmis M2, atunci i timpul la care este recpionat M1 trebuie s fiemai mic dect M2.

    dac Send(M1)Send(M2)Rec(M1)Rec(M2)(2.19)

  • 12

    Din pcate, canalele de comunicaie din sistemul distribuit nu pot oferi aceast garanie. Din cauzancrcrii reelei, sau din cauza rutelor diferite pe care le pot lua pachetele, nu se poate garanta faptul ctimpul la care va fi recepionat primul mesaj va fi mai devreme dect timpul la care este recepionat aldoilea mesaj.n figura de mai jos este reprezentat un caz n care ordonarea mesajelor dup cauzalitate este ne-respectat

    Fig 2.10 Exemplu n care ordonarea mesajelor dup cauzalitate nu este respectat

    n figura de mai sus se observ c mesajul M1 este trimis primul, dar din cauza canalului decomunicaie, el ajunge la nodul destinaie ultimul. ntre timp. mesajul M3, ajunge mai devreme ladestinaie. Se vede pe figur c mesajul Send(M1)Send(M2). De asemenea, Send(M2)Rec(M2).Rec(M2)Send(M3) i Send(M3)Rec(M3)Algoritmul BSS face ca ntr-un sistem distribuit, chiar dac reeaua sau canalul de comunicaie producntrzieri de mesaje, totui s se respecte ordonarea mesajelor dup cauzalitate.Totui, pe lng celelalte condiii, algoritmul BSS se poate aplica doar la mesajele de tip difuzare. Decipentru ca algoritmul s i fac efectul, trebuie ca un mesaj s fie trimis la toate celelalte noduri dinsistemul distribuit.Algoritmul BSS cere ca pasul cu care se incrementeaz ceasurile vectoriale s fie 1. n rndurileurmtoare este exemplificat algoritmul:

    1. Fiecare proces Pi menine un ceas vectorial2. nainte de a difuza un mesaj m ctre toate celelalte noduri, un nod Pi i incrementeaz ceasul

    vectorial local vti[i] i ataeaz noul ceas vti[i] ca o tampil de timp a mesajului. Vom notatampila de timp a mesajului m cu vtm.

    3. Cnd nodul Pj recepioneaz mesajul m, nti verific urmtoarele condiii:

  • 13

    a. vtj[i]=vtm[i]-1, ceea ce nseamn c toate mesaje anterioare trimise de ctre nodul Pi aufost recepionate de ctre Pj

    b. vtj[k] vtm[k], },...2,1{ nk k i, ceea ce nseamn c nodul Pj a recepionat toatecelelalte mesaje care au trecut pe la Pi (dar nu au fost emise de ctre Pi).

    4. Dac una dintre cele dou condiii nu e ndeplinit, nodul Pj pune mesajul m ntr-o coad i vatesta tot aceste dou condiii mai trziu

    5. Dac ambele condiii sunt ndeplinite, atunci procesul Pj difuzeaz mesajul m ctre toatecelelalte noduri din sistemul distribuit, mai puin Pi.

    3.2 Specificaii ale simulatoruluin figura de mai jos este reprezentat o diagram FSM ce cuprinde arhitectura general a programului.Cnd se pornete programul, utilizatorul ajunge n fereastra cu datele pentru simulare.

    TINE MINTE SA UPDATEZI SCHEMA

  • 14

    Completaremanual

    nchidefereastra

    nchidefereastra

    nchidefereastra

    nchidefereastra

    Schimb tabul Schimb tabul Schimb tabul

    Completaremanual

    nchidefereastra

    START

    DateSimulare

    Completarealeatorie

    Scrie fiierulMatrixEventIn.txt

    Calcul matrice timp

    Afiarearezultatelor

    Analizancrcrii

    Generarerezultate

    Afiarerezultate 3metode

    Afiarerezultate 1metod

    Comparaieceasuri fizice

    Completaremanual

    Completarealeatorie

    Scrie fiierulMatrixEventIn.txt

    Calcul farasincronizare

    Calcul cusincronizare

    Afiarearezultatelor

    BSS datesimulare

    ScrieMatrixEventInBSS.txt

    Bloc calculmatrice timp

    Afiarearezultatelor

    Fig 3.10 Diagram FSM cuarhitectura general a programului

    Calcul matriciauxiliare

  • 15

    n figura de mai sus este reprezentat ca o diagram a unei maini cu stri finite, arhitectura de baz aprogramului.n blocul Fereastr simulare utilizatorul poate selecta ce metod de sincronizare dorete s simuleze.Tot n aceeai fereastr, utilizatorul trebuie s defineasc secvena de evenimente care se vor petrece pefiecare nod al sistemului distribuit. Pentru aceasta, el va alege nti numrul de noduri din sistemuldistribuit, i apoi numrul de evenimente care vor fi simulate. Fiind alese aceste dimensiuni, n fereastrade simulare utilizatorul trebuie s dea ca date de intrare sirul evenimentelor care se vor petrece pefiecare nod al sistemului distribuit.Pentru cazul n care numrul de noduri din sistemul distribuit este mare i utilizatorul trebuie scompleteze un ir de evenimente prea vast, simulatorul va avea i opiunea de a completa aleator irulde evenimente pe fiecare nod. De acest lucru se ocupa blocul Completare aleatorie a matricei dinfigura de mai sus.Dup ce utilizatorul a completat manual sau aleator i irul de evenimente, simulatorul transfer toateaceste date ctre blocul Calcul matrice timp. Acest bloc, n funcie de metoda selectat, n funcie denumrul de noduri i de evenimente, i n funcie de irul particular de evenimente care este dat spresimulare, calculeaz valorile ceasurilor logice asociate fiecrui eveniment de pe fiecare nod i letranfer mai departe ctre urmtorul bloc.Blocul Afiare rezultate preia att valorile ceasurilor logice pentru fiecare eveniment, ct i irulevenimentelor de pe fiecare nod i afieaz pe ecran o diagram n care fiecrui eveniment din irul deevenimente i corespunde o valoare a ceasului logic calculat de blocul Calcul matrice timp. Acestevalori vor fi afiate pe ecran ntr-un mod ct mai uor de citit i de neles pentru utilizator.Simulatorul va avea i o seciune n care se va face studiul ncrcrii suplimentare a reelei datoratfolosirii fiecrei dintre cele trei metode de sincronizare a ceasurilor logice.Blocul Buton Generare rezultate se va folosi de mecanismul de generare aletorie a sevenei deevenimente pe fiecare nod i va genera aleator un numr suficient de mare de evenimente. Apoi cuajutorul unei metode din mecanismul de calcul al rezultatelor, se va msura ncrcarea suplimentarintrodus de folosirea metodei respective de sincronizare. Metodele de sincronizare a ceasurilor logicestudiate n lucrarea de fa introduc o ncrcare suplimentar a reelei prin faptul c la fiecare mesajtransmis de la un nod la altul, se ataeaz i o tampil de timp care va conine valoarea ceasului logical nodului de la emisie, la momentul trimiterii mesajului. Blocul Buton Generare rezultate vaparcurge sevena de evenimente generat aleator i va calcula o ncrcare la fiecare tact logic, i oncrcare medie.Urmtoarele dou blocuri, Generare ncrcare toate cele trei metode i Generare ncrcare o singurmetod vor prelua datele calculate de blocul anterior i vor afia pe ecran grafice cu ncrcarea reelei.n funcie de ce selecteaz utilizatorul, se poate afia pe acelai grafic o comparaie ntre ncrcareareelei datorat fiecrei dintre cele trei metode de sincronizare, sau se poate afia pe ecran un grafic carecuprinde incrcarea datorat unei singure metode, dar s fie afiate mai multe detalii, cum ar fi evoluiancrcrii la fiecare tact de timp, sau evoluia medie a ncrcrii.Dac utilizatorul trece n tabul pentru comparaie ntre situaia cu sincronizare Lamport i situaia ncare doar avem ceasuri fizice, situaia este reprezentat de blocul Comparaie ceasuri fizice. Aici esteo situaie similar cu cea prezentat n blocul Date simulare de la tabul de simulare. Utilizatorul poateda manual secvena de evenimente de pe fiecare nod al sistemului distribuit sau poate alege ca secvenade evenimente s fie completat aleator de ctre simulator. O diferen important fa de tabul desimulare este aceea c n tabul de comparaie utilizatorul nu mai poate selecta metoda scalar,vectorial sau matricial. Metoda folosit va fi implicit metoda scalar. O alt deosebire este aceea cutilizatorul va putea regla perioada ceasului fizic pe fiecare nod al sistemului distribuit.Dup ce datele date de ctre utilizator sunt scrise n fiierul text, spre deosebire de cazul din tabulpentru simulare, aici n tabul de comparaie, aceleai date de intrare sunt prelucrate de dou blocuri de

  • 16

    calcul. Blocul Calcul fr sincronizare calculeaz ceasurile scalare pentri fiecare eveniment fr afolosi algoritmul Lamport de sincronizare a ceasurilor. Ceasurile fizice pe fiecare nod vor progresadup perioada stabilit de utilizator. Blocul Calcul cu sincronizare va calcula ceasurile ataatefiecrui eveniment folosing regulile Lamport de sincronizare.Blocul Afiarea rezultatelor va afia pe ecran n paralel cele dou seturi de valori corespunztoaresecvenei de evenimente pentru care s-a realizat simularea. Rezultatele se vor afia pe o diagram astfelnct s se poat citi i nelege uor de ctre utilizator.Ultima seciune disponibil va fi implementarea algoritmului Birman-Schiper-Stephenson. BloculBSS Date simulare, ca i n cazul taburilor de comparaie si de simulare, va primi datele de intrarede la utilizator. Spre deosebire de celelalte cazuri, nu va mai exista posibilitatea ca simulatorul scompleteze automat secvena de evenimente. De asemenea, utilizatorul va putea s regleze intrzierea cu care un mesaj va ajunge la nodul destinaie. n cazul tabului BSS, utilizatorul nu vaputea schimba metoda de sincronizare, ci ea va fi setat implicit la metoda vectorial.Blocul de calcul preia datele de intrare de la blocul anterior i calculeaz ceasurile ataate fiecruieveniment i eventualele informaii suplimentare necesare afiarii datelor.Blocul Afiarea rezultatelor va prelua rezultatele calculate de blocul anterior i va afia pe ecran listaeveniementelor simulate i rezultatele ceasurilor vectoriale ataate fiecrui eveniment. De asemenea, vaafia pe ecran i dac mesajul recepionat de un nod ndeplinete condiiile impuse de algoritmulBirman-Schiper-Stephenson, i atunci este trimis mai departe, sau dac nu ndeplinete este pus ntr-ocoad.3.3. Detalierea blocurilor din arhitectura general a simulatoruluin paragraful de mai sus am spus c simulatorul va putea genera secvena de evenimente pentru fiecarenod ntr-un mod aleator.n diagrama de mai jos este prezentat algoritmul de generare aleatoare a matricei cu secvena deevenimente pentru fiecare nod al sistemului distribuit. Scopul acestui algoritm este de a genera aleatorfiecare coloan astfel nct s nu fie cazuri n care pentru un nod s existe mai multe evenimente naceeai perioad de ceas

    3.3.1 Blocul de generare automat a secvenei de evenimente de la intrareGenerarea matricei se face pe coloane. Se ia prima coloan, se genereaz n numere aleatoare

    pentru coloana respectiv (n fiind numrul de noduri din sistemul distribuit), iar apoi se valideaz irul.Practic, se valideaz s nu existe mesaj de la nodul i tot la nodul i. Apoi se incearc ca pentru fiecarenod, s nu existe mai multe evenimente simultane. Pentru aceasta, se folosete un ir numit dirty dedimensiune n. De fiecare dat cnd se produce un eveniment pentru un nod i, se incrementeazelementul dirty[i] . Apoi se verific dac vreun element al lui dirty este mai mare dect 1. Dac da,atunci nseamn c exist dou evenimente simultane. Dac nu, atunci nseamn c numerele aleatoarerespect validrile i se trece la urmtoarea coloan a matricei.

  • 17.

    Da

    Da

    Da

    Da

    Fig 3.11 Diagrama pentru algoritmul de generare aleatoare aMatricei de secven de evenimente

    Generare a coloanei c[] cu numerealeatorii

    Initializarea vectorului den elemente dirty[] cu 0

    i = 0

    c[i] =ev intern

    dirty[i]++

    c[i]= mesajde la noduln1 la n2

    dirty [i]>=2

    Se trece lacoloanaurmatoare

    i >= n?

    dirty[n1] ++dirty[n2]++

    i + +

    i = 0

    i >= n?

    i + + Re-genereazaceeai col

    Fig4.2Cumpoateutilizatorul saleagametoda inumaruldeliniii decoloanealematricei

  • 18

    Fereastra care preia datele de la utilizator i fereastra care afieaz ceasurile calculate, suntdefinite pe dou fire de execuie. ntre cele dou fire de execuie am aplicat modelul de productor->consumator pentru sincronizarea lor. Firul de execuie de productor, preia datele de la utilizator i lescrie n fiierul MatrixEventIn.txt. Dup ce termin de completat fiierul, productorul i trimite unmesaj de sincronizare consumatorului care citete datele din MatrixEventIn.txt i calculeaz ceasurilelogice, apoi le afieaz pe ecran. Dup ce utilizatorul inchide fereastra n care se afieaz rezultatele,procesul de pe firul de execuie consumator ateapt de la productor un alt mesaj de sincronizare ca stie cnd s-au scris n fiierul MatrixEventIn.txt date noi.

    Fig 3.12 Modelul de productor-consumator folosit

    3.3.2. Blocul de calcul al ceasurilor pentru Metoda Scalarn figura de mai sus este afiat un exemplu de fiier de intrare cu metoda Scalar. Primul lucru

    pe care l face blocul Calcul matrice timp este acela c se uit la al treilea numr de pe prima liniedin MatrixEventIn.txt n funcie de acest numr, va aplica diveri algoritmi pentru a calcula matricea deTimp pentru fiecare eveniment.

    n continuare vom nota matricea de intrare cu evenimente mEv1[][] si matricea timp cumT1[][]. n cazul metodei scalare elementele care constituie matricea de timp vor fi scalari. Elementulde coordonate mT1[i][j] reprezint ceasul vectorial corespunztor evenimentului mEv1[i][j] dinmatricea de evenimente. Pentru a putea lucra mai uor, s-a lucrat cu matricea de evenimente si matriceade timp ambele transpuse. Astfel,

    TmEvmEv 1TmTmT 1

    (3.1)n cadrul blocului Calcul matrice timp vom lucra cu mT i mEv transpuse. Deci pentru mEv, pe linia1 vor fi evenimentele care au loc simultan n timpul primei perioade de ceas, pe linia 2 vor fievenimentele care au loc simultan n timpul celei de-a doua perioade de ceas, amd.

    Productor Consumator

    MatrixEventIn.txtScrie n Citete din

    Mesaj sincronizare

  • 19

    Un alt amnunt notabil este urmtorul. Matricea de evenimente, mEv, se completeaz ncepndde la indicii i=0 i j = 0, dar matricea de ceasuri are o linie n plus. Prima linie, cea cu indicii i=0, nu vafi folosit n calcule i nici nu va fi afiat n fereastra cu afiarea rezultatelor. Deci liniile care seafieaz la sfrit pentru matricea de ceasuri sunt cele ncepnd de la indicii i=1. De aceea, n diagramade mai jos, bucla for cu care se face parcurgerea matricelor ncepe de la i = 1.

    n figura de mai jos este reprezentat diagrama blocului de Calcul matrice timp. Acest blocface parte din gruparea blocurilor de pe linia de execuie Consumator discutat mai sus. De aceea,dup ce primete mesajul de sincronizare, se citesc valorile din fiierul MatrixEventIn.txt i sestocheaz n matricea mEv1[ ] [ ]. Dup cum spuneam, ca s se poat parcurge mai uor, n urmtoareaetap se transpune matricea de evenimente

    TmEvmEv 1(3.2)

    Dac mai sus am spus c elementul din matricea de timp mT1[i0][j0] reprezint ceasul Lamportcorespunztor evenimentului mEv1[i0][j0], aceeai proprietate se pstreaz i pentru matriciletranspuse, adic elementul din mT[i0][j0] reprezint ceasul Lamport corespunztor evenimentuluimEv[i0][j0].

    n urmtorul pas se iniializeaz matricea mT cu zero.0]][[ jimT , nrColi ,0 , nrLinj ,0

    (3.3)nrLin i nrCol se citesc din prima linie a fiierului MatrixEventIn.txt i reprezint numrul de linii i decoloane pentru matricea mEv1. Dar, dup cum am spus, lucrm cu matricea transpus i de aceea i, caree primul indice e de la 0 la nrCol i j, al doilea indice e de la 0 la nrLin.

    Dup stabilirea limitelor se ncepe parcurgerea matricelor. Aici este foarte important faptul cmatricea mEv se parcurge ncepnd de la prima linie, cea de index i=0, pe cnd matricea mT separcurge ncepnd de la a doua linie, cea de index i=1. De aceea, n buclele for, indicele i ncepe de lavaloarea 1, pe cnd indicele j ncepe de la valoarea 0. Pentru c matricea mEv se parcurge de la linia0, din aceast cauz mEv se parcurge in bucla for cu mEv[i-1][j],iar mT cu mT[i][j].

    n bucla for se ia elementul curent din mEv i se verific ce fel de eveniment este. Dac este uneveniment neutru se face urmtorul lucru. Se ia valoarea de la linia precedent din mT i se stocheaz lalinia curent. Din aceast cauz matricea mT are prima linie, cea de indice i=0, n plus fa de celelaltematrici. Pentru c n algoritmul implementat de mine n cazul evenimentului neutru, ceasul logicramne la valoarea anteriar. De aceea trebuie ca matricea mT s ia valoarea de pe linia precedent. Deaceea ncepe bucla for cu i=1, pentru ca atunci cnd iau valoarea ceasului precedent, adic cea de lalinia i-1, s gsesc valoarea de la linia i=0

  • 20

    Da

    DaDa

    Da

    Da

    Citete din MatrixEventIn.txtn mEv1[ ][ ]

    mEv [ ][ ] = mEv1[ ][ ] transpus

    mT[ ] [ ] =0

    mEv [i-1][j]=i?

    mT [i] [j] = mT[i-1][j] +stepmEv [i-1][j]=n ?

    i = 1

    mT[i][j]nCol

    j>nLinj + +

    i + +

    j = 0

    Urmtorul blocAfiarea Rez

    Fig 3.13 Diagram calcul metodaScalar

  • 21

    for (i = 1; i

  • 22

    3.3.3 Blocul de calcul pentru Metoda VectorialPentru metoda vectorial principala diferen este datorat faptului c matricea de timp nu va mai fialctuit din scalari, ci va fi alctuit din vectori. n cazul metodei vectoriale, evenimentului de indice ii j din matricea mEv i corespunde elementul de indice i i j din matricea mTv, cu meniunea celementul de indice i i j din matricea de timp va fi un vector cu nLin elemente, unde nLin este numrulde noduri din sistemul distribuit.

    Un ir de genul v[10] este usor de inchipuit, o matrice este de asemenea uor de reprezentatm[10][10], dar un sir multidimensional este puin mai greu de neles. S considerm exemplul de maijos:

    i j 0 1 20 0 0 01 1 0 02 2 0 03 3 3 04 4 3 05 5 5 06 5 5 0

    i j 0 1 20 0 0 01 0 0 02 0 0 03 0 1 04 0 1 05 0 2 06 0 3 0

    i j 0 1 20 0 0 01 1 0 12 1 0 13 1 1 14 1 1 25 1 1 26 1 1 3

    k = 0 k = 1 k = 2Fig 3.14 Exemplu de matrice mTv[][][] cu trei dimensiuni folosit la metoda Vectorial

    n tabelul de mai sus este reprezentat matricea mTv aa cum este ea calculat de blocul Calculmatrice timp pentru cazul n care avem selectat metoda vectorial. Matricea de intraremEv1[][]pentru exemplul de mai sus este urmtoarea:

    n i 2 i 2 nn n n n n i1 n n i n i

    Fig 3.15 mEv1 pentru exemplul de mai susPrin transpunerea ei obinem matricea mEv[][]:

    i j 0 1 20 n n 11 i n n2 2 n n3 i n i4 2 n n

    Fig 3.16 Exemplu de matrice de intrare mEvAvnd in vedere matricea mTv[][][] cu trei dimensiuni din figura de mai sus, putem explica mai usormodul de indexare al elementelor. Pentru o matrice obinuit, cu 2 dimensiuni A[i][j], i reprezintindicele liniei, j reprezint indicele coloanei. Pentru cazul n care avem trei dimensiuni, mTv[k][i][j],putem spune ca avem k pagini, fiecare cu cte o matrice care are i linii i j coloane. Tabelul din figurade mai sus ne ajut mai uor s gasim valoare mTv[k0][i0][j0] pentru k0, i0, j0 valori particulare. Deexemplu: mTv[0][3][2] = 0, mTv[1][6][1]=3, mTv[2][6][3]=3.Folosindu-ne de conceptul de iruri multidimensionale expus mai sus, putem stoca ceasurile vectorialepentru evenimente in metoda Vectorial de sincronizare a ceasurilor logice ntr-o matrice cu treidimensiuni. Dac rulm exemplul cu matricea de intrare de mai sus in simulator i alegem metodaVectorial, vom obine rezultatele urmtoare:

  • 23

    Fig 3.17 Rezultate pentru metoda Vectorial folosite pentru a explica cum se folosete matricea multidimensionalmTv[][][]

    Ceasurile vectoriale ataate fiecrui eveniment din figura de mai sus sunt stocate in matricea mTv[][][]de mai sus. Pe acest exemplu, putem face proba. De exemplu, pentru evenimentul intern de la nceputulcelei de-a doua perioade de ceas avem afiat ceasul [2 0 1] . Vom vedea de unde i ia programul desimulare datele din matricea multidimensional mTv[][][].Pentru a gsi ceasul vectorial pentru un anumit eveniment, trebuie s gsim coordonatele pentru celetrei numere.Dac lucrm cu matricile de timp i de evenimente ambele transpuse, atunci pe linia i va corespundeperioadei de ceas n care se petrece evenimentul, iar coloana j va reprezenta numrul nodului pe care sepetrece evenimentul.De asemenea, pentru matricea de timp reprezentat n figura de mai sus, se poate observa c la linia i=0toate valorile sunt 0. Linia i=0 nu este afiat la rezultate, este doar pentru iniializare i pentruuniformitatea algoritmului de calcul. Linia i=1 corespunde datelor de la prima perioad de ceas, i=2pentru datele de la a doua perioad de ceas, amd. Pe de alt parte, nu avem i coloane n plus, decitoate coloanele sunt afiate la rezultate. Coloana cu j=0 corespunde nodului 1, coloana cu j=0corespunde nodului 2, amd.Primul eveniment intern al procesului P1 se petrece n timpul celei de-a doua perioade de ceas, decii = 2. Dac este vorba de primul proces din sistemul distribuit atunci nseamn c j = 0. Am identificatcine e i, cine e j a mai rmas k. Ceasul vectorial pentru fiecare eveniment conine n numere, unde n estenumrul de noduri din sistemul distribuit. Prima valoare a ceasului vectorial se va afla la coeficientulk=0, a doua la poziia k=1 n matricea mTv[][][], iar a treia valoarea a ceasului vectorial se va afla laindicele k=2.n cazul nostru, pentru a gsi ceasul logic pentru primul eveniment intern al procesului P1, afim dinmatricea de timp valorile aflate la indicii:

    1,0 nk , i = 2 (perioada de ceas la care se petrece), j = 0 (numrul nodului 1 )(3.6)

    Avnd n vedere explicaiile date mai sus cu modul de folosire a matricei multidimensionale mTv[][][],algortimul de calcul al acestei matrici pentru metoda vectorial este mai uor de neles.

  • 24

    Nu

    Nu

    Nu

    Da

    Da

    Da

    Nu

    i=1

    i > nLin

    mTv[k][i][jj]=max(mTv[k][i-1][jj], mTv[k][i][jj])nLinjjk ,0,

    j=0

    j > nCol

    mEv[i-1][j]= ev int

    mTv[j][i][j] ++

    mEv[i-1][j]=mj

    mTv[j][i][j]++

    mTv[k][i][msj]=max(mTv[k][i][msj], mTv[k][i][j]nLink ,0

    mTv[msj][i][msj]++

    j++

    i++ Fig 3.18 Diagram calculMetoda Vectorial

  • 25

    for (i = 1; i

  • 26

    n concluzie, pentru metoda Matricial, unui eveniment de coordonate i0 i j0 din matricea deEvenimente mEv[i][j], i corespund n2 valori din matricea mTm[k][i][j], unde

    2,0 nk , i=i0, j=j0(3.7)

    [0][0][0]=0 [1][0][0]=0 [2][0][0]=0 [3][0][0]=0 [4][0][0]=0 [5][0][0]=0 [6][0][0]=0 [7][0][0]=0 [8][0][0]=0[0][0][1]=0 [1][0][1]=0 [2][0][1]=0 [3][0][1]=0 [4][0][1]=0 [5][0][1]=0 [6][0][1]=0 [7][0][1]=0 [8][0][1]=0[0][0][2]=0 [1][0][2]=0 [2][0][2]=0 [3][0][2]=0 [4][0][2]=0 [5][0][2]=0 [6][0][2]=0 [7][0][2]=0 [8][0][2]=0[0][1][0]=0 [1][1][0]=0 [2][1][0]=0 [3][1][0]=0 [4][1][0]=0 [5][1][0]=0 [6][1][0]=0 [7][1][0]=0 [8][1][0]=0[0][1][1]=0 [1][1][1]=0 [2][1][1]=0 [3][1][1]=0 [4][1][1]=1 [5][1][1]=0 [6][1][1]=0 [7][1][1]=0 [8][1][1]=0[0][1][2]=0 [1][1][2]=0 [2][1][2]=0 [3][1][2]=0 [4][1][2]=0 [5][1][2]=0 [6][1][2]=0 [7][1][2]=0 [8][1][2]=1[0][2][0]=1 [1][2][0]=0 [2][2][0]=0 [3][2][0]=0 [4][2][0]=0 [5][2][0]=0 [6][2][0]=0 [7][2][0]=0 [8][2][0]=0[0][2][1]=0 [1][2][1]=0 [2][2][1]=0 [3][2][1]=0 [4][2][1]=1 [5][2][1]=0 [6][2][1]=0 [7][2][1]=0 [8][2][1]=0[0][2][2]=1 [1][2][2]=0 [2][2][2]=0 [3][2][2]=0 [4][2][2]=0 [5][2][2]=0 [6][2][2]=1 [7][2][2]=0 [8][2][2]=2[0][3][0]=2 [1][3][0]=2 [2][3][0]=0 [3][3][0]=0 [4][3][0]=2 [5][3][0]=0 [6][3][0]=0 [7][3][0]=0 [8][3][0]=0[0][3][1]=0 [1][3][1]=0 [2][3][1]=0 [3][3][1]=0 [4][3][1]=2 [5][3][1]=0 [6][3][1]=0 [7][3][1]=0 [8][3][1]=0[0][3][2]=1 [1][3][2]=0 [2][3][2]=0 [3][3][2]=0 [4][3][2]=0 [5][3][2]=0 [6][3][2]=1 [7][3][2]=0 [8][3][2]=3[0][4][0]=3 [1][4][0]=2 [2][4][0]=0 [3][4][0]=0 [4][4][0]=2 [5][4][0]=0 [6][4][0]=0 [7][4][0]=0 [8][4][0]=0[0][4][1]=0 [1][4][1]=0 [2][4][1]=0 [3][4][1]=0 [4][4][1]=3 [5][4][1]=0 [6][4][1]=0 [7][4][1]=0 [8][4][1]=0[0][4][2]=1 [1][4][2]=0 [2][4][2]=0 [3][4][2]=0 [4][4][2]=0 [5][4][2]=0 [6][4][2]=1 [7][4][2]=0 [8][4][2]=3[0][5][0]=4 [1][5][0]=2 [2][5][0]=4 [3][5][0]=0 [4][5][0]=2 [5][5][0]=0 [6][5][0]=1 [7][5][0]=0 [8][5][0]=4[0][5][1]=0 [1][5][1]=0 [2][5][1]=0 [3][5][1]=6 [4][5][1]=3 [5][5][1]=0 [6][5][1]=0 [7][5][1]=0 [8][5][1]=0[0][5][2]=1 [1][5][2]=0 [2][5][2]=0 [3][5][2]=0 [4][5][2]=0 [5][5][2]=0 [6][5][2]=1 [7][5][2]=0 [8][5][2]=4[0][6][0]=5 [1][6][0]=2 [2][6][0]=4 [3][6][0]=0 [4][6][0]=2 [5][6][0]=0 [6][6][0]=1 [7][6][0]=0 [8][6][0]=4[0][6][1]=0 [1][6][1]=0 [2][6][1]=0 [3][6][1]=6 [4][6][1]=3 [5][6][1]=0 [6][6][1]=0 [7][6][1]=0 [8][6][1]=0[0][6][2]=5 [1][6][2]=2 [2][6][2]=4 [3][6][2]=0 [4][6][2]=2 [5][6][2]=0 [6][6][2]=5 [7][6][2]=2 [8][6][2]=5

    Fig 3.19 Exemplu de matrice de timp pentru metoda Matricial

    n exemplul de mai sus avem calculat matricea de timp pentru o matrice de intrare de forma:n 3 n i n 3i n 1 i n ni n i n 1 n

    Simulatorul va afia urmtoarele rezultate:

  • 27

    Fig 3.20 Exemplu de rezultate pentru metoda MatricialSe poate observa c pentru fiecare eveniment avem afiate 9 valori sub form de matrice. De exemplu,pentru ultimul eveniment al nodului P3, trebuie s scoatem elementele mTm[k][6][2], 8,0k . Sepoate verifica faptul c toate elementele din matricea de timp corespund cu valorile ceasurilor afiate peecran.Diagrama logic pentru calculul matricei de timp n cazul metodei Matriciale este afiat mai jos:Pentru c, luat n detaliu, diagrama logic pentru metoda Matricial este mai complicat, am preferats pun pe schema logic doar o descriere general a blocurilor urmnd ca mai trziu s detaliez rolulfiecrui bloc.

  • 28

    Da

    Da

    Da

    Da

    e[i-1][j]= i

    mTm[k][i][j] = mTm[k][i-1][j]Linnk ,0 , nLinj ,0

    incrementceas localmTi[i,i]

    e[i-1][j]=m

    increment ceas local alnodului surs

    completez TS mesaj

    actualizez matricea lanodul destinaie

    incrementez ceas local noddestinaie

    i=0

    j=0

    i>nCol

    j>nLin

    i + +STOP

    Fig 3.21 Diagramalogic pentrumetoda Matricial

  • 29

    n blocul cel mai de sus, se copiaz toate valorile ceasurilor vectoriale de la momentul de timp i-1 lamomentul curent, i. Acest pas este necesar deoarece, mai trziu, n cazul unui mesaj, trebuie sacomparm valoarea ceasului local cu cea a tampilei de timp. Daca nu am fi fcut acest pas, la ceasullocal al nodului de recepie, pentru momentul de timp i, ar fi fost o valoare nedefinit sau valoarea 0.Urmtoarele blocuri logice vor s reprezinte dou bucle for folosite pentru a parcurge matricea deevenimente mEv[][]. Reamimtim faptul c i n cazul metodei Matriciale, ca i n cazul metodelorprecedente, lucrm cu matricea de timp i de evenimente transpus, deci, cu ajutorul buclelor for vomparcurge matricea de evenimente avnd pe linii momentele de timp i pe coloane nodurile.Dac evenimentul curent este un eveniment intern, atunci se incrementeaz ceasul scalar local pentrunodul la care se petrece evenimentul. Reamintim faptul c, pentru nodul i n cazul metodei matriciale,ceasul logic pentru nodul i este o matrice de dimensiunea n x n, unde n este numrul total de noduri.Pentru nodul i, al i-lea element din cadrul liniei i din ceasul matricial corespunztor acestui nodreprezint ceasul local. Al j-lea element din cadrul liniei i reprezint estimarea nodului i asupra a cteste ceasul logic scalar pentru nodul j. De asemenea, tot pentru ceasul matricial de pe nodul i, celelaltevalori scalare de ordinul k de pe alte linii ji reprezint ct tie nodul i c ar ti nodul j c este ceasullocal scalar pe nodul k.Pentru exemplul numeric din figura de mai sus, se observ c la final, nodul P3 are ceasul matricial

    525020425

    Fig 3.22 Exemplu de ceas matricial la nodul P3Putem spune c ceasul scalar local pentru nodul P3 este valorea m[3,3]=5. Restul valorilor de pe linia a3-a reprezint estimri. m[3,1] =5 reprezint pn la ce valoare tie nodul P3 c a progresat ceasulscalar logic local de pe nodul P1, iar m[3,2]=2 reprezint ct tie nodul P3 c a progresat ceasul logiclocal de pe nodul P2. Tot pentru nodul P3, valoarea m[1,1]=5 reprezint ct tie procesul P3 c tieprocesul P1 c ar fi ceasul local pe procesul P1. Pentru nodul P3, valoarea m[1,2]=2 reprezint ct tie procesulP3 c tie procesul P1 c ar fi ceasul logic local pe nodul P2.Dac evenimentul curent este eveniment intern, atunci blocul increment ceas local mTi[i,i] executurmtoarea secven de cod:

    matrixTimeM[thrd * j + j][i][j]++;unde thrd reprezint numrul total de noduri.Dac evenimentul curent este un mesaj, nti se incrementeaz ceasul logic local al nodului surs cusecvena de cod

    matrixTimeM[thrd * j + j][i][j]++;Dup ce s-a incrementat ceasul logic local, adic s-a executat regula R1 din algorimtul lui Lamport, amstocat ntr-o matrice separat numita TS (time-stamp tampil de timp) valorile ceasului matricial de penodul surs dup ce s-a executat R1. Practic aceast matrice va fi ataat la mesaj ca o tampil de timp.Cnd mesajul ajunge la nodul destinaie, se face actualizarea ceasului matricial de la nodul destinaie.tim din teorie c actualizarea ceasului matricial la destinaie se face in dou etape.Prima etap

    1 k n : mti[i,k] = max( mti[i,k], mt[j,k] )iar a doua etap

    1 k, l n : mti[k,l] = max( mti[k,l], mt[k,l] )nti nodul recepie Pi i actualizeaz linia i cu linia j a tampilei de timp, apoi i actualizeaz restulvalorilor din matrice.Prima etap este implementat cu ajutorul codului de mai jos

  • 30

    for (int inc = 0; inc < thrd; inc++)matrixTimeM[thrd * Rx + inc][i][Rx] = Math.max(matrixTimeM[thrd * Rx + inc][i][Rx],TS[Tx][inc]);

    iar a doua etap este implementat de codul de mai josfor (k = 0; k < thrd * thrd; k++)matrixTimeM[k][i][Rx] = Math.max(matrixTimeM[k][i][Rx], TS[k / thrd][k% thrd]);

    n final, dup ce procesul destinaie a actualizat ceasul logic cu valorile din tampila de timp amesajului, se execut regula R1 la nodul destinaie dup cum se specific n algoritmul Lamport.Incrementarea ceasului logic local la nodul destinaie se face su seciunea de cod

    matrixTimeM[thrd * Rx + Rx][i][Rx]++;unde Rx reprezint identificatorul procesului destinaie al mesajului, iar thrd este numrul de noduridin sistemul distribuit.

    3.3.5. Analiza ncrcrii reelein aceast seciune vom prezenta cum s-a implementat tabul pentru analiza performanei.

    Generare mEv aleatorie cu 1000 de coloane inLin linii

    i=0; j=0;

    999,0,0][ jjsir

    i > nLin

    j > 1000

    mEv[i][j]= mesaj

    j++

    i++ Nu

    Nu

    sir[j]++

    Da

    Da

    Nu

    spre blocul de calculurmtor

    Fig 3.23 Diagramacodului din spatelebutonului deGenerareRezultate

  • 31

    n diagrama de mai sus este reprezentat secvena de pai care este executat atunci cnd se apasbutonul de Generare rezultate. nti se genereaz o matrice de evenimente cu un numr mare decoloane, adic de tacte de ceas simulate, 1000. irul sir va numra cte mesaje sunt pe fiecare tact deceas. Valoarea sir[i0] va reine cte mesaje sunt trimise pe parcursul tactului de ceas i0. Mai departe, setesteaz ce metod de sincronizare a ceasurilor logice este folosit. Dac este folosit metoda scalar,pentru fiecare mesaj se adaug cte un Octet la valoarea de ncrcare care va fi scris n fiierul textpentru tactul de ceas respectiv. Dac este folosit metoda Vectorial, pentru fiecare mesaj, se adaugcte nLin Octei la valoarea ncrcrii pentru un anumit tact de ceas. n sfrit, pentru metodaMatricial, pentru fiecare mesaj se vor aduga nLin * nLin Octei. Acest lucru este reprezentat diagramade mai

    Fig 3.24 Analiza ncrcriidatorat metodei sincronizare

    jos

  • 32

    Folosind sirurile de date rezultate din metoda de mai sus, ele se scriu n nite fiiere text. Pe prima linieeste scris ncrcarea n fiecare period de ceas cnd se folosete metoda Scalar, pe a doua linie estescris ncrcarea n fiecare perioad de ceas cnd se folosete metoda Vectorial, iar pe a treia linie estescris ncrcarea n fiecare perioad de ceas cnd metoda folosit este Metoda Matiricial.De asemenea, folosind datele de mai sus, se vor scrie i nite fiiere text cu numelePerfOverheadAve_< nLin>Threads.txt. n aceste fiiere se calculeaz la fiecare tact de ceas evoluiamediei eantioanelor trecute pentru ncrcare dup formula

    nnovhmnm nn ][)1( 1

    (3.8)unde mn reprezint media calculat la momentul de timp n, iar ovh[n] este valoarea ncrcrii lamomentul de timp n. Aces fiier este folosit pentru e afia pe acelai grafic i evoluia ncrcrii pentrufiecare moment de timp, dar i evoluia medie a ncrcrii.Avnd aceste date scrise n fiiere, utilizatorul poate s vizualizeze pe ecran grafice cu ncrcareapentru o anumit metod sau comparaie ntre ncrcarea meadie introdus de fiecare dintre cele treimetode de sincronizare a ceasurilor logice studiate n lucrare.

    3.3.6. Comparaie ntre un caz n care se aplic metode de sincronizarea a ceasurilor logicei un caz n care nu se aplic nicio metod de sincronizare.n urmtoarea seciune vom ncerca s demonstm utilitatea metodelor de sincronizare Lamportfolosind un exemplu realizat cu ajutorul simulatorului descris anterior. Pentru aceasta, am realizat unscenariu n care exist o desincronizarea a ceasurilor pe nodurile din sistemul distribuit. Ceasurile dinexemplu pot fi considerate chiar ceasuri fizice.Dup cum am prezentat i n partea teoretic, n sistemele distribuite vor exista cazuri n care ceasurilefizice de pe nodurile sistemului vor fi desincronizate. n acest caz, dac un nod cu un ceas mai lent itrimite mesaj unui nod cu ceas mai rapid, mesajul va avea ataat o tampil de timp mai veche, ceea cenu va duna algoritmului care ruleaz pe sistemul distribuit. Dac ns un nod cu ceas mai rapid i vatrimie mesaj unui nod cu ceasul mai lent, atunci se poate ntmpla ca mesajul s aib ataat o tampilde timp mai nou dect ceasul pe nodul destinaie. Pentru nodul destinaie, acest mesaj este ca un mesajdin viitor, ceea ce poate duna algoritmului care ruleaz pe sistemul distribuit. Dac se folosesc nsistemul distribuit metode de sincronizare a ceasurilor logice, aceast situaie defavorabil poate firezolvat.Fereastra cu datele de intrare este similar cu situaia din tabul de simulare. Singura diferen este aceeac utilizatorul nu mai poate selecta metoda de sincronizare simulat, ci ea va fi setat implicit pemetoda scalar. O alt diferen este aceea c utilizatorul poate selecta perioada de ceas pe fiecare noddin sistemul distribuit.De aceea, pentru a ilustra comparativ rezultatele i pentru situaia in care se folosee metoda scalar desincronizare i pentru situaia n care nu se folosete nicio metod de sincronizare, au fost folosite doublocuri de calcul al rezultatelor, cte unul pentru fiecare caz.Mai jost este reprezentat schema logic de calcul a matricei de timp pentru cazul n care avemLamport. Exist nite mici diferene fa de schema de la simulatorul pentru metoda Scalar pe care levom discuta n paginile urmtoare.

  • 33

    Da

    Nu

    Nu

    Da

    Nu

    Da

    i = 1

    i>nCol

    mT[i][j] = mT[i-1][j] + step[j]nLinj ,1

    j = 0

    j>nLin

    mEv[i-1][j] = msj

    mT[i][msj] = max(mT [i][j], mT[i][msj])+ 1

    j + +

    i + +

    START

    STOP

    Fig 3.25 Schma de calcul cuLamport in cazul comparatiei

  • 34

    Prima diferen ntre schema de mai sus i simulatorul pentru metoda Scalar a lui Lamport este aceeac n cazul de fa, ceasul se incrementeaz ca un ceas fizic, adic independent de ntmplarea sau nu aunor evenimente. Tot ca n cazul metodei scalare, se lucreaz cu matricea de timp i matricea deevenimente transpuse.Incrementarea variabliei i reprezint venirea unui noi tact de ceas fizic global. Primul bloc reprezintfaptul c la fiecare tact nou de ceas global, ceasul pe nodul respectiv se incrementeaz i el cu ovaloare. Valoarea cu care se incrementeaz ceasul de pe fiecare proces este reinut n vectorul sir[inc].O alt diferen ntre aceast schem i schema de la metoda Scalar este urmtoarea. Doar cazurile ncare se trimite mesaj de la un proces la altul sunt luate n calcul. n cazul n care avem eveniment intern,nu se mai increnteaz ceasul, deoarece acesta s-a incrementat deja la nceputul trecerii pe o linie noun matricea de evenimente. Deci evenimentele interne pot fi folosite doar ca mijloace pentru ca ceasulpe un anumit proces s fie afiat.n cazul n care nu se folosete vreo metod de sincronizare, lucrurile stau mult mai simplu caimplementare. for (i = 1; i

  • 35

    Fig 3.26 Exemplu de mesaje ntrziateAvnd n vedere cele spuse mai sus, coninutul lui mDist va fi:0 3 1 0 00 0 0 0 0n exemplul de mai sus avem mesaje doar ctre al doilea nod al sistemului distribuit. tiind nodul surs,tiind momentul de timp la care mesajele sunt trimise, i tiind ntrzierea fiecrui mesaj, se poatedetermina matricea mRec. Coninutul lui mRec pentru exemplul de mai sus este:0 0 0 0 01 0 0 3 2Dac analizm puin Fig3.26 i coninutul matricii mRec, putem vedea c indicele i al liniei careconine valoarea nenul va fi nodul de recepie de pe grafic, iar indicele coloanei j care conine valoareanenul este momentul de timp global la care ajunge mesajul la nodul destinaie. De exemplu, la i = 2, j= 4 avem 1 n matricea mRec, i vedem i pe diagram ca nodul P2 recepioneaz la tactul global 4,mesajul M3. Deci simulatorul, bazndu-se doar pe coninutul matricei mRec, tie unde s afiezerecepionarea mesajelor.Pentru algoritmul BSS trebuie s se compare valoarea cesurilor vectoriale de la nodul surs cu valoareatampilei de timp a mesajului. Pentru a reine tampilele de timp ale fiecrui mesaj care este transmis,se folosete un alt ir auxiliar, sirTs[].irTs[] conine valoarea tampilei de timp a mesajului, alturi de momentul de timp global la care afost trimis, i nodul surs al mesajului. Pentru exemplul de mai sus, sirTs[] va avea valorile:

    1 0 1 0 2 0 2 0 3 0 3 0tampila M1 i j tampila M2 i j tampila M3 i j

  • 36

    n diagrama de mai sus este detaliat blocul de calcul al matricilor auxiliare. Matricile auxiliare sunt:mEv, mDist, mRec, mBr. O parte sunt calculate aici, cealalt parte sunt folosite la blocul de calcul altimpului i la blocul de afiare.Blocul Completeaz mEv citete valoarea din fiierul text i n funcie de i i j, o stocheaz lamEv[i][j]Blocul Completeaz mDist citete ntrzierile setate de utilizator asociate fierui mesaj i lestocheaz la mDist[i][j]. ntrzierea de la indicii i i j va fi asociat cu mesajul de la mEv[i][j].

    Nu

    Da

    Nu

    Da

    Citete din MatrixEventInBSS.txt

    Completeaz mEv

    Completeaz mDist

    i = 0

    i > nLin

    j = 0

    j > nCol

    j + +

    i + +Spre blocul urmtor

    Fig 3.27 Detaliereablocului de calcul almatricilor auxiliare

  • 37

    NuDa

    Nu Da

    DaDaDa

    Nu Nu Nu

    Nu

    Da

    Nu

    Da

    mEvTr =mesaj

    mRecTr[i+dist][j]=indexRec

    CompleteazsirTs[indexTs]

    Regula 1 Lamport

    mRecTr >0

    Condiie BSS 1

    Condiie BSS 2

    C BSS1 i CBSS 2 true

    Scrie n mBrTr Pune mesaj n coad

    coad nevid

    Condiie BSS 1

    Condiie BSS 2

    i = 0

    i > nEv

    j = 0

    j > nNod j + +

    Regula 2 Lamport

    indexRec ++

    indexTs ++

    Fig 3.28 Detaliereablocului de calcul almatricei de timp

    i + +

    Spre blocul afiare date

    C BSS1 iC BSS 2true

    R1 Lamport

    Scrie n mBrTr

  • 38

    n figura de mai sus este reprezentat schema detaliat a blocului de calcul al matricei de timp. Este denotat faptul c se lucreaz cu toate matricile transpuse. Deci numrul de linii va fi egal cu numrul deevenimente pentru un nod, iar numrul de coloane va fi egal cu numrul de noduri din sistemuldistribuit.Dup ce blocul anterior a completat matricea mEv cu evenimente i matricea auxiliar mDist, acum separcurge matricea mEvTr care este transpusa matricei mEv. Dac evenimentul la care a ajunsparcurgerea este un mesaj, atunci se completeaz matricea de recepie mRecTr. n funcie de ntrziereacare este stocat n matricea mDistTr, se stabilesc indicii i i j la care se completeaz matricea mRecTr.

    indexRec ++ ;mRecTr[(i-1) + mDistTr[i-1][j]][auxInt1-1] = indexRec;

    Apoi blocul Regula 1 Lamport aplic prima regula de sincronizare a ceasurilor vectoriale pentrunodul surs al mesajului

    matrixTimeV[j][i][j] = matrixTimeV[j][i - 1][j] + 1; //R1Apoi, att ceasul vectorial ct i indicii i i j cureni se stocheaz n irul sirTs pentru a se ine mintetampila de timp pentru fiecare mesaj.for(int kk = 0; kk0. Am vzut mai sus, c dac mRec[i][j] are o valoare nenul, atunci nseamn c la nodul j, lamomentul de ceas global i, avem evenimentul de recpie al unui mesaj. Dac avem recepia unui mesaj,se verific cele dou condiii ale algoritmului BSS pentru a vedea dac mesajul primit poate fi difuzatctre celelalte noduri sau nu. Cele dou condiii ale algoritmului sunt enunate la partea teoretic.Implementarea primei condiii este n urmtoarele linii de cod:if(mTimeV[jBun][i-1][thdDest] == sirTs[(mRecTr[i-1][j]-1)*(Ciorna7.getNoThreads()+2)+jBun]-1 )

    BUN1 =1;

    Implementarea celei de-a doua condiii a algoritmului BSS este n liniile de mai josfor(int k=0; k=sirTs[(mRecTr[i-1][j]-1)*(Ciorna7.getNoThreads()+2)+k])

    BUN2=1;elseBUN2=0;

    }}

    Dac ambele condiii sunt ndeplinite, atunci se execut i a doua regul Lamport i se difuzeazmesajul.Mai jos avei scris codul care execut a doua regul Lamport asupra ceasului vectorial al noduluidestinaie

  • 39

    if(BUN1==1 && BUN2==1){mBroadTr[i-1][j]=1;for(int kk=0; kk

  • 40

    3. Ghid de utilizare a aplicaiein acest capitol se va ilustra modul de utilizare al aplicaiei. Se va explica ce face fiecare buton

    din interfaa grafic a programului i se va explica i cum s se analizeze informaia care este afiat peecran de ctre program.4.1. Seciunea de simulare a metodelor de sincronizaren figura de mai joa avei reprezentat fereastra cu meniul principal al simulatorului.

    Fig 4.1 Fereastra principal a programului Cu ajutorul butoanelor de tip Radio Button utilizatorul poate s aleag metoda dorit, numrul decoloane i de linii pentru matricea Evenimentelor de intrare.

  • 41

    Dup ce a selectat numrul de coloane i de linii, utilizatorul poate s introduc manual matricea deintrare n program completnd campul de mai jos:

    Fig 4.3 Unde se poate completa manual matricea de intrare

    Am definit trei tipuri de evenimente care se pot petrece la un nod: Eveniment intern notat cu i n matricea datelor de intrare Eveniment neutru notat cu n n matricea datelor de intrare Mesaj ctre un alt nod al sistemului distribuit notat cu o cifr care reprezint nodul

    destinaie pentru mesaj

    Fig 4.4 Tipurile de evenimente i notaiile lor n simulatorn figura de mai jos este reprezentat un exemplu de matrice cu succesiunea de evenimente pentru 5noduri timp de 5 perioade de ceas.

    Fig 4.5 Cum se completeaz matricea de intrareMai jos este reprezentat afiarea rezultatelor pentru matricea de intrare din figura de mai sus:Pentru a se afia rezultatele, utilizatorul, trebuie mai nti s completeze:1. Metoda folosit

  • 42

    2. Numrul de noduri i de tacte de ceas simulate3. Matricea cu succesiunea de evenimente4. Dup ce a completat toate elementele de mai sus se apas butonul finish

    Fig 4.6 Exemplu de cum se reprezint evenimenteleSe observ pentru nodul P1, care e primul nod, c succesiunea evenimentelor afiate respect datele deintrare din matrice: Primul eveniment este un mesaj ctre nodul 3, apoi al doilea eveniment este unmesaj ctre nodul 5, al treilea mesaj este un eveniment intern, al patrulea i al cincilea mesaj suntambele evenimente neutre.

    De asemenea, se poate observa i faptul c la afiarea grafic a evenimentelor si a valoriiceasului logic ataat, se folosesc culori diferite n funcie de tipul de eveniment. Pentru evenimenteleinterne se folosete culoarea albastr, iar pentru evenimentele de tip mesaj se folosete culoare roie.

    Fig 4.7 Culori cu care sunt afiate evenimente interne i mesajeUn alt amnunt important este i acela c rezultatele simulrii cu ceasurile pentru fiecare proces

    sunt afiate secvenial, adic se afieaz cte o perioad de ceas la fiecare click. Perioadele de ceas suntdelimitate de linii verzi dup cum se vede n figura de mai jos. Din cauz ca am folosit matrici pentrusimularea nodurilor din sistemul distribuit, de aceea evenimentele simulate vor avea un caractersincron. Practic, mesajele care pornesc de la noduri diferite, dar care sunt poziionate pe aceeai

  • 43

    coloan n matricea evenimentelor de intrare, acele mesaje vor pleca n acelai timp. De aceea, amdesenat cu verde nite linii care delimiteaz evenimentele care se petrec ntr-o anumit coloan dinmatricea evenimentelor. De asemenea, am afiat pe ecran tot cu verde un contor care arat a ctacoloan din matricea evenimentelor este desenat.

    Fig 4.8 Delimitri ale tactelor logiceDin cauza faptului c programul afieaz rezultatele ntr-un mod sincron, exist unele limitri cu

    privire la datele de intrare. Nu orice combinaie de evenimente pentru un anumit nod va da rezultateafiate corect de program. S lum urmtorul exemplu. Matricea cu secvena evenimentelor este cea demai jos, iar rezultatele afiate sunt sub matrice.

    3 n in 3 ni n n

  • 44

    Fig 4.9 Limitri ale programuluiSe observ faptul c n acelai timp, adic la nceptului simulrii, n primul tact de ceas, nodul 1

    i trimite mesaj nodului 3, iar nodul 3 are eveniment intern. Din cauza mecanismului de afiare, nprimul tact de ceas se afieaz doar o singur valoare de ceas. Aa c n primul tact de ceas, pentrunodul 3, se afieaz doar ceasul rezultat n urma evenimentului intern, nu i ceasul rezultat n urmamesajului recepionat de la nodul 1. Aceast limitare apare de fiecare dat cnd se ntmpl ca, pentruacelai nod, ntr-un singur interval de ceas, s se ntmple dou evenimente simultane.

    Exist cazuri n care matricea cu secvena de evenimente poate avea dimensiuni foarte mari.Dac ar trebui ca utilizatorul s completeze manual matricea, ar fi o sarcin foarte grea. n plus, risculde a pica n limitarea pe care am prezentat-o mai sus crete n cazul n care avem multe noduri nsistemul distribuit. De aceea, s-a implementat un buton numit Random. Dup ce utilizatorulselecteaz metoda (scalar, vectorial, matricial) i dup ce se alege i numrul de noduri i de ceasurilogice, utilizatorul poate selecta butonul Random. n acel moment, se genereaz automat matricea cusecvena de evenimente. De asemnea, se pun nite validri astfel nct s nu existe cazuri n care pentruacelai nod s existe dou evenimente simultane n aceeai perioad de ceas.

    4.2. Seciunea de ncrcare a reelei pentru cele trei metodeA doua parte a programului de simulare o constituie partea n care se face analiza performanei.

    Dup cum se poate vedea, cele trei metode de sincronizare a ceasurilor logice difer ntre ele prindimensiunea tampilelor de timp. Pentru fiecare mesaj trimis, este necesar ca nodul care trimite mesajuls ataeze tampila de timp ca un header al pachetului trimis. Asta nseamn c metodele desincronizare a ceasurilor logice introduc o ncrcare suplimentar a reelei. Prin programul de simularese realizeaz un studiu al ncrcrii reelei introduse de algoritmii Lamport.

    Se consider urmtoarele ipoteze: fiecare nod, cnd trebuie s trimit un mesaj, ataeaz lasfrit tampila de timp. Dac se folosete metoda scalar, se ataeaz un scalar, dac se folosetemetoda vectorial se ataeaz un vector de dimensiune n iar dac se folosete metoda matricial seataeaz o matrice.

    Pentru a face analiza se folosete funcionalitatea de generare aleatare a matricei de intrare.Pentru analiza performanei se face urmtorul lucru: Se folosete butonul de Random pe care

    l-am explicat mai sus. Se genereaz automat o matrice cu 1000 de evenimente. Pe aceast matrice senumr cte mesaje exist de la un nod la altul i n funcie de metoda de sincronizare folosit se ofero statistic privitoare la ncrcarea reelei.

    Se consider urmtoarele ipoteze:

  • 45

    Nu se ia n considerare cantitatea de informaie din mesaj, ci doar ncrcarea produs de faptulc la mesaj se adaug tampila de timp cu valoarea ceasului.

    Se consider c fiecare numr din structura de date care reprezint valoarea ceasului logicataat unui mesaj se reprezint pe 1 Octet. De exemplu, tampila de timp de ceas scalar 1 sereprezint pe 1 Octet. tampila de timp de ceas vectorial [1,2] se reprezint pe 2 Octei, etc.

    Pentru a accesa partea cu analiza performanei, se apasa butonul din tabul de sus al ferestreimeniului principal:

    Fig 4.10 Accesarea tabului de performan

    Fig 4.11 Meniul seciunii de analiza performanelor pentru programul simulator dup ce utilizatorul a apsatbutonul de Generare Rezultate

    Se observ c la nceput doar butonul de Generare Rezultate este activ, restul butoanelor fiindinactive. Dup ce utilizatorul apas pe butonul de Generare Rezultate, n directorul n care este instalatprogramul vor aprea mai multe fiiere text cu numele PerfOverhead_< nLin>Threads.txt, unde nLin= 8,3 .Coninutul unui astfel de fiier este afiat n figura de mai jos

    Fig 4.12 Coninutul uni fiier PerfOverhead_< nLin>Threads.txt , nLin=5Pe prima linie este scris ncrcarea n fiecare period de ceas cnd se folosete metoda Scalar, pe adoua linie este scris ncrcarea n fiecare perioad de ceas cnd se folosete metoda Vectorial, iar pe atreia linie este scris ncrcarea n fiecare perioad de ceas cnd metoda folosit este MetodaMatricial.De asemenea, folosind datele de mai sus, se vor scrie i nite fiiere text cu numelePerfOverheadAve_< nLin>Threads.txt. n aceste fiiere se calculeaz la fiecare tact de ceas evoluiamediei eantioanelor trecute pentru ncrcare dup formula

  • 46

    nnovhmnm nn ][)1( 1

    (4.1)unde mn reprezint media calculat la momentul de timp n, iar ovh[n] este valoarea ncrcrii lamomentul de timp n. Aces fiier este folosit pentru a afia pe acelai grafic i evoluia ncrcrii pentrufiecare moment de timp, dar i evoluia medie a ncrcrii.Dup ce utilizatorul apas pe butonul de Generare Rezultate i fiierele text se genereaz, celelaltebutoane de pe pagin se activeaz. Cu ajutorul butoanelor utilizatorul poate selecta ce statistic doretes vad.Dac utilizatorul apas pe butonul ncrcarea medie pentru toate cele trei metode, nr fix de noduri, seia numrul de noduri date de utilizator n interfaa grafic, i cu numrul de noduri se aleg doar fiierelePerfOverhead_< nLin>Threads.txt i PerfOverheadAve_< nLin>Threads.txt care au numrulselectat din interfaa grafic. Datele din aceste fiiere vor fi afiate pe acelai grafic dup cum se veden figura de mai jos:

    Fig 4.13 Rezultatul apsrii butonului ncrcarea medie pentru toate cele trei metode, nr fix de noduri

    Se vede n figura de mai sus c s-au luat datele din fiierul PerfOverheadAve_ 6Threads.txt de petoate liniile i s-au afiat pe ecran.Dac utilizatorul apas pe butonul Afiare ncrcare pentru o anumit metod, nr fix de noduri, nfuncie de metoda selectat se ia doar o linie din fiierul PerfOverhead_< nLin>Threads.txt i doar olinie din fiierul PerfOverheadAve_< nLin>Threads.txt.

  • 47

    Fig 4.14 Rezultatul apsrii butonului Afiare ncrcare pentru o anumit metod, nr fix de noduri pentru MetodaVectorial, 7 noduri

    n exemplul de mai sus s-a selectat metoda Vectorial, 7 noduri n sistemul distribuit. n cazul acestaprogramul a luat datele de pe a doua linie din fiierul PerfOverhead_7Threads.txt i le-a reprezentatcu linia roie, i a luat datele de pe a doua linie din fiierul PerfOverheadAVE_7Threads.txtreprezentndu-le cu linia albastr.Din graficele afiate se pot trage nite concluzii. ncrcarea reelei este mai mare n cazul metodelormatriciale i vectoriale dect n cazul metodei scalare. Este un lucru normal deoarece n cazul metodeiscalare, le fiecare mesaj se ataeaz doar un scalar care ncape ntr-un octet. n cazul metodei Vectorialela fiecare mesaj se ataeaz un vector cu nLin elemente, unde nLin este numrul de noduri din sistemuldistribuit. Din aceast cauz, ncrcarea pe reea crete, fiecare element al vectorului ocupnd cte unOctet, deci nLin Octei pentru fiecare mesaj. n sfrit, metoda care cauzeaz cea mai mare ncrcare pereea este metoda matricial. n cazul acestei metode, la fiecare mesaj trimis se ataeaz o matrice cunLin x nLin elemente. Fiecare element al matricei este reprezentat pe 1 Octet, deci la fiecare mesajtrimis se produce o ncrcare de nLin2 Octei.Se poate concluziona c ncrcarea medie pentru cele trei metode se afl ntr-o progresie geometric curaia nLin. Cea mai mic este ncrcarea pentru metoda scalar, apoi urmeaz ncrcarea pentru metodavectorial de nLin ori mai mare, i cea mai mare fiind ncrcarea pentru metoda matricial care este denLin2 ori mai mare dect n cazul metodei scalare. Acest lucru se poate observa din graficul din Fig4.14.Acolo avem un caz particular n care avem 6 noduri n sistem. ncrcarea medie datorat metodeiscalare este de 2.5 Octeti / perioad de ceas, ncrcarea medie pentru metoda Vectorial este de 12.5Octei / perioad de ceas, deci de aproximativ 6 ori mai mult. n sfrit, ncrcarea n cazul metodeimatriciale este de 62 Octeti / perioad de ceas, adic de aproximativ 36 ori mai mult dect n cazulmetodei scalare.

  • 48

    4.3. Seciunea de Comparaie cu situaia n care avem doar ceasuri fizice desincronizaten urmtoarea seciune vom ncerca s demonstm utilitatea metodelor de sincronizare Lamportfolosind un exemplu realizat cu ajutorul simulatorului descris anterior. Pentru aceasta, am realizat unscenariu n care exist o desincronizarea a ceasurilor pe nodurile din sistemul distribuit. Ceasurile dinexemplu pot fi considerate chiar ceasuri fizice.

    Fig 4.15 Exemplu n care cresc ceasurile fizice

    Mai sus avem ilustrat o figur n care avem trei noduri. La fiecare tact de ceas global, fiecare nod iincrementeaz ceasul cu o valoare. Este de menionat faptul c ceasul reprezentat n figur poate ficonsiderat chiar ca un ceas fizic. Al doilea i al treilea proces, la fiecare tact de ceas global, iincrementeaz ceasul cu cte 100 de uniti. Aceste uniti pot fi considerate ca reprezentnd nano-secunde, milisecunde, sau orice alt unitate de msur pentru timp. Se observ faptul c primul nod areceasul desincronizat fa de celelalte noduri. Ceasul nodului 1 progreseaz mai ncet fa de celelalte. ntimp ce celalte noduri i incrementeaz ceasul cu cte 100 de uniti la fiecare tact global, nodul 1 areceasul mai ncet i i incrementeaz ceasul doar cu 50 de uniti.

    Fig 4.16 Ceasuri desincronizate mesaj de la ceas ncet la ceas mai rapid

    n cazul reprezentat n figura de mai sus, avem mesaje doar de la noduri cu ceas ncet ctre noduri cuceas mai rapid. Acest caz este unul fericit deoarece nu are un impact negativ asupra algoritmuluidistribuit care ruleaz pe fiecare nod. Singurul element negativ este acela c mesajul pare s fi avut ontrziere ma mare pe canalul de comunicaie dect n realitate.

  • 49

    Fig 4.17 Ceasuri desincronizate, mesaj de la ceas rapid la ceas ncetn figura de mai sus avei reprezentate i cazuri defavorabile. Unul dintre ele este acela n care setrimite un mesaj de la un nod cu ceas rapid ctre un nod cu ceas ntrziat. Atunci apare un evenimentne-dorit, n care mesajul are tampila de timp la plecare mai mare dect timpul la recepie, i apare ca icum mesajul ar fi venit din viitor n trecut. Aceste cazuri sunt mpotriva logicii i sunt foarte duntoarentr-un sistem distribuit. Un alt caz nefavorabil este urmtorul. n simulatorul implementat de mine,nrzierea mesajelor de la un nod la altul este neglijabil n comparaie cu durata unui tact global. ncazul n care avem mesaj ntre dou noduri care au ceasurile sincronizate, atunci poate aprea cazul ncare mesajul are aceeai tampil de timp i la emisie i la recepie. Acest caz este reprezentat tot nfigura de mai sus, la momentul de timp 4 cnd se trimite un mesaj de ctre nodul 3. Mesajul aretampila de timp 400, i ajunge la nodul 2, tot cu tamplia de timp 400.Aplicarea Algoritmului Lamport rezolv ambele probleme descrise n paragraful de mai sus. La fiecarerecepionare de mesaj, nodul de la recepie compar tampila de timp a mesajului cu valoarea ceasuluilocal. Dac valoarea ceasului local e mai mic dect tampila de timp, atunci nodul de la recepie iincrementeaz ceasul local la o valoare mai mare dect cea a tampilei de timp.

  • 50

    Fig 4.18 Comparaie cu / fara algoritmul Lamport aplicat nodurilor

    Meniul pentru completarea aplicaiei este similar cu cel de la Simularea algoritmilor lui Lamport. El eafiat n figura de mai jos:

  • 51

    Fig 4.19 Meniul principal pentru Comparaie Cu / fara LamportDup cum se poate observa, meniul pentru Comparaie Cu / fara Lamport are multe componenteidentice cu cele de la tabul de simulare. n partea de sus a feresrei sunt 2 butoane de tip Drop Downcu care utilizatorul poate selecta numrul de coloane i de linii ale matricei de intrare. Apoi n parteadreapta centru exist o caset de text n care utilizatorul poate introduce matricea de intrare dupaceleai reguli dup care s-a fcut i matricea evenimentelor la simularea metodelor scalar, vectorial,matricial. De asemenea, exist buton de Finish i de Random. Butonul de Random completeazmatricea evenimentelor de intrare dup acelai algoritm ca cel prezentat la capitolul despre simulareametodei scalare, vectoriale, matriciale.Ce apare n plus n meniul pentru Comparaie cu / far Lamport este grupul de butoane Drop Downdin dreapta. Cu ajutorul acestor butoane, utilizatorul poate controla ct de rapid sau de ncet s fieceasul pe fiecare din nodurile din sistemul distribuit. n exemplul din figura de mai sus, nodul 1 areceasul mai ncet, deoarece la fiecare tact logic global ceasul su se incrementeaz cu 50 de uniti detimp, pe cnd nodurile doi i trei i incrementeaz ceasurile la ficare tact logic global cu cte 100 deuniti de timp.Ce este mai complicat la acest meniu, este faptul c numrul butoanelor Drop Down cu careutilizatorul schimba perioada ceasului pe fiecare nod depinde de numrul nodurilor din sistemuldistribuit. Dac utilizatorul schimb numrul de noduri, atunci i numrul butoanelor de tip Dropdown se schimb.

    4.4. Simularea algoritmului Birman Schiper StephensonCa o aplicaie a metodei vectoriale de sincronizare a ceasurilor logice am gsit un algoritm care sefolosete de ceasurile vectoriale pentru a ordona mesajele de difuzare ntr-un sistem distribuit.

  • 52

    Mai jos este reprezentat fereastra cu meniul principal al programului.

    Fig 4.20 Meniul simulatorului algoritmului BSS

    Dup cum se vede, fereastra este similar celei de la simularea metodelor de sincronizare. Cea maimare deosebire este aceea c, pe lng faptul c utilizatorul poate defini mesaje de la un nod la altul, elpoate regla i ntrzierea cu care se simuleaz c va ajunge la nodul destinaie. De aceea, n matriceamEv din figura de mai sus, utilizatorul va completa n cazul unui eveniment de tip mesaj, dou cifre.Prima cifr este nodul destinaie, iar a doua cifr este ntrzierea cu care va ajunge mesajul la noduldestinaie.

    20 23 21 n n n n nn n n n n n n nFig 4.21 Exemplu de date de intrare pentru algoritmul BSS

    Din exemplul de matrice de evenimente de mai sus se nelege c la primul tact global nodul 1 i trimitemesaj nodului 2 cu ntrziere de 0 tacte. Apoi tot nodul 1 i trimite nodului 2 alt mesaj, de data aceastacu o ntrziere de 3 tacte globale. n final, nodul 1 i trimite nodului 2 un mesaj care ajunge la destinaiecu o ntrziere de 1 tact logic.Dup ce utilizatorul a completat datele de intrare, se apas butonul Finish i simulatorul va afiarezultatele simulrii.

  • 53

    Fig 4.22 Rezultatele simulrii algoritmului BSSn figura de mai sus se observ c nodul 1 respect secvena de evenimente dat n matricea de intrare.De asemenea, se respect i ntrzierile aplicate pentru fiecare mesaj. Pentru a fi mai uor de identifat,fiecare mesaj din sistmeul distribuit primete cte un nume diferit. n cazul acesta particular avemmesajele M1, M2, i M3.Se observ c la nodul destinaie, de fiecare dat cnd ajunge un mesaj, se verific cele dou condiiiale algoritmului BSS. Reamintim din teorie care sunt paii algoritmului BSS:

    1. Fiecare proces Pi menine un ceas vectorial2. nainte de a difuza un mesaj m ctre toate celelalte noduri, un nod Pi i incrementeaz ceasul

    vectorial local vti[i] i ataeaz noul ceas vti[i] ca o tampil de timp a mesajului. Vom notatampila de timp a mesajului m cu vtm.

    3. Cnd nodul Pj recepioneaz mesajul m, nti verific urmtoarele condiii:a. vtj[i]=vtm[i]-1, ceea ce nseamn c toate mesaje anterioare trimise de ctre nodul Pi au

    fost recepionate de ctre Pjb. vtj[k] vtm[k], },...2,1{ nk k i, ceea ce nseamn c nodul Pj a recepionat toate

    celelalte mesaje care au trecut pe la Pi (dar nu au fost emise de ctre Pi).4. Dac una dintre cele dou condiii nu e ndeplinit, nodul Pj pune mesajul m ntr-o coad i va

    testa tot aceste dou condiii mai trziu5. Dac ambele condiii sunt ndeplinite, atunci procesul Pj difuzeaz mesajul m ctre toate

    celelalte noduri din sistemul distribuit, mai puin Pi.Cele dou condiii care sunt verificare la fiecare recepionare a unui mesaj sunt notate cu a i b n paiide mai sus.Se observ c n cazul mesajului M1, cele dou condiii sunt respectate, deci mesajul M1 este difuzat dectre nodul 2 imediat dup recepionarea mesajului.n cazul mesajului M3, se observ c el este transmis de nodul 1 dup transmiterea mesajului M2, dardin cauza canalului de comunicaie, mesajul M2 ajunge mai trziu la destinaie dect mesajul M3. Cndnodul 2 recepioneaz mesajul M3, el verific dac se ndeplinesc condiiile algoritmului BSS. Se poateobserva dac se fac nlocuirile n formul c nu se ndeplinete prima condiie a algoritmului BSS i deaceea mesajul M3 este trecut n coada nodului 2.Se observ c la urmtorul tact global (tactul 5) c ajunge la destinaie i mesajul M2. Nodul 2 verifici n cazul acesta cele dou condiii ale algoritmului BSS. n cazul mesajului M2, cele dou condiiisunt respectate i de aceea mesajul M2 este difuzat.n urmtorul tact global (tactul 6), nodul 2 nu mai recepioneaz niciun mesaj i de aceea ncearc dacpoate treimite vreun mesaj din coada local de ateptare. De aceea iar testeaz cele dou condiii ncazul mesajului M2. Dac se fac nlocuirile se vede c de data aceasta sunt ndeplinite condiiilealgoritmului BSS i mesajul M2 este scos din coad i difuzat.

  • 54

    4.5. Limitri ale simulatorului algoritmului Birman Schiper StephensonDin pcate implementarea algoritmului BSS a fost mai delicat din cauza numrului mare de matriciauxiliare i de aceea a fost nevoie de aplicarea unor limitri. Nu se poate simula chiar orice combinaiede mesaje i de ntrzieri a mesajelor.Cea mai important limitare este aceea c se pot simula doar dou noduri. Nodul 1 va fi ntotdeaunanodul care trimite mesaje, iar nodul 2 va fi permanent nodul care recepioneaz mesaje. Utilizatorul nupoate trimite mesaje de la nodul 2 la nodul 1, ci doar de la nodul 1 la nodul 2.O alt limitare important a simulatorului e similar cu cea de la simularea metodelor scalar,vectorial, matricial. Datele nu sunt valide dac se ntmpl mai mult de dou evenimente n aceeaiperioad de ceas global la acelai nod. S considerm exemplul de mai jos care are matricea de intrare

    23 n 21 nn n n n

    Fig 4.23 Limitare a simulatorului pentru algoritmul BSSSe observ c la tactul 4, se ntmpl dou evenimente diferite la acelai nod, nodul P2. Simulatoruldetecteaz acest lucru i afieaz mesajul de eroare de mai jos. Totui el reprezint grafic evenimentelepentru ca utilizatorul s vad mai uor unde este limitarea.

    4.6. Analiza perfomanei ca timp de calcul. Comparaie ntre cele trei metode desincronizare a ceasurilor logicePe lng analiza ncrcrii suplimentare introdus de cele trei metode de sincronizare, este util sstudiem i timpul de calcul pe care l consum fiecare metod de sincronizare n parte. Timpul de calculeste o mrime demn de luat n seam atunci cnd se proiecteaz un sistem distribuit. Un timp de calculmare face ca mainile s raspund greu la cereri, face ca transferul de mesaje pe canalul de comunicaies se realizeze greu.Pentru a msura timpul de procesare, am folosit metoda System.currentTimeMillis(). Aceastmetod returneaz timpul raportat de sistemul de operare, in milisecunde. Pentru a msura timpul decalcul, am introdus liniile de cod

    startTime = System.currentTimeMillis();endTime = System.currentTimeMillis();

    time = endTime-startTime;

  • 55

    Linia cu startTime am introdus-o la inceputul seciunii de cod care calculeaz matricea de timp, liniacu endTime, am introdus-o la finalul seciunii de cod. Facnd diferena dintre cele dou, am obinutintervalul de timp ct a durat calculul matricei de timp.Pentru a obine nite rezultate concludente, am facut urmtorii pai. Cu ajutorul metodei descrise lanceputul capitolului 5 am generat o matrice de evenimente cu valori aleatoare. Am observat c pentruvalori normale ale dimensiunilor matricei, timpul de calcul era sub 1 ms. De aceea, am generat omatrice de evenimente cu dimensiuni foarte mari, pentru ca s se vad mai bine diferena ntre cele treimetode de sincronizare. Pentru determinarea timpului de procesare am folosit o matrice de evenimentecu 8 linii si 5000 de coloane. Am folosit metoda descris la nceputul capitolului 5 pentru a completaautomat matricea.Apoi am deschis programul, am introdus prima realizare particular a matricei, am calculat matricea detimp cu metoda scalar i am obinut prima valoare a timpului de procesare. Apoi iar am inchisprogramul, l-am deschis din nou, i am mai generat inca o data o matrice cu 8 linii si 5000 de coloane.Bineneles c aceasta a fost o alt realizare particular a matricei generat aleator. Am rulat simulareai pentru aceast matrice i am obinut o alt valoare pentru timpul de calcul. n total, am repetat paiidescrii anterior de 10 ori pentru fiecare metod de sincronizare. n final, am obinut urmtoarelerezultate:

    1 2 3 4 5 6 7 8 9 100

    100

    200

    300

    400

    500

    600

    700

    800

    900

    1000Timpul de calcul

    Matrice de intrare particulara

    Durat

    a [ms

    ]

    Metoda ScalaraMetoda VectorialaMetoda Matriciala

    Fig 4.24 Timpii de calculPe axa oX sunt reprezentate cele 10 realizri particulare a matricei de intrare generat aleator. Pe axaoY este reprezentat timpul, msurat in milisecunde. Se observ c pentru metoda Scalar, durata mediede execuie a fost de aproximativ 30 ms, pentru metoda Vectorial, de aproximativ 300 ms, iar pentrumetoda Matricial timpul de procesare a fost cel mai mare, ajungnd la valoarea de 900 ms. Acestemsurtori confirm estimarea c, la fel ca n cazul ncrcrii pe reea, timpul de procesare este maimare n cazul metodelor matricial i vectorial dect n cazul metodei scalare.