Vous êtes sur la page 1sur 4

Exclusin mutua distribuida

Algoritmo de Glenn Ricardt y Ashok K. Agrawala, basado en la idea de la panadera.


integer myNum 0 set of node IDs deferred empty integer highestNum 0 boolean requestCS false MAIN while true non- riti al-se tion requestCS true myNum highestNum ! " for all other nodes N send#request$ N$ myID$ myNum% await reply&s from all other nodes riti al-se tion requestCS false for all nodes in deferred remo'e N from deferred send#reply$ N$ myID% ()C)I*) integer sour e$ requestedNum while true re ei'e#request$ sour e$ requestedNum% highestNum ma+#highestNum$ requestedNum% if not requestCS or requestedNum ,, myNum send#reply$ sour e$ myID% else add sour e to deferred

Algoritmo de paso de testigo Ricart-Agrawala


boolean integer integer integer boolean ha'e-o.en true in node 0$ false in others array/N0D)S1 requested /0$ 2$ 01 array/N0D)S1 granted /0$ 2$ 01 myNum 0 inCS false

sendToken if e+ist N su h that requested/N1 3 granted/N1 for some su h N send#to.en$ N$ granted% ha'e-o.en false MAIN while true non- riti al se tion if not ha'e-o.en myNum myNum ! " for all other nodes N send#request$ N$ myId$ myNum% re ei'e#to.en$ granted% ha'e-o.en true inCS true riti al se tion granted/myID1 myNum inCS false send-o.en RECEIVE integer sour e$ reqNum while true re ei'e#request$ sour e$ reqNum% requested/sour e1 ma+#requested/sour e1$ reqNum% if ha'e-o.en and not inCS send-o.en

Algoritmo DS preliminar
integer array/in oming1 inDefi it /0$444$01 integer inDefi it 0 integer outDefi it 0 send message p"5 send#message$ destination$ myID% p65 in rement outDefi it receive message p75 re ei'e#message$ sour e% p85 in rement inDefi it/sour e1 and inDefi it send signal p95 when inDefi it 3 " or #inDefi it : " and is-erminated and outDefi it : 0% p;5 ) some edge ) with inDefi it/)1 <: 0 p=5 send#signal$ )$ myID% p>5 de rement inDefi it/)1 and inDefi it receive signal p?5 re ei'e#signal$ -% p"05 de rement outDefi it

Environment node
computation p"5 for all outgoing edges ) p65 send#message$ )$ myID% p75 in rement outDefi it p85 await outDefi it : 0 p95 announ e system termination

El algoritmo no es seguro.

Algoritmo de Dijkstra-Scholten
integer integer integer integer array/in oming1 inDefi it /0$444$01 inDefi it 0 outDefi it 0 parent -"

send message p"5 when parent <: -" p65 send#message$ destination$ myID% p75 in rement outDefi it receive message p85 re ei'e#message$ sour e% p95 if parent : -" p;5 parent sour e p=5 in rement inDefi it/sour e1 and inDefi it send signal p>5 when inDefi it 3 " p?5 ) some edge ) for whi h #inDefi it/)1 3 "% or #inDefi it/)1 : " and ) <: parent% p"05 send#signal4 )$ myID% p""5 de rement inDefi it/)1 and inDefi it p"65 or when inDefi it : " and is-erminated and outDefi it : 0 p"75 send#signal$ parent$ myID% p"85 inDefi it/parent1 0 p"95 inDefi it 0 p";5 parent : -" receive signal p"=5 re ei'e#signal$ -% p">5 de rement outDefi it

Vous aimerez peut-être aussi