1.1 Exclusion mutuelle

publicité
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
Téléchargement