Copyright (C) 1997-2007. JM Rodriguez. Tous droits réservés. Reproduction interdite par tous moyens sauf à des fins de citation. 1.1 Exclusion mutuelle Dans un système où un ensemble de processus cohabitent et accèdent aux mêmes ressources, les régions critiques sont essentielles. Lorsque des processus partagent les mêmes informations et que l’on veut s’assurer de l’exclusivité de l’accès, il peut utiliser l’exclusion mutuelle. 1.1.1 L’algorithme centralisé Lorsqu'un processus doit modifier des structures de données partagées, il entre d'abord dans la zone critique en s'assurant qu'aucun processus n'est en train d'utiliser la structure de données. Les zones critiques sont protégées à l'aide de sémaphores, des mutex, des moniteurs ou des mécanismes similaires. C'est une application du principe utilisé sur un système avec un seul CPU : • Le processus 1 demande au coordinateur si la ressource est libre. • Si elle est libre, le coordinateur accepte et le processus entre dans la zone critique. • Si un 2e processus veut aussi utiliser la ressource, il la demande. • Le coordinateur sait que le processus 1 est en zone critique, il met à jour la file avec l'identifiant du processus 2, et refuse l'accès. • Lorsque le processus 1 sort de la zone critique, la ressource est libérée . • Le coordinateur accepte la demande du processus 2. • Le coordinateur met à jour la file d’attente. Plusieurs inconvénients : • Un seul point de panne : le coordinateur. • Le coordinateur est un goulet d’étranglement. Plusieurs avantages : Jean-Michel Rodriguez Systèmes et applications répartis 2002-2007 Copyright (C) 1997-2007. JM Rodriguez. Tous droits réservés. Reproduction interdite par tous moyens sauf à des fins de citation. • • • Facile à mettre en place. Sûr et équitable. Trois commandes seulement : Demande, accord, libération). 1.1.2 Les algorithmes répartis Avoir un seul point de panne n’est pas acceptable. Les algorithmes répartis peuvent éventuellement pallier ce problème. 1.1.2.1 L’algorithme de Ricart et Agrawala Un des algorithmes qui peut être utilisé est l’algorithme de Ricart et Agrawala (1981). Cet algorithme nécessite un ordre total de tous les évènements dans le système. Dans une série d’évènements il est essentiel que l’ordre dans lequel ils ont été demandés soit non ambigu. L’algorithme de Lamport, vu précédemment, sera utilisé pour préserver cet ordre et fournir les timestamp nécessaires à l’exclusion mutuelle distribuée. Le principe : • Quand un processus veut entrer dans la zone critique, il construit un message contenant le nom de la zone, son n° du processus et l'heure courante. • Il envoie le message à tous les processus, lui inclus. • Le message sera accusé (ACK) pour maintenir la fiabilité du mécanisme. La communication de groupe peut être utilisée. • Les processus récepteurs répondront en fonction de leur état, lié à la zone en question, il y a 3 cas possibles : 1. Le récepteur n'est pas dans la zone et ne veut pas y entrer, il répond OK au demandeur. 2. Le récepteur est déjà dans la zone, il ne répond pas. Il charge la demande dans sa file d’attente. 3. Le récepteur veut aussi entrer dans la zone. Il a déjà envoyé les messages. Il compare l'heure du message qu’il vient de recevoir avec l’heure stockée dans le message qu'il a déjà envoyé. Si l'heure du message reçu est inférieure à la sienne, il répond OK, sinon (si son heure est inférieure) il place la demande dans sa file et ne répond pas. • Quand sa demande est partie, le processus attend son acceptation par tous les autres processus, ensuite il entre dans la zone critique. Quand il en sort, il répond OK aux autres processus qui sont dans sa file d’attente et les enlève de sa fîle d’attente. Jean-Michel Rodriguez Systèmes et applications répartis 2/6 2002-2007 Copyright (C) 1997-2007. JM Rodriguez. Tous droits réservés. Reproduction interdite par tous moyens sauf à des fins de citation. Inconvénients de cet algorithme : • Il n’y a plus un seul point de panne, mais n. En particulier à cause des nonréponses qui peuvent être interprétées comme un refus alors qu’un processeur peut-être en panne et non apte à répondre. Les autres processus vont attendre pour rien. • Amélioration possible : avoir une majorité (à déterminer) de OK pour rentrer en zone critique. Bien sûr un processus ne pourra pas donner la même permission à un deuxième processus tant que le premier n’a pas libérer la ressource. 1.1.2.2 L’algorithme anneau à jeton (Token Ring) Cet algorithme utilise le principe des anneaux à jetons alors que l’algorithme précédent utilisait le principe du bus (collision etc.). L’anneau est constitué d’un ensemble de processus ordonnés, alors que sur le réseau ces processus ne sont pas ordonnés. Le processus entrera dans la zone critique si et seulement s’il a le jeton, comme seulement un seul processus a le jeton. Principe : • Un anneau logique est construit (groupe). • Chaque processus passe le jeton à son successeur. • Le successeur renvoie un ACK. Jean-Michel Rodriguez Systèmes et applications répartis 3/6 2002-2007 Copyright (C) 1997-2007. JM Rodriguez. Tous droits réservés. Reproduction interdite par tous moyens sauf à des fins de citation. Inconvénients : • Si le jeton est perdu, il faut le redémarrer. • La détection de la perte est difficile puisqu'il n'y a pas de temps alloué. • Avec la mise en place de l'accusé de réception indiquera que le processus suivant n'est pas opérationnel et il pourra le déconnecter et envoyer le jeton au suivant dans le groupe. 1.1.2.3 Comparaison entre les 3 algorithmes II faut constater que les trois algorithmes ne sont pas très efficaces en particulier, aucun ne peut résoudre le problème latent du crash. Néanmoins la fiabilité accrue des machines permet d'accepter chacune d'elle. Mécanisme Message par E/S Délai avant entrée dans la zone. 2 Centralisé 3 Distribué 2 (n-1) 2(n-1) En anneau 1 à l’infini 0 à n-1 Problèmes Le coordinateur tombe en panne. Crash d’un processus. Jeton perdu, crash d’un processus. 1.2 Algorithme d’élection Dans certaines configurations, il est important d'avoir un processus de coordination, appelé le coordinateur de l'exclusion mutuelle ou le séquenceur (peut importe qui le fait mais cela doit être fait). Nous allons étudier les algorithmes permettant d'élire un coordinateur en prenant les hypothèses suivantes : • Chaque processus à un numéro unique, ce numéro définit une priorité, le plus grand numéro a la plus grande priorité. Jean-Michel Rodriguez Systèmes et applications répartis 4/6 2002-2007 Copyright (C) 1997-2007. JM Rodriguez. Tous droits réservés. Reproduction interdite par tous moyens sauf à des fins de citation. • • • • Il y a un processus par machine (pour simplifier l'exemple). Chaque processus connaît les numéros des autres processus. Le processus ne sait pas quels sont les processus actifs ou inactifs. Lorsqu’une élection démarre, le coordinateur est élu et tous les processus sont d'accord. Plusieurs algorithmes sont connus. 1.2.1 L'algorithme Bully Lorsqu’un processus s’aperçoit que le coordinateur ne répond plus, il initie une élection. Principe : • Un processus P détecte qu’une élection doit être initiée. • P envoie un message ELECTION à tous les processus ayant des n° plus élevés que lui. • Si aucun ne répond, P gagne l'élection et devient coordinateur. • Si un processus avec un numéro plus élevé répond, il prend la main et P a terminé. Sur la figure • P2 démarre une élection. • P3, P4 répondent. P2 laisse la main. • P3 démarre une élection. • P4 répond. P3 laisse la main. • P4 signale qu’il est le nouveau coordinateur. Un processus inactif qui redevient actif et qui démarre une élection, deviendra coordinateur s'il a le plus grand numéro. Jean-Michel Rodriguez Systèmes et applications répartis 5/6 2002-2007 Copyright (C) 1997-2007. JM Rodriguez. Tous droits réservés. Reproduction interdite par tous moyens sauf à des fins de citation. 1.2.2 L'algorithme anneau C’est une élection en réseau à anneau mais sans le jeton. C’est un processus ordonné car les membres connaissent leurs successeurs. Les processus sont placés dans un anneau virtuel (groupe). Principe : • Lorsqu’un processus s’aperçoit que le coordinateur est en panne, il initie une élection. • Il construit un message (qui remplace le jeton) et y place son numéro. • Le message ELECTION circule successivement d'un processus au suivant et chaque membre rajoute son numéro dans la liste (triée par ordre décroissant). • Si le successeur est en panne, le message est envoyé au suivant (jusqu’à ce qu’un processus valide soit trouvé). • Lorsque le message revient à l’initiateur (il trouve son numéro dans la liste), il change l’intitulé du message : ELECTION devient COORDINATOR. • Le message refait un tour et tous les membres prennent connaissance du processus qui est le nouveau coordinateur et quels sont les membres qui constituent l’anneau. • Le message est ensuite détruit et tous les membres continuent leur travail. Jean-Michel Rodriguez Systèmes et applications répartis 6/6 2002-2007