Sunteți pe pagina 1din 16

SIMULARE DE SISTEME

Specificarea problemelor.
O problem se poate specifica la nivelul interfeei dintre algoritmul ce o rezolv i mediul extern.
O specificare de problem P este o mulime de evenimente de intrare in( P ), o mulime de evenimente de ieire out( P ) (cele dou mulimi constituind interfaa lui P) i o
mulime seq( P ) de secvene admisibile de evenimente de intrare i evenimente de ieire (care precizeaz interleavingurile permise dintre intrri i ieiri).
Fiecare eveniment de intrare sau de ieire are un nume i poate avea asociate date ca parametri.
Exemplu. roblema excluderii mutuale pentru n procesoare!
evenimente de intrare! "i, #i, $ i n%&, unde
"i indic faptul c utilizatorul i dorete s 'ncerce s intre 'n seciunea critic.
#i indic faptul c utilizatorul i dorete s ias din seciunea critic.
evenimentele de ieire! (i, )i $ i n%&, unde
(i indic faptul c utilizatorul i poate acum s intre 'n seciunea critic.
)i indic faptul c utilizatorul i poate acum s intre 'n seciunea remainder.
o secven a acestor evenimente este admisibil dac pentru i!
&. *i cicleaz ("i,(i,#i,)i)
+. ori de c,te ori (i apare 'n , atunci - eveniment asociat lui - ce apare 'n 'naintea lui (i nu este l-.
((ondiia & arat c utilizatorul i algoritmul interacionaz propriu. ea impune utilizatorului un mod corect de comportare. (ondiia + afirm c nu doi utilizatori simultan 'n
seciunea critic).
Sisteme de comunicaie
/n problemele de simulare vom fi interesai 'n implementarea unor anumite tipuri de sisteme de comunicaie 'ntre procesoare pe baza unor primitive.
0ceste sisteme de comunicaie vor fi descrise cu a-utorul unei specificaii de problem.
Exemple.
&. "ransmiterea asincron de mease- point%to%point
interfaa!
sendi (1)! eveniment de intrare asociat procesorului pi care trimite o mulime 1 (eventual vid) de mesa-e. Fiecare mesa- include o indicaie a trimitorului i a
destinatarului. exist cel mult un mesa- pentru fiecare destinatar i perec2ea transmitor%destinatar trebuie s fie compatibil cu topologia sistemului.
recvi(1)! eveniment de ieire asociat procesorului pi 'n care o mulime 1 de mesa-e este primit. Fiecare mesa- trebuie s%l aib pe pi ca destinatar.
mulimea secvenelor admisibile.
Fie o secven de evenimente de intrare i ieire.
3otm cu ) mulimea tuturor mesa-elor ce apar 'n toate evenimentele recvi(1) din i cu 4 mulimea tuturor mesa-elor ce apar 'n toate evenimentele sendi(1) din .
#xist o funcie 5!)4 care asociaz fiecrui mesa- din ) un mesa- cu acelai coninut din 4 a.'.!
6ntegrit7! 5 este bine definit. Orice mesa- primit a fost 'n prealabil trimis. 3u este permis corupia mesa-elor.
3o duplicates! 5 este in-ectiv. 3ici un mesa- nu este primit mai mult de o dat.
8iveness! 5 este sur-ectiv. Orice mesa- trimis va fi primit.
Observaie. 0ceste proprieti vor fi modificatec,nd se vor considera i defeciunile 'n sistem.
Broadcast asincron
interfaa (la un sistem cu broadcast asincron de baz).
bc%send
i
(m)! eveniment de intrare 'n care procesorul p
i
, trimite un mesa- m
tuturor procesoarelor.
bc%recv
i
(m,-)! eveniment de ieire 'n care procesorul pi primete mesa-ul m, 'n prealabil difuzat de p-.
mulimea secvenelor admisibile. Fie o secven de evenimente de intrare i de ieire.
#xist 5 o aplicaie care asociaz fiecrui bc%recv
i
(m,-) din un evniment precedent bc%send
-
(m) a.'.
6ntegrit7! 5 este bine definit (orice mesa- primit a fost 'n prealabil trimis).
3o duplicates! entru ficare procesor p
i
$ i n%&, restricia lui 5 la evenimentele bc%recv
i
este
in-ectiv (nici un mesa- nu este primit mai mult de o dat de un procesor).
8iveness! entru ficare procesor p
i
$ i n%&, restricia lui 5 la evenimentele bc%recv
i
este sur-ectiv
(orice mesa- trimis este primit de fiecare procesor).
Observaie! 9in nou s%a presupus c nu exist defeciuni.
rocese
e fiecare procesor se vor executa buci de cod care implementeaz sistemul de comunicaie dorit. 9eci nu va mai fi corect s identificm :algoritmul: cu procesorul,
pentru c avem procese multiple ce se execut pe acelai procesor. ;om folosi noiunea de nod iar sistemul de comunicaie va fi reprezentat ca o cutie neagr 'n care este implementat
o :stiv de protocoale:.
<n sistem este o colecie de noduri p$,...,pn%&, un sistem de comunicaie C i un mediu extern E.
C i E nu sunt explicit modelate ca procese. #le vor fi date ca specificaii de probleme, care impun condiii asupra comportrii lor.
/n fiecare nod exist o stiv de nivele cu acelai numr de nivele. Fiecare nivel interior comunic cu cele dou nivele adiacente. 3ivelul de -os comunic cu sistemul de
comunicaie i nivelul de sus cu mediul extern.
Fiecare proces este modelat ca un automat cu o mulime (posibil infinit) de stri i o mulime de stri iniiale. "ranziiile dintre stri sunt declanate de apariia
evenimentelor procesului. <n proces are patru tipuri de evenimente!
&. intrri din nivelul de deasupra (sau nivelul exterior dac este nivelul de sus).
+. ieiri ctre nivelul de deasupra.
=. intrri din nivelul de dedesubt (sau sistemul de comunicaii dac este nivelul de -os) .
>. ieiri ctre nivelul de dedesubt.
#venimentele de tipul & i +! interfaa ? top a procesului
#venimentele de tipul = i >! interfaa ? bottom a procesului.
<n eveniment este activat 'ntr%o stare a procesului dac exist o tranziie din acea stare, etic2etat cu acel eveniment.
<n eveniment de intrare poate fi activat 'n orice stare a procesului.
#venimentele de ieire sunt activate de funcia de tranziie a procesului.
6ntrrile din mediul extern i din sistemul de comunicaii sunt intrrile nodului.
rocesele de pe un singur nod interacioneaz a.'. numai un numr finit de evenimente (diferit de intrrile nodului) sunt activate de o intrare 'n nod.
O configuraie a sistemului specific o stare pentru orice proces de pe orice nod (configuraia nu include starea sistemului de comunicaie). O configuraie iniial conine numai stri
iniiale ale proceselor.
O execuie a sistemului este un ir ($, &, (&, +,(+,.... alternativ de configuraii i evenimente, 'ncep,nd cu o configuraie i, dac este finit, sf,rind cu o configuraie a.'.!
&. (onfiguraia ($ este o configuraie iniial.
+. i & evenimentul i este activat 'n configuraia (i%& i configuraia (i este rezultatul lui i acion,nd pe (i%&. (Orice component de stare este aceeai 'n (i ca i 'n (i%
& cu excepia (cel mult dou) proceselor pantru care i este eveniment). 4tarile acestor procese se sc2imb conform funciei de tranziie a acestor procese.
=. i &, dac i nu este o intrare pentru un nod, atunci i @ & i este un eveniment pe acelai nod ca i i%&. (rimul eveniment trebuie s fie o intrare pe un nod).
mediul extern
3ivelul &
3ivelul +
3ivelul =
sistemul de comunicaie
>. i & dac i estte intrare pe un nod atunci 'n (i%& nu a fost avtivat nici un alt eveniment (diferit de un eveniment de intrare 'n nod).
Observaie! 9in =. i >. rezult c un nod este declanat de o intrare 'n nod (din exterior sau din sistemul de comunicaie) i aceast declanare cauzeaz un lan de evenimente pe acest
nod care apare atomic p,n ce alet evenimente nu mai sunt declanate.
lanificarea unei execuii este irul evenimentelor din execuie.
9ac este o execuie atunci top() (respectivc bot()) este restricia planificrii lui la evenimentele din inerfaa top (respectiv bottom) a nivelului top (respectiv bottom).
O execuie este fair dac orice eveniment (diferit de o intrare 'ntr%un nod) care este activat va apare (odat i odat. execuia nu se oprete prematur, c,nd mai exist pai de urmat).
O execuie are calitatea de a fi user-compliant pentru o specificaie de problem P, dac mediul extern satisface restriciile de intrare ale lui P: pentru orice prefix A a lui unde
este o intrare din mediul extern, dac A este prefix al unui element din seq(P), atunci aa este i A.
O execuie este corect pentru sistemul de comunicaie C dac bot() este un element al lui seq(C). (4istemul de comunicaie este corect, 'n conformitate cu specificaiile de problem
a lui C).
O execuie este (P,C) admisibil dac estge fair, user ? compliant pentru specificaia de problem P i corect pentru sistemul de comunicaii C.
0tunci c,nd P i C sunt clare din context execuia se va numi admisibil.
4imulare
4istemul de comunicaii C, simuleaz (global) sistemul de comunicaii C+ dac exist o colecie de procese unul pentru fiecare nod numit 4im (procesul de simulare) care
satisface!
&. 6nterfaa top a lui 4im este interfaa lui C+.
+. 6nterfaa bottom alui 4im este interfaa lui C&.
=. entru orice execuie (C+, C&) ? admisibil a lui 4im exist un ir 'n seq(C+) a.'. Btop().
(#xecutia simulrii 'n topul sistemului de comunicaie C& produce aceleai apariii 'n mediul extern pe care le face sistemul de comunicaii C+).
O definiie mai slab a simulrii, este simularea local.
O execuie este local user ? compliant pentru o specificaie de problem P, dac A un prefix al lui , unde este o intrare din mediul extern, dac Aseq(P) a.'. A*i este
prefix al lui A*i pentru i , atunci seq(P) a.'. A*i este un prefix al lui A*i pentru i (mediul extern satisface restriciile de intrare ale lui P pentru fiecare nod, dar nu neaprat
global).
O execuie este (P,C) ? local admisibil dac este fair, local user ? compliant i corect pentru sistemul de comunicaii C.
9efiniia simulrii locale este aceeai cu a simulrii globale cu excepia condiiei = care devine acum!
=A. entru orice execuie (C+, C&) ? local admisibil a lui 4im seq(C+) a.'. *iBtop()*i i $ i n%&.
(onvenii de pseudocod
;om descrie un algoritm asincron de tip 1 ca o list de evenimente de intrare i ieire.
Fiecare eveniment va avea un nume i se vor descrie sc2imbrile locale care vor fi cauzate de apariia acestui eveniment, 'ntr%un pseudocod secvenia uzual.
e l,ng sc2imbrile locale de stare, apariia unui eveniment poate cauza i activarea unor evenimante de ieire. 0cestea vor fi indicate astfel! :enable input C:. 9ac
rezultatul unui eveniment de ieire este dezactivarea lui (nu se fac alte sc2imbri locale) nu va fi trecut 'n lista de evenimente.
Broadcast and multicast
entru a specifica calitatea unui serviciu de broadcast (proprieti ce vor fi descrise mai -os) interfaa descris mai anterior pentru un serviciu broadcast de baz se modific
astfel!
bc%sendi(m,qos)! eveniment de intrare asociat procesorului pi, care trimite un mesa- m tuturor procesoarelor. qos este un parametru ce descrie calitatea serviciului
cerut.
bc%recvi(m,-,qos)! eveniment de ieire 'n care procesorul pi primete mesa-ul m 'n prealabil difuzat de p-. qos este ca mai sus.
Observaie! 0tunci c,nd ne referim la un serviciu broadcast de baz vom considera qosBbasic. <n mesa- difuzat este primit i de transmitor.
Operaiile bc ? send i bc ? recv nu sunt blocante! nu se ateapt ca un mesa- s fie primit de toate procesoarele iar operaia bc ? recv acioneaz 'n modul de lucru bazat pe 'ntreruperi.
4e pot discuta dou categorii de caliti prin adugarea de noi proprieti pentru secvenele admisibile (pe l,ng cele ale situaiei qosBbasic! integrit7, no duplicates, liveness).
Ordonare
<n sistem de broadcast single%source F6FO (qosBssf) satisface proprietile lui basic i
C
+
input C
+
output
C
+
C
+
input C
+
output
4im
C
&
C
&
input C
&
output
4ingle%4ource F6FO! m&, m+ i pi, p- dac pi trimite m& 'nainte de al
trimite pe m+ , atunci p- nu%l primete pe m+ 'naintea lui m&.
<n sistem de broadcast total ordonat (qosBto) satisface proprietile lui basic i
"otall7 Ordered! m&, m+ i pi, p- dac m& este primit 'n pi 'naintea lui m+ , atunci m+ nu este primit 'n p- 'naintea lui m&.
/n cele dou condiii, primit este un bc ? recv cu qos pe una din cele dou valori iar trimis este un bc ? send cu qos corespunztor.
entru a defini al treilea model de broadcast cu ordonare este necesar s extindem relaia de apariie a unui eveniment 'naintea altuia, la mesa-e.
4e presupune c toate comunicrile de la un nivel superior al aplicaiei se execut numai cu bc ? send i bc ? recv (nu exist mesa-e :be2ind of t2e scenes:).
9efiniie! 9at o secven de evenimente bc ? send i bc ? recv spunem c mesa-ul m& se nt!mpl naintea mesa-ului m+ dac
&. evenimentul bc ? recv pentru m& se 'nt,mpl 'naintea evenimentului bc ? send pentru m+ sau
+. m& i m+ sunt trimise de acelai procesor i m& este trimis 'naintea lui m+.
<n sistem de broadcast ordonat cauzal, qosBco, satisface proprietile lui basic i
(ausall7 Ordered! m&, m+ i pi dac m& se 'nt,mpl 'naintea lui m+ atunci m+ nu%i primit de pi 'naintea lui m&.
#xemple!
4igurana 'n funcionare ()eliabilit7)
a
b
a ,b
b, a
a b
b, a
b, a
a
b
b, a
a, b
cauzal ordonat
dar nu%i t.o.
t.o
dar nu%i cauzal ordonat
ssf dar nu%i t.o.
i nici cauzal ordonat
<n sistem de broadcast este reliable ('n prezena a f defecte) dac pentru orice secven de bc ? send i bc ? recv sunt satisfcute condiiile! 6ntegrit7, 3o duplicates iar 8iveness se
modific astfel!
3onfault7 8iveness! 9ac se consider restrictia lui 5 la evenimentele asociate procesoarelor nedefecte atunci 5 este sur-ectiv (toate mesa-ele difuzate de un procesor nedefect sunt
primite odat i odat de procesoarele nedefecte).
Fault7 8iveness! 9ac un procesor nedefect are un eveniment bc ? recv cruia 5 'i asociaz un eveniment bc ? send al unui procesor defect, atunci orice procesor nedefect are un
eveniment bc ? recv cruia 5 'i asociaz acelai eveniment bc ? send (orice mesa- trimis de un procesor defect este sau primit de toate procesoarele nedefecte sau de niciunul).
Observaie! (ondiiile nu depind de tipul de defeciune a procesoarelor. vom considera totui numai defeciuni de tip cras2.
0numite combinaii de proprietilor ale serviciilor de tip broadcast au nume specifice date de importana lor practic!
broadcast atomic B broadcast reliable cu t.o.
broadcast F6FO atomic B broadcast atomic cu ssf.
broadcast cauzal atomic B broadcast atomic cu c.o.
(ultimele dou sunt ec2ivalente).
Implementarea serviciilor de broadcast
&. Dasic
4e implementeaz simplu 'n topul unui sistem point%to%point 1 fr defeciuni.
(,nd apare un bc ? send pentru un mesa- m la un procesor pi, pi folosete sistemul point%to%point 1 pentru a trimite o copie a lui m la toate procesoarele.
(,nd un procesor primete mesa-ul de la pi pe sistemul point%to%point, execut evenimentul bc ? recv pentru m i i.
+. ssf
4e implementeaz 'n topul unui sistem basic. Fiecare procesor asigneaz un numr de ordine pentru fiecare mesa- pe care 'l difuzeaz. acesta este incrementat cu & ori de
c,te ori un nou mesa- este difuzat. rimitorul unui mesa- de la pi cu numr de secven " ateapt p,n se execut bc % recvi cu qosBssf a tuturor mesa-elor de la pi cu numrul de ordine
mai mic dec,t ".
=. t.o.
<n algoritm nesimetric
4e bazeaz din nou pe un sistem de broadcast basic. entru a difuza un mesa- m, procesorul pi 'l trimite utiliz,nd basic unui procesor central pc care asigneaz un numr de
ordine i 'l difuzeaz folosind basic.
rocesoarele execut receive pentru sitemul cu t.o. 'n ordinea specificat de numrul de ordine al mesa-elor, atept,nd dac este necesar p,n primesc toate mesa-ele cu
numr de ordine mai mic.
(lar, ordinea 'n care se execut receive pentru sistemul cu t.o. este aceeai la toate procesoarele i anume cea 'n care au fost trimise de procesorul central.
)olul procesorului central poate fi preluat i de alte procesoare cu a-utorul unui toEen de identificare care s circule printre procesoare.
<n algoritm nesimetric
6deea este de a asigna timestamp%uri mesa-elor.
0lgoritmul se bazeaz pe un sistem de broadcast cu caliti ssf.
0goritm de broadcast t.o. (codul pentru pi, $ i n%&)
6niial tsF-GB$, $ - n%& i pending este vid.
&! atunci c,nd apare bc ? sendi(m,to)!
+! tsFiG!BtsFiG H&
=! adaugIm,tsFiG,i@ la pending
>! enable bc ? sendi(Im,tsFiG@,ssf)
J! atunci c,nd apare bc ? recvi(Im,"@,-,ssf) - i !
KK ignor mesa-ele ctre el 'nsui
L! tsF-G!B"
M! adaugIm,",-@ la pending
N! if "@tsFiG t2en
O! tsFiG!B"
&$! enable bc ? sendi(Its%up,"@,ssf)
KKdifuzeaz un mesa- de actualizare a timestamp%ului
&&! atunci c,nd bc % recvi(Its%up,"@,-,ssf) - i!
&+! tsF-G!B"
&=! enable bc ? recvi(m,-,to) atunci c,nd
&>! Im,",-@ este intrarea 'n pending cu cel mai mic (",-) i
&J! " tsFEG E
&L! result! removeIm,",-@ din pending
#xplicaii!
Fiecare procesor menine un contor cresctor! timestamp%ul su, folosit pentru a tampila mesa-ele pe care vrea s le difuzeze. /n plus, fiecare procesor are un vector 'n care
estimeaz timestamp%urile celorlalte procesoare. 6ntrarea - din acest vector semnific faptul c pi nu va primi ('nc o dat) un mesa- de la p- cu un timestamp mai mic sau egal cu acea
valoare.
0ceste componente ale vectorului sunt actualizate cu a-utorul timestampe%urilor asociate mesa-elor sau folosind un mesa- special de actualizare trimis de p-.
"imestamp%ul propriu al fiecrui procesor va fi mai mare sau egal cu estimarea sa a timestamp%urilor celorlalte procesoare. 0tunci c,nd procesorul trbuie s%i mareasc
timestamp%ul pentru a asigura condiia precedent va trimite un mesa- de actualizare a timestamp%urilor tuturor celorlalte procesoare.
Fiecare procesor menine o mulime de mesa-e ce ateapt s fie primite (pentru sistemul cu t.o.). <n mesa- cu timestamp%ul " este primit t.o., atunci c,nd orice intrare 'n
vector este mai mare sau egal dec,t ". Fie o execuie fair a algoritmului care este corect pentru sistemul de comunicaii ssf.
8ema &! entru procesor pi i bc ? sendi(m,to) din , pi asigneaz lui m un timestamp unic i aceste timestamp%uri sunt asignate 'n ordine cresctoare 'n raport cu apariiile lor 'n .
8ema +! "imestamp%urile asignate mesa-elor din , 'mpreun cu id%urile procesoarelor formeaz o ordine total (aceast ordine este numit ordinea timestamp).
"eorem! 0lgoritmul precedent este algoritm de broadcast t.o.
9emonstraie!
"rebuie demonstrat c au loc condiiile!
6ntegrit7, 3o 9uplicates, 8iveness i "otal Ordering.
rimele dou sunt satisfcute deoarece sistemul ssf pe care se bazeaz algoritmul le satisface.
8iveness! resupunem c exist un procesor pi care are o intrare 'n pending care atept la nesf,rit. Fie Im,",-@ intrarea blocat 'n pending cu cel mai mic (",-).
/ntruc,t procesoarele asigneaz timestamp%urile 'n ordine cresctoare odat i odat Im,",-@ va fi cea mai mic intrare 'n mulimea pending a lui p i. entru a fi blocat
trbuie s existe E a.'. "@tsFEG 'n pi la nesf,rit. 9eci la un moment dat pi nu mai crete tsFEG. Fie "A cea mai mare valoare pe care pi o d lui tsFEG. (lar, Ei. 9eci de la un loc 'ncolo pi nu
mai primete mesa-e de la pE ('n sistemul ssf). 9eci pE nu va mai trimite mesa-e cu timestamp%ul mai mare dec,t "A. 9ar aceasta 'nseamn c p E nu va primi mesa-ul Im,",-@ de la p-
contrazic,nd corectitudinea sistemului ssf.
"otal Ordering! resupunem c pi execut bc ? recvi(m&,-&,to) i apoi
bc ? recvi(m+,-+,to). "rebuie s artm c ("&,-&)I ("+,-+) unde "i este timestamp%ul lui mi, (iB&,+).
(azul 6! Im+,"+,-+@ este 'n pendingi atunci c,nd bc ? recv i(m&,-&,to) apare. 0tunci, clar, ("&,-&)I ("+,-+) 'ntruc,t, altfel, m+ ar fi fost acceptat 'naintea lui m&.
(azul 66! Im+,"+,-+@ nu este 'n pendingi atunci c,nd bc ? recv i(m&,-&,to) apare.
0vem "& tsiF-+G. 9eci pi a primit un mesa- m de la
+
-
p (pe sistemul ssf) 'naintea acestui moment cu timestamp%ul " "&. 9in proprietatea ssf,
+
-
p trimite m+ dup ce el trimite m
i deci timestamp%ul "+ al lui m+ este mai mare dec,t ". 9eci "+ @ "&.
(auzalitate
4 observm c timestamp%ul asignat unui mesa- m difuzat de pi este strict mai mare dec,t timestamp%ul oricrui mesa- primit de pi dup primirea mesa-ului m. 9eci!
"eorem! 0lgoritmul precedent este un algoritm de broadcast c.o.
Observaie! (auzalitatea se poate obine i fr t.o., pornind de la un sistem de broadcast basic i folosind timestamp%urile vectoriale. O raiune pentru aceasta, este aceea c se poate
obine calitatea c.o. c2iar 'n prezen defeciunilor 'n timp ce t.o. nu poate fi asigurat 'n prezena defeciunilor.
)eliabilitate
;om implementa un serviciu de broasdcast reliabil 'n topul unui sistem cu 1 point%to%point 'n prezena a f cderi. 6nterfaa sistemului 1 point%to%point este fomat din
evenimente de intrare sendi(1), recv-(1) unde 1 este o mulime de mesa-e, ficare mesa- incluz,nd o indicaie a trimitorului i a primitorului. 4ecvenele admisibile se definesc
av,nd urmtoarea proprietate (procesoarele sunt partiionate 'n defecte i nedefecte primele fiind 'n numr de cel mult f).
6ntegrit7! Orice mesa- primit de un procesor pi i%a fost 'n prealabil trimis de
un procesor.
3o duplicates! 3ici un mesa- trimis nu este primit mai mult de o singur
dat.
3onfault7 8iveness! Orice mesa- trimis de un procesor nedefect la un
procesor nedefect va fi odat i odat primit.
0lgoritmul de broadcast reliabil (codul pentru pi, $ i n%&)
la apariia lui bc ? sendi(m,reliable)!
&! enable bc ? sendi(Im,i@,basic)
la apariia lui bc ? recvi(Im,E@,-,basic)!
+! if m nu a fost de-a primit t2en
=! enable bc ? sendi(Im,E@,basic)
>! enable bc ? recvi(m,E,basic)
"eorem! 0lgoritmul precedent este un algoritm de broadcast reliabil.
Observaii!
&! (alitatea de ssf se obine exact ca 'n cazul lipsei cderilor.
+! Droadcast%ul t.o. reliabil nu se poate obine atunci c,nd sistemul pe care se bazeaz este asincron (altfel s%ar putea rezolva problema consensului 'n sisteme asincrone)
=! Droadcast%ul c.o. se obine utiliz,nd algoritmul dat pe un sistem de broadcast reliabil.
>! "oate problemele de implementare precedente pot fi extinse pentru a considera aa numitul multicast 'n care un mesa- trebuie trimis la un grup de procesoare i nu la toate.
6mplementarile sunt simple atunci c,nd grupurile sunt statice. 0tunci c,nd grupurile se pot modifica, 'n fiecare execuie apar probleme la 'ntreinerea dinamic a lor.
Memorie arta!at" Distribuit"
1emoria arta-at 9istribuit (9istributed 42ared 1emor7), 941, este o simulare a unui sistem de comunicaie bazat pe memorie parta-at cu a-utorul unui sistem de tip
transmitere mesa-e (1).
rogramul de simulare va fi numit 1(4 (memor7 consistenc7 s7stem) care este alctuit din procese locale 'n fiecare procesor pi. 4c2ematic!
entru simplitate, vom considera c obiectele din memoria parta-at sunt regitri readKPrite.9e asemenea, nu vom considera defeciuni ale procesoarelor.
Fiecare obiect parta-at are o specificare secvenial care indic comportarea dorit a obiectului 'n absena concurenei.
O specificare secvenial const dintr%o mulime de operaii i o mulime de secvene de operaii (mulimea secvenelor legale de operaii).
#xemplu! <n obiect readKPrite C suport operaiile read i Prite.
6nvocarea unui read este readi (C) i rspunsul returni (C, v), unde i indic nodul i v valoarea returnat.
6nvocarea unui Prite este Pritei (C, v) i rspunsul acEi (C)
O secven de operaii este legat dac fiecare read returneaz valoarea celui mai recent Prite precedent (valoarea iniial dac aceast nu exist).
4istem de comunicatie 8inearizable 42ared 1emor7 ( 841)
6ntrri! invocri ale obiectelor parta-ate.
6eiri! rspunsuri din obiectele parta-ate.
4ecvenele admisibile! O secven de intrri i ieiri este admisibil dac satisface!
(orrect interaction! i 6 este un ir alternat de invocri i rspunsuri
perec2e, 'ncep,nd cu o invocare (fiecare procesor trebuie s
atepte un rspuns de la un obiect 'nainte de a invoca un alt
obiect. este interzis accesul tip pipeline)
8iveness! invocare are un rspuns perec2e.
8inerizabilit7! #xist o permutare a tuturor operaiilor din a.'.
&. pentru orice obiect O, O este legal (adic aparine specificarii secveniale a lui O)
+. dac rspunsul la operaia o&, apare 'n 'nainte de invocarea operaiei o+, atunci o& apare 'naintea lui o+ 'n .
(#ste posibil o reordonare a operaiilor din secvena a.'. s respecte
semantica obiectelor ?exprimata de specificarile secventiale% si
ordonarea dup timpul real de apariie a evenimentelor, 'n toate nodurile.)
1emorie arta-at
461
4istem 1
1(4
/n
p
$
1(4
/n
p
&
1(4
/n
p
n%&
)#Q#0<0
6nvoc. 6nvoc. 6nvoc.
rspuns
rspuns rspuns
send send send
receive receive receive
941
#xemplu! Fie x i 7 regitri, iniializai cu $.
0tunci & B Prite$(x, &) Prite&(7, &) acE$(x) acE&(7) read$(7) read&(x) return$(7,&) return&(x, &) este liniarizabil 'ntruc,t & B P$P&r&r$ este o permutare care satisface condiiile din
definiie.
/ns, + B Prite$(x, &) Prite&(7, &) acE$(x) acE&(7) read$(7) read&(x) return$(7,$) return& (x, &) nu%i liniarizabil.
entru a respecta semantica lui 7, r$ trebuie s precead P&. 9ar aceasta nu respect ordonarea dup timpul real pentru c P& precede r$ 'n +.
Sistemul de comunicaie memorie parta!at" secvenial consistent"
0celeai intrri i ieiri iar secvenele admisibile satisfac (orrect interaction, 8iveness i
4equentiall7 consistent! #xist o permutare a operaiilor din a.'.
&. pentru orice obiect O, *O este legal.
+. dac rspunsul pentru operaia o& 'n nodul pi (oarecare) apare 'n 'naintea invocrii operaiei o+ 'n nodul pi, atunci o& apare 'naintea lui o+ 'n .
Observaii!
&. 4e cere deci ca s se pstreze ordinea operaiilor din acelai nod care nu se suprapun i nu pentru toate operaiile.
+. /n exemplul precedent + este secven consistent, permutarea dorit este P$r$P&r&. 9eci condiia de liniarizare este mai tare dec,t condiia de consisten secvenial.
#xist secvene care nu sunt secvenial consistente!
= B Prite$(x, &) Prite&(7, &) acE$(x) acE&(7) read$(7) read&(x) return$(7,$) return&(x,$).
entru a respecta semantica lui x i 7 trebuie ca r$ s precead P& i r& s precead P$. entru a respecta ordinea evenimentelor din p& trebuie ca P& s precead r&. 9in tranzitivitate
rezult c r$ precede P$ care 'ncalc ordinea evenimentelor 'n p$.
Al#oritmi
;om presupune c sistemul 1 de baz suport broadcast t.o. (am artat cum poate fi implementat). entru a evita confuzia vom folosi!
tbc ? sendi(m) pentru bc ? sendi(m,t.o.) i
tbc ? recvi(m) pentru bc ? recvi(m,t.o.)
"oi algoritmii folosesc replicarea complet! exist o copie local a oricrui obiect parta-at 'n starea procesului 1(4 din fiecare nod. (0a cum se face, de exemplu 'n O)(0.
gestionarea copiilor 'n alt stil este posibil dar aceasta este o alt problem).
Al#oritm pentru simularea unui DSM liniari$abil
0tunci c,nd procesul 1(4 dintr%un nod primete o cerere s citeasc sau s scrie un obiect parta-at!
1(4 trimite un mesa- broadcast conin,nd cererea i ateapt s%i primeasc mesa-ul su.
9up primirea mesa-ului, execut rspunsul pentru operaia ce ateapt (return,nd valoarea copiei obiectului pe care o deine el pentru un read i execut,nd acE
pentru Prite).
Ori de c,te ori un proces 1(4 primete un mesa- difuzat pentru un Prite, actualizeaz copia obiectului, 'n mod corespunztor.
Teorem"! 9ac sistemul de broadcast este total ordonat atunci algoritmul precedent simuleaz un 941 liniarizabil.
9emonstraie! Fie o execuie admisibil a algoritmului (fair, user compliant pentru sistemul cu memorie parta-ata si corecta pentru sistemul broadcast de comunicaie). "rebuie s
demonstrm c top() este liniarizabil. Fie B top(). Ordonm operatiile din dup ordinea total a broadcast%urilor asociate lor din i obinem o permutare .
respect semantica obiectelor. Fie x un obiect readKPrite. *x sete secvena operatiilor ce acceseaz x. (um broadcast%urile sunt t.o., orice proces 1(4 primete mesa-ele pentru
operaiile asupra lui x 'n aceeai ordine, care este ordinea lui , i gestioneaz x corect.
respect ordonarea dup timpul real de apariie a operaiilor 'n .
resupunem c o& se termin 'n 'nainte ca operaia o+ s 'nceap.
0tunci broadcast%ul corespunztor lui o&, a fost primit de iniiatorul su 'nainte ca broadcast%ul lui o+ s fie trimis de iniiatorul su. #vident, boadcastul lui o+ este ordonat dup cel al
lui o&. 9eci operaia o& apare 'n 'naintea lui o+.
Observaie! (um un serviciu broadcast t.o. se poate implementa 'n topul unui sistem 1 point%to%point, rezult c un 941 liniarizabil se poate implementa 'n topul unui sistem 1.
3u este evident de ce trebuie difuzat un mesa- pentru operaia read, at,ta timp c,t nu se modific nici o copie a obiectului ca rezultat al primirii mesa-ului de citire.
(onsiderm algoritmul 'n care read%ul returneaz imediat valoarea din copia procesului 1(4 respectiv i renun la broadcast.
Fie o execuie 'n care valoarea iniial a lui x este $. rocesorul pi invoc o scriere a lui & 'n x i execut un tbc ? send pentru Prite. 1esa-ul difuzat a-unge la procesorul p-
care%i actualizeaz copia sa local a lui x pe &, dup care, sa spunem, execut un read pe x ce returneaz valoarea nou &. (onsiderm un al treilea procesor pE care nu a primit mesa-ul
de broadcast al lui pi i are 'nc valoarea copiei lui x pe $. resupunem c pE citete x (dup ce p- execut read, dar 'nainte de a primi broadcastul lui pi). clar va obine valoarea $.
3ici o permutare a acestor trei operaii nu poate fi i conform cu specificaia lui readKPrite i s pstreze ordonarea dup timpul real de apariie a operaiilor 'n .
"otui acest algoritm 'ndeplinete condiia de consisten secvenial.
Al#oritm de consisten" secvenial" cu read local
(codul pentru procesorul pi)
6niial, cop7FxG pstreaz valoarea iniial a obiectului parta-at x pentru orice x.
&! atunci c,nd apare readi(x)!
+! enable returni(x, cop7FxG)
=! atunci c,nd apare Pritei(x,v)!
>! enable tbc ? sendi(x,v)
J! atunci c,nd apare tbc ? recvi(x,v) din p- !
L! cop7FxG!Bv
M! if -Bi t2en enable acEi(x)
Fie o execuie admisibil a algoritmului.
8ema &! entru orice procesor pi copiile locale ale lui pi sunt actualizate de operaiile Prite 'n aceeai ordine 'n fiecare procesor i aceast ordine psteraz ordinea operaiilor Prite
asociate fiecrui procesor.
0ceast ordine va fi numit ordine tbcast.
8ema +! entru orice procesor pi i orice obiecte parta-ate x i 7 dac un read r al obiectului 7 urmeaz dup un Prite P asupra obiectului x 'n top()*i atunci readul r al copiei locale
a lui pi a lui 7 urmeaz dup Prite%ul P al lui pi asupra copiei locale a lui x.
9in cele dou leme rezult.
"eorem! 0lgoritmul precedent implementeaz un 914 secvenial consistent cu read local.
9emonstraie! "rebuie demonstrat c top() satisface condiia de consisten secvenial.
(onstrucia lui .
Ordonm Prite%urile din conform ordinii tbcast. "rebuie s mai inserm read%urile. entru fiecare read din parcurs de la st,nga la dreapta! )ead%ul r executat de pi asupra lui x este
plasat imediat dup ultima apariie din asociat (&) apariiei precedente din asupra lui pi (read sau Prite asupra oricrui obiect) i (+) Prite%ului care a cauzat ultima actualizare a
copiei locale a lui x deinut de pi, care precede punctul 'n care returul lui r a fost activat.
/n caz de egalitate se folosete id%ul procesoarelor pentru stabilirea ordinii (de exemplu dac orice procesor citete un obiect inainte ca orice procesor s scrie un obiect atunci 'ncepe
cu read%ul lui p$, urmat de read%ul lui p& .a.m.d).
"rebuie demonstrat c top()*iB*i. 9in construce, pentru un procesor pi fixat ordinea relativa a dou read sau a dou Prite este aceeai 'n top( )*i ca i 'n *i. (eea ce trebuie artat
este c r i P sunt 'n aceast ordine i aceasta rezult din codul algoritmului. /n plus trebuie artat c este legal.
4e poate inversa rolul celor dou operaii!
Facem Prite%ul local i read%ul 'ncet (datorit tbc ? send%urilor)
Al#oritmul de consisten" secvenial" cu %rite local
(codul pentru procesorul pi $ i n%&)
6niial, cop7FxG pstreaz valoarea iniial a obiectului parta-at x pentru x i numB$.
&! 0tunci c,nd apare readi(x)!
+! if numB$ t2en enable returni(x,cop7FxG)
=! atunci c,nd apare Pritei(x,v)!
>! num!BnumH&
J! enable tbc ? sendi(x,v)
L! enable acEi(x)
M! atunci c,nd apare tbc ? recvi(x,v) din p-!
N! cop7FxG!Bv.
O! if -Bi t2en
&$! num!Bnum%&
&&! if numB$ and (exist un read care ateapt pe x) t2en
&+! enable returni(x,cop7FxG)
6deea algoritmului! (,nd apare un Prite(x) 'n pi se trimite un mesa- de broadcast ca i 'n algoritmul precedent. totui el este confirmat imediat. (,nd apare un read(x) 'n p i, dac pi nu
are actualizri care ateapt (pe obiect nu numai pe x) atunci returneaz valoarea curent a copiei sale a lui x. 0ltfel, ateapt p,n primete mesa-ul de broadcast pentru toate Prite%
urile pe care el le%a iniiat i abia atunci returneaz. 0ceasta se realizeaz menin,nd un contor al tuturor Prite ? broadcasturilor iniiate de el i ateapt p,n acesta este zero.
/n esen, algoritmul implementeaz un pipeline pentru actualizarea Prite%urilor generate de acelai procesor.
"eorem! 0lgoritmul precedent implementeaz un 914 secvenial consistent cu Prite local.
Observaie! 0cest algoritm, ca i precedentul nu asigur linearitatea.
Mar#ini inferioare
;om presupune c 941 a fost implementat 'n topul unui sistem de tip 1, point%to%point.
0daptm definiia unei execuii cu timpi (timed execution) pentru sistemul simulat, consider,nd c numai evenimentelor de intrare 'ntr%un nod li s%au asignat timpi,
celelalte evenimente din nod motenind timpii evenimentelor de intrare 'n nod, care le%au declanat.
/n plus vom considera c!
? orice mesa- are o 'nt,rziere 'ntr%un interval Fd%u,dG, unde $ I u d.
entru un 1(4 fixat i o operaie op vom nota cu top timpul, 'n cazul cel mai nefavorabil, peste toate execuiile admisibile, necesitat de operatia op (diferena dintre timpul real de
apariie a rspunsului i timpul real de apariie al invocarii).
"eorema &! entru orice 1(4 secvenial consistent care asigur dou obiecte parta-ate readKPrite, tread H tPrite d.
9emonstraie! Fie un 1(4 secvenial consistent i dou obiecte parta-ate x i 7, iniial $ am,ndou.
#xist o execuie admisibila $ a lui 1(4 a.'.
top($) B Prite$(x, &) acE$(x) read$(7) return$(7,$)
i Prite 'ncepe la timpul $ iar read rspunde inaintea timpului d.
resupunem, 'n plus, c orice mesa- trimis in $ are intirzierea d. )ezulta ca nici un mesa- n%a fost primit de nici un nod la momentul de timp c,nd read primete rspunsul.
4imilar, exist o execuie admisibil & a lui 1(4 a.'.
top(&) B Prite&(7, &) acE&(7) read&(x) read&(x) return&(x,$)
Prite apare la timpul $, rspunsul la read apare 'naintea timpului d. 9eci nici un mesa- n%a fost primit 'n nici un nod la momentul de timp c,nd read primete rspunsul.
;om construi o nou execuie care combin comportarea lui p$ 'n $ ('n care p$ scrie x i citete 7) cu comportamentul lui p& 'n & (scrie 7 i citete x). (um am,ndoua
operaiile pe fiecare procesor se termin 'nainte de momentul d, p$ nu tie despre opearaiile lui p& i invers. 9eci procesoarele returneaz aceeai valoare 'n pe care ele le fac 'n $
(&). 9up timpul d 'n , se permite ca orice mesa- ce ateapt s fie livrat, dar este de-a prea t,rziu pentru a mai afecta valorile returnate anterior. (lar, aceste valori sunt inconsistente
cu condiia de consisten secvenial.
Formal, fie i*i (iB$,&) i i prefixul cel mai lung al lui i*i ce se termin 'naintea timpului d, i ABmerge($, &). A este prefixul unei execuii admisibile . 9ar top() este
exact secvena = din observaia de dup definiia condiiei de secvenial consisten, care s%a vzut c nu%i secvenial consistent.
Observaie! 1arginea inferioar obinut este valabil 'n particular i pentru 1(4 liniarizabil. /n acest caz se poate spune c2iar mai mult.
"eorema +! entru orice 1(4 liniarizabil care asigur un obiect parta-at readKPrite scris de dou procesoare i citit de un al treilea
+ Prite
t
u

9emonstraie! Fie un 1(4 liniarizabil i un obiect parta-at x iniial $ care este citit de p$ i scris de p& i p+. resupunem prin reducere la absurd ca
+ Prite
t
u
<
.
#xist o execuie admisibil a lui 1(4 a.'.
? top() B Prite&(x, &) acE&(x) Prite+(x, +) acE+(x) read$(x) return$(x,+).
? Prite&(x,&) apare la timpul $, Prite+(x,+) apare la timpul uK+ i read$(x) apare la timpul u.
? 'nt,rzierile mesa-elor 'n sunt! d din p& la p+. d%u din p+ la p& i d%uK+ pentru orice alt perec2e ordonat de procesoare.
Fie Bs2ift(,I$,uK+,%uK+@) adic 'l dm pe p& 'nainte cu uK+ i pe p+ 'napoi cu uK+.
este 'nc admisibil, 'ntruc,t 'nt,rzierea mesa-elor din p& sau 'n p+ devine d%u, 'nt,rzierea mesa-elor din p+ sau 'n p& devine d i toate celelalte 'nt,rzieri rm,n nesc2imbate.
9ar top()BPrite+(x, +) acE+(x) Prite&(x, &) acE&(x) read$(x) return$(x,+). 9ar aceasta 'ncalc liniarizabilitatea deoarece read%ul lui p$ ar trebui s returneze & i nu +.
"eorema =! entru orice 1(4 care asigur un obiect parta-at x citit de dou procesoare i scris de un al treilea
> Prite
t
u

9emonstraie! Fie un 1(4 liniarizabil i x un obiect parta-at, iniial $ care este scris de p$ i citit de p& i p+. resupunem prin reducere la absurd c
> Prite
t
u
<
6deea demonstraiei este aceeai ca 'n teorema precedent, numai c este ceva mai elaborat.
Fie

Kn t 5 Prite = . (onsiderm o execuie admisibil a lui 1(4 'n care toate 'nt,rzierile mesa-elor sunt d%uK+ comin,nd urmatoarele evenimente!
? 8a momentul uK>, p$ face un Prite$(x,&)
? 8a un moment intre
"
u
i ( )
>
& >E
n
+ , p$ face acE$(x). ( ( ) Prite t
> >
& > + +
n n
# i deci Prite%ul lui p$ se termin 'n acest interval).
? 8a momentul
>
+
n
i , p& face read&(x) $ i +E.
? 8a un moment 'ntre
>
+
n
i i ( )
>
& >i
n
+ , p& face return&(x,;+i) $ i +E.
? 8a momentul
>
+
n
i , p+ face read+(x) $ i +E.
? 8a un moment 'ntre ( )
>
& +i
n
+ i ( )
>
+ +i
n
+ , p+ face return+(x,;+iH&) $ i +E.
9eci 'n top(), read%ul lui p& al lui ;$ precede Prite%ul lui p$, read%ul lui p+ al lui ;>EH& urmeaz dup Prite%ul lui p$, nu avem read%uri suprapuse i ordinea citirilor valorilor din x este
;$, ;&, ;+,...,;>EH&.
9in liniarizabilitatea v$B$ i ;>EH&B&. - $ - >E a.'. ;-B$ i ;-H&B&. resupunem c - este par deci ;- este rezultatul unui read al lui p&.
9efinim Bs2ift(,I$,$,%nK>@) adic 'l dm 'napoi pe p+ cu nK>. este admisibil, 'ntruc,t 'nt,rzierea mesa-elor 'n p+ devine d%n, 'nt,rzierea mesa-elor din p+ devine d i
celelalte 'nt,rzieri rm,n nesc2imbate.
)ezultatul s2ift%rii este c s%a sc2imbat ordinea operaiilor read 'n raport cu
v&, v$, v=, v+,...,v-H&, v-,..... 9eci 'n top() avem v-H&B& citit 'naintea lui v-B$, care violeaz liniarizabilitatea.

!
p
$
p
&
p
+
!
p
$
p
&
p
+
$ uK+ u
$ uK+ u
P(x,&)
P(x,+)
P(x,+)
P(x,&)
r(x,+)
r(x,+)
Simul"ri tolerante la defeciuni ale obiectelor read&%rite
4imularea unui obiect de nivel 'nalt cu unul de nivel -os este util pentru proiectarea algoritmilor folosind primele obiecte dei execuia se face 'ntr%un sistem realist ce
dispune doar de ultimele.
;om prezenta simulri de sisteme cu memorie parta-at 'n topul altor tipuri de obiecte cu memorie parta-at sau 'n topul unui sistem asincron de tip transmisie de mesa-e, 'n
prezena defeciunilor de tip cras2.
(onsiderarea cderilor se poate face 'n dou moduri ec2ivalente! definim un sistem de memorie parta-at care s permit defeciuni sau modificm definiia simulrii
pstr,nd definiia sistemelor de memorie parta-at libere de defeciuni.
Sistem cu memorie parta!at" f&re$ilient
6ntrrile sunt invocri ale obiectelor parta-ate i ieirile sunt rspunsuri de la obiectele parta-ate. 4e presupune o partiie a procesoarelor cu dou clase, procesoare defecte i nedefecte,
numrul celor defecte este mai mic sau egal cu f. O secven de i*o este admisibil dac urmtoarele proprieti au loc!
(orrect 6nteraction! entru fiecare procesor pi, *i este ir alternat de invocri i rspunsuri perec2e, 'ncepind cu o invocare.
3onfault7 8iveness! Orice invocare a unui procesor nedefect are un rspuns perec2e.
#xtended 8iniarizabilit7! #xist o permutare a tuturor operaiilor complete din (cele care au rspuns) i a unei submulimi a operaiilor incomplete a.'.!
&. *o este legal pentru orice obiect o.
+. 9ac 'n , rspunsul la operaia o& apare 'naintea invocrii lui o+ , atunci o& apare 'naintea lui o+ 'n .
;om studia dac sistemul de comunicaie C& poate simula sistemul de comunicaie C+ , unde C+ este un sistem cu memorie parta-at cu un anumit tip de obiecte care
admite f cderi de procesoare, iar C& este un sistem de comunicaie (sau cu memorie parta-at sau de tip 1) care admite f cderi de procesoare.
9e fapt vom discuta cazul fBn%&, numit Pait%free datorit definiiei urmtoare ec2ivalente.
O simulare a unui sistem de tip memorie parta-at (fr defeciuni) de ctre alt sistem de tip memorie parta-at (tot fr defeciuni) se numete $ait-free dac!
entru orice execuie admisibil a programului de simulare, daca A este un prefix 'n care un procesor pi are o operaie incomplet (exist 'n A o invocare din
mediul extern 'n pi fr un rspuns perec2e) BA, atunci *pi conine rspunsul la aceast operaie.
(Orice operaie trebuie s fie capabil s se termine 'n orice punct fr asistena altor procesoare, fBn%&. operaiile pe procesoarele nedefecte se desfoar normal).
Observaie! (ondiia de liniarizabilitate corespunde intuiiei c operaiile (de nivel 'nalt) apar ca fiind executate atomic 'ntr%un anumit moment 'n timpul execuiei lor. 0cest
moment se afl undeva 'ntre invocarea i rspunsul la operaie i se numete punct de liniarizabilitate. <n mod de a demonstra c o secven este liniarizabil este acela de a
asigna explicit fiecrei operaii un punct de liniarizabilitate. 0cesta va asigura ordinea temporal a operaiilor ce nu se suprapun. 9ac se arat 'n plus c fiecare nod
returneaz valoarea operatorului Prite cu punctul de liniarizabilitate cel mai recent ce precede operatorul read, am demonstrat c execuia este liniarizabil.
;om prezenta 'n continuare urmtorul lan de simulri Pait%free ale registrelor de tip read%Prite.
r(x,v
&
)
!
p
+
p
&
p
$
!
p
+
p
&
p
$
$
r(x,v
$
)
uK>
r(x,v
+
)
+uK>
P(x,&)
r(x,v
=
)
>EuK>
r(x,;
>E
)
(>EH&)uK
>r(x,;
>EH&
)
r(x,v
&
)
r(x,v
$
)
r(x,v
=
)
r(x,v
+
)
r(x,;
>EH&
)
r(x,;
>E
)
P(x,&)
single Priter
single reader
binar7
single Priter
single reader
multi%valued
single Priter
multi reader
multi valued
multi%Priter
multi reader
multi%valued
'. Binar ( Multivaluat
<n registru este single ? reader (s ? r) dac exist un singur procesor (cititorul) ce poate citi din el i single ? Priter dac exist un singur procesor (scriitorul) ce
poate scrie 'n el, (s ? P).
4imularea unui registru cu 5 valori, de tip s ? r, s ? P cu a-utorul unor registre s ? r, s ? P cu valori binare.
entru simplitate vom considera un singur registru ) cu 5 valori i dou procesoare bine definite scriiorul i cititorul. entru simularea lui ), vom considera un tablou de 5
regitri binari DF$..5%&G. ;aloarea i va fi reprezentat de un & 'n componenta DFiG i $ 'n celelalte. 9eci, valorile posibile ale lui ) sunt R$,&,...,5%&S.
O operaie read()) va fi simulat prin scanarea vectorului D 'ncep,nd cu indicele $ i return,nd prima component egal cu & (dac exist). O operaie
Prite(),v) va fi simulat pun,nd & 'n DFvG i i terg,nd componenta egal cu & ce corespunde valorii precedente a lui ).
0cest scenariu simplu funcioneaz 'n cazul operaiilor ) i T care nu se suprapun.
9ac operaiile cititorului sunt 'n ordine read(),+) read(),&)iar ale scriitorului Prite(),&) Prite(),+) atunci, o liniarizare a acestor operaii va trebui s se
pstreze ordinea operaiilor fiecrui procesor. entru a fi 'ndeplinit semantica registrului ) va trebui ca Prite() ,&) s apar 'nainte de read(),+) pe c'nd Prite(),&) trebuie
s apar 'nainte de read(),&) i dup read(),+). 9eci, sau ordinea operaiilor read sau ordinea operaiilor Prite trebuie sc2imbat. 0lgoritmul urmtor rezolv aceast
problem a inversiunilor :nou ? vec2i: ale valorilor.
Al#oritmul de liniari$are re#istru multi&valuat cu re#istre binare
6niial regitrii parta-ati DF$G.....DF5%&G sunt $ cu excepia lui DFiGB&, unde i este valoarea iniial a lui )
c,nd apare read())! KKcititorul citete din registrul )
&! i!B$
+! P2ile DFiGB$ do i!BiH&
=! up,v!Bi
>! for i!Bup%& doPnto $ do
J! if DFiGB& t2en v!Bi
L! return(),v)
c,nd apare Prite(),v)! KKscriitorul scrie valoarea v 'n registrul )
&! DFvG!B&
+! for i!Bv%& doPnto $ do DFiG!B$
=! acE())
#vident , algoritmul este Pait%free. fiecare Prite execut cel mult 5 operaii Prite de nivel -os iar fiecare read execut cel mult +5%& operaii read de nivel -os.
entru a demonstra c algoritmul este corect trebuie s artm c orice execuie edmisibil este liniarizabil, admite o permutare a operaiilor de nivel 'nalt a.'. s se
pstreze ordinea operaiilor care nu se suprapun i 'n care orice read returneaz valoarea ultimului Prite precedent.
Fixm o execuie admisibil a algoritmului. (um este corect pentru sistemul de comunicaie cu registre binare, operaiile cu registre binare sunt liniarizabile. 9eci
fiecare operaie de nivel -os admite un punct de liniarizabilitate.
0sociem fiecrei configuraii a execuiei o :valoare actual: a registrului multivaluat )! valoarea actual a lui ) este
{ } ( ) ( ) ( ) { } $ & $ , & , & , , & , $ * min = = = = i % % i % & i i #
/n aceast definiie valoarea lui D(i) este 'n raport cu punctele de liniarizabilitate ale operaiilor de nivel -os.
(onstruim o liniarizare a lui . unctele de liniarizabilitate al operaiei Prite(),E) este imediat dup prima configuraie din intervalul ei 'n care bFEGB& i DF$GB...BDFE%&GB$. 8a
terminare alui Prite(),E) (atunci c,nd apare acE())) aceasta este situaia, dar punctul de liniarizabilitate poate fi mai 'nainte (dac, de exemplu valoarea precedent a lui ) a fost mai
mare dec,t E, el este imediat dup execuia operaiei de nivel -os DFEG!B&).
unctul de liniarizabilitate a lui read()) care se termin cu return(),E) este imediat dup prima configuraie din intervalul ei, 'n care E este asignat variabilei locale v, (linia = sau J).
8ema &! ;aloarea actual a lui ) rm,ne fix 'ntre dou puncte de liniarizabilitate ale operaiei Prite consecutive de nivel 'nalt.
8ema +! entru fiecare operaie read r (de nivel 'nalt) din +, r returneaz valoarea scris 'n ) de operaia Prite (de nivel 'nalt) cu ultimul punct de liniarizabilitate 'naintea ultimului
punct de liniarizabilitate al lui r.
9in cele dou leme rezult urmtoarea
Teorem". 0lgoritmul precedent reprezint o simulare Pait%free a unui registru 5%valuat folosind 5 regitri binari s%r, s%P, 'n care fiecare operaie necesit O(5) operaii de nivel -os.
). Sin#le ( reader Multi ( reader
1ai multe procesoare (n) citesc din acelai registru. ;om permite existena unui singur scriitor pentru fiecare registru. )egistrului ) i se va asocia o colecie de n registre s ?
P, s ? r ;alFiG iB&,n , unul pentru fiecare cititor.
<n scenariu simplu de simulare!
Prite(),v) va obliga cititorul s parcurg toate cele n registre ;alFiG i s memoreze v 'n ele.
read()) ! cititorul i returneaz valoarea din ;alFiG.
9in pcate aceast simulare este incorect, exist execuii care nu sunt liniarizabile.
#xemplu!
;aloarea iniial a registrului este $. 4criitorul pP dorete s scrie & 'n registru. (onsiderm urmtoarea secven de operaii!
pP starteaza operaia de Prite(),&), scriind & 'n ;alF&G
p& citete din ) i returneaz & din ;alF&G
p+ citete din ) i returneaz $ din ;alF+G
pP primete acE dup scrierea lui & 'n ;alF&G, scrie & 'n ;alF+G i confirm (acE) scrierea sa (de nivel superior).
(itirea lui p& trebuie ordonat dup scrierea lui pP i citirea lui p+ 'naintea scrierii lui pP. 9eci citirea lui p& trebuie ordonat dup citirea lui p+."otusi, citirea lui p& apare 'naintea citirii
lui p+.
0re loc urmtoarea teorem!
"eorem!
/n orice simulare Pait%free a unui registru s ? P, m ? r cu orice numr de registre s ? r, s ? P, cel puin un cititor trebuie s scrie.
4oluia pentru simulare va necesita ca cititorii s%i scrie unii altora creind o ordine 'ntre ei. /nainte de a returna valoarea din read%ul su, un cititor 'i va anuna pe ceilali
aceasta valoare. <n cititor va citi valoarea scris de scriitor pentru el, dar i valorile anunate de ceilali cititori. ;a alege cea mai recent valoare pe care el a citit%o. ;om presupune c
registrele pot lua un numr nemrginit de valori. /n aceast ipotez, scriitorul poate asocia un numr 'ntreg drept timestamp (a c,ta oar a scris) pentru fiecare valoare scris. /n
continuare vom referi o valoare ca fiind perec2ea ce conine o valoare real i numrul su de ordine.
4e vor folosi tablourile de registre s ? r !
;alFiG! valoarea scris de pP pentru cititorul pi & i n
)eportFi,-G! ;al returnat de cea mai recent operaie read
executat de pi. scris de pi i citit de p- & i,- n
Al#oritm de simulare a unui re#istru m ( r R cu re#i*tri s ( r
6niial, )eportFi,-GB;alFiGB(v$,$) & i,- n (unde v$ este valoarea iniial a
lui ))
c,nd apare readr()) ! KKcititorul r citete din registrul )
&! (vF$G,sF$G)!B;al(v) KK cea mai recent valoare raportat lui pr , de scriitor.
+! for i!B& to n do
=! (vFiG,sFiG)!B)eportFi,rG KK cea mai recent valoare raportat lui pr , de pi
>! fie - a. '. sF-GBmax(sF$G,sF&G,...,sFnG)
J! for i!B& to n do
L! )eportFr,iG!B (vF-G,sF-G) KK pr raporteaz fiecarui cititor pi
M! returnr(),rF-G)
c,nd apare Prite(),v) ! KKscriitorul scrie 'n registrul )
N! seq!BseqH&
O! for i!B to n do
&$! ;alFiG!B(v,seq)
&&! acE())
0lgoritmul este Pait?free ! fiecare operaie simulat execut un numr fix de oparaii de nivel -os (n pentru Prite i +nH& pentru read).
8iniarizabilitatea se demonstreaza considerind o execuie admisibil oarecare si construind explicit permutarea .
+. Sin#le ( %riter Multi ( %riter
6deea algoritmului de simulare. Fiecare scriitor anun valoarea pe care intenioneaz s o scrie, tuturor cititorilor (scriindu%le%o 'n registrul fiecruia, registru de tip s ? P, m
? r). Fiecare cititor citete toate valorile scrise de scriitori i o alege pe cea mai recent dintre ele. 9epistarea valorii cea mai recent se face cu a-utorul unui timestamp asociat fiecrei
valori. 4pre deosebire de algoritmul precedent, timestamp%ul nu este generat de un singur procesor (unicul Priter) ci de mai multe procesoare (toi scriitorii posibili).
4criitorii sunt p$,...,pm%& iar cititorii sunt toate procesoarele p$,p&,...,pn%&. 4e vor folosi tablourile de registri s ? P, m ? r !
"4FiG timestamp%ul vectorial al scriitorului pi $ i m%&. #ste scris de pi i citit de toi scriitorii.
;alFiG <ltima valoare scris de scriitorul pi $ i m%&, 'mpreun cu timestamp%ul vectorial asociat cu acea valoare. 4cris de pi i citit de toi cititorii.
Al#oritm de simulare a unui re#istru m ( % R cu re#i*tri s ( %
6niial, "4FiGBI$,...,$@ i
;alFiG este valoarea iniial a lui ) $ i m%&
c,nd apare readr())! KK cititorul pr citete din registrul ), $ r n
&! for i!B$ to m%& do (vFiG,tFiG)!B;alFiG KKv,t sunt locale
+! fie - a.'. tF-GBmaxRtF$G,...,tFm%&GS KK maximul lexicografic
=! returnr(),vF-G)
c,nd apare PriteP(),v)! KKscriitorul pP scrie v 'n ), $ P m%&
>! ts!B3eP("4() KKts este local
J! valFPG!B(v,ts)
L! acEP())
procedure 3eP("4P() KKscriitorul pP obine un nou timestamp vectorial
&! for i!B& to m do ltsFiG!B"4FiG.FiG
+! ltsFPG!BltsFPGH&
=! "4FPG!Blts
>! return lts
Simularea re#i*trilor parta!ai ,n sisteme de tip M
/n cazul existenei defeciunilor, metoda descris pentru simularea memoriei parta-ate 'n topul unui sistem broadcast t.o., bazat pe ateptarea confirmrii din sistemul 1,
nu mai funcionaz. 0tunci c,nd exist defeciuni, un procesor nu poate fi sigur c va primi un mesa- trimis ctre el. 1ai mult, nu poate atepta o confirmare de la destinatar, pentru c
acesta poate pica.;om folosi toate procesoarele ca extra ? memorie pentru a implementa fiecare registru parta-at (nu numai scriitorii i cititorii acelui registru). 9esigur, valorile sunt
acompaniate de numare de ordine. 1etoda pe care o vom descrie funcioneaz 'n ipoteza c numrul procesoarelor defecte f satisface f I nK+ (se poate demonstra c nu este posibil o
simulare a unui registru readKPrite 'n topul unui sistem asincron 1 dac n+f).
(onsiderm un registru particular ce va fi simulat. (,nd scriitorul dorete s scrie o valoare 'n acest nou registru, incrementeaz un numr de ordine i trimite un mesa-
InePval@ conin,nd noua valoare i numrul de ordine, tuturor procesoarelor.
Fiecare primitor actualizeaz o variabil local cu aceast informaie, dac numrul de ordine asociat este mai mare dec,t valoarea curent a numrului de ordine din
variabila local. 'n orice eveniment receptorul trimite un mesa- de IacE@.
Odat ce scriitorul primete IacE@ de la cel puin &
+
+

n
procesoare el termin de scris. (um n@+f f n
n
< +

&
+
i deci avem garania c va termina de
scris.(,nd cititorul dorete s citeasc un registru, el trimite un mesa- de tip Irequest@ tuturor procesoarelor. Fiecare procesor trimite 'napoi un mesa- de tip Ivalue@ conin,nd
informaia curent pe care o deine. Odat ce cititorul primete Ivalue@ de la cel puin &
+
+

n
procesoare, el returneaz valoarea cu cel mai mare numr de secven dintre cele
primite.
(omunicarea cu &
+
+

n
procesoare garanteaz un 'uorum pentru fiecare operaie read sau Prite. (um 'n aceste quorum%uri avem ma-oritatea procesoarelor, va exista
un procesor 'n intersecia oricrui quorum al unui read cu orice quorum al unui Prite. 0cesta garanteaz faptul c ultima valoare scris va fi obinut.
entru a evita problemele poteniale legate de asincronie, i scriitorul i cititorul menin o variabil local status F$..n%&G pentru a guverna comunicarea. statusF-G conine una
din valorile!

not-sent! mesa-ul pentru cea mai recent operaie n%a fost 'nc trimis lui p- (pentru c p- n%a confirmat un mesa- anterior)

not-ac#ed! mesa-ul pentru cea mai recent operaie a fost trimis lui p- dar n%a fost confirmat de p-

ac#ed! mesa-ul pentru cea mai recent operaie a fost confirmat de p-


/n plus, fiecare procesor are un numrtor num%acEs cu care%i numr rspunsurile primite 'n timpul operaiei curente.
Al#oritm pentru simularea unui re#istru read-%rite cu M
(codul pentru unicul scriitor)
6niial statusF-GBacEed pentru -, seqB$ i pendinngBfalse
(,nd apare PriteP(v)! KK procesorul pP scrie 'n registru
&! pendinng!Btrue
+! seq!BseqH&
=! num%acEs!B$
>! for - do
J! if statusF-GBacEd t2en KKare rspuns dat pentru operaia precedent
L! enable sendPInePval, (v,seq)@ to p-
M! statusF-G!Bnot%acEed
N! else status!Bnot%sent
(,nd apare IacE@ de la p-!
O! if not pending t2en statusF-G!BacEed KKnici o operaie 'n execuie
&$! else if statusF-GBnot%sent t2en KKrspuns la un mesa- precedent
&&! enable sendP(InePval@, (v,seq)@ to p-
&+! statusF-G!Bnot%acEed
&=! else KKrspuns la operaia curent
&>! statusF-G!BacEed
&J! num%acEs!B num%acEsH&
&L! if &
+
n
acEs % num +

> t2en KKconfirmare de la ma-oritatea


&M! pending!Bfalse
&N! enable acEP
Al#oritm pentru simularea unui re#istru read-%rite cu M
((odul pentru unicul cititor pi)
6niial statusF-GBacEed pentru -, seqB$ i pendinngBfalse
(,nd apare readi()!
&! pendinng!Btrue
+! num%acEs!B$
=! for - do
>! if statusF-GBacEed t2en KKare rspuns dat pentru operaia precedent
J! enable sendiIrequest@ to p-
L! statusF-G!Bnot%acEed
M! else status!Bnot%sent
(,nd apare receiveIvalue, (v,s)@
N! if not pending t2en statusF-G!BacEed KKnici o operaie 'n execuie
O! else if statusF-GBnot%sent t2en KKrspuns la un mesa- precedent
&$! enable sendiIrequest@ to p-
&&! statusF-G!Bnot%acEed
&+! else KKrspuns la operaia curent
&=! if s@seq t2en Rval!Bv. seq!BsS
&>! statusF-G!BacEed
&J! num%acEs!B num%acEsH&
&L! if &
+
n
acEs % num +

> t2en
&M! pending!Bfalse
&N! enable returni(val)
Al#oritm pentru simularea unui re#istru read-%rite cu M
(codul pentru orice procesor pi $ i n%&, inclusiv pP i pi)
6niial lastB(v$,$) unde v$ este valoarea iniial a registrului simulat
(,nd apare receivePInePval,(v,s)@ !
&! last!B(v,s)
+! enable sendi(acE) to pP
(,nd apare receive i(request)!
=.enable sendi(value, last) to pi
KKv este mai recent dec,t valoarea curent

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