•Sûreté. Si l’algorithme de détection détecte P RED alors P RED est vraie.
•Vivacité. Si dans l’algorithme sous-jacent P RED est vrai alors il existe un instant pour lequel
l’algorithme de détection détecte P RED.
Un algorithme avec communication instantanée
Dans toute cette section, on suppose que la communication est instantanée: les canaux de communications
sont toujours vides.
On va construire un algorithme de détection de la terminaison: c’est-à-dire un algorithme qui détecte le
prédicat T ER précédent. Dans cet algorithme, p0est l’initiateur de l’algorithme: initialement, uniquement
T erp0est false. Le principe de cet algorithme est de maintenir un arbre de calcul de racine p0qui essen-
tiellement contient les processus actifs (un processus pest actif si T erp=T rue) Plus précisément, cet arbre
T=< ST, AT>a comme racine p0et vérifie:
•Test un arbre de racine p0(ou Test vide)
•A chaque instant STcontient exactement tous les processus actifs
Pour assurer ces propriétés, quand penvoie un message màq, si qn’était pas actif auparavant, pdevient le
père de q. Quand maintenant, qdevient inactif et qu’il n’a pas de descendant dans l’arbre, qest supprimé
de l’arbre. Si Ta bien les propriétés précédentes, il est clair que si p0est le seul élément de l’arbre et si
T erp0est vrai, alors T ER est vrai et on a bien détecté la terminaison.
Plus précisément l’arbre Test réparti et le processus pcorrespond au sommet pde T. Chaque processus
qmaintient une variable pereqqui indique le processus père de qpour T(nil s’il n’a pas de père), chaque
processus maintient aussi une variable N fils qui compte le nombre de fils qu’il a dans T.
L’algorithme est décrit Figure 1.
Soit T=< ST, AT>l’arbre défini par: ST={p|perep6=nil}et AT={(p, perep)|perep6=nil}
Soient:
P1≡ ¬T erp=⇒p∈ST
P2≡NF ilsp=|{q|(q, p)∈AT}|
P3≡Test un arbre de racine p0
P4≡(T erp∧Nf ilsp= 0) =⇒p /∈ST
Soit P=P1∧P2∧P3∧P4.
1. Montrer qu’initialement, Pest vraie, et que si Pest vraie alors si un processus exécute Envoi,Re-
ception,Inactif et Fini (et possiblement un autre processus exécute les actions qui permettent l’une
de ces actions) alors Preste vrai. En déduire que pour toutes les exécutions Pest toujours vrai.
2. Montrer que l’algorithme vérifie bien la propriété de sûreté pour la détection de T ER
3. Montrer que l’algorithme vérifie bien la propriété de vivacité pour la détection de T ER
4. Est-ce que si initialement pour d’autres processus pque p0,T erpest faux, l’algorithme est encore
correct? Si non proposez succinctement des idées pour une solution.
Un algorithme avec communication asynchrone
Dans cette partie on suppose que la communication est asynchrone: des messages peuvent être en transit
dans les canaux de communication. On cherche donc à détecter le prédicat T ERG.
2