Professional Documents
Culture Documents
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
.
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
+
+
+
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.