Sie sind auf Seite 1von 49

Introduction aux Systmes Distribus

me

Licence Informatique 3

anne

Gestion du temps & tat global


dans un systme distribu
Eric Cariou
Universit de Pau et des Pays de l'Adour
Dpartement Informatique
Eric.Cariou@univ-pau.fr

Introduction

Algorithmique distribue

Dveloppement d'algorithmes dans le contexte


particulier des systmes distribus

Contraintes prendre en compte dans ce contexte

Concurrence

Points de problmes de fiabilit en nombre accru

Les lments formant le systme s'excutent en parallle et de


manire autonome
Pas d'tat ou d'horloge globale commune
Problme matriel d'une machine
Problme de communication via le rseau
Problme logiciel sur un des lments du systme

Communication est un point crucial

Potentiellement non fiable


Temps de communication non ngligeables

Introduction

Algorithmique distribue

Dveloppement d'algorithmes ddis aux systmes distribus et


prenant en compte les spcificits de ces systmes
On y retrouve notamment des adaptations de problmes
classiques en paralllisme

Mais aussi des problmes typiques des systmes distribus

Horloge globale, tat global, diffusion causale, consensus ...

S'intresse principalement deux grandes familles de problmes

Exclusion mutuelle, lection (d'un matre) ...

Synchronisation et coordination entre processus distants


Entente sur valeurs communes et cohrence globale dans un contexte
non fiable (crash de processus, perte de messages ...)

Dans ce cours

Introduction l'algorithmique distribue avec les problmes


d'horloge et d'tat globaux

Systme distribu

Systme distribu

Ensemble d'lments logiciels s'excutant en parallle

On parlera de processus pour ces lments logiciels

Ces lments communiquent via des canaux de


communication

Liaison entre un processus et un canal (canal unidirectionnel) :


Processus E

Processus R

Tampon Emission

Tampon Rception

canal
4

Processus

Processus

lment logiciel effectuant une tche, un calcul

Excution d'un ensemble d'instructions


Une instruction correspond un vnement local au processus

Dont les vnements d'mission et de rception de messages

Les instructions sont gnralement considres comme


atomiques

Il possde une mmoire locale

Il possde un tat local

Ensemble de ses donnes et des valeurs de ses variables locales

Il possde un identifiant qu'il connat

Pas ou peu de connaissance des autres processus du


systme et de leur tat

Les processus d'un systme s'excutent en parallle5

Canaux

Canal de communication

Canal logique de communication point point

Pour communication entre 2 processus


Transit de messages sur un canal

Caractristiques d'un canal

Uni ou bi-directionnel
Fiable ou non : perd/modifie ou pas des messages
Ordre de rception par rapport l'mission

Synchrone ou asynchrone

Exemple : FIFO = les messages sont reus dans l'ordre o ils sont mis
Synchrone : l'metteur et le rcepteur se synchronisent pour raliser
l'mission et/ou la rception
Asynchrone : pas de synchronisation entre metteur et rcepteur

Taille des tampons de message cots metteur et rcepteur


Limite ou illimite
6

Canaux

Caractristiques d'un canal

Modle gnralement utilis

Fiable, FIFO, tampon de taille illimite, asynchrone (en mission


et rception) et bidirectionnel
Variante courante avec rception synchrone

Exemple : modle des sockets TCP

Fiable
FIFO
Bidirectionnel
Synchrone pour la rception

On reoit quand l'metteur met


Sauf si donnes non lues dans le tampon cot rcepteur

Asynchrone en mission

Emetteur n'est pas bloqu quand il met quoique fasse le


rcepteur

Systme synchrone / Asynchrone

Un modle synchrone est un modle o les


contraintes temporelles sont bornes

On sait qu'un processus voluera dans un temps born

On sait qu'un message arrivera en un certain dlai

On connat la limite de drive des horloges locales

Un modle asynchrone n'offre aucune borne


temporelle

Modle bien plus contraignant et rendant impossible ou


difficile la ralisation de certains algorithmes distribus

Exemple : ne sait pas diffrencier en asynchrone

Le fait qu'un processus est lent ou est plant


Le fait qu'un message est long transiter ou est perdu

tat et horloge globales

Pour chaque processus du systme

tat global du systme

tat local : valeur des variables du processus un instant t

Valeur de toutes les variables de tous les processus du


systme un instant t

Problme

Un tat est li un instant t

Mais

Chaque processus une horloge physique locale


Pas d'horloge globale dans un systme distribu

La dfinition d'un tat global est possible seulement si on


est capable de dfinir un temps global
9

Temps

Dfinir un temps global cohrent et identique


(ou presque) pour tous les processus

Soit synchroniser au mieux les horloges physiques


locales avec une horloge de rfrence ou entre elles

Soit crer un temps logique

Synchronisation des horloges physiques locales

But est d'viter qu'une horloge locale drive trop par


rapport un rfrentiel de temps

La drive est borne en augmentation et en diminution

Deux modes

Synchronisation interne
Synchronisation externe
10

Synchronisation horloges physiques

Synchronisation interne

Un groupe d'horloges ont entre-elles une drive borne

Si D est la borne max de la drive, Ci l'horloge physique


du processus i, t un instant rel, et Ci(t) la valeur de
l'horloge Ci pour cet instant t, alors

i,j,t : | Ci(t) Cj(t) | < D

A tout instant, la drive entre 2 horloges quelconques du


groupe ne dpasse jamais la borne D

Un mesure locale du temps sur un site donnera un temps identique


une mesure d'un autre site avec une diffrence d'au plus D

Les drives sont bornes entre les horloges mais pas


ncessairement avec le temps rel

Sauf si synchronisation externe en plus sur un temps de ref.


11

Synchronisation horloges physiques

Synchronisation externe

Une source externe fournit un temps de rfrence

Les horloges locales se re-synchronisent rgulirement


partir de cette source, en prenant en compte

Les temps de propagation des messages entre le processus


courant et celui grant le temps de rfrence
Le temps de traitement de la requte (rcuprer la date de
rfrence) du processus grant le temps de rfrence, s'il est
connu

Mme contrainte que pour synchronisation interne :


drive borne

Mais par rapport une source de rfrence : S

A l'instant t, S(t) est le temps de rfrence donn par la source externe

i,t : | S(t) Ci(t) | < D

12

Mthodes de synchronisation

Synchronisation interne pour un systme distribu synchrone

Un processus envoie rgulirement la valeur t de son horloge aux


autres processus pour que chacun se recale sur l'horloge des autres

En thorie : processus met son horloge la valeur t + Ttrans

Ttrans = temps de transmission du message mais est non fixe

Ttrans est born : borne max mais aussi borne min : min < Ttrans < max

En pratique, processus met son horloge la valeur de t + x

O x est une estimation du temps de propagation

Exemple : on prend la moyenne des bornes, x = (min + max) / 2


Erreur de recalage est alors au plus de (min max ) / 2

Plus difficile mettre en oeuvre dans un systme asynchrone

Car temps de transmission sont non borns


13

Mthodes de synchronisation

Synchronisation externe pour un systme asynchrone

Temps de propagation des messages est non born

Mais temps d'aller-retour entre 2 processus est mesurable

Un processus envoie une requte au processus grant


le temps de rfrence qui lui rpond en lui envoyant sa
valeur d'horloge ts

Mesure du temps d'aller-retour : Tround


A partir de l, on peut mettre jour son horloge
En prenant la moiti de Tround par exemple
t = ts + Tround/2

Certains algorithmes se base galement sur la dure du


temps d'aller-retour par rapport la prcision requise pour
savoir si la mise--jour sera assez prcise [Cristian, 89]
14

Mthodes de synchronisation

Synchronisation interne pour un systme asynchrone


[Gusella et Zatti, 89]

Un des processus est lu matre et c'est lui qui gre le temps

Les autres processus lui envoie leur valeur d'horloge


En utilisant galement les temps d'aller-retour
A partir de toutes les horloges, le matre dtermine le
temps moyen global

Il envoie chaque processus la variation de leur temps


local par rapport au temps global
Permet d'liminer les horloges dfaillantes car le matre
a une vision globale
Si le matre se plante, un autre est lu

15

Mthodes de synchronisation

Mthodes/algorithmes de Guzella et Christian

Plutt adapts aux rseaux locaux

NTP : Network Time Protocol

Reprend les ides de ces 2 mthodes mais pour fournir


un temps global via Internet

Adapt pour rsister aux problmes des larges rseaux

Redondance des serveurs de temps pour assurer fiabilit

Se base sur un rseau de serveurs

Permet n'importe quel client, quelque soit la qualit de la


communication de se synchroniser
Authentification pour se protger des attaques
16

Temps logique

Temps logique

Temps qui n'est pas li un temps physique

But est de pouvoir prciser l'ordonnancement de


l'excution des processus et de leur communication

En fonction des vnements locaux des processus, des


messages envoys et reus, on cr un
ordonnancement logique

Cration horloge logique

Deux approches principales

Horloge de Lamport : mthode par estampille

Horloge de Mattern : horloge vectorielle


17

Temps logique : chronogramme

Chronogramme

Dcrit l'ordonnancement temporel des vnements des


processus et des changes de messages

Chaque processus est reprsent par une ligne

Trois types d'vnements signals sur une ligne

mission d'un message destination d'un autre processus


Rception d'un message venant d'un autre processus
vnement interne dans l'volution du processus

Les messages changs doivent respecter la topologie


de liaison des processus via les canaux

18

Temps logique : chronogramme

Trois processus tous relis entre-eux par des canaux

Temps de propagation des messages quelconques et


possibilit de perte de message

19

Temps logique : chronogramme

Exemples d'vnements

Processus P1

e11 : vnement d'mission du message m1 destination du


processus P2
e13 : vnement interne au processus
e14 : rception du message m4 venant du processus P3

Processus P2 : message m5 envoy avant m6 mais m6


reu avant m5

Processus P3 : le message m7 est perdu par le canal de


communication

Rgle de numrotation d'un vnement

exy avec x le numro du processus et y le numro de


l'vnement pour le processus, dans l'ordre croissant

20

Temps logique : dpendance causale

Relation de dpendance causale

Il y a une dpendance causale entre 2 vnements si un


vnement doit avoir lieu avant l'autre

Notation : e e'

e doit se drouler avant e'

Si e e', alors une des trois conditions suivantes doit


tre vrifie pour e et e'

Si e et e' sont des vnements d'un mme processus, e prcde


localement e'
Si e est l'mission d'un message, e' est la rception de ce
message
Il existe un vnement f tel que e f et f e'
21

Temps logique : dpendance causale

Sur exemple prcdent

Quelques dpendances causales autour de e12

Localement : e11 e12, e12 e13

Sur message : e12 e34

Par transitivit : e12 e35 (car e34 e35) et e11 e13

Dpendance causale entre e12 et e32 ?

A priori non : absence de dpendance causale


Des vnements non lis causalement se droulent en parallle

Relation de paralllisme : ||

e || e' ((e e') v (e' e))

Paralllisme logique : ne signifie pas que les 2 vnements


se droulent simultanment mais qu'il peuvent se drouler
dans n'importe quel ordre
22

Temps logique : dpendance causale

Ordonnancement des vnements

But d'une horloge logique

Les dpendances causales dfinissent des ordres


partiels pour des ensembles d'vnements
Crer un ordre total global sur tous les vnements de
tous les processus

Horloge logique

Fonction H(e) : associe une date chaque vnement

Respect des dpendances causales

e e' H(e) < H(e')

