Badr Benmammar badr.benmammar@gmail.com Master Réseaux et Systèmes Distribués (RSD) Algorithmique des systèmes et applications réparties Propriété stable : terminaison distribuée d’une application répartie Badr Benmammar badr.benmammar@gmail.com
Plan Terminaison : propriété stable Processus actif vs passif Terminaison : définition Exemple d’utilisation Modèle de calcul réparti Méthodes pour détecter la terminaison Méthode générale Méthodes spécifiques Sur un anneau Algorithme de Misra en 1983 Sur un arbre
Terminaison : propriété stable Le problème de la terminaison est celui de la détection de la fin d’un calcul réparti. La terminaison, comme l’interblocage, est une propriété stable : une fois la propriété vraie, elle restera toujours vraie au cours du temps. Le problème est le suivant : l’arrêt de tous les processus correspond-il à l’arrêt définitif de l’application ou n’est-ce qu’un état transitoire ? C’est-à-dire un message peut être en transit et provoquer le redémarrage d’un, puis de tous les processus.
Processus actif vs passif Un processus est soit actif soit passif : il est actif s’il exécute du code, il est passif s’il n’a rien à faire. Un processus ne peut passer d’un état passif à un état actif que sur réception d’un message : à tout message correspond du code a exécuter. Par contre, il peut passer de l’état actif à passif à tout moment (il a fini son code ou en attente d’un message). Tous les processus sont actifs au lancement de l’application. Le processus a fini son code ou en attente d’un message Passif Actif Réception d’un message
Terminaison : définition L’algorithme distribué est dit terminé lorsque tous les processus sont passifs et qu’il n’y a pas de message en transit. La terminaison distribuée est la conjonction des terminaisons locales. P1 et P2 sont passifs à t1 et t2. P1 P2 m1 m2 t1 t2 On peut parler de terminaison Pas de terminaison Passif Actif
Exemple d’utilisation Des employés de bureau travaillent dans des bureaux dans un immeuble qu’un gardien est chargé de fermer après le travail. Les règles de travail sont les suivantes : Il n’y a qu’un employé par bureau. Quand un employé entre dans un bureau il allume la lumière. Un employé quitte un bureau soit pour rentrer chez lui, soit pour aller dans un autre bureau. Un employé qui quitte un bureau pour aller dans un autre bureau laisse le premier bureau allumé et allume la lumière dans le second (si ce n’est déjà fait). Un employé qui quitte un bureau pour rentrer chez lui éteint la lumière. Le travail est terminé quand tous les employés sont rentrés chez eux. Terminaison distribuée.
Modèle de calcul réparti Ensemble de processus communiquant par messages. Programme (cyclique) de chaque processus : Boucle 1. Attendre un message (passage temporaire à l’état passif). 2. Exécuter un calcul local par rapport à ce message. 3. Le calcul peut comporter l’envoi de messages à d’autres processus ou la terminaison du processus (passage définitif à l’état passif). Fin
Problème de la terminaison Problème : vérifier que le calcul est achevé. Cela implique deux conditions sur l’état global du système : Tous les processus sont au repos (passifs). Aucun message n’est en transit. En effet l’arrivée d’un message en transit peut relancer le calcul.
Méthodes pour détecter la terminaison Deux types de méthodes : Méthode générale : analyse de l’état global. La terminaison est une propriété stable. On peut donc la détecter par examen d’un état global enregistré (Algorithme de Chandy et Lamport 1985). http://dept-info.labri.fr/~gavoille/AD/algo_dist-metivier.pdf. http://rangiroa.essi.fr/cours/systeme2/96-flips-algo-rep1.pdf. Méthodes spécifiques : applicables à un schéma particulier de communication. Sur un anneau. Sur un arbre.
Méthodes pour détecter la terminaison Deux types de méthodes : Méthode générale : analyse de l’état global. La terminaison est une propriété stable. On peut donc la détecter par examen d’un état global enregistré (Algorithme de Chandy et Lamport 1985). http://dept-info.labri.fr/~gavoille/AD/algo_dist-metivier.pdf. http://rangiroa.essi.fr/cours/systeme2/96-flips-algo-rep1.pdf. Méthodes spécifiques : applicables à un schéma particulier de communication. Sur un anneau. Sur un arbre.
Terminaison sur un anneau Principe de base : visiter l’anneau (dans le sens de la communication) et vérifier que tous les processus sont passifs (après un tour complet). Difficulté : un message émis après le passage du visiteur (et non visible par celui-ci) peut venir réactiver (derrière lui) un processus trouvé passif. P1 P2 P3 P4 Message de P2 à P4 Visiteur V
Algorithme de Misra en 1983 Hypothèses : Pas de perte de messages. Canaux FIFO. Principe : La terminaison est réalisée lorsque tous les processus sont passifs et qu’il n’y a plus de messages en transit. L’algorithme de Misra consiste à faire visiter les processus par un jeton, la constatation par le jeton que tous les processus sont passifs lorsqu’ils ont été visités ne permet pas de conclure à la terminaison : des processus ont pu être réactivés et des messages peuvent être en transit. Comme la topologie de communication entre processus est un anneau, le jeton peut affirmer que le calcul est terminé si, après avoir effectué un tour sur l’anneau, il constate que chaque processus est resté passif depuis sa dernière visite à ce processus. En effet, les messages ne pouvant pas se doubler, entre deux visites du jeton un processus a nécessairement reçu les messages qui étaient en transit lors de la première visite du jeton.
Algorithme de Misra en 1983 Chaque processus Pi est doté des variables suivantes : état : (actif, passif) initialisé à actif. couleur : (blanc, noir) initialisé à noir. noir = Pi a été actif depuis le dernier passage du jeton. blanc = Pi a été passif depuis le dernier passage du jeton. jeton_présent : booléen initialisé à faux. Le jeton véhicule une valeur j. Le jeton porte un compteur des processus trouvés passifs. nb : entier initialisé à 0. Sert à mémoriser la valeur associée au jeton entre sa réception et sa réémission. Les messages sont de deux types : messages, jeton.
Algorithme de Misra en 1983 Réception d’un message ou initialisation : état = actif couleur = noir Attente d’un message ou fin : état = passif actif noir passif P1 P2 m1 m2
Un processus émet un jeton uniquement dans le cas passif Algorithme de Misra en 1983 Réception_de_jeton (valeur = j) // au départ j=0 Début nb=j jeton_présent=vrai si (nb = N et couleur = blanc) alors // N : nombre de processus Terminaison détectée fsi Fin Emission_de_jeton (valeur =j) si (jeton_présent et état = passif) alors si couleur = blanc alors nb = nb+1 sinon nb = 0 // (couleur=noir) envoyer (jeton, nb) à successeur (Pi) couleur=blanc jeton_présent=faux Acquérir le jeton (j=0) Un processus émet un jeton uniquement dans le cas passif
Algorithme de Misra en 1983 P1 m1 m2 P2 actif passif noir Acquérir le jeton : nb=0 jeton_présent=vrai actif noir passif P1 P2 m1 m2
Algorithme de Misra en 1983 P1 m1 m2 P2 nb=0 actif passif noir Acquérir le jeton : nb=0 Emission jeton : couleur=blanc jeton_présent=faux actif noir passif P1 P2 m1 m2 nb=0
Algorithme de Misra en 1983 P1 m1 m2 P2 nb=0 nb=0 actif passif noir Réception jeton : nb=0 Emission jeton : couleur=blanc jeton_présent=faux actif noir passif P1 P2 m1 m2 nb=0 nb=0 Réception jeton : nb=0 Emission jeton : couleur=blanc jeton_présent=faux
Algorithme de Misra en 1983 P1 m1 m2 P2 nb=0 nb=0 nb=0 actif passif Réception jeton : nb=0 Emission jeton : couleur=blanc jeton_présent=faux Réception jeton : nb=0 Emission jeton : couleur=blanc jeton_présent=faux actif noir passif P1 P2 m1 m2 nb=0 nb=0 nb=0 Réception jeton : nb=0 Emission jeton : couleur=blanc jeton_présent=faux
Détecte la terminaison Algorithme de Misra en 1983 actif noir passif P1 P2 m1 m2 nb=0 nb=1 nb=2 Détecte la terminaison Actif Passif 1 2 1 2 1 2 1 2 1 2