You are on page 1of 14

Procesare distribuit

Aceste note de curs se bazeaza pe urmatoarele texte:


1. Distributed Computing , H. Attyia & J. Welc! "c#ra$%Hill 1&&'
(. Distributed Algoritms, ). *ync! "organ +au,mann 1&&-
.. /ntroduction to Distributed Algoritms, #. 0el! Cambridge 1ni2ersity 3ress 1&&4
1. Introducere
1n sistem 5de calcul6 distribuit este o colec7ie de dispoziti2e de calcul indi2iduale care comunic8 9ntre ele.
:pre deosebire de procesarea paralel8, 9n care scopul principal este cooperarea dintre toate procesoarele 9n 2ederea realiz8rii unei lucr8ri, 9n procesarea distribuit8
,iecare procesor are 9n general propria sa agend8 semi%independent8, dar din di,erite moti2e 5parta;area resurselor, toleran7a la erori etc.6 procesoarele trebuie s8%<i coordoneze
aciunile.
3rincipalele di,icult87i 9n proiectarea sistemelor distribuite sunt:
Asincronia = timpul absolut 5sau ciar relati26 la care au loc e2enimentele nu poate ,i cunoscut precis!
Cunoaterea local = ,iecare entitate de calcul poate dispune doar de in,orma7ia pe care o prime<te, are doar o imagine local8 asupra situa7iei globale!
Cderea componentelor 5,ailures6 = entit87ile de calcul se pot de,ecta independent las>nd anumite componente opera7ionale iar altele nu.
Procesarea distibuit 9<i propune s8 realizeze ceea ce 3roiectarea <i Analiza algoritmilor sec2en7iali a ,8cut pentru calculatoarele sec2en7iale: e2iden7ierea unui
cadru general pentru speci,icarea algoritmilor <i compararea per,orman7elor pentru 9n7elegerea limit8rilor interne ale acestora.
:e dore<te indenti,icarea de probleme fundamentale, abstractiz8ri ale celor ce apar 9n sisteme distribuite reale, enun7area acestor probleme 9n mod precis, proiectarea
<i analiza unor algoritmi e,icien7i pentru ele.
Di,icultatea principal8 const8 9n ,aptul c8 nu exist8 un model de calcul unanim acceptat <i probabil nici nu 2a ,i. ?xist8 di,eren7e ma;ore 9ntre sistemele distribuite
depinz>nd de:
prin mesa;e!
"odul de comunicare
prin memorie parta;at8!
0ipul de in,orma7ie re,eritor la timp <i comportarea sistemului 9n timp!
0ipul de c8deri 5ale componentelor6 care sunt tolerate.
@n sistemele distribuite exist8 noi tipuri de m8suri de complexitate. 3e l>ng8 timpul de execu7ie <i spa7iul de lucru 5ce trebuie de,inite 9n mod corespunz8tor6 2om ,i
interesa7i 9n complexitatea de comunicare <i 9n num8rul de componente de,ecte ce pot ,i acceptate. ?xist8 numeroase rezultate Anegati2eB, margini in,erioare <i rezultate de
imposibilitate. :e poate demonstra c8 o problem8 particular8 nu poate ,i rezol2at8 9ntr%un tip particular de sistem distribuit, sau nu se poate rezol2a sub o anumit8 cantitate
dintr%o anumit8 resurs8. 5Ast,el de rezultate ;oac8 rolul celor de )3%completitudine din algoritmica sec2en7ial8.6
2. Legtura cu practica
Dac8 nu cel mai simplu, cu siguran78 cel mai 2eci exemplu de sistem distribuit este un sistem de operare pentru calculatoare sec2en7iale con2en7ionale. 3rocesele
de pe acela<i ard comunic8 utiliz>nd acela<i so,t sau prin scimburi de mesa;e, sau printr%un spa7iu comun de adresare. 3arta;area unei singure C31 de c8tre procese multiple
ridic8 probleme de concuren78 52irtual86. "ulte dintre problemele ridicate de un sistem de operare apar <i 9n alte sisteme distribuite, ca de exemplu excluderea mutual8,
detectarea <i pre2enirea dead%locCului.
"a<inile "/"D cu memorie parta;at8 sunt puternic interconectate 5tigtly coupled6 <i sunt numite uneori multiprocesoare. Acestea constau din componente ard
separate execut>nd un so,t comun. Conectarea se ,ace printr%un bus sau, mai pu7in ,rec2ent, printr%o re7ea cu comutatori. "a<inile "/"D pot ,i <i slab interconectate 5loosley
coupled6 <i nu au memorie comun8. ?le pot ,i o colec7ie de sta7ii de lucru dintr%o re7ea local8 sau o colec7ie de procesoare 9ntr%o re7ea cu comutatori.
:istemele distribuite <i mai pu7in interconectate pot ,i constituite din gazde autonome 9ntr%o re7ea local8 5ca de exemplu ?ternet6 sau ciar WA) 5cum ar ,i
/nternet6. @n acest caz, a2em componente ard separate execut>nd so,t separat de<i entit87ile interac7ioneaz8 prin inter,e7e bine de,inite ca de exemplu 0C3D/3, CEFGA sau ale
group$are sau middle$are.
Dup8 modul de comunicare <i gradul de sincronizare 2om considera trei modele principale:
1. Modelul asincron cu memorie partajat ! este reprezentat de ma<inile puternic cuplate 9n situa7ia comun8 9n care procesoarele nu%<i iau semnalul de ceas de la
o singur8 surs8!
(. Modelul asincron cu transmitere de mesaje ! este reprezentat de ma<inile pu7in cuplate <i WA)!
.. Modelul sincron cu transmitere de mesaje ! este o idealizare a sistemelor bazate pe transmiterea mesa;elor, 9n care se cunoa<te o anumit8 in,orma7ie re,eritoare
la timp 5ca de exemplu o margine superioar8 pentru 9ntirzierea mesa;elor6. :e poate simula un ast,el de model cu sisteme mai realiste, de exemplu prin
sincronizarea ceasurilor.
Modelele bizantine e2iden7iaz8 preocup8rile legate de posibilitatea de de,ec7iune a anumitor componente.
4. Algoritmi de baz n sisteme de tip transmitere de mesaje
@ntr%un sistem distribuit de tip "3 5message passing6 procesoarele comunic8 prin transmiterea de mesa;e prin canele de comunica7ie, ,iecare canal realiz>nd o conexiune
bidirec7ional8 9ntre dou8 procesoare.
"ul7imea canalelor de comunica7ie ,ormeaz8 topologia sistemului care poate ,i reprezentat8 printr%un gra, 5neorientat6 9n care nodurile sunt procesoarele iar muciile
sunt canalele de comunica7ie.
:istemul ,izic de interconectare reprezentat de topologia sistemului este re,erit <i ca reea.
1n algoritm pentru un sistem distribuit de tip "3 const8 dintr%un program local pentru ,iecare procesor din re7ea. 3rogramul local permite procesarea local8 precum <i
transmiterea <i recep7ionarea de mesa;e de la ,iecare din procesoarele 2ecine 9n topologia dat8.
1n sistem distribuit de tip "3 const8 din n procesoare: pH, p1, p(, I, pn%1.
Jiecare procesor pi este modelat ca o ma<in8 cu st8ri, cu mul7imea st8rilor Ki 5,init8 sau in,init86.
Jiecare procesor 2a ,i identi,icat cu un nod 9n re7ea. "uciile incidente cu procesorul pi sunt numerotate 1, (, I,v 5v ,iind gradul nodului pi6.
Erice stare a procesorului pi are (v componente speciale: outbufi(l) <i inbufi(l) cu 1 l v . Aceste componene speciale sunt mul7imi de mesa;e:
outbufi(l) p8streaz8 mesa;ele pe care pi le%a trimis 2ecinului s8u corespunz8tor muciei l <i care nu au ,ost 9nc8 transmise!
inbufi(l) p8streaz8 mesa;ele care au ,ost transmise lui pi pe canalul num8rul l incident cu pi 5trimise deci de cel8lalt procesor ce ,ormeaz8 acea mucie6 <i care n%au
,ost 9nc8 prelucrate 9ntr%un pas de calcul intern.
Ki con7ine o submul7ime de st8ri ini7iale. @ntr%o stare ini7ial8 inbufi(l) este 2id l 5anumite componente din outbufi(l) pot ,i ne2ideL6.
Ki M N inbufi(l) ! 1 l v O ,ormeaz8 mul7imea st8rilor accesibile.
Junc7ia de tranzi7ie a procesorului pi este de,init8 5ac7ioneaz86 pe aceast8 mul7ime a st8rilor accesibile. Fezultatul aplic8rii ,unc7iei de tranzi7ie asupra unei st8ri accesibile
2a ,i:
o nou8 stare accesibil8 9n care inbufi(l) este 2id l!
cel mult un mesa; pentru ,iecare lN1, (, I, vO: mesa;ul ce 2a ,i trimis 2ecinului de la cap8tul canalului num8rul l ! acesta 2a ,i depus 9n outbufi(l).
5"esa;ele trimise 9n prealabil de pi care a<teapt8 s8 ,ie expediate nu pot in,luen7a pasul curent al procesorului pi! ,iecare pas proceseaz8 toate mesa;ele care i%au ,ost
expediate lui pi, rezultatul ,iind o scimbare a st8rii <i cel mult un mesa; pentru ,iecare 2ecin.6
E con,igura7ie a sistemului este un 2ector CP5QH, Q1, I, Qn%16 unde QiKi pentru iNH, 1, I, n%1O. :t8rile din 2ariabilele outbuf dintr%o con,igura7ie reprezint8 mesa;ele
care sunt 9n tranzit pe canalele de comunica7ie.
E con,igura7ie ini7ial8 este o con,igura7ie 9n care ,iecare Qi este o stare ini7ial8 a lui pi.
Apari7iile ce pot a2ea loc 9n sistem sunt modelate ca e2enimente. 3entru sisteme de tip "3 a2em dou8 tipuri de e2enimente:
e2enimente de calcul : comp(i) cu semni,ica7ia c8 ,unc7ia de tranzi7ie a lui pi se aplic8 st8rii accesibile curente!
e2enimente de li2rare : del(ijm).
Comportarea sistemului 9n timp este modelat8 ca o execu7ie: <ir alternat de con,igura7ii <i e2enimente. Acest <ir trebuie s8 9ndeplineasc8 anumite condi7ii depinz>nd de
tipul de sistem pe care 9l model8m: condi7ii de siguran78 5sa,ety6 <i condi7ii de 2iabilitate 5li2eness6.
E condi7ie de siguran78 este o condi7ie ce trebuie s8 aib8 loc pentru oricare pre,ix ,init al <irului 5ce reprezint8 execu7ia6. E ast,el de condi7ie spune c8 nimic r8u nu s%a
9nt>mplat 9nc8.
E condi7ie de 2iabilitate este o condi7ie ce trebuie s8 aib8 loc de un anumit num8r de ori, posibil de o in,initate de ori 5odat8 <i odat8 P e2entually6 ce2a bun 2a a2ea loc.
1n <ir care satis,ace condi7iile de siguran78 2a ,i numit execu7ie.
E execu7ie care satis,ace condi7iile de 2iabilitate 2a ,i numit8 execu7ie admisibil8.
5. Sisteme P asincrone
)u exist8 o margine superioar8 asupra timpului necesar unui mesa; pentru a ,i expediat sau asupra timpului dintre doi pa<i consecuti2i ai unui procesor. ?xemplu:
/nternetul. De<i 9n practic8 se pot considera margini superioare pentru 9nt>rzierea mesa;elor <i timpilor pa<ilor procesorului, acestea sunt prea mari, se ating ,oarte rar <i se
scimb8 9n timp. :e pre,er8 proiectarea unor algoritmi independen7i de parametrii de timp: algoritmi asincroni.
1n segment de execu7ie 9ntr%un sistem distribuit de tip "3 asincron este un <ir P CH, H, C1, 1, C(, (, I.
unde CC este o con,igura7ie <i C este un e2eniment. Dac8 este ,init, atunci <irul se termin8 9ntr%o con,igura7ie.
?2enimentele C sunt de dou8 tipuri:
CPdel(ijm) : li2reaz8 mesa;ul m de la i la j. m este un element din outbufi(l) 9n CC%1 5l ,iind eticeta canalului Npi p;O dat8 de procesorul pi6. :ingura scimbare de la
CC%1 la CC este c8 m este <ters din outbufi(l) 9n CC <i este ad8ugat 9n inbufi(!) unde ! este eticeta canalului Npi p;O dat8 de p;. 5"esa;ul m este li2rat numai dac8 este 9n
tranzit <i singura scimbare este c8 este mutat din bu,,erul de ie<ire al trimi78torului 9n bu,,erul de intrare al receptorului6.
CPcomp(i) singura scimbare de la CC%1 la CC este c8 starea lui pi din CC%1 se modi,ic8 aplic>nd ,unc7ia de tranzi7ie a lui pi pentru starea accesibil8 din CC%1 <i se
ob7ine o nou8 stare 9n care mul7imea mesa;elor speci,icate de ,unc7ia de tranzi7ie sunt ad8ugate la 2ariabilele outbufi 9n CC. "esa;ele sunt trimise la acest e2eniment
5pi 9<i scimb8 starea <i trimite mesa;e con,orm programului local pe baza st8rii curente <i a tuturor mesa;elor ce i%au ,ost li2rate6. Dup8 acest e2eniment inbufi sunt
2ide.
E execu7ie este un segment de execu7ie cu CH con,igura7ie ini7ial8.
Cu ,iecare execu7ie 5segment de execu7ie6 se poate asocia o plani,icare 5segment de plani,icare6 care este <irul e2enimentelor din execu7ie 5segment de execu7ie6. ?ste clar
c8 nu orice <ir de e2enimente este o plani,icare.
Dac8 programele locale sunt deterministe, atunci execu7ia este unic determinat8 de con,igura7ia ini7ial8 <i plani,icare, <i se noteaz8 exec5CH, 6 . 5 P 1, (, I 6
E execu7ie este admisibil8 dac8 ,iecare procesor are o in,initate de e2enimente de calcul <i orice mesa; este odat8 <i odat8 li2rat.
Cerin7a existen7ei unei in,init87i de e2enimente de calcul modeleaz8 ,aptul c8 procesoarele nu pic8. )u 9nseamn8 c8 a2em bucle in,inite. 0erminarea se poate ob7ine
impun>nd ca ,unc7ia de tranzi7ie s8 nu mai modi,ice starea procesorului dup8 un anumit punct.
E plani,icare e admisibil8 dac8 e plani,icarea unei execu7ii admisibile.
!. Sisteme P sincrone
@n acest model o execu7ie este un <ir de con,igura7ii altern>nd cu e2enimente, parti7ionat 9n runde : segmente dis;uncte ale <irului. @n ,iecare rund8 trebuie s8 a2em c>te un
e2eniment de li2rare pentru orice mesa; din 2ariabilele outbuf ale tuturor procesoarelor din starea precedent8 rundei <i c>te un e2eniment de calcul pentru ,iecare procesor.
E execu7ie este admisibil8 dac8 este in,init8. 5not8m concordan7a cu de,ini7ia pentru sisteme asincrone6.
Ebser2a7ie: @ntr%un sistem distribuit sincron ,8r8 c8deri, dup8 ,ixarea algoritmului, singurul aspect rele2ant al execu7iilor care poate s8 di,ere este con,igura7ia ini7ial8.
@ntr%un sistem distribuit asincron pot exista mai multe execu7ii di,erite ale aceluia<i algoritm cu aceea<i con,igura7ie ini7ial8 5<i ,8r8 c8deri6 pentru c8 interlea2ing%ul
pa<ilor procesoarelor <i 9nt>rzierile mesa;elor nu sunt ,ixate.
". #omple$itate
?ste necesar8 no7iunea de terminare a unui algoritm. Jiecare procesor are o mul7ime de st8ri terminale pe care ,unc7ia de tranzi7ie nu le mai modi,ic8.
1n algoritm se termin8 atunci c>nd toate procesoarele se a,l8 9n stare ,inal8 5Ebs. : nu exist8 mesa;e 9n tranzit6.
"C = complexitatea mesa;elor 5comple"itatea de comunicare6 este num8rul maxim de mesa;e transmise pentru toate execu7iile admisibile ale algoritmului. Aceast8
de,ini7ie este 2alabil8 at>t pentru sisteme sincrone c>t <i pentru sisteme asincrone.
0C = complexitatea timp:
3entru sisteme sincrone este num8rul maxim de runde p>n8 la terminare 9ntr%o execu7ie admisibil8 oarecare!
3entru sisteme asincrone se presupune c8 9nt>rzierea maxim8 a li2r8rii mesa;elor necesit8 o unitate de timp <i se calculeaz8 timpul p>n8 la terminare.
?xecu7ie 9n timp 5timed execution6: ,iec8rui e2eniment i se asociaz8 un num8r real H reprezant>nd timpul la care apare! timpii 9ncep de la H <i sunt cresc8tori
pentru ,iecare procesor! dac8 execu7ia este in,init8 timpii tind la in,init. ?2enimentele dintr%o execu7ie sunt ordonate con,orm timpilor la care apar! pot exista mai
multe e2enimente care apar la acela<i moment de timp 5dac8 nu a,ecteaz8 acelea<i procesoare! comp(i) a,ecteaz8 procesorul pi, del(ijm) este un e2eniment asociat
<i procesorului pi <i procesorului p; la acela<i moment de timp6.
@nt>rzierea unui mesa; este di,eren7a dintre timpii asocia7i e2enimentului de calcul 5de tip comp6 <i de li2rare 5de tip del) re,eritori la acela<i mesa;.
Complexitatea timp este timpul maxim p>n8 la terminare pentru toate execu7iile 9n timp posibile, 9n care orice 9nt>rziere de mesa; este cel mult 1.
%. #on&en'ii de pseudocod
@n loc s8 prezent8m tranzi7ia st8rilor <i s8 in2ent8m un mecanism de control al interlea2e%ului 2om prezenta algoritmii:
9n proz8!
,olosind un pseudocod.
Algoritmii asincroni 2or ,i descri<i 9ntr%o manier8 interrupt%dri2en pentru ,iecare procesor.
@n modelul ,ormal mesa;ele care a<teapt8 9n 2ariabilele inbuf sunt prelucrate toate 9n acela<i timp. Rom descrie prelucrarea lor unul dup8 altul 9ntr%o ordine oarecare. Dac8
9ntr%un acela<i recipient sunt generate mai multe mesa;e, aceasta nu contra2ine modelului ,ormal pentru c8 pot ,i considerate un mesa; mare.
Rom e2iden7ia <i ac7iunea procesorului c>nd nu exist8 mesa;e.
?2enimentele care nu genereaz8 scimb8ri de stare <i transmisii de mesa;e nu 2or ,i listate.
1n algoritm asincron 2a putea ,i executat <i 9ntr%un sistem sincron dar pentru claritate algoritmii sincroni 2or ,i descri<i 9n termenii rundelor pentru ,iecare procesor.
3entru ,iecare rund8 se 2or descrie ac7iuni <i mesa;ele trimise pe baza mesa;elor tocmai primite.
"esa;ele ce trebuie trimise 9n prima rund8 sunt cele din 2ariabilele outbuf.
0erminarea 2a ,i implicit indicat8 prin ,aptul c8 nu mai urmeaz8 o rund8 nou8.
Rariabilele locale unui procesor pi nu 2or primi indicii i! 9n discu7ii <i demonstra7ii 2or ,i necesari ace<ti indici.
3entru algoritmi asincroni se 2a ,olosi cu2>ntul rezer2at AterminateB indic>nd ,aptul c8 procesorul intr8 9ntr%o stare terminal8.
(. )roadcast
@n re7ea se cunoa<te un arbore par7ial cu o r8d8cin8 speci,icat8 pr. Acest procesor di,uzeaz8 un mesa; " tuturor celorlalte procesoare.
Copii ale mesa;ului 2or ,i trimise pe muciile arborelui par7ial tuturor procesoarelor.
Jiecare procesor are un canal care trimite la p8rintele s8u parent <i o mul7ime de canale care conduc la copiii s8i din arbore cildren.
?xemplu:
Descrierea algoritmului 9n proz8:
r8d8cina pr trimite mesa;ul " pe canalele ce conduc la copii!
c>nd un proces prime<te mesa;ul " de la p8rinte, trimite " pe canalele ce conduc la copii.
Descrierea algoritmului 9n pseudocod:
Algoritm broadcast bazat pe un arbore par7ial
/ni7ial " este 9n tranzit de la pr la to7i copiii s8i 9n arbore.
Codul pentru pr:
1: la primirea nici unui mesa; DDprimul e2eniment de calcul pentru pr
(: terminate
Codul pentru pi H i n%1, ir
la primirea mesa;ului " de la parent
.: send " tuturor cildren
4: terminate
Descrierea algoritmului la ni2elul tranzi7iilor.
starea procesorului pi con7ine:
o 2ariabil8 parenti, care p8streaz8 un indice de procesor sau nil!
o 2ariabil8 c!ildreni, care p8streaz8 o mul7ime de indici!
o 2ariabil8 boolean8 terminatedi care indic8 dac8 pi este 9n stare terminal8.
/ni7ial, 2alorile 2ariabilelor parent <i c!ildren sunt ast,el 9nc>t ,ormeaz8 un arbore par7ial al re7elei cu r8d8cina 9n pr! toate 2ariabilele terminated sunt ,alse.
/ni7ial, outbufr(j) p8streaz8 " pentru ,iecare ; din c!ildrenr5aten7ie la indici: aici numerotarea e ,8cut8 dup8 indicii 2ecinilor pentru u<urin7a expunerii6.
Fezultatul lui comp(i) este: dac8 " este 9n inbufi(#) pentru un anumit C, atunci " este plasat 9n outbufi(j) pentru ,iecare ; din c!ildren <i pi intr8 9n starea terminal8
pun>nd terminatedi pe true. Daca i P r <i terminatedr este ,alse, atunci terminatedr este pus pe true.
Algoritmul este corect indi,erent dac8 sistemul este sincron sau asincron. Ciar mai mult, 0C <i "C 2or ,i acelea<i.
"C: num8rul de mesa;e transmise este clar n%1 P num8rul de mucii din arborele par7ial deci "CPn%1.
0C: mai di,icil8.
*ema1: @n orice execu7ie admisibil8 a algoritmului de broadcast 9n modelul sincron, orice procesor a,lat la distan7a t de pr 9n arborele par7ial prime<te mesa;ul " 9n runda
t.
Demonstra7ie: 3rin induc7ie dup8 t.
tP1 Con,orm descrierii algoritmului 5<i con2en7iilor de la descrierea rundelor6 9n runda 1 ,iecare copil al lui pr prime<te mesa;ul ".
3asul inducti2: 3resupunem c8 orice procesor a,lat la distan7a t%1 1de pr prime<te mesa;ul " 9n runda t%1.
0rebuie s8 demonstr8m c8 9n runda urm8toare, t, orice procesor a,lat la distan7a t prime<te ". Jie pi a,lat la distan7a t. 38rintele lui pi, p;, este la distan7a t%1. Con,orm
ipotezei iducti2e p; prime<te mesa;ul " 9n runda t%1. Din descrierea algoritmului p; trimite " lui pi 9n runda urm8toare, t.
0eorema 1: $"ist un algoritm sincron de broadcast cu MC egal cu n%& i 'C egal cu d atunci c(nd se cunoate un arbore parial de ad(ncime d.
:cimb>nd 9n lema precedent8 doar semni,ica7ia timpului 9ntr%un sistem asincron se ob7ine urm8toarea teorem8: 5lucr8m cu timpi din pentru a ,ace demonstra7ii
inducti2e6
0eorema 1S: $"ist un algoritm asincron de broadcast cu MC egal cu n%& si 'C egal cu d atunci c(nd se cunoate un arbore parial de ad(ncime d.
1*.#on&ergecast
3( 31 1 ( 1 (
?ste problema in2ers8 broadcastului: colectarea in,orma7iilor din noduri 9n r8d8cin8 5din nou se presupune existen7a unui arbore par7ial al re7elei6.
Consider8m o 2ariant8 speci,ic8 a acestei probleme:
/ni7ial, ,iecare procesor de7ine o 2aloare real8 xi.:e dore<te ca la terminarea algoritmului 9n r8d8cin8 s8 se a,le 2aloarea maxim8 din re7ea.
Descrierea algoritmului 9n proz8:
Dac8 pi este ,runz8 5nu are copii6 starteaz8 algoritmul prin trimiterea 2alorii xi p8rintelui s8u.
Dac8 p; nu este ,runz8, are C copii <i a<teapt8 s8 primeasc8 mesa;e con7in>nd 2i1, 2i(, ..., 2iC de la copiii s8i pi1, pi(, ..., piC. Calculeaz8
2;Pmax52;, 2i1, 2i(, ..., 2iC6 <i trimie 2; p8rintelui s8u.
0eorema(: $"ist un algoritm asincron convergent cu CM egal cu n%& i C' egal cu d atunci c(nd se cunoate un arbore p cu rdcina de ad(ncime d.
11.Inundarea +,looding- .i
#onstruirea unui arbore par'ial
?ste similar broadcastului ,8r8 s8 se cunoasc8 9n prealabil un arbore par7ial. :e dore<te di,uzarea unui mesa; " dintr%un procesor pr la toate celelalte.
pr starteaz8 algoritmul <i trimite " tuturor 2ecinilor. C>nd un procesor pi prime<te " pentru prima dat8 de la un 2ecin p;, pi trimite " la to7i ceilal7i cu excep7ia lui
p;.
C": "esa;ul " este trimis de cel mult dou8 ori pe ,iecare canal, cu excep7ia aceluia pe care " este trimis prima dat8, pe care e trimis o singur8 dat8. Deci C"P(m%
nT1 5sunt posibile execu7ii pentru care a2em dou8 trimiteri pentru ,iecare canal, cu excep7ia acelui din arborele impicit construit6. Deci C"PO5n
(
6.
?ste posibil ca un procesor s8 primesc8 " de la mai multi 2ecini odat8. ?2enimentul comp(i) prelucreaz8 toate mesa;ele primite 9ntre timp de la precedentele
e2enimente comp. Atunci se 2a alege doar unul dintre canale ca ,iind 9n arbore.
Algoritmul de inundare poate ,i explicit modi,icat pentru a e2iden7ia acest arbori cu r8d8cina 9n pr:
pr trimite " la to7i 2ecinii!
atunci c>nd pi prime<te mesa;ul " de la mai mul7i 2ecini alege unul p; <i 9i trimite un mesa; UparentV. 3entru toate celelalte procesoare precum <i pentru toate
de la care 2a primi " mai t>rziu trimite mesa;ul Ure;ectV!
cei care r8spund cu mesa;e UparentV 2or de2eni copii lui pi!
pi 9<i termin8 acti2itatea atunci c>nd tuturor mesa;elor " trimise, li se r8spunde cu UparentV sau Ure;ectV.
3seudocodul algoritmului ,looding modi,icat pentru construirea unui arbore par7ial 5codul pentru p/ 6
/ni7ial parent este nil, c!ildren <i ot!er sunt mul7imi 2ide.
-: la primirea nici unui mesa;:
-: i, iPr and 5parent is nil6 ten DDr8d8cina nu a trimis 9nc8 "
.: send " to all neigbors
4: parent :P i
W: la primirea mesa;ului " de la 2ecinul p;:
-: i, parent is nil ten DDpi nu a primit mesa;ul " mai 9nainte
X: parent :P ;
': send parent to p;
&: send " to all neigbors except p;
1H: else send Ure;ectV to p;
11: la primirea mesa;ului UparentV de la 2ecinul p;:
1(: add ; to c!ildren
1.: i, c!ildren ot!er P to7i 2ecinii = parent ten terminate
14: la primirea mesa;ului Ure;ectV de la 2ecinul p;:
1W: add ; to ot!er
1-: i, c!ildren ot!er P to7i 2ecinii = parent ten terminate
Fe7eaua ,iind conex8 ,iecare nod este accesat din pr la s,>r<itul algoritmului 5se poate demonstra inducti26. 1n nod este accesat din pr dac8 <i numai dac8 9<i ,ixeaz8
2ariabila parent. /nexisten7a circuitelor se datoreaz8 modului de ,ixare a 2ariabilei parent.
0eorema.: $"ist un algoritm asincron pentru determinarea unui arbore parial )ntr%o reea cu m muc!ii i diametrul * dintr%un nod fi"at cu CM+O(m) i
C'+O(*).
Ebser2a7ie: algoritmul ,unc7ioneaz8 <i 9n modelul sincron. De data aceasta 9ns8 arborele construit este garantat a ,i de tip GJ: 5demonstra7ia este e2ident8 prin
induc7ie dup8 num8rul de runde6.
@n modelul asincron pentru orice arbore par7ial cu r8d8cina 9n pr se poate construi o execu7ie admisibil8 care s8%l construiasc8 5aici inter2ine interlea2ing%ul, prin
alegerea unei plani,ic8ri admisibile corespunz8toare6.
12. Alegerea liderului n inele
Inel: :istem distribuit cu topologia dat8 de gra,ul circuit Cn, nY(.
/nelele corespund sistemelor de comunica7ie reale, de ex. to/en rings.
Alegerea liderului 5leader election6 este o paradigm8 simpl8 <i interesant8 pentru a e2iden7ia elemente de complexitate a comunicatiei 9n sisteme distribuite, dar <i pentru a
trans,orma un sistem distribuit descentralizat 9n unul centralizat.
?xemplu: C>nd 9ntr%un sistem distribuit apare un interbloca; se ,ormeaz8 un circuit 9n care procesoarele se a<teapt8 unele pe altele! atunci se alege unul din ele ca lider <i este
scos din circuit.
Problema0 Jiecare procesor trebuie s8 decid8 dac8 este sau nu lider cu condi7ia c8 exact unul 2a decide c8 este lider.
1n algoritm rezol28 problema alegerii liderului dac8 satis,ace:
- st8rile terminale sunt parti7ionate 9n ales <i neales. Edat8 ce un procesor intr8 9ntr%o stare terminal8 de un anumit tip r8m>ne 9n acel tip.
- 9n orice execu7ie admisibil8 exact un procesor 5liderul6 intr8 9ntr%o stare terminal8 de tip ales, celelalte intr8 9ntr%o stare de tip neales.
/nelul: mucii 9ntre pi <i piT1

i, Hin%1 5adunarea mod n6.


Inelul orientat0

i canalul lui pi c8tre piT1 este eticetat cu 1 5st>nga, sensul acelor de ceasornic6! canalul lui pi c8tre pi%1 este eticetat ( 5dreapta, sensul in2ers al acelor de
ceasornic6.
3H
Inele anonime0 procesoarele nu au un identi,icator unic care s8 ,ie ,olosit de algoritm 5oricare procesor este reprezentat de aceea<i ma<in8 cu st8ri6.
@n descrierea algoritmului recipien7ii mesa;elor pot ,i speci,ica7i numai 9n termenii eticet8rii canalelor: 2ecinul din st>nga, 2ecinul din dreapta.
Dac8 nPnum8rul procesoarelor din inel nu este cunoscut de procesoare atunci a2em algoritmi uniformi0 algoritmul este acela<i pentru orice 2aloare a lui n. Alt,el, algoritmi
neuniformi: acela<i algoritm pentru ,iecare procesor dar care poate ,i di,erit pentru di,erite 2alori ale lui n.
Rom demonstra inexisten7a unui algoritm de alegere a leaderului 9ntr%un inel anonim, sincron <i neuni,orm 5adic8 9n cele mai tari condi7ii! cu at>t mai mult 2a
rezulta pentru cazul uni,orm! ca at>t mai mult 2a rezulta pentru cazul asincron6.
0eorema. ,u e"ist algoritmi neuniformi anonimi pentru alegerea liderului )n inele sincrone.
Demonstra7ie.Jie un inel oarecare de dimensiune nV1. 3resupunem c8 exist8 a algoritm anonim de alegere a liderului. Cum inelul este sincron <i exist8 doar o singur8
con,igura7ie ini7ial8 rezult8 c8 exist8 o unic8 execu7ie admisibil8 a lui A pe F. 3entru orice rund8 C o execu7ie admisibil8 a lui A pe F, starea oric8rui proces este aceea<i
la s,>r<itul rundei C 5inductie e2ident86.
11. Inele asincrone
Jiecare procesor are un identi,icator unic, 9ntreg nenegati2 oarecare 5starea procesorului pi are o component8 idi ini7ializat8 cu identi,icatorul lui pi6. 1n algoritm 5neanonim6
este uni2orm dac8 pentru orice identi,icator exist8 o ma<in8 cu st8ri <i indi,erent de dimensiunea inelului algoritmul este corect 5atunci c>nd procesorul asociat ma<inii cu st8ri
corespunde identi,icatorului s8u6 5exist8 doar un program local pentru un procesor cu un identi,icator dat, indi,erent de num8rul procesoarelor6.
1n algoritm 5neanonim6 este neuni2orm dac8 pentru

n <i pentru

identi,icator exist8 o ma<in8 cu st8ri.


3n algoritm cu #45+n
2
-
Junc7ioneaz8 ciar dac8 inelul este unidirectional.
- Jiecare procesor trimite un mesa; cu identi,icatorul s8u, 2ecinului din st>nga <i a<teapt8 mesa; de la 2ecinul din dreapta.
- *a primirea unui mesa; 5de la 2ecinul din dreapta6 compar8 identi,icatorul primit cu al s8u. Dac8 cel primit este mai mare 9l trimite mai departe 2ecinului din st>nga.
Alt,el, 9l A9ngiteB <i nu%l mai trimite mai departe.
- Dac8 un procesor prime<te un mesa; cu identi,icatorul egal cu cel pe care 9l are atunci se declar8 lider <i trimite un mesa; de terminare 2ecinului din st>nga si 9<i termin8
acti2itatea, ca lider.
- 1n procesor care prime<te un mesa; de terminare 9l trimite la st>nga <i termin8 ca nelider.
)ici un procesor nu trimite mai multe de nT1 mesa;e 9ntr%o execu7ie admisibil8. Deci, "CPE5n
(
6. Consider8m inelul cu identi,:
"esa;ul proces cu identi,icatorul i este trimis exact de iT1 ori. )um8rul total de mesa;e 5T cele de terminare6 este
6 n 5 6 1 i 5 n
(
1 n
H i
+ +

.
3n algoritm cu #45+nlog n-
Aceea<i idee: mesa;ul procesorului cu identi,icatorul maxim tra2erseaz8
inelul <i se 9ntoarce la acest procesor, care se declar8 lider.
C%2ecin8tatea procesorului pi este mul7imea procesoarelor a,late la distan78
mai mic8 sau egal8 cu # de pi pe inel 5la st>nga <i la dreapta6. C%2ecin8tatea unui
procesor are (CT1 procesoare.
Algoritmul lucreaz8 9n dou8 ,aze. @n ,aza l un procesor 9ncearc8 s8 de2in8 lider
temporar 9n (
l
%2ecin8tatea sa. *iderii 5temporari6 din ,aza l continu8 ,az8 l-&.
- 9n ,az8 H, ,iecare procesor trimite un mesa; UprobeV con7in>nd identi,icatorul s8u 9n 1%2ecin8tatea sa, adic8 la cei ( 2ecini. Dac8 un procesor prime<te un mesa; UprobeV
compar8 identi,icatorul primit cu al s8u <i numai dac8 cel primit este mai mare r8spunde cu un mesa; UreplyV. 1n procesor ce prime<te ambele r8spunsuri de2ine lider
temporar <i trece la ,aza 1.
- @n ,aza l un procesor pi, de2enit lider temporar, 9n ,aza precedent8 trimite mesa;e probe la st>nga <i la dreapta 9n (
l
%2ecin8tatea sa sec2en7ial.Jiecare din cele dou8 mesa;e
tra2erseaza (
l
%2ecin8tatea 9ntr%o directie! dac8 nu%i cum2a 9ngi7it 9n aceast8 tra2ersare, a;unge la cap8t. Acest ultim procesor trimite un mesa; UreplyV lui p i. Dac8 pi
prime<te reply din ambele direc7ii, de2ine lider temporar pentru ,aza l <i trece la ,aza l-&.
3entru implementare, mesa;ele UprobeV au trei c>mpuri: identi,icator, num8r de ,az8, num8r de opuri. )um8rul de opuri este ini7ializat cu H <i incrementat cu 1 ori de c>te
ori este transmis mai departe. 1n procesor este ultimul dintr%o (
l
2ecin8tate dac8 prime<te un mesa; cu num8rul de opuri egal cu (
l
.
Algoritm asincron de alegere a liderului.
/ni7ial asleepPtrue
1: la primirea niciunui mesa;:
(: i, asleep ten
.: asleep:P,alse
4: send Uprobe id, H,HV la st>nga <i la dreapta
W: la primirea unui mesa; Uprobe jldV din st>nga 5respecti2 dreapta6:
-: i, j+id ten terminate as te leader
X: i, j.id and d/0
l
ten DDtransmite mesa;ul
': send Uprobe j l d-&V la dreapta 5respecti2 st>nga6
&: i, ;Vid and d P(
l
ten
1H: send Urepl1 j l. la st>nga 5respecti2 dreapta6
11: la primirea unui mesa; Urepl1 j lV din st>nga 5respecti2 dreapta6
1(: i, j

id ten send Urepl1 j lV la dreapta 5respecti2 st>nga6


1.: else
14: i, a primit de;a Urepl1 j lVdin dreapta 5respecti2 st>nga6 ten
1W: send Uprobe id l-&2V la st>nga <i la dreapta DDlider temporar <i
9ncepe o nou8 ,az8
5bser&a'ie
y
x
pi
p;
p1 p(
Q1 Q(
p1 p(
Q1 Q(
)um8rul de mesa;e ini7iate de un lider temporar 9n ,aza l este de
l
0 3
.
C>7i lideri temporari a2em 9ntr%o ,az8 lZ
Lema 10 3entru
1 C
num8rul procesoarelor care de2in lideri temporari la s,>r<itul ,azei C este
1 (
n
C
+
.
6emonstra'ie.
Dac8 pi <i p; 2or ,i ambii lideri temporari distan7a dintre ei trebuie s8 ,ie mai mare sau egal8 cu (
C
T1 5alt,el unul
dintre ei 2a ,i 9ngi7it de cel8lalt6. *ema este acum e2ident8.
@n particular, 9n ,aza logn%1 2a exista un singur lider temporar. )um8rul total de mesa;e este deci mai mic sau
egal cu


+
+
+
1 n log
1 l
1 l
l
H ,aza
n log n ' n
1 (
n
( 4 n 4
7eorema 2 $"ist un algoritm asincron de alegere a liderului )ntr%un inel neanonim astfel )nc(t MC+4(nlogn).
5 margine in2erioar de 6 n log n 5
Demonstr8m c8 algoritmul prezentat este asimptotic optimal: orice algoritm ce alege liderul 9ntr%un inel asincron trimite cel pu7in 6 n log n 5 mesa;e. "arginea
in,erioar8 este pentru algoritmi uni,ormi.
3resupunem c8 a2em un algoritm uni,orm A care rezol28 problema alegerii liderului 5procesorul cu identi,icatorul maxim se declar8 lider <i transmite identi,icatorul s8u
tuturor celorlal7i care 2or ,i neale<i6.
Demonstr8m c8 exist8 o execu7ie admisibil8 a lui A 9n care se trimit 6 n log n 5 mesa;e.
/deea: se consider8 o execu7ie a algoritmului pe inele de dimensiune
n D( si se combina doua ast,el de executii pe un inel de dimensiune n ob7inut din cele dou8 inele mici. De ,apt 2om lucra cu plani,ic8ri pentru c8 9n execu7ii a2em con,igura7ii,
9n care sunt e2iden7iate st8rile tuturor celor n procesoare.
6e2ini'ie. E plani,icare a lui A pentru un inel este desc8is dac8 exist8 o mucie e 9n inel ast,el 9nc>t 9n nu este trimis nici un mesa; pe mucia e 5indi,erent de direc7ie6! e
este mucia descis8 a lui .
5bser&a'ie .
1. )u este obligatoriu ca o plani,icare descis8 s8 ,ie admisibil8! ea poate ,i ,init8 <i procesoarele s8 nu ,i terminat.
2. Rom presupune c8 n este o putere a lui ( pentru e2itarea unor detalii tenice.
7eorema 1 Pentru orice n i orice mulime de n identificatori e"ist un inel ce folosete ac identif care are o planificare desc!is pentru A )n care se primesc cel puin M(n)
mesaje unde M(0)+& i

,
_

+ 1
(
n
(
1
6
(
n
5 " ( 6 n 5 " , nV(.
5bser&a'ie Fezol2area recurentei pentru "5n6 conduce la "5n6P5nlog n 6
6emonstra'ie 3rin induc7ie dupa n.
)aza nP(
3resupunem


x identi,icatorul lui po si y identi,icatorul lui p1.
Jie o execu7ie admisibil8 a lui A pe acest inel. Cum A este corect, odat8 <i odat8 p1 2a scrie x 9n . Cel pu7in un mesa; este primit 9n .
Jie cel mai scurt pre,ix al plani,ic8rii cu proprietatea c8 p1 prime<te un mesa; de la pH:
2a ,i o plani,icare descis8 cu mucia descis8 cealalt8 dec>t cea pe care se prime<te mesa;ul.
Pasul inducti& Jie : o mul7ime de n identi,icatori. 3arti7ion8m : 9n :1 <i :( de dimensiunea nD(. Din ipoteza inducti28 rezult8 c8 exist8 Fi inel ce ,olose<te identi,icatorii din :i,
care are o plani,icare descis8 i a lui A 9n care se primesc cel pu7in "5nD(6 mesa;e 5iP1,(6. Jie ei mucia descis8 a lui Fi. eiPpiQi. Consider8m inelul F ob7inut ast,el
1 urmat de ( este o plani,icare pentru A 9n F. 5:e consider8 apari7ia
e2enimentului din 1 9ncep>nd cu o con,igura7ie ini7ial8 a lui F! cum
procesoarele din F1 nu pot distinge 9n timpul acestor e2enimente dac8 F1 este un inel
independent sau subinel al lui F, ele execut8 1 exact ca <i cum F1 ar ,i ,ost independent. @n
continuare se execut8 (6. Deci 1( este o plani,icare pentru F cu cel pu7in ("

,
_

(
n
mesa;e primite.
Jor78m 9n continuare algoritmul s8 primeasc8

,
_

1
(
n
(
1
mesa;e suplimentare bloc>nd sau ep sau eQ, dar nu am>ndou8.
Consider8m orice plani,icare ,init8 de ,orma 1(. 9n care ep <i eQ r8m>nd descise. Dac8 exist8 una cu cel pu7in

,
_

1
(
n
(
1
mesa;e primite ., lema este demonstrat8.
Dac8 nu exist8 o ast,el de plani,icare exist8 o plani,icare 1(. care 2a rezulta o execu7ie ce a;unge 9ntr%o stare Amut8B: nu exist8 nici un <ir de e2enimente de calcul din acea
stare, care s8 nu mai transmit8 2reun mesa;. 3rocesoarele nu 2or trimite nici un mesa; p>n8 nu 2or mai primi unul. E con,igura7ie este Amut8B 9n raport cu ep sau eQ, dac8 nu
exist8 mesa;e 9n tranzit cu excep7ia muciilor descise ep <i eQ <i orice procesor este 9ntr%o stare mut8.
po p1
F1
F( F1 F( F
e
Q
3
K
e
p
3resupunem c8 procesorul cu identi,icator maxim este 9n F1. Cum nici un mesa; nu%i li2rat din F1 lui F(, procesoarele din F( nu cunosc identi,icatorul liderului <i nici un
procesor din F( nu poate termina la s,>r<itul lui 1(.. @n orice execu7ie admisibil8 extinz>nd 1(. orice procesor din F( trebuie s8 primeasc8 un mesa; adi7ional 9nainte de
terminare 5pentru a a,la identi,icatorul liderului6. Deci pe F trebuie s8 ,ie primite

,
_

(
n
mesa;e adi7ionale.
3utem demonstra c8 este su,icient s8 debloc8m doar una din ep sau eQ <i 9nc8 s8 ,or78m primirea a

,
_

(
n
mesa;e.
?xist8 un segment ,init de plani,icare 4 9n care

,
_

1
(
n
(
1
mesa;e sunt primite <i ast,el 9nc>t 1(.4 este o plani,icare 9n care ep sau eQ este descis8.
Jie 4
SS
ast,el 9nc>t 1(.4
SS
este o plani,icare admisibil8. 0oate mesa;ele sunt li2rate pe ep sau eQ <i toate procesele se termin8. Cel pu7in
(
n
mesa;e sunt primite 9n 4
SS
p>n8
A se termin8. Jie 4
S
cel mai scurt pre,ix al 4
SS
9n care sunt primite 1
(
n
mesa;e. Consider8m toate procesoarele din F care primesc mesa;e 9n 4
S
. Cum s%a plecat dintr%o
stare mut8, cu mesa;e 9n tranzit doar pe ep sau eQ, aceste procesoare ,ormeaz8 dou8 mul7imi consecuti2e de procesoare 3 <i K. 3 con7ine procesoarele trezite de deblocarea lui ep
<i deci 3 con7ine p1 sau p(. :imilar K con7ine Q1 sau Q(. Cum ,iecare din aceste mul7imi con7ine cel mult 1
(
n
procesoare <i cum sunt consecuti2e ele sunt dis;uncte.
)um8rul mesa;elor primite de proccesoarele uneia din cele dou8 mul7imi este mai mare sau egal cu

,
_

1
(
n
(
1
. 3resupunem c8 3. Jie 4 sub<irul lui 4
S
care con7ine
numai e2enimente re,eritoare la procesoarele lui 3. Cum 9n 4
S
nu exist8 comunicare 9ntre procesoarele din 3 <i K rezult8 c8 1(.4 este o plani,icare. @n aceast8 plani,icare
sunt primite cel pu7in

,
_

1
(
n
(
1
mesa;e 9n 4 <i 9n plus din construc7ie nici un mesa; nu este trimis pe eQ. Deci 1(.4 este plani,icarea descis8 cerut8.
14. Inele sincrone.
Demonstratia c8 marginea in,erioar8 de ( ) n log n pentru alegerea liderului 9n inele asincrone s%a bazat pe 9nt>rzierea mesa;elor pentru perioade arbitrar de mari.
@n modelul sincron 9nt>rzierea mesa;elor e ,ixat8 <i deci se pot ob7ine rezultate mai bune. "ai mult, 9n acest model se poate ob7ine in,ormatie nu numai din primirea
mesa;elor dar <i din neprimirea lor 9ntr%o anumit8 rund8.
3n algoritm neuni2orm
*iderul P procesorul cu identi,icator minim.
Algoritmul lucreaz8 9n ,aze, ,iecare ,ormat8 din n runde 5n P num8rul procesoarelor din inel6.
@n ,aza i 5iH6 dac8 exist8 un procesor cu identi,icatorul i, el este ales ca lider <i algoritmul se termin8.
5,aza i are rundele niT1, niT(, I, niTn! la 9nceputul ,azei i dac8 un identi,icator al unui procesor este i <i acest procesor nu s%a terminat, el trimite un mesa; de%a lungul
inelului <i termin8 ca lider. Dac8 identi,icatorul procesorului nu este i <i prime<te un mesa; 9n ,aza i, trimite un mesa; mai departe <i se termin8 ca nelider6.
?xact n mesa;e sunt trimise 59n ,aza 9n care liderul este g8sit6. )um8rul de runde depinde de identi,icatorul minim din inel: dac8 acesta este i atunci a2em n5iT16 runde.
5bser&a'ie.
/nelul poate ,i si unidirec7ional! algoritmul presupune cunoa<terea lui n, iar startul este sincron.
3n algoritm uni2orm.
)u 2a ,i necesara dimensiunea inelului. @n plus 2om a2ea o 2ersiune pu7in mai general8 pentru un sistem sincron: nu%i necesar ca procesoarele s8 9nceap8 alg simultan. 1n
procesor sau se acti2eaz8 spontan 9ntr%o rund8 oarecare sau la primirea unui mesa;.
Problema0 E mul7ime de procesoare se acti2eaz8 spontan <i de2in candida7i. Dintre ele, cel cu identi,icatorul minim este ales lider.
Celelalte proc 2or ,i acti2ate la primirea primului mesa;, dar ele nu 2or participa la procesul de alegere: sunt pasi2eL
/n solu7ia pe care o d8m apar doua idei noi:
% mesa;ele ce pornesc de la di,erite procesoare sunt transmise mai departe cu 2iteze di,erite. Dac8 un mesa; pro2ine de la un procesor cu identi,icatorul egal cu i el este
9nt>rziat (
i
%1 runde la ,iecare procesor care 9l prime<te, 9nainte de a ,i transmis mai departe 9n sensul acelor de ceasornic.
%pentru depistarea startului nesincronizat se adaug8 o ,az8 preliminar8 de de<teptare. @n aceast8 ,az8 un procesor care se acti2eaz8 spontan trimite un mesa; de AtrezireB pe
inel! acest mesa; este transmis ,8r8 9nt>rziere.
Deci un mesa; poate ,i 9n prima 2az p>n8 9nt>lne<te un procesor acti2 59n acest timp parcurge inelul cu 2iteza 16! dup8 9nt>lnirea primului procesor acti2 mesa;ul intr8 9n 2aza
a II a 9n care este transmis mai departe cu 2iteza (
i
5,iecare procesor acti2 9l 9nt>rzie cu (
i
%1 runde6.
Dup8 n runde de la acti2area primului procesor 2or r8m>ne numai mesa;e 9n ,aza a // a <i liderul este ales dintre procesoarele participante.
Algoritm sincron de alegere a liderului n inele
/ni7ial 5aiting este 2id8 <i asleep este true
1: Jie 6 mul7imea mesa;elor primite 9n ac. e2. de calc
(: 7:PH DDmesa;ele cer 2or ,i trimise
.: /, asleep ten
4: asleep:P,alse
W: i, 6 is empty ten
-: min8+id DDparticipant la alegere
X: adaug8 UidV la 7
': else min:P
&: ,or eacUmV in 6 do
1H: i, m/min ten
11: de2ine neales
1(: adaug8 UmV la $aiting <i 7ine minte c>nd UmV a ,ost ad8ugat
1.: min8+m
14: i, m+id ten de2ine ales DDdac8 m.min m 2a ,i 9ngi7it
1W: ,or eac UmV in 5aiting do
1-: i, 5UmV a ,ost primit (
m
%1 runde mai 9nainte6 ten
1X: scoate UmV din $aiting <i adaug8%l la 7
1': send 7 9n re7ea.
)ot8m idi identi,icatorul procesorului pi! UidiV mesa;ul transmis de pi.
Lema. )umai procesorul cu cel mai mic identi,icator printre participan7ii la alegere 9<i prime<te 9napoi mesa;ul.
6emonstra'ie0 Jie pi participantul la alegere cu identi,icatorul minim. 50rebuie s8 ,ie m8car unul6. )ici un procesor nu%l 2a 9ngi7i pe UidiV. Cum ,iecare procesor 2a 9nt>rzia
UidiV cel mult i
id
(
runde, pi 2a primi odat8 <i odat8 mesa;ul 9napoi.
Dac8 ar mai exista p; cu ;

i care prime<te 9napoi mesa;ul Uid;V, acesta trebuie s8 treac8 pe la toate pe la toate inclusi2 pe la pi, care nu%l 2a transmite. Contradic7ie.
)um8rul de mesa;e trimis 9ntr%o execu7ie admisibil8 a algoritmului.
1n mesa; este:
a. 9n prima ,az8.
b. 9n ,aza (
a
trimis 9nainte ca mesa;ul 2iitorului lider s8 intre 9n ,aza a (
a
.
c. 9n ,aza (
a
trimis dup8 ce mesa;ul 2iitorului lider a intrat 9n ,aza (
a
.
Lema 1 )um8rul mesa;elor din categoria a6 este cel mult n.
6emonstra'ie Erice procesor transmite mai departe cel mult un mesa; 9n prima ,az8. 3resupunem c8 pi transmite mai departe dou8 mesa;e 9n prima ,az8 Uid;V <i UidCV de la p;
respecti2 pC. 3resupunem c8 9n sensul acelor de ceas a2em pC%p;%pi. UidCV trece de p; 9nainte de a a;unge la pi. Dac8 UidCV a;unge 9n p; dup8 ce acesta s%a trezit <i a trimis Uid;V
atunci UidCV 2a continua ca un mesa; 9n ,aza (
a
la 2iteza C
id
(
! alt,el, p; nu particip8 la alegere <i Uid;V nu este trimis. Deci sau UidCV a;unge 9n pi 9n ,aza (
a
sau Uid;V nu este
trimis. Contradic7ie.
Jie r prima rund8 9n care se trezesc un grup de procesoare <i ,ie pi unul dintre ele. 1rm8toarea lem8 arat8 c8 n runde dup8 ce primul procesor starteaz8 execu7ia algoritmului,
toate mesa;ele sunt 9n ,aza a // a.
Lema 2 Dac8 p; este la distan7a C 59n sensul acelor de ceas6 de pi, atunci p; prime<te un mesa; 9n ,aza /
a
cel t>rziu 9n runda rTC.
6emonstra'ie: /nduc7ie dup8 C.
Gaza: CP1 ?2ident: 2ecinul lui pi prime<te mesa; 9n runda rT1
3as inducti2: 3rocesorul ce precede pi este la distan7a C%1 9n rund rTC%1 a primit de;a un mesa; 9n ,aza /
a
. Dac8 este de;a treaz a trimis mesa;ul de trezire lui pi, alt,el 9n runda
urm8toare pi 2a primi mesa;ul de la acesta.
Lema 1 )um8rul mesa;elor din categoria b6 este cel mult n.
6emonstra'ie Dup8 runda rTn nu mai a2em mesa;e de categoria /
a
5con,orm lemei 16. Con,orm lemei ( mesa;ul 2iitorului lider intr8 9n ,aza (
a
cel mult dup8 n runde dup8
primul mesa; trimis de algoritm. "esa;ele din categoria b6 sunt trimise numai 9n cele n runde ce urmeaz8 rundei c>nd primul s%a trezit. "esa;ul UiV 9n ,aza a (
a
e 9nt>rziat (
i
%1
runde 9nainte de a ,i transmis mai departe. Deci i este trimis cel mult de
i
(
n
ori 9n aceast8 categorie. Cum mesa;ele cu identi,icatori mici sunt transmise cu 2iteza mai mare,
num8rul maxim de mesa;e se ob7ine c>nd toate procesoarele particip8 la alegere <i c>nd identi,icatorii sunt c>t mai mici cu putin78: H,1,I,n%1.
"esa;ele 2iitorului lider 59n cazul nostru H6. Deci num8rul mesa;elor din categoria b6 este n
(
n
1 n
1 i
i

.
Jie pi procesorul cu identi,icator minim! nici un procesor nu 2a mai transmite mai departe un mesa; dup8 ce trimite mai departe UidiV.
Lema 4
)ici un mesa; nu este trimis mai departe dup8 ce UidiV se 9ntoarce la pi.
Lema 5
)um8rul mesa;elor din categoria c6 este cel mult (n.
6emonstra'ie Jie pi 2iitorul lider <i p; alt procesor participant la alegeri. Con,orm lemei precedente nu exist8 mesa;e 9n inel dup8 ce pi 9<i prime<te mesa;ul 9napoi. Cum UidiV
este 9nt>rziat cel mult i
id
(
runde la ,iecare procesor, cel mult i
id
( n
runde sunt necesare pentru ca UidiV s8 se 9ntoarc8 la pi. Deci mesa;ele din categoria c6 sunt trimise
numai 9n timpul a cel mult i
id
( n
runde. @n aceste runde Uid;V este retransmis de cel mult
; i
i
;
id id
id
id
( n ( n
(
1
ori.
)um8rul total de mesa;e din aceast8 categorie este

1 n
H ;
id id
i ;
(
n
Ca 9n demonstra7ia lemei . acesta este n (
(
n
1 n
H C
C

7eorema 4
"C a algoritmului precedent este
n 4
.
0CPE5n(
i
6, i P identi,icatorul liderului.
5 margine in2erior de +nlogn- pentru algoritmi neuni2ormi sincroni care 2olosesc identi2icatorii numai pentru compara'ii.
Algoritmii cu "CPE5n6 au ,olosit id. pentru a decide c>t de mult poate ,i 9nt>rziat un mesa;. )um8rul de runde depinde de m8rimea identi,icatorului care poate ,i imens8 in
compara7ie cu n.
Rom speci,ica inelul F prin lista identi,icatorilor 9n ordinea parcurgerii inelului 9n sensul acelor de ceasornic, 9ncep>nd cu identi,icatorul cel mai mic.
exec5F6 2a reprezenta execu7ia admisibil8 a unui algoritm pe inelul F 59ntruc>t con,igura7ia ini7ial8 este ,ixat8 ciar de listarea identi,icatorilor6.
Date dou8 inele F1 si F( pi procesor 9n F1 si p; procesor 9n F(! pi si p; sunt cuplate dac8 ocup8 aceea<i pozi7ie 9n respecti2a speci,icare a ,iec8rui inel 5sunt la aceea<i distan78
,a78 de procesorul cu identi,icator minim! distan7a se consider8 pe inel, 9n sensul acelor de ceas6.
/ntuiti2, un algoritm este bazat pe compara7ii dac8 se comport8 la ,el pe inele care au acela<i pattern de ordine a identi,icatorilor.
Dou8 inele [o, [1,...,[n%1 si \H,\1,...,\n%1 sunt eci2alente din punct de 2edere al ordinii dac8 oricare ar ,i i, ; [iU[; UPV \iU\;. Aceast8 no7iune se poate extinde la +%
2ecin8t87i.
Jie F1 si F( dou8 inele, pi din F1, p; din F( si dou8 execu7ii 1si ( ale algoritmului A pe F1 respecti2 F(.
Comportarea lui pi 9n 1 este similar8 9n runda C cu comportarea lui p; 9n ( 59n aceea<i rund86 dac8:
% pi trimite un mesa; 2ecin din st>nga 5dreapta6 9n runda C 9n 1 UPV p; trimite un mesa; 2ecin st>nga 5dreapta6 9n runda C 9n (.
% pi termin8 ca lider 9n runda C a lui 1 UPV p; termin8 ca lider 9n runda C a lui ( .
pi are comportare 9n 1 similar8 comportarii lui p; 9n ( UPV ele sunt similare 9n oricare rund8 C
H
.
1n algoritm este bazat pe compara'ii dac8 pentru orice perece de inele eci2alente din punct de 2edere al ordinii F1 <i F(, orice perece de procesoare cuplate au
comport8ri similare 9n exec5F16 <i exec5F(6.
/nexisten7a unui mesa; 9ntr%o anumit8 rund8 r este ,olositoare pentru procesorul pi numai dac8 ar ,i putut primi un mesa; 9n ac rund8 9ntr%un inel di,erit dar eci2alent
din punct de 2edere al ordinii.
E rund8 r este acti& 9n o execu7ie pe un inel F dac8 m8car un procesor trimite un mesa; 9n runda r a execu7iei. 3entru inelul F 2om nota cu r C indicele celei dea C
a
runde acti2e.
Ebser2a7ii.
1. Dac8 F1 <i F( sunt eci2alente din punct de 2edere al ordinii, o rund8 este acti28 9n exec5F16 UPV e acti28 9n exec5F(6.
(. @n C runde un mesa; poate tra2ersa C procesoare pe inel! rezult8 c8 starea unui procesor dup8 C runde depinde numai de C%2ecin8tatea sa. Aceast8 proprietate se extinde 9n
Lema !
Jie F1 <i F( dou8 inele eci2alente din punct de 2edere al ordinii <i pi 9n F1 <i p; 9n F( dou8 procesoare cu C%2ecin8t87i identice. Atunci <irul de tranzi7ii urmat de pi 9n rundele 1
%% rC ale lui F1 este acela<i cu cel urmat de p; 9n rundele 1 %% rC ale lui F(.
6emonstra'ie /n,ormal, trebuie ar8tat c8 dup8 C runde acti2e un procesor poate a,la doar in,orma7ia despre procesoarele a,late la distan7a cel mult C de el. Jormal, induc7ie
dup8 C 5CPH, au acela<i identi,icator <i deci sunt 9n aceea<i stare, pasul inducti2 e2ident6.
3roprietatea de poate extinde la procesoare cu C%2ecin8t87i eci2alente din punct de 2edere al ordinii, cu condi7ia ca inelul s8 ,ie spa'iat0 un inel de dimensiune n este spa7iat
dac8 oricare ar ,i " un identi,icator al s8u, identi,icatorii "%& "%0 9 "%n nu apar 9n inel.
Lema ". Jie F spa7iat <i pi <i p; dou8 procesoare cu C%2ecin8t87i eci2alente din punct de 2edere al ordinii. Atunci pi <i p; au comportamente similare 9n rundele 1,I, rC ale lui
exec5F6.
6emonstra'ie Construim un inel FS 5FS se poate construi pentru c8 F este spa7iat6 care satis,ace:
- FS eci2alent din punct de 2edere al ordinii cu F
- p; din FS este cuplat cu pi din F
- C%2ecin8tatea lui p; 9n FS este identic8 cu C%2ecin8tatea lui pi din F
- identi,icatorii lui FS sunt unici
Aplic8m *ema - <i ,aptul c8 algoritmul este bazat pe compara7ii.
7eorema 5

' n
putere a lui (, exist8 un inel :n de dimensiune n ast,el 9nc>t pentru orice algoritm sincron bazat pe compara7ii pentru alegerea liderului A, 9n orice execu7ie
admisibil8 a lui A sunt trimise 5nlogn6 mesa;e.
6emonstra'ie Jie A un algoritm sincron bazat pe compara7ii pentru alegerea liderului. Construim
] 1 n .. H ^ i F
re2
n

, idi al lui pi este re25i6P9ntregul cu
reprezentare binar8 ,olosind log n bi7i egal8 cu in2ersa repezent8rii binare a lui i.
nP'
Consider8m orice parti7ie a lui
re2
n
F
9n segmente de lg ;, ; putere a lui (. :e poate ar8ta c8 toate aceste segmente
sunt eci2alente din punct de 2edere al ordinii.
:n este o 2ersiune spa7iat8 a lui
re2
n
F
: 9nmul7im ,iecare identi,icator cu nT1 <i adun8m n. Aceste scimb8ri nu
a,ecteaz8 eci2alen7a din punct de 2edere al ordinii segmentelor.
'
n
C < <i oricare ar ,i ) o C%2ecin8tate a lui :n, exist8 mai mult de
6 1 C ( 5 (
n
+
C%2ecin8t87i ale lui :n care sunt
eci2alente din punct de 2edere al ordinii cu ).
)um8rul rundelor acti2e 9n exec5:n6 este
'
n
5alt,el, se demonstreaz8 c8 pe l>ng8 lider mai este ales <i alt procesor6.
Cel pu7in
6 1 C ( 5 (
n
+
mesa;e sunt trimise 9n cea de%a C
a
rund8 acti28 a lui exec5:n6,
'
n
C 1 , C
"C 9n :n este



+

' n
1 C
' n
1 C
6 n log n 5
'
n
ln
-
n
-
n
6 1 C ( 5 (
n
.
3H HHH(PH
31 1HH(P4 3X 111(PX
3- H11(P.
3W 1H1(PW
34 HH1(P1
3. 11H(P-
3( H1H(P(
1H
&W
&.
&4
&(
XW
&1
&H
-H
.H
(H
4H
4H
&H
XW
1HH
15. Sisteme distribuite cu memorie partajat.
Problema e$cluderii mutuale.
@ntr%un sistem distribuit cu memorie partajat, procesoarele comunic8 2ia o zon8 de memorie comun8 care con7ine o mul7ime de variabile partajate numite <i
regitri. Rom considera numai sisteme asincrone. Cazul sincron este studiat 9n modelele 3FA" ale calculului paralel.
:istemul con7ine n procesoare pH, p1, ..., pn%1 <i m regi<tri FH, F1, ..., Fm%1. Jiecare registru are un tip care speci,ic8: 2alorile ce pot ,i luate de registru, opera7iile ce pot
,i executate, 2alorile returnate de ,iecare opera7ie <i noua 2aloare a registrului care rezult8 dup8 ,iecare opera7ie. 3entru ,iecare registru poate ,i speci,icat8 o 2aloare ini7ial8.
E con2igura'ie este un 2ector C P 5QH, ..., Qn%1, H, ..., m%16 unde Qi este o stare a lui pi, iar ; este o 2aloare a registrului F;.
Jolosim nota7ia mem 5C6 P 5H, ..., m%16.
#on2igura'ie ini'ial0 procesoarele sunt 9n stare ini7ial8 <i regi<trii con7in 2alori ini7iale.
9&enimente: pa<i de calcul ai procesoarelor speci,ica7i prin indexul procesorului.
@n ,iecare pas al procesorului pi se execut8:
1. pi alege o 2ariabil8 parta;at8 pentru a o accesa cu a;utorul unei opera7ii speci,ice, pe baza st8rii sale curente!
(. se execut8 opera7ia asupra 2ariabilei parta;ate
.. pi 9<i scimb8 starea con,orm ,unc7iei de tranzi7ie pe baza st8rii curente <i a 2alorii returnate de opera7ia de la (.
Segment de e$ecu'ie: CH, 1, C(, (, ..., CC%1, C, CC, ...
cu CC con,iguratie <i C e2eiment. :emini,ica7ie:
Dac8 CPi, atunci CC se ob7ine din CC%1 prin modi,icarea unei singure 2ariabile parta;ate F; determinat8 de pi pe baza st8rii sale din CC%1 <i, de asemenea, CC di,er8 de CC%1 prin
starea procesorului pi, care se ob7ine cu a;utorul ,unc7iei de tranzi7ie din starea lui pi din CC%1 <i 2aloarea returnat8 de opera7ii asupra lui F;.
9$ecutie0 segment de execu7ie ce 9ncepe cu o con,igura7ie ini7ial8.
9$ecutie adminisibil0 ,iecare procesor are un num8r in,init de pa<i de calcul.
Plani2icare0 <ir de indici de procesoare.
P:plani2icare0 3 o mul7ime de procesoare 3 {pH, ..., pn%1}! <irul de indici se re,er8 numai la procesoarele din 3.
Stri terminale ca la sistemele distribuite de tip "3. 1n procesor a,lat 9ntr%o stare terminal8 nu 2a ,ace nici o modi,icare a 2ariabilelor parta;ate.
Algoritmul se termin8 c>nd toate procesoarele sunt 9n stare terminal8
Dac8 C este o con,iguratie si P i1, i(, .... o plani,icare, ele determina
?xec 5C, 6.
C_ este accesibil din C dac8 exist8 o plani,icare ,init8 ast,el 9nc>t C_ P 5C6, unde 5C6 este con,iguratia ,inal8 a lui ?xec 5C, 6.
# este similar lui #; 9n raport cu mul7imea de procesoare 3, _
`C C
P
dac8 ,iecare procesor din 3 are aceea<i stare <i 9n C <i 9n C_ <i mem5C6 P mem5C_6.
suri de comple$itate
#.7imp Z
#. Spa'iu Cantitatea de memorie parta;at8 necesar8 pentru a rezol2a problema. :e poate considera
a6 )umarul de 2ariabile parta;ate sau
b6 Cantitatea de spa7iu parta;at 5Pnr de bi7iP num8rul de 2alori distincte6 necesar.
Problema e$cluderii mutuale
Aceast8 problem8 se re,er8 la un grup de procesoare care, ocazional, necesit8 accesul la o resurs8 ce nu poate ,i ,olosit8 de mai mult de un singur procesor.
:iecare procesor dorete s e"ecute un segment de cod numit seciunea critic astfel )nc(t la orice moment de timp cel mult un procesor se afl )n seciunea critic
(excludere mutual) i dac unul sau mai multe procesoare )ncearc s intre )n seciunea critic atunci unul din ele o va face (odat i odat) at(ta timp c(t nici un procesor
nu rm(ne la nesf(rit )n seciunea critic (lipsa interblocajului + no deadlock).
E proprietate mai puternic8 dec>t 9n lipsa interbloca;ului este: dac8 un procesor dore<te s8 intre 9n sec7iunea critic8, atunci el 2a reu<i at>ta timp c>t nu exist8 nici un
procesor care s8 r8m>n8 la nes,>r<it 9n sec7iunea critic8 5no loc/out P no star&ation6.
:e pot impune <i condi7ii mai puternice: nici un procesor nu 2a 9ncerca mai mult de un num8r ,ixat de ori ca s8 intre 9n sec7iunea critic8.
3roblema este uzual8 9n proiectarea :.E., 9n programarea concurent8 <i solu7ia obi<nuit8 necesit8 primiti2e de sincronizare speciale 5monitoare, sema,oare6. Rom
prezenta solu7ii distribuite.
Rom presupune c8 programul ,iec8rui procesor e 9mp8r7it 9n urm8toarele sec7iuni:
9ntr< +tr<ing-0 codul ce se execut8 pentru preg8tirea intr8rii 9n sec7iunea
critic8.
#ritical0 codul ce trebuie prote;at de execu7ii concurente.
9$it0 codul ce se execut8 dup8 p8r8sirea sec7iunii critice.
=emainder0 restul codului.
Jiecare procesor cicleaz8: 5remainder, entry, critical <i exit 6.
1n algoritm pentru problema excluderii mutuale const8 din cod pentru entry <i exit.
/poteze:
% nici un procesor nu r8m>ne 9n sec7iunea critic8 la nes,>r<it.
% 2ariabilele locale sau parta;ate accesate 9n sec7iunea entry <i exit nu sunt accesate 9n sec7iunile critical <i remainder.
% un pas al procesoruui din sec7iunea remainder e urmat de un pas 9n
sec7iunea entry.
% un pas al procesorului din sec7iunea critical e urmat de un pas 9n sec7iunea
exit.
E e$ecu'ie este admisibil dac8 pentru oricare procesor pi, pi executa o in,initate de pa<i sau se termin8 9n sec7iunea remainder.
1n algoritm pentru un sistem cu memorie parta;at8 rezol28 problema excluderii mutuale ,8r8 deadlocC 5sau ,8r8 locCout6 dac8
9$cludere mutual: @n orice con,igura7ie a oricrei e$ecu'ii cel mult un procesor se a,l8 9n sec7iunea critic8.
>o deadloc/0 @n orice e$ecu'ie adminisibil dac8 un procesor se a,l8 9n sec7iunea entry 9ntr%o con,igura7ie exist8 o con,igura7ie ulterioar8 9n care un procesor este
9n sec7iunea critic8.
>o loc/out0 @n orice e$ecu'ie admisibil dac8 un procesor se a,l8 9n sec7iunea entry 9ntr%o con,igura7ie exist8 o con,igura7ie ulterioar8 9n care acel procesor este
9n sec7iunea critic8.
5bs: :ec7iunile exit 2or ,i coduri ,8r8 bucle <i deci nu 2a exista posibilitatea ca un procesor s8 r8m8n8 9n sec7iunea de ie<ire la nes,8r<it. 3rin urmare nu 2om impune
condi7ii speciale.
9$cludere mutual 2olosind primiti&e puternice
Fegistri binari 0est & :et
E 2ariabil8 test & set este o 2ariabil8 binar8 care suport8 dou8 opera7ii atomice: test&set <i reset.
test&set 5R:memory adress6 9ntoarce 2aloare binar8!
temp:PR
R:P1 DD cite<te <i actualiz.2ariab., atomic
Feturn 5temp6
Feset 5R:memory adress6
R:PH DD este 9n ,apt un $rite.
Algoritm de e$cludere mutual 2olosind registru test?set0
5codul pentru orice procesor6
/nitial R este H
U?ntryV:
1: $ait until test&set 5R6 P H
UCritical sectionV
U?xitV:
(: reset 5R6
UFemainderV.
@n sec7iunea entry procesorul pi testeaz8 repetat R p>n8 ob7ine H! ultimul test asigneaz8 lui R 2aloarea 1 cauz>nd ob7inerea lui 1 pentru orice test urm8tor <i interzic>nd
altui procesor intrarea 9n sec7iunea critic8. @n sec7iunea exit procesorul pi reseteaz8 pe R la 2aloarea H <i unul din procesoarele care a<teapt8 9n sec7iunea de intrare 2a
putea intra 9n sec7iunea critic8.
Algoritmul asigur8 excluderea mutual8 5demonstra7ia este imediat8 prin reducere la absurd6.
Algoritmul asigur8 inexisten7a deadlocC%ului 5cum excluderea mutual8 are loc, se poate demonstra prin induc7ie c8 RPH nici un procesor nu se a,l8 9n sec7iunea
critic86.
Concluzie:
7eorema. Algoritmul asigur8 excluderea mutual8 ,8r8 deadlocC ,oloind un singur registru test&set.
Ebser2a7ie: )u e asigurat no loc/out.
=egistri =::@
F"W 5R memory address, ,: ,unction6 9ntoarce o 2aloare!
temp: P R
R: P , 5R6
return 5temp6
1n registru read%modi,y%$rite R este o 2ariabil8 care permite procesorului s8 citeasc8 2aloarea curent8 a 2ariabilei, calculeaz8 o nou8 2aloare ca o ,unc7ie de
2aloarea curent8 <i scrie noua 2aloare 9n 2ariabil8. 0oate acestea ,ormeaz8 o instruc7iune atomic8.
Ebs: 1. tipul <i dim lui R nu%s rele2ante <i nu s%au trecut
(. Epera7ia test&set e un caz particular al opera7iei F"W, cu , 5R6 P 1, R.
Alg de e$clud mutual 2olosind un registru =@
5codul pentru orice procesor6
/nitial R P UH,HV
U?ntryV:
1: position P F"W 5R, UR.,irst, R.lastT1V6
(: repeat
.: Queue: P F"W 5R,R6
4: until 5Queue.,irst P position.last6
Ucritical sectionV
U?xitV
W F"W 5R, UR.,irstT1, R.lastV6
UFemainderV
Algoritmul organizeaz8 procesoarele 9ntr%o coad8, permi7>nd procesorului din capul cozii s8 intre 9n sec7iunea critic8. Jiecare procesor are dou8 2ariabile locale position <i
Aueue. Rariabila F"W are dou8 c>mpuri, ,irst <i last con7in>nd aticete a ale primului, respecti2 ultimului procesor din coad8. *a intrarea 9n sec7iunea UentryV un procesor
acite<tea 2aloarea lui R <i m8re<te R.last cu o unitate 9ntr%o opera7ie atomic8. Raloarea lui R.last ser2e<te ca ticetul s8u: a<teapt8 p9n8 c>nd R.,irst este egal cu ticetul s8u.
Atunci procesorul intr8 9n sec7iunea critic8. Dup8 p8r8sirea sec7iunii critice, procesorul iese din coad8 m8rind R.,irst, permi7>nd urm8torului procesor din coad8 s8 intre 9n
sec7iunea critic8.
)umai procesorul din capul cozii poate intra 9n sec7iunea critic8 <i el r8m>ne 9n capul cozii p>n8 ce p8r8se<te sec7iunea critic8. Algoritmul asigur8, deci, excluderea
mutual8. @n plus, disciplina cozii <i ipoteza c8 procesoarele nu stau la nes,>r<it 9n sec7iunea critic8, asigur8 proprietatea no locCout, care implic8 no deadlocC.
)u pot exista mai mult de n procesoare 9n coad8 9n acest timp. Deci toate calculele se pot ,ace mod n <i 2aloarea maxim8 a ambelor c>mpuri R.,irst <i R.last este n%
1. Deci R necesit8 ([log n] bi7i.
7eorema 2. Algoritmul asigur8 excluderea mutual8 ,8r8 locCout ,olosind un registru F"W cu ([log( n] bi7i.
5 margine in2erioar asupra numrului de stri de memorie.
@n solu7ia precedent8 num8rul st8ri de memorie este E 5n6. Rom ar8ta c8 dac8 algoritmul nu permite ca un procesor s8 tot ,ie ales ca s8 intre 9n sec7iunea critic8 de
un num8r nem8rginit de ori 9n de,a2oarea altuia atunci sunt necesare cel pu7in n st8ri de memorie.
6e2ini'ie. 1n algoritm de excludere mutual8 asigur8 /:mrginirea dac8 9n orice executie nu exist8 un procesor care s8 accead8 sec7iunea critic8 mai mult de C ori 9n timp ce
altul a<teapt8 9n sec7iunea entry.
5proprietatea de C%m8rginire T proprietatea de neexisten78 a deadlocC%ului asigura inexisten7a locCout%ului6.
7eorema10 Dac8 un algoritm rezol28 excluderea mutual8 ,8r8 deadlocC <i cu C%m8rg 5pentru un anumit C6, atunci algoritmul ,olose<te cel pu7in n st8ri de memorie
distincte .
Demonstra7ie. Rom numi o con,iguratie lini<tit8, dac8 toate procesoarele sunt 9n sec7iunea remainder.
Jie C con,igura7ia ini7iala 5deci, ea este lini<tit86. Jie H_ o pH % plani,icare in,init8. Cum exec 5C, H_6 este admisibil8 <i nu exist8 deadlocC exist8 H un pre,ix ,init
al lui H_ ast,el 9nc>t pH este 9n sec7iunea critic8 9n CH P H5C6. /nducti2, construim pentru i 1 i n%1 o plani,icare i ast,el 9nc>t pi este 9n sec7iunea entry 9n Ci P i 5Ci%16. Deci pH
e 9n sec7iunea critic8 <i p1, ..., pn%1 sunt 9n sec7iunea entry 9n Cn%1PH1...n%15C6.
3resupunem prin reducere la absurd c8 exista mai putin de n st8ri de memorie parta;ata distincte. Fezulta ca Ci, C; H< i< ; n cu st8ri de memorie parta;ata
identice: mem 5Ci6 P mem 5C;6. Din constructie, pH, ..., pi nu executa nici un pas 9n iT1,...; <i deci Ci si C; sunt {pH, ..., pi}%similare. Deci 9n Ci <i C; pH e 9n sec7iunea critic8 <i
p1, ..., pi sunt 9n sec7iunea entry. Aplic8m o {pH, ..., pi}% plani,icare in,init8 _ lui Ci. ?xec 5Ci , _6 este admisibil8, deci din ,aptul c8 algoritmul este ,8r8 deadlocC, rezult8 c8
l, H l i a.9. pl intr8 9n sec7iunea critic8 de o in,initate de ori. Jie un pre,ix ,init al lui _ 9n care pl intr8 de CT1 ori 9n sec7iunea critic8. Cum Ci si C; sunt {pH, ..., pi}%similare
<i este un {pH, ..., pi} % segment rezult8 c8 pl intr8 9n sec7iunea critic8 de CT1 ori 9n exec5C;, 6. Cum p; este 9n sec7iunea entry 9n C; <i pl intr8 9n sec7iunea critic8 de CT1 ori, se
2ioleaz8 condi7ia de C%m8rginire.
9$cludere mutual 2olosind regi.tri readBCrite
Algoritmul brutriei.
:tructuri de date parta;ate:
% >umber: tablou de n 9ntregi! componenta i p8streaza num8rul
5de ordine6 al lui pi
% #8oosing: tablou boolean de dimensiune n! componenta i este true 9n timpul 9n care pi este 9n procesul de ob7inere a num8rului s8u 5de ordine6.
Jiecare procesor pi care dore<te s8 intre 9n sec7iunea critic8, 9ncearc8 s8%<i aleag8 cel mai mic num8r mai mare dec>t numerele celorlalte procesoare <i%l scrie 9n
)umber [i]. ?ste posibil ca mai multe procesoare s8%<i aleag8 acela<i num8r, datorit8 citirii concurente a 2ariabilei )umber. 3entru a a2ea o ordine total8 se ,oloseste ca ticet
perecea 5)umber [i], i6 <i se consider8 ordinea lexicogra,ic8.
Dup8 alegerea unui numar, procesorul pi a<teapt8 p>n8 ce ticetul s8u de2ine cel mai mic. Compararea se ,ace dup8 ce procesoarele 9<i aleg numerele.
Algoritmul brutriei
/ni7ial >umber [i] P H <i #8oosing [i] P ,alse i
U?ntryV:
1: Coosing [i]: P true
(: )umber [i]: P max 5)umber [H], ..., )umber [n%1]6 T1
.: Coosing [i]: P ,alse
4: ,or ;:P1 to n 5;i6 do
W: $ait until Coosing [;]: P ,alse
-: $ait until )umber [;] P H or 5)umber[;], ;6 V 5)umber[i], i6
UCritical :ectionV
U?xitV:
X: )umber [i]: P H
UFemainderV
Jie o executie ,ixat8 a algoritmului.
Lema 1: @n orice con,ig C a lui , dac8 procesorul pi este 9n sec7iunea critic8 <i pentru C i )umber [C] H, atunci 5)umber [C], C6 V 5)umber [i], i6.
Lema 20 Dac8 pi e 9n sec7iunea critic8 atunci )umber [i] V H.
Din lema 1 <i lema ( rezula:
7eorema 4: Algoritmul brut8riei asigur8 excluderea mutual8.
7eorema 5: Algoritmul brut8riei este ,8r8 locCout.
6emonstra'ie: 1n procesor nu poate ,i blocat 9n timp ce 9<i alege num8rul s8u. Jie pi procesorul cu cel mai mic ticCet 5)umber [i], i6 care este 7inut la nes,>r<it 9n a,ara
sec7iunii critice.
0oate procesoarele ce 9<i aleg num8rul dup8 ce pi <i l%a ales, nu 2or mai putea s8 intre 9n sec7iunea critic8 9naintea lui pi. Din algoritmul lui pi, toate procesoarele cu
ticCete mai mici 2or intra 9n sec7iunea critic8 odat8 <i odat8. @n acest moment pi 2or trece toate testele de intrare 9n sec7iunea critic8.
5bs0 3entru sistemele reale implementarea algoritmului trebuie s8 rezol2e problema c8 numerele pot cre<te oric>t de mult.
9$cluderea mutual cu &ariabile =B@ mrginite.
A. Cazul a dou8 procesoare
3n algoritm de e$cludere mutual cu &ariabile mrginite pentru dou procesoare +care permite loc/out-
/nitial Want [i] P H , i P H, 1
codul pentru p* codul pentru p1
U?ntryV: U?ntryV:
1: Want [1]: P H
(: $ait until 5Want [H] P H6
.: Want [H]: P 1 .: Want [1]: P 1
4: i, 5Want [H]: P 16 ten goto 1!
W: $ait until 5Want [1]: P H6
UCritical sectionV UCritical sectionV
U?xitV: U?xitV:
-: Want [H]: P H -: Want [1]: P H
UFemainderV UFemainderV
Clar, 9n orice con,igura7ie a unei execu7ii, dac8 pi este dup8 linia . <i 9naintea liniei - 5inclusi2 9n sec7iunea critic86 atunci Want [i]: P 1.
pi ridic8 steagul 5Want [i]: P 16 <i inspecteaz8 steagul celuilalt 5cite<te Want [1%i]6.
C>nd un procesor 2ede c8 steagul celuilalt e ridicat, atunci nu intr8 9n sec7iunea critic8.
:olu7ia e asimetric8: p1 e totdeauna politicos! cedeaz8 intrarea lui pH! este posibil8 apari7ia locCoutului pentru p1.
"odi,icam algoritmul a.9. ,iecare procesor s8 dea prioritate celuilalt dup8 p8r8sirea sec7iunii critice 5e r>ndul t8u acum6.
Algoritmul de e$cludere mutual cu &ariabile mrginite pentru dou procesoare 2r loc/out
/ni7ial Want [i]: P H 5i P H,16 <i 3riority P H
codul pentru pi +i 4 *D1 -
U?ntryV:
1: Want [i]: P H
(: $ait until 5Want [1%i]: P H or 3riority P i6
.: Want [i]: P 1
4: i, 3riority P 1%i ten
W: i, Want [1%i]: P 1 ten goto 1:
-: else $ait until Want 51%i6 P H
UCritical :ectionV
U?xitV:
X: 3riority: P 1%i
': Want 5i6 P H
UFemainderV
5bs: 3rocesorul priority ;oac8 rolul lui pH din algoritmul precedent.
7eorema 5. Algoritmul asigur8 excluderea mutual8 ,8r8 locCout.
6em0 :e arat8 succesi2 asigurarea excluderii mutuale, inexisten7a deadlocCului <i apoi a locCoutului.
3n algoritm de e$cludere mutual cu &ariabile =B@ mrginite pentru n procesoare.
3rocesoarele : pH, p1, ..., pn.
Jie
1
1 log n # Consideram arborele binar complet cu (
#
,runze 5<i (
#T1
%1 noduri6. )umerotare: r8d8cina 1! copilul st>ng al lui 2 este (2 <i copilul drept (2T1.
Jrunzele arborelui (
#
, (
#
T1, ..., (
#-&
%1 :
)odului 2 ii asociem 5
[ ] H
v
ant
;
,
[ ] 1
v
ant
;
, 3riority
2
6 cu 2alorile ini7iale H.
3entru a 9ncepe competi7ia pentru sec7iunea critic8 procesorul pi execut8
]
( ) ( mod , ( D ( i i ,ode
#
+
5starteaz8 recursia6.
Algoritmul de e$cludere mutual pentru n procesoare
3rocedure )ode52:integer! side:H..16
1: Want
2
^side]:PH!
(: $ait until 5Want
2
^1%side]PH or 3riority
2
Pside6
.: Want
2
^side]:P1!
4: i, 53rority
2
P1%side6 ten
W: i, 5Want
2
^1%side]P16 ten goto 1:
-: else $ait until 5Want
2
^1%side]PH6
X: i, 52P16 ten
': UCritical :ectionV
&: else )ode5
]
( D v , 2 mod (6
1H: 3riority
2
:P1%side
11: Want
2
^side]:PH
end procedure
Jiec8rui nod i se asociaz8 o asec7iune critic8a: 5liniile X % &6 care include codul pentru entry 5liniile 1 % -6 executat la toate nodurile de pe drumul de la p8rintele nodului la
r8d8cin8, sec7iunea critic8 real8 <i codul exit 5liniile 1H % 116 executat la toate nodurile de pe drumul de la r8d8cin8 la p8rintele nodului.
9$cludere mutual rapid
Algoritmul brut8riei <i algoritmul precedent au de,ectul c8 numarul de pa<i pe care un procesor 9l execut8 c>nd 9ncearc8 s8 intre 9n sec7iunea critic8 depinde de n
ciar 9n absen7a competi7iei pentru accesarea sec7iunii critice.
@n sistemele reale este de a<teptat ca 9n cazul competi7iei pentru sec7iunea critic8 5accesul la un dispoziti2 parta;at de iDH, de ex6 numarul competitorilor s8 ,ie relati2
mic 9n compara7ie cu n.
1n algoritm de excludere mutual8 este rapid dac8 orice procesor intr8 9n sec7iunea critic8 9ntr%un num8r constant de pa<i 9n cazul c>nd el este singurul care 9ncearc8
s8 intre 9n sec7iunea critic8.
Algoritm de e$cludere mutual rapid
/nitial Jast%locC <i :lo$%locC sunt H <i Want [i] este ,alse i {H, 1, ..., n%1}
5codul pentru proc. pi6
U?ntryV:
1: Want [i]: P true
(: Jast%locC : P i
.: i, :lo$%locC H ten
4: Want [i]: P ,alse
W: $ait until :lo$%locC P H
-: goto 1
1
( .
4 W - X
p
H
p
1
p
(
p
.
p
4
p
W
p
-
p
X
X: :lo$%locC: P i
': i, Jast%locC i ten DD alt,el, intr8 pe calea rapida
&: Want [i]: P ,alse
1H: ,or ;, $ait until Want [;]: P ,alse
11: i, :lo$%locC i ten DD alt,el, intr8 pe calea lent8
1(: $ait until :lo$%locC P H
1.: goto 1
UCritical :ectionV
U?xitV:
14: :lo$%locC : P H
1W: Want [i]: P ,alse
UFemainderV.
1n algoritm rapid necesit8 ,olosirea 2ariabilelor parta;ate cu scriere multipl8! dac8 ,iecare 2ariabil8 ar ,i scris8 numai de un singur procesor, atunci un procesor care
ar dori s8 intre 9n sec7iunea critic8 trebuie s8 2eri,ice cel pu7in n 2ariabile pentru posibila competi7ie.
Algoritmul combin8 dou8 mecanisme: unul pentru a ob7ine intrare rapid8 9n sec7iunea critic8 c>nd numai un singur procesor dore<te s8 accead8 sec7iunea critic8 <i
altul pentru a asigura inexisten7a deadlocCului c>nd exist8 competi7ie.
1n procesor poate intra 9n sec7iunea critic8 sau g8sind Jast%locC P i 5linia '6 sau g8sind :lo$%locC P i 5linia 116.
Dac8 nici un procesor nu este 9n sec7iunea critic8 sau 9n sec7iunea entry, slo$%locC P H <i Want este ,alse pentru toate componentele. Atunci c>nd doar un singur
procesor pi trece 9n sec7iunea entry, pune Want [i] pe true <i Jast%locC pe i. Apoi 2eri, :lo$%lcC care este H. Apoi 2eri, Jast%locC <i cum nici un procesor nu%i 9n sec7iunea
critic8, 9l g8se<te i <i deci pi intr8 9n sec7iunea critic8 pe calea rapid8 execut>nd . $rite <i ( read.
)ici un alt procesor nu poate intra 9n sec7iunea critic8 pe calea rapid8 p>n8 pi nu iese din sec7iunea critic8 <i reseteaz8 :lo$%locC 5linia 146.
Dac8 Jast%locC i atunci pi a<teapt8 p>n8 ce toate steagurile Want sunt cobor>te. Dup8 ce un procesor execut8 bucla ,or din linia 1H, 2aloarea lui :lo$%locC r8m>ne
nescimbat8 p>n8 ce un anumit procesor p8r8se<te sec7iunea critic8 <i%l reseteaz8. Deci cel mult un singur procesor p; poate g8si :lo$%locC P ; <i acest procesor intr8 9n
sec7iunea critic8 pe drumul lent.
:e poate 2eri,ica u<or c8 dac8 un procesor pi intr8 9n sec7iunea critic8 pe calea rapid8, nici un alt proceosr py nu poate intra 9n sec7iunea critic8 pe o cale lent8.
Ebser2atii 1. Algoritmul nu garanteaz8 lipsa locCout%ului.
(. :e poate ar8ta c8 orice algoritm pentru excluderea mutual8 care asigur8 lipsa deadlocCului ,olosind 2ariabilele FDW trebuie s8 ,oloseasc8 cel pu7in n 2ariable parta;ate
indi,erent de m8rimea lor. ?2ident, se permite ca 2ariabilele parta;ate s8 ,ie cu multi%$rite 5alt,el, marginea in,erioar8 anun7at8 e e2ident86.

You might also like