H(e) < H(e') (e' e)

C'est--dire : soit e e', soit e || e'

23

Horloge de Lamport

Lamport, 1978

Horloge de Lamport : horloge logique respectant les


dpendances causales

Une date (estampille) est associe chaque venement :


couple (s, nb)

s : numro du processus
nb : numro d'vnement

Invariant sur les dates

Pour deux dates d'un mme processus, les numros de


ces dates sont diffrentes

d,d' : d.s = d'.s d.nb d'.nb

Il n'y pas deux vnements locaux ayant le mme numro


24

Horloge de Lamport

Cration du temps logique

Localement, chaque processus Pi possde une horloge


locale logique Hi, initialise 0

Pour chaque vnement local de Pi

Hi = Hi + 1 : on incrmente l'horloge locale


L'vnement est dat localement par Hi

mission d'un message par Pi

Sert dater les vnements

On incrmente Hi de 1 puis on envoie le message avec (i, Hi)


comme estampille

Rception d'un message m avec estampille (s, nb)

Hi = max(Hi, nb) +1 et marque l'vnement de rception avec Hi

Hi est ventuellement recale sur l'horloge de l'autre processus


avant d'tre incrmente
25

Horloge de Lamport

Exemple : chronogramme avec ajouts des estampilles

Date de e23 : 6 car le message m5 reu avait une valeur de 5 et


