Références Shlomi Dolev Self-Stabilization Algorithmes distribuées auto-stabilisants. E.W. Dijkstra Self-stabilizing systems in spite of distributed control. Commun. ACM 17 (1974), 11 : 643-644. Johanne Cohen1 1 LORIA/CNRS, Gérard Tel Introduction to Distributed Algorithms Nancy, France. ! 1 1/55 Sébastien Tixieul Introduction to Self-stabilization http ://sogea.loria.fr/. 2 2/55 Plan Petit exemple (1/2). Introduction Considérons la suite un suivante Définition Système auto-stabilisant Type de communications • u0 = x • un = Le premier algorithme auto-stabilisant Dijkstra n un Technique de preuve distance dans un graphe. 0 17 un 2 3un +1 2 1 26 un pair si 2 13 sinon (un impair ) 3 20 4 10 5 5 6 8 7 4 8 2 9 1 10 2 11 1 Quelque soit la valeur initiale, elle converge vers le comportement : 121212121212121212121212121212 Composition d’algorithme d’auto-stabilisation Conclusion 3 3/55 4 4/55 Plan Petit exemple (2/2). Introduction Définition Système auto-stabilisant Type de communications 10 8 8 Le premier algorithme auto-stabilisant Dijkstra 6 5 Technique de preuve 5 4 4 distance dans un graphe. 3 2 1 5/55 2 1 2 1 2 1 2 1 2 1 2 2 1 2 1 2 Composition d’algorithme d’auto-stabilisation 1 Conclusion 5 6/55 6 Plan Rappel de définition Introduction Definition Définition Système auto-stabilisant Type de communications Un système de transition est un couple S = (C , →) où Le premier algorithme auto-stabilisant Dijkstra Definition Technique de preuve Une exécution de S est une suite maximale (finie ou infinie) E = (γ0 , γ1 , . . . , γn , . . . ) telle que C est un ensemble de configurations → est une relation binaire sur C distance dans un graphe. pour tout i ≥ 0, on a γi → γi+1 Composition d’algorithme d’auto-stabilisation Definition Une spécification est un prédicat P sur l’ensemble des exécutions Conclusion 7 7/55 8 8/55 Retour au petit exemple Définition de l’auto-stabilisation un système est auto-stabilisant est défini par Dijkstra en 1973 Regardless of its initial state, it is guaranteed to arrive at a legitimate state in a finite number of steps. • Ensemble de configurations possibles (N + ) • fonction de transition → : γi → γi+1 SSi γi+1 = γi 2 3γi +1 2 si Plus formellement, γi pair Definition Un système de transition S = (C , →) est auto-stabilisant pour une spécification P s’il existe un ensemble L ⊆ C de configurations légitimes vérifiant les propriétés suivantes sinon (γi impair ) • une exécution : E = (17, 26, 13, 20, 10, 5, 8, 4, 2, 1, 2, 1) • Un prédicat P(γ) = (γ == 1) ∨ (γ == 2) 1. Convergence : toute exécution atteint une configuration de L. 2. Correction : toute exécution débutant par une configuration de L satisfait P 9 9/55 10 10/55 Définitions sur les configurations Complexité d’un algorithme auto-stabilisant en espace : est la taille (en nombre de bits) des variables utilisées localement pour chaque processeur. en temps : est le nombre de tours nécessaires pour parvenir à une configuration légitime (au cours d’un tour, chaque processeur exécute ou tente d’exécuter son code local). configurations légitimes configurations possibles 11/55 11 12/55 12 Retour au petit exemple Retour au petit exemple • Ensemble de configurations possibles (N + ) • fonction de transition → : • Ensemble de configurations possibles (N + ) • fonction de transition → : γi → γi+1 SSi γi+1 = γi 2 si γi → γi+1 SSi γi+1 = γi pair γi 2 si 3γi +1 2 sinon (γi impair ) γi pair • Un prédicat P(γ) = (γ == 1) ∨ (γ == 2) 3γi +1 2 sinon (γi impair ) • Un prédicat P(γ) = (γ == 1) ∨ (γ == 2) • Configurations légitimes : un = 1, un = 2, i.e : L = {1, 2} • propriété de correction ? (i.e toute exécution débutant par • Configurations légitimes : un = 1, un = 2, i.e : L = {1, 2} une configuration de L satisfait P) • propriété de correction Si γi = 1 alors γi+1 = 2 Si γi = 2 alors γi+1 = 1 • propriété de convergence ? (i.e : toute exécution atteint une configuration de L.) • propriété de convergence ? (i.e : toute exécution atteint une Conjecture à 1 000 000 Dollars pour la prouver. configuration de L.) Conjecture à 1 000 000 Dollars pour la prouver. 13 13/55 13 13/55 Retour au petit exemple Retour au petit exemple • Ensemble de configurations possibles (N + ) • fonction de transition → :γi γi → γi+1 SSi γi+1 = 2 3γi +1 2 si • Ensemble de configurations possibles (N + ) • fonction de transition → :γi γi pair γi → γi+1 SSi γi+1 = sinon (γi impair ) 2 si γi pair 3γi +1 2 sinon (γi impair ) • Un prédicat P(γ) = (γ == 1) ∨ (γ == 2) • Un prédicat P(γ) = (γ == 1) ∨ (γ == 2) • propriété de correction : OUI • propriété de correction : OUI • Configurations légitimes : un = 1, un = 2, i.e : L = {1, 2} • Configurations légitimes : un = 1, un = 2, i.e : L = {1, 2} • propriété de convergence ? (i.e : toute exécution atteint une • propriété de convergence ? (i.e : toute exécution atteint une configuration de L.) configuration de L.) Conjecture à 1 000 000 Dollars pour la prouver. Conjecture à 1 000 000 Dollars pour la prouver. 13 13/55 13 13/55 Notation Communications par envoi de messages. Commande u règle gardée → instruction mes. • une règle gardée : un prédicat sur les états des voisins. v mes. • une action instruction : un prédicat sur les états des voisins. • instruction : est exécutée si la règle gardée est vraie. 14/55 14 15/55 15 Communications par registres partagés. Communications par mémoire partagée. Definition A chaque pas atomique, un processus v registre pour v → u • peut lire les états de tous ses voisins • peut modifier son état. u u registre pour u → v v w z x voisins 16 16/55 17 17/55 Plan l’algorithme auto-stabilisant du jeton Introduction Définition Système auto-stabilisant Type de communications • Contexte : un anneau de taille N où chaque noeud a un voisin à gauche et à droite. • Objectif : exclusion mutuelle. un unique jeton qui circule indéfiniment et de manière équitable Le premier algorithme auto-stabilisant Dijkstra Technique de preuve distance dans un graphe. Composition d’algorithme d’auto-stabilisation Conclusion 18 18/55 19 19/55 Hypothèse Idée de l’algorithme • Communications par mémoire partagée. • Tous les processeurs sont activés par un ordonnanceur appelé • Chaque site i possède une valeur : σi • Ici, le démon est centralisé • La présence du jeton dépendra de la différence entre sa valeur Démon et son prédécesseur (voisin de gauche) • Il active un processeur à la fois pour faire une séquence atomique d’instructions. • Le démon centralisé est équitable • Déplacement du jeton = la “propagation” de vagues • Il active un processeur une infinité de fois pour toutes exécutions infinies. 20/55 20 21/55 21 Algorithme Dijkstra Exemple • Soit k ∈ N + avec k > n avec n le nombre de processeurs • Initialisation sur chaque machine i : • σi pris au hasard entre [0, . . . , k − 1] • Définition du jeton • P0 détient le jeton ⇐⇒ σ0 = σn−1 • Pi détient le jeton ⇐⇒ σi )= σi−1 8 P0 4 4 23 Exemple 4 8 P0 P0!execute 8 5 4 4 4 4 4 8 4 23 8 8 8 P0 8 P1!execute 5 4 4 État : plusieurs jetons (site P1 , P4 ). Perte d’un jeton Activation de P1 : Si σ1 )= σ0 alors σ1 := σ0 . 23/55 4 Exemple P0 8 P7!execute 5 4 P0 5 23/55 Exemple 8 4 État : plusieurs jetons (site P1 , P4 , P7 en rouge). Activation de P7 : Si σ7 )= σ6 alors σ7 := σ6 . 23 23/55 8 P6!execute 8 État : plusieurs jetons (site P1 , P4 , P6 en rouge). Activation de P6 : Si σ6 )= σ5 alors σ6 := σ5 . 8 4 23/55 Exemple 4 4 État initial : plusieurs jetons (site en rouge). Activation de P0 : Si σ0 = σn−1 alors σ0 := σ0 + 1 mod k. 22 8 4 8 • Exécution du code : • pour P0 : σ0 = σn−1 → σ0 := σ0 + 1 mod k • pour Pi : σi )= σi−1 → σi := σi−1 22/55 4 4 5 État : plusieurs jetons (site P2 , P4 ). Activation de P2 : Si σ2 )= σ1 alors σ2 := σ1 . 23 23/55 23 Exemple 8 8 Exemple 8 8 P0 P2!execute 8 5 4 5 4 État : plusieurs jetons (site P3 , P4 ). aucune supression de jeton ∀ la suite : Activation de P4 . 8 5 5 23 8 4 P0 5 5 5 5 5 5 23 4 5 P0 5 5 5 4 P0 5 P5+P7 5 5 État : 1 jeton sur site P6 .Ici, perte d’un jeton Configuration légitime Activation de P6 23/55 5 Exemple P5+P7 5 P0 5 23/55 Exemple 4 8 État : plusieurs jetons (site P5 , P7 ). Activation de P7 et de P5 23 23/55 4 P4+P6 5 État : plusieurs jetons (site P4 , P6 ). Activation de P6 et de P4 5 5 Exemple P3+P5 4 5 23/55 Exemple 4 P0 5 État : plusieurs jetons (site P3 , P5 ). Activation de P5 et de P3 23 23/55 8 P3!execute 4 5 8 5 5 État : 1 jeton sur site P7 . Configuration légitime Activation de P7 23 23/55 23 Exemple 5 5 Remarques. 5 5 [σ1 , σ2 , . . . , σn ] P0 5 P5+P7 5 • Une configuration est un vecteur de n valeurs entières 5 • Séquence atomique d’instructions = lire σi−1 ⊕ calculer σi • A un pas donné, un seul processeur est activé à la fois : Un seul processeur peut changer son état à la fois. • Une exécution équitable est une suite de configurations 1. dans laquelles exactement un processeur change d’état. 2. dans laquelles chaque processeur change d’état une infinité de fois pour toute exécution infinie. 5 État : 1 jeton sur site P0 . Configuration légitime Activation de P0 , et ainsi de suite 23 23/55 24 24/55 Preuve (1/4) Preuve (2/4) Proposition 1 Les configurations légitimes sont de la forme tel que ∃j, ∃v < k Il n’existe pas de configuration sans jeton. σi = v ∀i < j et σi = v − 1 mod k ∀j ≤ i ≤ n Démonstration. Si aucun des Pi n’a de jeton, alors σ0 = σ1 = · · · = σn−1 . D’où la contradiction Proposition 3 : Proposition 2 Démonstration. Soit c une configuration contenant un seul jeton, alors le système converge vers L (l’ensemble des configurations ayant 1 jeton). Soit Pi le processeur capable d’activer une règle. Il n’y a pas de configuration terminale (plus de règles activées). Après son activation, seul le processeur Pi+1 est capable d’activer la règle et ainsi de suite... Démonstration. Soit L l’ensemble des configurations ayant au moins 1 jeton. Toute activation d’une règle fait passer le jeton d’une machine à la suivante. 25 25/55 26 26/55 Preuve (3/4). Preuve (4/4). Proposition 5 : Le système converge vers L, l’ensemble des configurations ayant exactement 1 jeton. Proposition 4 : Dans une exécution infinie, P0 est activé une infinité de fois. Démonstration. • S(t) = {i : i )= 0 ∧ Pi a le jeton} et F (t) = Démonstration. $ i∈S(t) (N • Il reste à prouver que pour une exécution infinie, l’algorithme − i) visite une configuration légitime. • A chaque pas n’impliquant pas de P0 , F (t + 1) < F (t) : car le jeton se déplace de 1 ou il disparaı̂t. • Soit c la configuration où P0 est activé pour la 1ere fois. • Avant c, σ0 = σn−1 = y , et dans c, σ0 = y + 1 mod k • 0 ≤ F (t) • Quand P0 de nouveau activé ? quand σn−1 = y + 1 via σn−2 • Donc dans une exécution infinie, P0 est activé une infinité de • Comme n > 2, il y a deux processeurs ayant le m̂ numéro. fois. • Au fur et à mesure que P0 est activé, le nombre de )= numéros diminue. 27/55 27 28/55 28 Plan Technique de preuve Introduction Définition Système auto-stabilisant Type de communications La méthode de la fonction de potentiel : • Définir une fonction POIDS : ens des configurations → N telle que Le premier algorithme auto-stabilisant Dijkstra pour toute configuration légitime L, on a POIDS(L) = 0. l’exécution de l’algorithme A provoque une décroissance. Technique de preuve Si c →A c " alors POIDS(c) > POIDS(c " ) distance dans un graphe. Composition d’algorithme d’auto-stabilisation Conclusion 29 29/55 30 30/55 Méthode par raffinement Plan Preuve basée que l’exécution est composée de configurations satisfaisant P1 , puis P2 , . . . , ensuite Pi , Introduction Définition Système auto-stabilisant Type de communications Le premier algorithme auto-stabilisant Dijkstra P1 P2 Pi Technique de preuve configurations légitimes distance dans un graphe. Composition d’algorithme d’auto-stabilisation Conclusion configurations possibles 31 31/55 32 32/55 Distance dans un graphe Exemple Hypothèse Graphe dont les étiquettes correspondent à la distance entre le sommet rouge et tous les autres sommets du graphe. • G = (V , E ) un graphe, et un sommet u appelé racine • Γ(i) : ensemble des voisins de i dans G 5 • Communication de message : mémoire partagée. 1 Objectif de v : trouver la distance entre u et v 2 5 6 5 Algorithme 3 • pour u : true → Distancei := 0 • pour v )= u : true → Distancei := minj∈Γ(i) {Distancej + 1} 33/55 33 34/55 34 Exemple Exemple Graphe dont les étiquettes correspondent à la distance entre le sommet rouge et tous les autres sommets du graphe. Graphe dont les étiquettes correspondent à la distance entre le sommet rouge et tous les autres sommets du graphe. 5 2 1 5 6 3 5 2 3 5 2 5 3 34 34/55 34 34/55 Exemple Exemple Graphe dont les étiquettes correspondent à la distance entre le sommet rouge et tous les autres sommets du graphe. Graphe dont les étiquettes correspondent à la distance entre le sommet rouge et tous les autres sommets du graphe. 3 0 1 5 2 3 2 0 3 1 3 2 2 1 34 34/55 34 34/55 Exemple Exemple Graphe dont les étiquettes correspondent à la distance entre le sommet rouge et tous les autres sommets du graphe. Graphe dont les étiquettes correspondent à la distance entre le sommet rouge et tous les autres sommets du graphe. 1 0 1 3 2 1 2 0 1 34/55 1 1 2 2 2 1 34 34/55 34 Exemple Exemple Graphe dont les étiquettes correspondent à la distance entre le sommet rouge et tous les autres sommets du graphe. Graphe dont les étiquettes correspondent à la distance entre le sommet rouge et tous les autres sommets du graphe. 1 0 1 2 2 1 2 0 1 1 2 2 2 1 34 34/55 34 34/55 Exemple Exemple Graphe dont les étiquettes correspondent à la distance entre le sommet rouge et tous les autres sommets du graphe. Graphe dont les étiquettes correspondent à la distance entre le sommet rouge et tous les autres sommets du graphe. 1 0 3 2 2 1 2 0 1 3 2 3 3 1 34 34/55 34 34/55 Exemple Preuve par rafinement Lemme A partir d’une configuration de départ C, l’algorithme converge vers les états légitimes. Graphe dont les étiquettes correspondent à la distance entre le sommet rouge et tous les autres sommets du graphe. 1 0 Démonstration. Prédicat Pi : tous les sommets à distance i de u connaissent leur distance entre lui et u. 4 2 3 • Cas de base : i = 0. Comme l’exécution est équitable, u est activé au moins une fois dans cette exécution (dans c0 ). La valeur est initialisée à la bonne valeur. • Cas d’induction : 4 1 • Comme l’exécution est équitable, un sommet v à dist. i est activé après de ci−1 au moins 1 fois (dans ci" ). • Comme v voisin d’un sommet à dist. i − 1, la distance est réactualisée à la bonne valeur. • et ainsi de suite pour tous les sommets à distance i. 34/55 34 35/55 35 Preuve par rafinement Preuve par rafinement Lemme Lemme A partir d’une configuration de départ C, l’algorithme converge vers les états légitimes. A partir d’une configuration de départ C, l’algorithme converge vers les états légitimes. Démonstration. Démonstration. Prédicat Pi : tous les sommets à distance i de u connaissent leur distance entre lui et u. Prédicat Pi : tous les sommets à distance i de u connaissent leur distance entre lui et u. • Cas de base : i = 0. Comme l’exécution est équitable, u est • Cas de base : i = 0. Comme l’exécution est équitable, u est activé au moins une fois dans cette exécution (dans c0 ). La valeur est initialisée à la bonne valeur. • Cas d’induction : activé au moins une fois dans cette exécution (dans c0 ). La valeur est initialisée à la bonne valeur. • Cas d’induction : • Comme l’exécution est équitable, un sommet v à dist. i est • Comme l’exécution est équitable, un sommet v à dist. i est activé après de ci−1 au moins 1 fois (dans ci" ). • Comme v voisin d’un sommet à dist. i − 1, la distance est réactualisée à la bonne valeur. • et ainsi de suite pour tous les sommets à distance i. activé après de ci−1 au moins 1 fois (dans ci" ). • Comme v voisin d’un sommet à dist. i − 1, la distance est réactualisée à la bonne valeur. • et ainsi de suite pour tous les sommets à distance i. 35 35/55 35 35/55 Plan Définition de la composition Introduction Définition Système auto-stabilisant Type de communications • Soient deux systèmes S1 = (C1 , →1 ) et S2 = (C2 , →2 ) tels que toutes variables écrites par S2 n’apparaissent pas dans S1 . La composition S de S1 et de S2 notée S1 # S2 est un système tel que Le premier algorithme auto-stabilisant Dijkstra Technique de preuve • son ensemble des configurations S1 × S2 • sa relation de transition est (→1 , ×ID) ∪ (ID× →2 ) distance dans un graphe. Composition d’algorithme d’auto-stabilisation Conclusion 36 36/55 37 37/55 Théorème. Application du théorème Corollaire • Soit S1 un algorithme stabilisant vers une spécification P1 . Il existe un algorithme auto-stabilisant qui effectue l’exclusion mutuelle dans un anneau anonyme. • Soit S2 un algorithme stabilisant vers une spécification P2 si P1 est vraie. Démonstration. • Supposons que S1 ne modifie pas les variables de S2 une fois • Faire la composition des deux algorithmes S1 # S2 • S1 : correspond à l’algo. auto. orientant l’anneau. • S2 : correspond à l’algo. auto. de circulation de jeton dans un anneau orienté. que P1 est vraie. • Chaque processus exécute alternativement un pas de S1 et de S2 . Alors la composition S de S1 et de S2 notée S1 # S2 stabilise vers P2 38/55 • S1 et S2 satisfont les hypothèses du précédent théorème. 38 39/55 39 Orientation d’un anneau uniforme. Idée de l’algorithme • les processus envoient des jetons en fonction de leur orientation • lors de rencontre de deux jetons, ils disparaissent en modifiant les orientations. • Objectif : orienter les arêtes de l’anneau de telle façon que l’anneau devient un anneau orienté. • Hypothèse : • • • • • même code sur tous les processus. anneau anonyme. chaque processus possède deux liens :prec et succ. Le mode de communication : par registres. Le démon : centralisé et équitable 40 40/55 41 41/55 Description des variables et des états de l’algorithme Différentes règles : règle (1) Sp ∈ {S, R, I } 1. {Sp = I ∧ Sq = S ∧ lqp = preq} → Variables locales S : Send (prêt à émettre le jeton) Sp ← R; si lpq = succ alors échanger succ et pred. R : Receive (prêt à recevoir le jeton) Sq = S I : Idle Sp = I Sq = S Sp = R Un processus p tient un jeton =⇒ 1. S’il est dans l’état S. 2. S’il est dans l’état R et que son prédécesseur : Actions q p p − → − → (1) S I R p accepte le jeton et que q soit son prédécesseur 2.1 n’est pas dans l’état S. 2.2 est dans l’état S mais succ(prec(p)) )= p. 42 42/55 43 43/55 Différentes règles : règle (2) Différentes règles : règle (3) Sp ∈ {S, R, I } 3. {Sp = R ∧ lpq = pred ∧ ¬(Sq = S ∧ lqp = succ)} → Sp ∈ {S, R, I } 2. {Sp = S ∧ lpq = succ ∧ Sq = R ∧ lqp = preq} → Sp ← S; Sp ← I ; transmission de jeton Sq = R Sp = S Sq = R Sq = I Sp = I Sq = I Sp = S =⇒ =⇒ Actions q − → (3) ¬S p constate que q devient Iddle et il Actions q p p ← − ← − ← − R S I (2) p constate que q est son successeur et accepte son jeton. 44/55 Sp = R 44 45/55 p p → − → − R S se prépare à émettre un jeton. 45 Différentes règles : règle (4) Différentes règles : règle (5) Sp ∈ {S, R, I } 4. {Sp = Sq = S ∧ lpq = lqp = succ} → Sp ∈ {S, R, I } 5. {Sp = Sq = I ∧ lpq = lqp = succ} → Sp ← R; échanger succ et pred. Sq = S Sp = S Sp ← S; Sq = S Sp = R Sq = I Sp = I Sq = I =⇒ Sp = S =⇒ Actions q p p − → ← − − → (4) S S R p accepte le jeton de q et détruit son jeton Actions (5) q − → I p ← − I p ← − S p observe un problème d’orientation et il crée un jeton. 46 46/55 47 47/55 Récapitulatif de l’algorithme Etude de l’algorithme Actions (1) (2) (3) (4) (5) Sp ∈ {S, R, I } 1. {Sp = I ∧ Sq = S ∧ lqp = preq} → Sp ← R; si lpq = succ alors échanger succ et pred. 2. {Sp = S ∧ lpq = succ ∧ Sq = R ∧ lqp = preq} → Sp ← I ; transmission de jeton 3. {Sp = R ∧ lpq = pred ∧ ¬(Sq = S ∧ lqp = succ)} → Sp ← S; Actions (1) (2) (3) (4) (5) Sp ← R; échanger succ et pred. 5. {Sp = Sq = I ∧ lpq = lqp = succ} → Sp ← S; 48 q • × ?? • × p × • • • × q − → S ← − R − → ¬S − → S − → I p I ← − S − → R ← − S ← − I 49/55 q • × ?? • × p × • • • × → → → → → → • Après (2) : (1) ou (5) • Après (3) : (1) ou (4) • Après (4) : (3) • Après (5) : (2) ou (4) → → → → → → q • • = • × p × × • × • 49 Actions (1) (2) (3) (4) (5) • Après (1) : (3) • Après (2) : (1) ou (5) • Après (3) : (1) ou (4) • Après (4) : (3) • Après (5) : (2) ou (4) Mouvement des jetons Actions (1) (2) (3) (4) (5) • Après (1) : (3) Etude de l’algorithme Enchaı̂nement des actions p − → R ← − I − → S − → R ← − S Enchaı̂nement des actions p − → R ← − I − → S − → R ← − S 49/55 Etude de l’algorithme Actions (1) (2) (3) (4) (5) p I ← − S − → R ← − S ← − I Mouvement des jetons 4. {Sp = Sq = S ∧ lpq = lqp = succ} → 48/55 q − → S ← − R − → ¬S − → S − → I q − → S ← − R − → ¬S − → S − → I p I ← − S − → R ← − S ← − I Enchaı̂nement des actions p − → R ← − I − → S − → R ← − S • Après (1) : (3) • Après (2) : (1) ou (5) • Après (3) : (1) ou (4) • Après (4) : (3) • Après (5) : (2) ou (4) Mouvement des jetons q • • = • × p × × • × • Actions (1) (2) (3) (4) (5) 49 49/55 q • × ?? • × p × • • • × → → → → → → q • • = • × p × × • × • 49 Etude de l’algorithme Actions (1) (2) (3) (4) (5) q − → S ← − R − → ¬S − → S − → I p I ← − S − → R ← − S ← − I Etude de l’algorithme Enchaı̂nement des actions p − → R ← − I − → S − → R ← − S Actions (1) (2) (3) (4) (5) • Après (1) : (3) • Après (2) : (1) ou (5) • Après (3) : (1) ou (4) • Après (4) : (3) • Après (5) : (2) ou (4) Mouvement des jetons Actions (1) (2) (3) (4) (5) q • × ?? • × p × • • • × → → → → → → q − → S ← − R − → ¬S − → S − → I p I ← − S − → R ← − S ← − I Enchaı̂nement des actions p − → R ← − I − → S − → R ← − S • Après (1) : (3) • Après (2) : (1) ou (5) • Après (3) : (1) ou (4) • Après (4) : (3) • Après (5) : (2) ou (4) Mouvement des jetons q • • = • × p × × • × • Actions (1) (2) (3) (4) (5) 49 49/55 q • × ?? • × p × • • • × → → → → → → q • • = • × p × × • × • 49 49/55 Preuve (1/4) Preuve (2/4) A prouver la post-condition φ : Soit L des configurations légitimes. Lemme (propriété de correction du système) pour tout processeur p et q, pred(p) = q ↔ succ(q) = p 1. Si σ ∈ L alors φ(σ) Soit L des configurations légitimes (configuration où tous les processeurs pointent dans la même direction). 2. Si σ ∈ L et σ ! σ # alors σ # ∈ L Démonstration. • Le point (1) est prouvé par définition. • Seules les règles (1), (2) et (3) sont applicables et elles ne modifient pas les orientations 50 50/55 51 51/55 Preuve (3/4) Preuve (3/4) Lemme Lemme Une configuration terminale (aucune règle à déclencher) est légitime. Une configuration terminale (aucune règle à déclencher) est légitime. Démonstration. Démonstration. • Soit σ une configuration terminale. • Soit σ une configuration terminale. • Par contradiction, supposons que σ n’est pas orienté : • Par contradiction, supposons que σ n’est pas orienté : • aucun processus n’est dans R (sinon application de (2) ou (3)) • aucun processus n’est dans R (sinon application de (2) ou (3)) Cela signifie que 2 processus pointent l’un vers l’autre. 52/55 Cela signifie que 2 processus pointent l’un vers l’autre. • Si un des deux sont dans I , • Si un des deux sont dans I , 1. si l’autre dans S, alors application de (1) 2. si l’autre dans I , alors application de (5) • sinon les deux sont dans S : application de (4) • sinon les deux sont dans S : application de (4) 52 52/55 52 Preuve (3/4) Preuve (4/4) Lemme Théorème Une configuration terminale (aucune règle à déclencher) est légitime. L’algorithme converge vers les états légitimes. Démonstration. Démonstration. • Considérons la règle 5. • c’est la seule règle qui crée un jeton • les autres règles ne peuvent pas déclencher la règle 5. • Son exécution est déclenchée par une mauvaise initialisation. • Soit σ une configuration terminale. • aucun processus n’est dans R (sinon application de (2) ou (3)) • Par contradiction, supposons que σ n’est pas orienté : • Donc le nombre de jeton est bornée par n le nbre de processus. Cela signifie que 2 processus pointent l’un vers l’autre. • Si un jeton parcourt une distance n, alors il est orienté. • Si un des deux sont dans I , application de (1) ou (5) • Le nombre de pas où le jeton se déplace sans qu’une configuration soit atteinte est au plus n(n − 1) • sinon les deux sont dans S : application de (4) 52 52/55 53 53/55 Plan Récapitulatif Introduction • Soit S = (C , →) un système distribué où C : ens des configurations et →: relation de transition. Définition Système auto-stabilisant Type de communications • Soit L ⊆ C : ensemble de configurations légitimes Le premier algorithme auto-stabilisant Dijkstra Un algorithme est auto-stabilisant si Technique de preuve 1. à partir toutes les configurations possibles γ, son exécution converge vers une configuration légitime. distance dans un graphe. 2. à partir toutes les configurations légitimes γ, son exécution est composée uniquement de configurations légitimes. Composition d’algorithme d’auto-stabilisation Conclusion 54/55 54 55/55 55