Master Info - Info 0701 1
1 Exclusion Mutuelle
1.1 Algorithmes bas´es sur les permissions
Algorithme 1 Alorithme de Ricart Agrawal, local au site i
etat ←− S E, SC, S ´ettat du site i
h←− 0 entier date des demandes
last ←− 0 entier date de la derniere demande
attendu ←− φensemble de sites qui attendent la permission
differe ←− φensemble de sites qui retardent l’envoi d’une perm
priorit ←− f aux booleen si iprioritaire ou non
demande d’entree en section critique
etat ←− E
last ←− last + 1
attendu ←− R
for all j∈attendu do
Envoi msg(dem, (lasti, i)) `a j
end for
while attendu 6=φdo
reception msg(perm(j)) de j
attendu ←− attendu j
end while
etati ←− SC
Sortie de section critique
etat ←− S
for all j∈differe do
Envoi msg(perm(i)) `a j
end for
differei ←− φ
R´eception de msg(dem, (h0, j)) de j
h←− max(h, h0)
priorit ←− (etat 6=sortie)∧(last, i)<(h0, j)
if priorit =vrai then
differe ←− differe ∪j
else
Envoi msg(perm(i)) `a j
end if
Liste d’Algorithmes 2014-2015/ Thibault BERNARD
Master Info - Info 0701 2
Algorithme 2 Algorithme de Carvalho Roucairol, local au site i
R←− {j∈Vtel que ine possedes pas perm(i, j)}
etat ←− S E, SC, S etat du site i
h←− 0 entier date des demandes
last ←− 0 entier date de la derniere demande
differe ←− φensemble de sites qui retardent l’envoi d’une permission
priorit ←− f aux booleen si iprioritaire ou non
Demande d’entree en section critique
etat ←− E
last ←− h+ 1
for all j∈Rdo
Envoi msg(dem(last, i) `a j
end for
while R6=φdo
Reception msg(perm(i, j)) de j
R←− R\{j}
end while
etat ←− SC
Sortie
etat ←− S
for all j∈differe do
Envoi msg(perm(i, j)) `a j
end for
R←− differe
differe ←− ∅
Reception de msg(dem, (h0, j)) de j
h←− max(hi, h0)
priorit ←− (etat =SC)∨[(etat =E)∧(last, i)<(h0, j)]
if priorit =V RAI then
differe ←− differe ∪ {j}
else
Envoi msg(perm(i, j)) `a j
R←− R∪ {j}
if etat =Ethen
Envoi msg(dem, (last, i)) `a j
end if
end if
Liste d’Algorithmes 2014-2015/ Thibault BERNARD
Master Info - Info 0701 3
1.2 Algorithmes bas´es sur un jeton
Algorithme 3 Algorithme de Lelann, local au site i
etat ←− S E, SC, S
suivant ←− le site voisin dans l’anneau
Reception du jeton
if etat =Ethen
etat ←− SC
else
Envoi (jeton) `a suivant
end if
sortie
etat ←− S
Envoi (jeton) `a suivant
Algorithme 4 Algorithme de Ricart Agrawal, local au site i
Etat ←− S E, SC, S
Nbdem ←− 0 tableau de Nentiers
jetonpresent ←− f aux booleen (si le site a le jeton) sauf pour un site
Demande d’entree en section critique
Etat ←− E
if ¬jetonpresent then
NBdem[i]←− N bdem[i]+1
for all j6=ido
Envoi dem `a j
end for
R´eception de jeton
jetonpresent ←− V RAI
end if
Etat ←− SC
Sortie de SC
Etat ←− S
jeton[i]←− Nbdem[i]
if COND ATT then
Envoi jeton `a j
jetonpresent ←− F AU X
end if
Reception de dem de j
Nbdem[j]←− Nbdem[j]+1
if jetonpresent ∧(Etat =S)∧CON D AT T then
Envoi jeton `a j
jetonpresent ←− F AU X
end if
COND ATT (site i)
jeton[j]< Nbdem[j]
Liste d’Algorithmes 2014-2015/ Thibault BERNARD
Master Info - Info 0701 4
2 Election
Algorithme 5 Algorithme de Lelann, local au site i
Variables
List ensemble de d’identifiants, init. `a ∅
etat ∈ {elu, battu, init, noninit}init. `a init pour les initiateurs et noninit pour les autres
if etat =noninit then
while false do
Reception msg
Envoi msg
if etat =noninit then
etat ←− battu
end if
end while
else
list ←− list ∪ {i}
Envoi msg(i)
Recoit msg(j)
while i6=jdo
list ←− list ∪ {j}
Envoi msg(j)
Reception msg(j)
end while
if i= min list then
etat ←− elu
else
etat ←− battu
end if
end if
Liste d’Algorithmes 2014-2015/ Thibault BERNARD
Master Info - Info 0701 5
Algorithme 6 Algorithme de Chang Roberts, local au site i
Variables
etat ∈ {elu, battu, init, noninit}init. `a init pour les initiateurs et noninit pour les autres
if etat =noninit then
while false do
Reception msg
Envoi msg
if etat =noninit then
etat ←− battu
end if
end while
else
Envoi msg(i)
repeat
Recoit msg(j)
if i=jthen
etat ←− elu
else
if j < i then
if etat =init then
etat ←− battu
end if
Envoi msg(j)
end if
end if
until etat =elu
end if
Liste d’Algorithmes 2014-2015/ Thibault BERNARD
1 / 16 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans l'interface ou les textes ? Ou savez-vous comment améliorer l'interface utilisateur de StudyLib ? N'hésitez pas à envoyer vos suggestions. C'est très important pour nous!