Académique Documents
Professionnel Documents
Culture Documents
Algorithmique Distribuée
Détection de la terminaison
Laurent PHILIPPE
Master 2 Informatique
Université de Franche-Comté
UFR des Sciences et Techniques
2013 / 2014
Sommaire
1 Introduction
Conditions de terminaison
Terminaison des processus
Introduction
Terminaison
Hypothèses de travail
Communication et processus
Notations
Dénitions
Conguration terminale
Etat terminal
Illustration
Conguration terminale
Remarque
implicite :
conguration terminale et tous les processus ne sont pas dans
un état terminal (état d'attente par exemple)
→ type de terminaison appelé message terminaison car plus
aucun message n'est échangé
explicite :
la conguration des processus est dans un état terminal
→ type de terminaison appelé process termaison car tous les
processus ont terminé
Déctection de la terminaison
Principe
Phases
Algorithme de base
Etat des processus
Deux états possibles : etatp = (actif , passif )
Un processus est actif (resp. passif) si un événement interne ou une
réception de message est (resp. n'est pas) accessible à son état c . p
Algorithme de base
Dénition générique
S : {etat = actif }
p p
/* p envoie un message */
début R : {hmsgi arrive en p }
p
send hmsgi /* p reçoit un message */
n début
I : {etat = actif }
p p
receive hmsgi
/* événement interne */ etatp← actif
début n
etatp ← passif
n
Théorème de terminaison
Théorème
Théorème de terminaison
Théorème de terminaison
Preuve
1 Si tous les processus p sont passifs, alors aucun événement
interne n'est possible. De plus, si aucun canal de réception ne
contient de message, alors aucune instruction receive n'est
possible. Par conséquent, aucun événement de base n'est
applicable, l'état terminal est atteint.
Propriétés
L'annonce de la terminaison
Initialisation de l'algorithme
L'annonce de la terminaison
envoiStopp : booléen initialisé à faux /* vrai si p a déjà envoyé stop */
recStopp : entier initialisé à 0 /* nb de messages stop reçus par p */
Γp : ensemble des voisins du processus p
p : ensemble des prédécesseurs du processus p
Γ− 1
fonction annonce()
début
si ¬envoiStopp alors
envoiStopp ← vrai
pour tous les q ∈ Γp faire send hstopi à q
n
{le message hstopi est reçu par p }
début
receive hstopi
recStopp ← recStopp + 1
annonce()
si recStopp = |Γ−
p | alors stop()
1
n
Laurent PHILIPPE Détection de la terminaison 15 / 68
Introduction
Conditions de terminaison
Terminaison pour le calcul d'arbres
Terminaison des processus
Solutions utilisant des vagues
Classes d'algorithmes
Sommaire
1 Introduction
Principes généraux
Principes de fonctionnement
Algorithme de Dijkstra-Scholten
Ip : {etatp = actif }
etatp : (actif , passif ) début
init à actif si p = p sinon passif
0
etatp ← passif
scp : entier (nombre de ls dans T ) si (scp = 0) alors
perep ∈ P init à p si p = p sinon nDef
0 si perep = p alors annonce()
sinon send hsig,perep i à perep
perep ← nDef
Sp : {etatp = actif }
début n
send hmsg,p i Ap : {le signal hsig,p i arrive en p }
scp + + début
n receivehsig,p i
Rp : {le message hmsg,q i arrive en p } scp − −
début si (scp = 0) ∧ (etatp = passif )
receivehmsg,q i alors
etatp ← actif si perep = p alors annonce()
si perep = nDef alors perep ← q sinon send hsig,perep i à perep
sinon sendhsig,q i à q perep ← nDef
n
n
Laurent PHILIPPE Détection de la terminaison 23 / 68
Introduction
Algorithme de Dijkstra et Scholten
Terminaison pour le calcul d'arbres
Algorithme de Shavit et Francez
Solutions utilisant des vagues
Algorithme de Dijkstra-Scholten
Exercice
Pour exécuter le premier calcul, chacun des ls crée deux ls
auxquels il soumet successivement les deux messages de calcul
sans que ceux-ci deviennent inactifs entre temps,
Algorithme de Dijkstra-Scholten
Arbre de l'application
VT = {p : perep 6= undef}
∪ {hmsg, p i en transit}
∪ {hsig, p i en transit}
ET = {(p , perep ) : perep 6= undef ∧ perep 6= p }
∪ {(hmsg, p i, p ) : hmsg, p i en transit}
∪ {(hsig, p i, p ) : hsig, p i en transit}
Algorithme de Dijkstra-Scholten
Correction de l'algorithme
Théorème
Algorithme de Dijkstra-Scholten
Correction de l'algorithme
Algorithme de Dijkstra-Scholten
Invarient de sûreté
P ≡ etatp = actif ⇒ p ∈ VT
(1)
∧ (u , v ) ∈ ET ⇒ u ∈ VT ∧ v ∈ VT ∩ P
(2)
∧ scp = #{v : (v , p ) ∈ ET } (3)
∧ VT 6= ∅ ⇒ T est un arbre de racine p0 (4)
∧ (etatp = passif ∧ scp = 0) ⇒ p ∈
/ VT
(5)
Algorithme de Dijkstra-Scholten
Traduction de l'invariant P
Par dénition, T contient à la fois les messages de l'algorithme de
base et les messages de l'algorithme de contrôle. D'après l'invariant
P :
(2) T est un graphe et ses arêtes sont orientées vers les processus,
Lemme
Initialement
Exécution de l'événement Sp
(1) est conservé car Sp ne permet à aucun processus de devenir
actif
Exécution de l'événement Rp
(1) est conservé car soit p est inséré dans VT soit il y est déjà
Exécution de l'événement Ip
si p devient passif ⇒ (1), (2), (3) et (4), p était dans VT
si scp = 0 alors p est eacé de la structure VT ⇒ (5)
Exécution de l'événement Ap
spp est décrémenté et le message hsig, p i est supprimé de VT
⇒ (3)
p est le père du message hsig, p i ⇒ p ∈ VT
si etatp = passif ∧ scp = 0 alors p est supprimé dès la
réception ⇒ (5)
le signal remplace p dans l'arbre comme ls de perep , scp reste
donc correct ⇒ (3)
si p est eacé de VT alors l'invariant est pour les mêmes
raisons que pour Ip .
Preuve du théorème
S= scp .
P
Soit p ∈P , somme de tous les comptes
Initialement, S = 0,
S est incrémenté à chaque message de base, par Sp , et
décrémenté à chaque message de contrôle par Ap et S ≥ 0, à
cause de (3).
⇒ le nombre de messages de contrôle n'excède jamais le nombre
de messages de l'algorithme de base, donc M.
Preuve du théorème
Preuve de la vivacité
Preuve du théorème
Preuve de la sûreté
Généralités
Principe
Algorithme de Shavit-Francez
S : {etat = actif }
p p début
début receivehmsg,q i
send hmsg,p i etat ← actif
p
sc + +
p si pere = ndef alors pere ←
p p q
n sinon sendhsig,q i à q
n
Algorithme de Shavit-Francez
A : {le signal hsig,p i arrive en p }
p
I : {etat = actif }
p p
début
début receivehsig,p i
etatp ← passif scp −−
si (scp = 0) alors si (sc = 0) ∧ (etat = passif )
p p
n perep ← ndef
n
Une vague est lancée concurremment par tous les processus p dès lors
que vide est vrai. p décide ou envoie vide = vrai. C'est lorsqu'un
p p
Théorème
Sommaire
1 Introduction
Principe
Les algorithmes présentés ici itèrent sur une vague, c'est à dire
qu'une vague est la plupart du temps en cours sur l'ensemble
des processus de l'application distribuée
A la n d'une vague :
soit la terminaison est détectée
soit une nouvelle vague est lancée
→ la détection de la terminaison est déterminée par la validité
d'une même condition respectée sur l'ensemble des processus.
Propriétés
Principe
∀p ∈ P : etatp = passif
Mise en évidence
Première proposition
Tous les sites qui ont été traversés par le jeton sont passifs.
Soit P = P0 avec :
P0 ≡ ∀i (t < i < N ) : etatpi = passif ,
P0 est vrai lorsque t = N − 1,
P1 ≡ ∃j (0 ≤ j ≤ t ) : couleurj = noir
Et les couleurs des n÷uds sont initialisées à blanc.
du jeton
Théorème
Règles
Exercice
: (blanc , noir )
couleurp
send hmsgi
couleur ← noir p
n
I : {etat = actif }
p p
début
etatp ← passif
n
Laurent PHILIPPE Détection de la terminaison 56 / 68
Principe
Introduction
Détection sur un anneau
Terminaison pour le calcul d'arbres
Algorithme de Dijkstra, Feijen et Van Gasteren
Solutions utilisant des vagues
Algorithme de Safra
sinon
si couleur = noir alors send hjeton, noir i à succ
p p
couleurp ← blanc
n
Généralités
Soit P = Pm l'invariant :
Pm B= mcp mcp = 0
X
≡ avec au départ
p ∈P
Pour que p décide la terminaison, il faut qu'il ait accès à la somme des
0
compteurs des messages, qui doit donc être véhiculée par le jeton
Pour l'invarient, on introduit l'assertion P telle que P = Pm ∧ P :
0 0
t <i <N
P est vrai si t = N − 1 et q = 0,
0
messages à q.
P = Pm ∧ (P0 ∨ P1 ) et :
X
P1 ≡ mcpi + q > 0
i ≤t
P2 ≡ ∃j (0 ≤ j ≤ t ) : couleurpj = noir
Pour respecter l'invariant, on établit la règle 2 :
Théorème
début
send hjeton, blanc , 0i à pn− 1
n
Tp : {etatp = passif } /* p prend le jeton hjeton, c , q i Règle 1 */
début
si p = p alors
0
Référence