Cours de Systèmes Répartis: Partie 1: Algorithmique Répartie
Promotion BADS AU 2019/20
Plan
Introduction Bases de l’algorithmique répartie
1. Etat dans un système réparti, ordre, temps, 2. Observation cohérente 3. Algorithmique répartie
2
Définition d’un système réparti
Ensemble composé d’éléments reliés par les un système de communication éléments ont des fonctions de traitement (processeurs), de stockage (mémoire), de relation avec le monde extérieur (capteurs, actionneurs)
;
3
Propriétés des systèmes répartis
Fonctionner (au moins de façon dégradée) même en cas de
défaillance de certains de ses éléments
Résister à des perturbations du système de communication (perte de messages, déconnexion temporaire, performances dégradées)
Résister à des attaques contre sa sécurité (tentatives de violation de la confidentialité et de l’intégrité, usage indu de ressources, déni de service)
S’adapter pour faire face aux changements de conditions
d’utilisation et d’environnement
Rester performant lorsque sa taille augmente (nombre
d’éléments, nombre d’utilisateurs, étendue géographique)
4
Difficultés dans les systèmes répartis
Propriété d’asynchronisme du système de communication (pas de borne
supérieure stricte pour le temps de transmission d’un message) ◦ Conséquence : difficulté pour détecter les défaillances
Dynamisme (la composition du système change en permanence)
◦ Conséquences : difficulté pour définir un état global ◦ Difficulté pour administrer le système
Taille complexe et développée (nombre de composants, d’utilisateurs,
dispersion géographique) ◦ Conséquence : la capacité de croissance est une propriété importante,
mais difficile à réaliser
En dépit de ces difficultés, des systèmes répartis existent tels
que: ◦ le DNS (Domain Name System) ◦ le World Wide Web ◦ divers services sur l’Internet
(service de base) (infrastructure) (applications)
5
Problèmes fondamentaux
Comment déterminer des propriétés globales à partir
d’observations locales ?
Comment coordonner des opérations en
l’absence
d’horloge commune ?
Comment définir, et maintenir, la cohérence d’informations
réparties ?
Comment garder un système en fonctionnement malgré
des défaillances partielles
6
Solutions fondamentales
Il faut définir des modèles
Un modèle est une représentation du monde réel
Un modèle représente des éléments réels par des éléments abstraits
Un même système réel peut être représenté par des modèles
différents
Tout modèle a des limites
Il faut utiliser les modèles
Pour observer et comprendre le comportement du système réel
Pour prédire le comportement du système réel dans certaines
circonstances
Pour aider à commander le système réel (lui imposer un
comportement particulier)
7
Bases de l’algorithmique répartie
1. Ordre, temps, état dans un système
réparti
2. Observation cohérente 3. Algorithmes répartis de base
8
Ordre, temps, état dans un système réparti
On veut être capable de raisonner sur un système ou une
application ◦ Définir des prédicats, ce qui implique d’accéder à un état ◦ Coordonner des activités, ce qui implique de définir un ordre
Univers réparti est différent:
◦ Pas de mémoire commune (support habituel de l’état) ◦ Pas d’horloge commune (qui définit le séquencement des
événements)
◦ Asynchronisme des communications
Pas de borne supérieure sur le temps de transit d’un message
◦ Asynchronisme des traitements
Pas de bornes sur le rapport relatif des vitesses d’exécution sur deux
sites
Conséquence de la variabilité de la charge et de l’absence (en général)
de garanties sur l’allocation des ressources
9
Sûreté et vivacité
On est souvent amené à spécifier et à vérifier
des propriétés d’un système dynamique (évoluant dans le temps)
Ces propriétés ont deux valeurs:
◦ Sûreté (safety) : un événement indésirable
n’arrivera jamais Exemples : violation de l’exclusion mutuelle incohérence
dans les données
◦ Vivacité (liveness) : un événement désirable
finira par arriver Exemples : un message sera délivré à son destinataire une ressource demandée sera rendue disponible un algorithme se termine
10
Le modèle asynchrone (fiable)
Le but est de modéliser certains
aspects du monde réel ◦ Asynchronisme des communications et des
traitements
C’est le modèle le plus “faible”
◦ Les contraintes sont les plus fortes les
résultats sont les plus généraux Bornes sur les coûts Résultats d’impossibilité
◦ " Le modèle peut être renforcé (en levant
certaines contraintes Exemple : borne supérieure sur le traitement
et/ou la durée de transmission
11
Le modèle asynchrone
Les processus (sur différents sites) ne communiquent que par messages
Trois types d’événements
◦ Local (changement de l’état d’un processus) ◦ Lié à la communication Émission d’un message Réception d’un message
Pas de bornes sur : •la durée de transmission d’un message •le rapport des vitesses d’exécution des processus
12
Réception / Délivrance
On suppose disponible un système de communication permettant d’envoyer des messages entre processus
Propriétés :
1. Un message finit par arriver à destination, mais son temps de transmission n’est pas borné!; on modélise ainsi une panne (détectée) suivie d’une ou plusieurs réémission(s) 2. Un message arrive intact (non modifié) ; on suppose que des mécanismes de détection / correction d’erreur sont utilisés
3. Selon le cas, on fera ou non l’hypothèse que le canal est
FIFO entre deux processus
13
Réception / Délivrance
Bien distinguer la réception d’un message de sa délivrance à son destinataire
14
Événements, historique, synchronisation
L’exécution d’un processus est une suite
d’événements (local, émission, réception) appelée historique (ou trace) du processus ◦ pour p1 : e11, e12, e13, …, e1k, …
Cette suite est ordonnée par l’horloge locale du
processus p1
Que veut dire “synchroniser deux processus ?” Imposer un ordre entre des événements
appartenant à ces deux processus ◦ Exemple : l’exclusion mutuelle ◦ fin(C2) précède deb(C1) ou fin(C1) précède deb(C2)
15
Relation de précédence
Le problème :
◦ 1) Définir une relation globale de précédence (donner un
sens à l’opérateur « précède »)
◦ 2) Définir un ordre entre deux événements sur la seule
base d’informations locales
Solution : utiliser le principe de causalité : la cause
précède l’effet. Une relation de précédence est dite causale si elle est compatible avec ce principe. Application ici : ◦ Sur un processus : un événement local ne peut agir localement que sur les événements postérieurs
◦ Entre deux processus : l’envoi d’un message précède sa
réception
◦ Composition : la relation de causalité est transitive
16
La causalité
Définition [Lamport 78] :
◦ e précède causalement e' ( e e') si :
17
La causalité est potentielle
La relation de précédence causale ! définit en fait une causalité potentielle (par négation) Si e e', on peut simplement dire qu’on ne
viole pas le principe de causalité en disant que e est la cause de e'. On peut donc dire que e est une cause potentielle de e', mais pas que e est effectivement une cause de e' (il faudrait pour cela analyser la sémantique de l’application) Certitude que e' ne peut pas être la cause de e
(le futur n’agit pas sur le passé)
18
Dépendance et indépendance causale
Publicité
Définition : passé (ou historique) d’un événement e
◦ hist(e) = l’ensemble des e' tels que e' e {e}
Seul le passé strict de e peut influencer e
◦ si e' e, alors e' peut influencer e ◦ si ¬ (e‘ e), alors il est certain que e' ne peut pas
influencer e
Si ¬ (e e') et ¬ (e' e), on note e || e' et on dit que e et e' sont causalement indépendants (aucun des deux n’appartient au passé de l’autre, aucun des deux ne peut influencer l’autre)
19
Problème de datation
Problème : construire un système de datation des événements compatible avec la causalité
Approche : introduire un processus
“observateur” p0 qui est informé, par message, de tout événement du système
La suite des événements enregistrée par p0 est une observation globale du système
20
Problème de datation
21
Problème de datation: Validité des observations
Une observation du système est un
ordonnancement particulier des événements du système.
Une observation est dite valide si pour tout
couple d’événements (e, e') tels que
e e', O(e) précède O(e'). Sinon, elle est dite invalide (elle
viole la causalité)
22
Problème de datation: Validité des observations
Canal non FIFO. L’observation viole la
causalité : les événements sont observés dans l’ordre inverse de leur occurrence
23
Problème de datation: Validité des observations
La causalité est encore violée :
◦ e1
1 e2
l’ordre inverse.
2 , mais ces événements sont observés dans
Ce phénomène est indépendant de la propriété
FIFO
24
Observation valide
Temporairement, lever l’hypothèse
d’asynchronisme
temps de transmission borné = & et supposer qu’on dispose d’une horloge HR donnant le temps réel.
Chaque événement transmis à l’observateur est
estampillé par HR
une observation de e est le couple (e, HR(e))
25
Observation valide
Au temps t, on délivre tous les messages
ayant des estampilles < t – & dans l’ordre des estampilles.
26
Caractérisation des observations valides
Condition de validité: " Dans un système où les observations sont
ordonnées par des estampilles H, une condition suffisante de validité est :
e e' H(e) < H(e') : condition de validité faible
de l’horloge (implication dans un seul sens)
Cette condition est trivialement satisfaite par HR
27
Etat Global?
Pas de HR Temps de propagation des messages n’est pas
borné
Objectif: construire un système d’horloges
assurant une observation valide, en respectant la condition de validité faible
L’absence de borne & aura une conséquence
sur la complétude, non sur la validité
28
Horloges logiques (Lamport)
Principe:
à chaque site i, un compteur HLi à valeurs
entières
Un événement e se produisant sur le site i est daté par la valeur courante de HLi , soit HLi(e)
Un message m émis à partir du site i porte une estampille égale à sa date d’émission
29
Algorithme de Lamport
Initialisation :
◦ HLi = 0
Événement local et d’envoi :
◦ HLi = HLi + 1
Envoi d’un message m :
◦ on envoie (m, Em), avec Em = HLi (après incrémentation)
Réception d’un message (m, Em) :
◦ HLi = max (HLi, Em) + 1
30
Exemple
HL satisfait la condition de validité faible :
◦ e e' H(e) < H(e')
Mais H(e) < H(e') ¬ (e e'). ◦ Donc ou bien e' e, ou bien e' || e
31
Ordre strict et total
L’ordre n’est pas strict. Deux événements peuvent avoir la même estampille: ils sont alors causalement indépendants. Si on veut un ordre strict, il faut ajouter un critère (en général on prend le numéro du processus)
◦ Si e pi, e‘ pj, alors ◦ (HL(e), i) < (HL(e'), j) ssi HL(e) < HL(e') ou (HL(e)
= HL(e') et i<j)
32
Non-détection des événements manquants
p1 reçoit des messages des autres processus. On
souhaite qu’ils lui soient délivrés dans l’ordre de leurs estampilles.
Délivrance de m2 (3) et réception de m4 (8). Peut-on le
délivrer ?
33
Non-détection des événements manquants
Les trois situations sont indistinguables avec
les HL
Plus généralement, si HL(e) < HL(e'), existe-t-il
e" tel que e e" e' ?
Question insoluble. Il s’agit d’une propriété de vivacité (un événement va-t-il arriver ?) Risque d’un événement ne soit pas détecté.
34
Solution: les messages stables.
un message reçu est stable si aucun message
portant une estampille inférieure ne parviendra au destinataire
délivrer un message que s’il est stable
Attendre la réception d’un message de tous les émetteurs potentiels. Puis, les délivrer dans l’ordre des estampilles.
Canaux FIFO (si non FIFO, c’est possible
mais plus complexe)
35
Solution: les messages stables.
Connaître tous les émetteurs potentiels
Traiter la non réception d’un processus : envoyer un message avec demande de réponse (ping)
Pas de garantie pour la terminaison qu’elle soit en temps fini. (Dans la pratique, on utilise un délai de garde, avec le risque d’une arrivée tardive)
36
Horloges vectorielles
On cherche à caractériser la dépendance causale, en construisant un système de datation H qui ait la propriété de validité forte :
e e‘ H(e) < H(e')
Applications
◦ observation, mise au point (attribution d’une cause
à un effet)
◦ communication causale, diffusion causale ◦ contrôle et maintien de la cohérence d’informations
(Ex: la reprise après une panne)
37
Horloges vectorielles: Fidge, Mattern
Idée inclure le passé de l’événement “émission” dans l’estampille H du message Principe Horloge vectorielle / Site Taille
◦ Nombre de sites
But
◦ Dater les événements ◦ Identique aux horloges logiques
38
Horloges vectorielles: Fidge, Mattern (1988)
Fonctionnement Associer un vecteur Vi à chaque site Pi Init : Vi = (0, … , 0) Evénement local à Pi
◦ Vi[i] = Vi[i]+1
Emission d’un message m estampillé par Vm
◦ Vi[i] = Vi[i]+1 ◦ Vm = Vi de l’émetteur
Réception d’un message (m, Vm) par Pi
◦ Vi[i] = Vi[i]+1 ◦ Vi[j] = max(Vi[i], Vm[j]) pour j = 1..n, j i
39
Exemple
40
Horloge Vectorielle
41
Publicité
Horloges vectorielles
42
Horloges vectorielles
43
Horloges matricielles
Synthèse Horloge logique ou scalaire
◦ Réduite à un nombre
Ce que Pi connaît du système (Hi)
Horloge vectorielle
◦ Vecteur d’horloges scalaires Ce que Pi connaît de Pj (Hi[j])
Horloge matricielle ◦ Matrice d’horloges
Ce que Pi connaît de ce que Pj connaît de Pk (Hi[j,k])
44
Horloges matricielles
Principe Horloge matricielle/Site nxn Evénement ei de Pi
◦ Daté par la valeur courante de HMi
Envoi de message ◦ Estampillé par Hmi
Sémantique Interprétation de HMi[j,k]
◦ Nombre de messages de Pj vers Pk dont Pi a
connaissance
45
Horloges matricielles
Evénement local à Pi ◦ HMi[i,i] = HMi[i,i] + 1
Envoi de message vers Pj HMi[i,i] = HMi[i,i] + 1 HMi[i,j] = HMi[i,j] + 1
Réception de (m,Em) par Pj
Délivré que si tous les messages qui sont causalement
antérieurs à lui ont été délivrés Em[j,i] = HMi[j,i] + 1 Pour tout k i,j: Em[k,i] = HMi[k,i] (messages des autres sites)
Délivrance et MAJ horloges
HMi[i,i] = HMi[i,i] + 1 HMi[j,i] = HMi[j,i] + 1 Pour tout k i,j et pour tout l i: HMi[k,l] = max(HMi[k,l],
Em[k,l])
46
Exemple
47
48
Exercice d’application
On considère l'exécution parallèle représentée par la figure
ci-dessous, dans laquelle :
les lignes horizontales représentent les échelles de temps de processus.
eij représente le jème événement observable sur le
processus Pi.
les flèches reliant les événements de processus distincts sont des échanges de messages
TAF: Appliquer l’algorithme de l’horloge matricielle sur les deux
systèmes répartis suivants.
49
Exercice d’application
50
51
Exercice d’application
1. Donner deux couples d'événements concurrents. 2. Quels sont les événements causalement dépendants de
e11 ?
3. Donner des exemples d’événements causalement
indépendants.
4. Proposer un modèle de datation relatif à cet exemple.
52
Horloges matricielles
Optimisations les horloges matricielles sont coûteuses (
O(n2) )
Diverses optimisations ont été proposées ◦ partitionner le système en sous-systèmes
(interaction faible entre sous-systèmes) - réduit n
◦ exploiter des caractéristiques spécifiques du
système (synchronisation)
◦ restreindre la “profondeur” du passé
53
Etat d’un Système Réparti Notion de Coupure
État d’un système réparti
Coupures
Coupures cohérentes
Propriétés des coupures cohérentes
59
Plan
Introduction:
◦ Définition, organisation, propriétés, …
Partie 1: Bases de l’algorithmique répartie 1. Etat dans un système réparti, ordre, temps, 2. Observation cohérente 3. Algorithmique répartie
Partie2: Tolérance aux pannes et aux fautes
1. Validation atomique 2. Groupes, diffusion, cohérence 3. Consensus, prise de décision
60
Définition
Exclusion mutuelle Contexte de plusieurs processus s'exécutant en parallèle Accès à une ressource partagée par un seul processus à la
fois
Exclusion mutuelle en distribué Accès à une ressource partagée distante par un seul
processus à la fois
Processus distribués Requêtes et gestion d'accès via des messages échangés entre
les processus
Nécessité de mettre en œuvre des algorithmes gérant ces échanges de messages pour assurer l'exclusion mutuelle
61
Rappel
Un processus est dans 3 états possibles, par rapport
à l'accès à la ressource
Demandeur : demande à utiliser la ressource, à
entrer dans la section
Dedans : dans la section critique, utilise la ressource
partagée
Dehors : en dehors de la section et non demandeur
d'y entrer
62
Changement d'état par un processus
De dehors à demandeur pour demander à accéder à
la ressource
De dedans à dehors pour préciser qu'il libère la
Ressource
Le passage de l'état demandeur à l'état dedans est géré par le système et/ou l'algorithme de gestion d'accès à la ressource
63
Plusieurs grandes familles de méthodes Contrôle par un serveur qui centralise les
demandes d'accès à la ressource partagée
Contrôle par jeton ◦ Un jeton circule entre les processus et donne l'accès à la
ressource
◦ La gestion et l'affectation du jeton – et donc l'accès à la
ressource – est faite par les processus entre eux Deux approches : jeton circulant en permanence ou
affecté à la demande des processus
Contrôle par permission ◦ Les processus s'autorisent mutuellement à accéder à la
ressource
64
Plusieurs grandes familles de méthodes
Contrôle par un serveur centraliseur Avantages Très simple à mettre en œuvre Simple pour gérer la concurrence d'accès à la
ressource Inconvénients Nécessite un élément particulier pour gérer
l'accès
Potentiel point faible, goulot d'étranglement
65
Plusieurs grandes familles de méthodes
Contrôle par jeton ◦ Principe général
Un jeton unique circule entre tous les processus Le processus qui a le jeton est le seul qui peut
accéder à la section critique
◦ Versions de l’algorithme
Anneau sur lequel circule le jeton en permanence Jeton affecté à la demande des processus
66
Plusieurs grandes familles de méthodes
Contrôle par jeton sur anneau ◦ un processus reçoit le jeton ◦ S'il est dans l'état demandeur : il passe dans l'état
dedans et accède à la ressource
◦ S'il est dans l'état dehors, il passe le jeton à son voisin ◦ Quand le processus quitte l'état dedans, il passe le
jeton à son voisin
67
Contrôle par jeton sur anneau
Avantages Très simple à mettre en œuvre Intéressant si nombreux processus demandeurs de la ressource Équitable en terme de nombre d'accès et de temps d'attente Aucun processus n'est privilégié
Inconvénients Nécessite des échanges de messages (pour faire circuler le jeton)
même si aucun site ne veut accéder à la ressource
Temps d'accès à la ressource peut être potentiellement long Si le processus i+1 a le jeton et que le processus i veut accéder à la ressource et est le seul à vouloir y accéder, il faut que le jeton fasse tout le tour de l'anneau
68
Contrôle par jeton avec communication entre processus
Soit N processus avec un canal bi-directionnel entre chaque processus
Canaux fiables mais pas forcément FIFO
Localement, un processus Pi possède un tableau nbreq, de taille N
Pour Pi, nbreq [ j ] est le nombre de requêtes d'accès que le processus Pj a fait et que Pi connaît (par principe il les connaît toutes) Le jeton est un tableau de taille N jeton [ i ] est le nombre de fois où le processus Pi a accédé à la
ressource
Publicité
La case i de jeton n'est modifiée que par Pi quand celui-ci accède à la
ressource
69
Contrôle par jeton avec communication entre processus (suite)
Initialisation
Pour tous les sites Pi : j [ 1 .. N ] : nbreq [ j ] = 0
Jeton j [ 1 .. N ] : jeton [ j ] = 0
Un site donné possède le jeton au départ
Quand un site veut accéder à la ressource et n'a pas le jeton
Envoie un message de requête à tous les processus
70
Contrôle par jeton avec communication entre processus (suite)
Quand processus Pj reçoit un message de requête venant de Pi
Pj modifie son nbreq localement : nbreq [ i ] = nbreq [ i ] + 1
Pj mémorise que Pi a demandé à avoir la ressource
Si Pj possède le jeton et est dans l'état dehors
Pj envoie le jeton à Pi
Quand processus récupère le jeton
Il accède à la ressource (passe dans l'état dedans)
71
Contrôle par jeton avec communication entre processus (suite)
Quand Pi libère la ressource (passe dans l'état dehors)
Met à jour le jeton : jeton [ i ] = jeton [ i ] + 1
Parcourt nbreq pour trouver un j tel que :
◦ nbreq [ j ] > jeton[j]
Une demande d'accès à la ressource de Pj n'a pas
encore été satisfaite : Pi envoie le jeton à Pj
Si aucun processus n'attend le jeton : Pi le garde
72
Contrôle par Permission
Un processus demande l'autorisation à un sous-
ensemble donné de tous les processus
Deux modes: Permission individuelle : un processus peut donner
sa permission à plusieurs autres à la fois
Permission par arbitre : un processus ne donne sa
permission qu'à un seul processus à la fois
◦ Les sous-ensembles sont conçus alors tel qu'au moins un processus soit commun à 2 sous-ensembles : il joue le rôle d'arbitre
73
Permission individuelle
un processus peut donner sa permission à
plusieurs autres à la fois
Chaque processus demande l'autorisation à tous
les autres (sauf lui par principe)
◦ Liste des processus à interroger par le processus Pi pour
accéder à la ressource : Ri = { 1, ... , N } – { i }
74
Permission individuelle
Se base sur une horloge logique (Lamport) pour garantir le bon fonctionnement de l'algorithme
◦ Ordonnancement des demandes d'accès à la ressource
◦ Si un processus ayant fait une demande d'accès reçoit une demande d'un autre processus avec une date antérieure à la sienne, il donnera son autorisation à l'autre processus
75
Algorithme de [Ricart & Agrawala]
Chaque processus gère les variables locales suivantes: Une horloge Hi Une variable dernier qui contient la date de la dernière
demande d'accès la ressource
L'ensemble Ri Un ensemble d'identificateurs de processus dont on attend
une réponse : attendu
Un ensemble d'identificateurs de processus dont on diffère le renvoi de permission si on est plus prioritaire qu'eux : différé
Initialisation ◦ Hi = dernier = 0 ◦ différé = , attendu = Ri
76
Algorithme de [Ricart & Agrawala]
Si un processus veut accéder à la ressource, il exécute
◦ Hi = Hi + 1 ◦ dernier = Hi ◦ attendu = Ri ◦ Envoie une demande de permission à tous les processus de Ri avec
estampille (Hi, i )
◦ Se met alors en attente de réception de permission de la part de tous les
processus dont l'identificateur est contenu dans attendu
◦ Quand l'ensemble attendu est vide, le processus a reçu la permission de tous
les autres processus
Accède alors à la ressource partagée Quand accès terminé
Envoie une permission à tous les processus dont l'id est dans différé différé est ensuite réinitialisé (différé = )
77
Algorithme de [Ricart & Agrawala]
Quand un processus Pi reçoit une demande de permission de
la part du processus Pj contenant l'estampille (H, j) ◦ Met à jour Hi : Hi = max (Hi, H) +1
◦ Si Pi pas en attente d'accès à la ressource : envoie permission à Pj
◦ Sinon, si Pi est en attente d'accès à la ressource
Si Pi est prioritaire : place j dans l'ensemble différé
On lui enverra la permission quand on aura accédé à la ressource
Si Pj est prioritaire : envoi permission à Pj,
Pj doit passer avant moi, je lui envoie ma permission
La priorité est définie selon la datation des demandes d'accès à la ressource
de chaque processus
Le processus prioritaire est celui qui a fait sa demande en premier
Ordre des dates : l'ordre << de l'horloge de Lamport :
( dernier, i ) << ( H, j ) si ( ( dernier < H ) ou ( dernier = H et i < j ) )
78
Élection
Problème
◦ Parmi un ensemble de processus, en choisir un
et un seul (et le faire connaître à tous) sécurité : un seul processus élu vivacité : un processus doit être élu en temps fini
◦ L’élection peut être déclenchée par un
processus quelconque, éventuellement par plusieurs processus
◦ L’identité de l’élu est en général indifférente,
on peut donc (par exemple) choisir le processus qui a le plus grand numéro
◦ Difficulté : des processus peuvent tomber en
panne pendant l’élection
Élection
Utilité et domaines d’application
◦ Regénération d’un jeton perdu : un jeton et un
seul doit être recréé
◦ Dans les algorithmes de type “maître-esclave” :
élire un nouveau maître
◦ en cas de défaillance du maître courant
Élection
Algorithme de base: Bully algorithm
◦ Algorithme de la brute ◦ Hypothèses
Réseau fiable et synchrone Identité des processus connue par tous
Principe
◦ Basé sur la recherche d’un min ou max d’un
ensemble
◦ Demande d’élection par inondation ◦ Réponse à ceux qui ont un numéro inférieur ◦ le Processus est élu s’il ne reçoit aucune réponse
Élection: algorithme de la brute (bully)
Election sur un anneau (Chang et Roberts)
83
Terminaison (1)
Modèle de calcul réparti (rappel)
◦ Ensemble de processus communiquant par messages ; état actif
ou passif
◦ Programme (cyclique) de chaque processus :
loop
1. attendre un message (passage temporaire à l’état passif) 2. exécuter un calcul local en réponse à 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)
end
Problème de la terminaison ◦ 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
réparti
Terminaison (2)
Méthodes pour détecter la terminaison 1. 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é (Partie 1 du cours)
2. Méthodes spécifiques : applicables à un schéma particulier de communication
◦ Sur un anneau ◦ Sur un arbre ou un graphe orienté (avec arbre
couvrant)
Terminaison sur un anneau
Principe : visiter l’anneau dans le sens de la communication et vérifier que tous les sites 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 site trouvé passif
Terminaison sur un anneau (Misra)
é é
é
è
Terminaison sur un anneau (Misra)