l'horloge locale est seulement 3

Date de e34 : 4 car on incrmente l'horloge locale vu que sa valeur est


suprieure celle du message m3
Pour e11, e12, e13 ... : incrmentation de +1 de l'horloge locale

26

Horloge de Lamport

Ordonnancement global

Valeur de Hi permet de savoir si un vnement a lieu


avant un autre ou pas, qu'il s'agisse d'vnements

Du mme processus
De processus diffrents

Ordre total, not e << e' : e s'est droul avant e'

Soit e vnement de Pi et e' vnement de Pj :


e << e' (Hi(e) < Hj(e')) v (Hi(e) = Hj(e') avec i < j)

Localement (si i = j), Hi donne l'ordre des vnements du processus


Les 2 horloges de 2 processus diffrents permettent de dterminer
l'ordonnancement des vnements des 2 processus

Si galit de la valeur de l'horloge, le numro du processus est utilis


pour les ordonner

27

Horloge de Lamport

Limites de l'horloge de Lamport

L'ordonnancement global obtenu est arbitraire et n'est


pas forcment celui obtenu en pratique

Ordre total global obtenu pour l'exemple

H(e32) = 2 et H(e22) = 3 pourtant e22 est excut en pratique


avant e32
e11 << e31 << e12<< e21 << e32 << e13 << e22 << e33 << e14
<< e34 << e35 << e23 << e24 << e15
D'autres sont valides ...

Horloge de Lamport respecte les dpendances causales


mais avec e et e' tel que H(e) < H(e') on ne peut rien dire
sur la dpendance entre e et e'

Dpendance causale directe ou transitive entre e et e' ?

Exemple : H(e32) = 2 et H(e13) = 3 mais on a pas e32 e13


28

Horloge de Mattern

Horloge de Mattern & Fidge, 1989-91

Horloge qui assure la rciproque de la dpendance causale

H(e) < H(e') e e'

Permet galement de savoir si 2 vnements sont


parallles (non dpendants causalement)

Ne dfinit par contre pas un ordre total global

Principe

Utilisation d'estampilles sur les messages

Vecteur V de taille gale au nombre de processus

Localement, chaque processus Pi a un vecteur Vi

Pour chaque processus Pi, chaque case Vi[ j ] du vecteur


contiendra des valeurs de l'horloge du processus Pj
29

Horloge de Mattern

Fonctionnement de l'horloge

Initialisation : pour chaque processus Pi, Vi =(0, ... , 0)

Pour un processus Pi, chacun de ses vnements


(local, mission, rception) :

Vi [ i ] = Vi [ i ] + 1
Incrmentation du compteur local d'vnement
Si mission d'un message, alors Vi est envoy avec le message
Pour un processus Pi, la rception d'un message m contenant un
vecteur Vm, on met jour les cases j i de son vecteur local Vi

j : Vi [ j ] = max ( Vm [ j ], Vi [ j ])

Mmorise le nombre d'vnements sur Pj qui sont sur Pj dpendants


causalement par rapport l'mission du message
La rception du message est donc aussi dpendante causalement
de ces vnements sur Pj

30

Horloge de Mattern

Exemple : chronogramme d'application horloge de mattern

Mme exemple que pour horloge de Lamport

31

Horloge de Mattern

Relation d'ordre partiel sur les dates

V V' dfini par i : V[ i ] V'[ i ]

V < V' dfini par V V' et j tel que V [ j ] < V' [ j ]

V || V' dfini par ( V < V' ) ( V' < V )

Dpendance et indpendance causales

Horloge de Mattern assure les proprits suivantes, avec e


et e' deux vnements et V(e) et V(e') leurs datations

V(e) < V(e') e e'

Si deux dates sont ordonnes, on a forcment dpendance causale


entre les vnements dats

V(e) || V(e') e || e'

Si il n'y a aucun ordre entre les 2 dates, les 2 vnements sont


indpendants causalement

32

Horloge de Mattern

Retour sur l'exemple

V(e13) = (3,0,0), V(e14) = (4,0,3), V(e15) = (5,4,5)

V(e13) < V(e14) donc e13 e14

V(e14) < V(e15) donc e13 e15

V(e35) = (2,0,5) et V(e23) = (2,3,5)


V(e35) < v(e23) donc e35 e23

L'horloge de Mattern respecte les dpendances causales


des vnements

Horloge de Lamport respecte cela galement

V(e32) = (0,0,2) et V(e13) = (3, 0, 0)

On a ni V(e32) < V(e13) ni V(e13) < V(e32) donc e32 || e13


L'horloge de Mattern respecte les indpendances causales

L'horloge de Lamport impose un ordre arbitraire entre les vnments


indpendants causalement

33

Horloge de Mattern

Limite de l'horloge de Mattern

Ne permet pas de dfinir un ordre global total

En cas de nombreux processus, la taille du vecteur


peut-tre importante et donc des donnes
transmettre relativement importante

34

tat global

tat Global

tat du systme un instant donn

Buts de la recherche d'tats globaux

Trouver des tats cohrents partir desquels on peut reprendre


un calcul distribu en cas de plantage du systme
Dtection de proprits stables, du respect d'invariants
Faciliter le debugging et la mise au point d'applications
distribues

Dfini partir de coupures

Coupure

Photographie un instant donn de l'tat du systme

Dfinit les vnements appartenant au pass et au futur


par rapport l'instant de la coupure
35

Coupure

Dfinition coupure

Calcul distribu = ensemble E d'vnements

Coupure C est un sous-ensemble fini de E tel que

Soit a et b deux vnements du mme processus :


a C et b a b C

Si un vnement d'un processus appartient la coupure, alors tous


les vnements locaux le prcdant y appartiennent galement

Etat associ une coupure

Si le systme est compos de N processus, l'tat associ une


coupure est dfini au niveau d'un ensemble de N vnements
(e1, e2, ... ei, ... eN), avec ei vnement du processus Pi tel que

i :e C et e vnement du processus Pi e ei

L'tat est dfini la frontire de la coupure : l'vnement le


plus rcent pour chaque processus
36

Coupure

Exemple de coupure

(mme chronogramme que pour exemples horloges Lamport et Mattern)

Coupure = ensemble { e11, e12, e13, e21, e22, e23, e31, e32, e33, e34 }

tat dfini par la coupure = (e13, e23, e34)

37

Coupure/tat cohrent

Coupure cohrente

Coupure qui respecte les dpendances causales des


vnements du systme

Et pas seulement les dpendances causales locales chaque


processus
Soit a et b deux vnements du systme :
a C et b a b C
Coupure cohrente : aucun message ne vient du futur

tat cohrent

tat associ une coupure cohrente

Permet par exemple une reprise sur faute


38

Coupure cohrente

Exemple (mme chronogramme que prcdent)

Coupure C1 : cohrente

Coupure C2 : non cohrente car e35 e23 mais e35 C2

La rception de m5 est dans la coupure mais pas son mission


39
m5 vient du futur par rapport la coupure

Datation Coupure

Horloge de Mattern permet de dater la coupure

Soit N processus, C la coupure, ei l'vnement le plus rcent pour le


processus Pi, V(ei) la datation de ei et V(C) la datation de la coupure

V(C) = max ( V(e1), ... , V(eN) ) :


i : V(C)[ i ] = max ( V(e1)[ i ] , ... , V(eN)[ i ] )

Pour chaque valeur du vecteur, on prend le maximum des valeurs


de tous les vecteurs des N vnements pour le mme indice

Permet galement de dterminer si la coupure est cohrente

Cohrent si V(C) = ( V(e1)[ 1 ], ... , V(ei)[ i ], ... , V(eN) [ N ] )

Pour un processus Pi, si l'vnement ei est le plus rcent c'est lui qui a la
date la plus rcente pour C : sinon un vnement ej d'un processus Pj
(i j) s'est droul aprs un vnement ei' de Pi avec ei' plus rcent que ei

ei ei' et ei' ej avec ei C, ej C et ei' C

40

Datation Coupure

Datation des coupures de l'exemple

Coupure C1 : tat = (e13, e22, e33)

V(e13) = (3,0,0), V(e22) = (1,2,1), V(e33) = (0,0,3)


V(C) = (max(3,1,0), max(0,2,0), max(0,1,3)) = (3,2,3)
Coupure cohrente car V(C)[1] = V(e13)[1], V(C)[2] = V(e22)[2],
V(C)[3] = V(e33)[3]

Coupure C2 : tat = (e13, e23, e34)

V(e13) = (3,0,0), V(e23) = (2,3,5), V(e34) = (2,0,4)


V(C) = (max(3,2,2), max(0,3,0), max (0,5,4))

Non cohrent car V(C)[3] V(e34)[3]

D'aprs la date de e23, e23 doit se drouler aprs 5 vnements de


P3 or e34 n'est que le quatrime vnement de P3
Un vnement de P3 dont e23 dpend causalement n'est donc pas
dans la coupure (il s'agit de e35 se droulant dans le futur)

41

Dtermination tat cohrent

Algorithme de Chandy & Lamport, 1985

Algorithme permettant aux processus distribus


d'enregistrer un tat global cohrent

Principe gnral

Un processus diffuse un vnement marqueur et les


processus enregistrent leur tat

Fonctionnement asynchrone

Contraintes sur le systme

Canaux de communication uni-directionnels et FIFO

Fiable : pas de plantage ou de perte de message

Topologie de connexion fortement (voire totalement) connexe

Pour faciliter la diffusion

42

Dtermination tat cohrent

tat d'un canal

Pour un canal FIFO fiable unidirectionnel

Canal pour envoi de message du processus Pi vers Pj

A un instant t, l'tat du canal < i, j > est l'ensemble des


messages mis par Pi et non encore reus par Pj

Pour le chronogramme de l'exemple, tats des canaux


par rapport la coupure C1

vnements de la frontire de la coupure : e13 pour P1 et e33 pour P3

tat du canal < 1, 3 > = { m3 }

m3 a t envoy en e12 et ne sera reu qu'en e34

tat du canal < 3, 1 > = { m4 }

m4 a t envoy en e33 et ne sera reu qu'en e14

43

Algorithme de Chandy & Lamport

Fonctionnement algorithme Chandy & Lamport

Un processus Pk est initiateur du lancement de l'algo

Il enregistre son tat local


Il envoie un message marqueur tous les processus
Un processus Pj, la rception du marqueur sur son canal < k, j >

Enregistre son tat local (donnes, variables ...)


Positionne l'tat de chacun de ses canaux entrants < i, j > vide

Envoie un marqueur sur tous ses canaux sortants : tous ses voisins

Ces 3 tapes sont excutes en une squence atomique

Pour un processus Pj, la rception du marqueur venant de


Pi, sur le canal entrant < i, j >

Enregistre l'tat du canal < i, j > : tous les messages reus sur
< i, j > depuis la rception du premier marqueur venant de Pk
44

Algorithme de Chandy & Lamport

Fonctionnement algorithme Chandy & Lamport (fin)

Pour un processus Pj, l'algorithme est fini quand il a reu


un marqueur sur chacun de ses canaux

L'tat enregistr pour Pj est compos de

Son tat local (variable, donnes ...)


Les tats de tous ses canaux entrants

Pour constituer l'tat global

On collecte l'ensemble des tats enregistrs par les


processus

Une fois que l'on sait que tous les processus l'ont
enregistrs
45

Algorithme de Chandy & Lamport

Principe du double marqueur pour savoir quand tout le


monde a enregistr son tat local

Le premier marqueur vient du processus initiateur

Le processus Pi s'arrte alors (ou passe dans une autre


phase de son calcul)
Il prcise tous ses voisins qu'il s'est arrt en leur envoyant un
marqueur
Il se met en attente de messages l'informant que ses processus
voisins se sont arrts galement

A la rception d'un marqueur sur un canal, on sait qu'un


de ses voisins s'est arrt

Et que tous ses voisins se sont arrts quand on a reu un


marqueur sur tous ses canaux
Quand tout le monde est au courant de l'arrt de tout le
monde : c'est fini

46

Algorithme de Chandy & Lamport

Intrt d'enregistrer les messages sur < i, j >

Les processus ne sont pas synchroniss et les temps de


propagation des messages sont non nuls

Ne sait donc pas quand un processus s'arrte et si tous


les messages qu'il a envoy ont t reus quand il le fait

Donc doit enregistrer les messages venant de Pi

Comme les canaux sont FIFO, si on reoit le marqueur de Pi, on


sait que tous les messages envoys par Pi sont maintenus reus,
plus aucun n'est en transit

47

Algorithme de Chandy & Lamport

Proprit de l'tat global enregistr

Correspond un tat cohrent

L'algorithme dfinit une coupure

Frontire est forme pour chaque processus par l'vnement


d'enregistrement de l'tat local et de diffusion du marqueur aux
autres processus (via une squence atomique)

Cette coupure est cohrente

Car canaux FIFO : aucun message ne peut en doubler un autre

Localement pour un processus Pj, si un marqueur est reu sur un canal


< i,j >, cela implique qu'aucun message mis par Pi et reu par Pj avant le
marqueur n'a pu tre mis aprs que Pi mette son marqueur
Pas de message venant du futur
Pour un processus Pj, les vnements d'mission des messages en transit
( destination d'autres processus) coupant la coupure ont forcment
lieu avant son vnement local dfinissant la frontire

48

Algorithme de Chandy & Lamport

Exemple avec 3 processus totalement interconnects

eM : vnement d'enregistrement d'tat et diffusion marqueur

eF : vnement o l'tat local complet est enregistr

49
tats canaux : <3,1> = { m3, m4 }, <2,3> = { m5 }, autres sont vides