Documente Academic
Documente Profesional
Documente Cultură
i=P
i=1
R
i
i=P
i=1
D
i
) < N
Pour les compteurs D
i
, chaque guichet de retour peut se contenter dune approximation. On peut donc placer
sur un guichet de retour i
0
, les images de tous les autres compteurs D
j
, j ,= i
0
9
.
Pour un guichet i
0
, on aura donc besoin des relations dobservation j = 1, P : D
i0
j
D
j
) et, par
suite, limplication suivante sera satisfaite :
(
i=P
i=1
R
i
j=P
j=1
D
i0
j
) < N (
i=P
i=1
R
i
i=P
i=1
D
i
) < N
Reste le problme de la somme des compteurs R
i
. Il faut pouvoir disposer de la valeur exacte ou dune
approximation par excs. Une solution possible est celle du jeton. Une variable globale abstraite S
R
peut tre
reprsente par un jeton circulant entre les guichets de retour placs sur un anneau logique. Pour prciser la
localisation de lobjet (de la variable) jeton mobile, on introduit le prdicat X@node(i). Ce prdicat est vrai
si la variable X est localise sur le site node(i). Le test devient alors possible sous la forme :
S
R
@node(i
0
) (S
R
j=P
j=1
D
i0
j
) < N
9. Pour simplier lcriture des formules, on suppose que sur le site i
0
, limage D
i
0
est un alias pour dsigner la source D
i
0
puisque image et source sont sur le mme site
Prcis de rpartition Dpartement Informatique et Mathmatiques appliques 18
Rpartition par rplication
Une autre solution consiste rpliquer la variable somme S
R
sur tous les guichets de retour. Il se pose
alors le problme de la cohrence globale de ces copies. Il est ncessaire de respecter un protocole bien prcis
pour assurer une mise jour dite atomique des direntes copies
10
. titre dexemple des problmes qui
peuvent survenir, il sut de considrer le cas de deux guichets de retour G
R1
et G
R2
. Supposons que lon ait
donc deux copies S
R1
et S
R2
. On peut envisager le maintien de la cohrence des deux copies en rpliquant
tout simplement chaque opration logique sur les deux copies. Ainsi, une opration de restitution ayant pour
origine G
R1
devra se traduire par une opration locale S
R1
.incr(1) et une opration distante S
R2
.incr(1).
Symtriquement pour une opration de restitution ayant pour origine G
R2
, il faudra excuter une opration
locale S
R2
.incr(1) et une opration distante S
R1
.incr(1).Supposons le droulement chronologique suivant :
Restitution ayant pour origine le guichet G
R1
G
R2
Opration locale S
R1
.incr(1)
S
R2
.incr(1)
Opration distante S
R1
.incr(1)
S
R2
.incr(1)
Si la valeur des deux copies tait cohrente avant ces deux oprations de restitution mais que la prcondition
(S
Ri
j=P
j=1
D
i0
j
) < N est devenue fausse aussi bien pour R
1
que pour R
2
aprs les deux incrmentations
locales, les deux oprations distantes deviennent impossibles. En fait, les deux oprations de restitution ont
t partiellement xcutes. Pourtant, il tait possible dexcuter compltement une SEULE des deux resti-
tutions. Il ne fallait simplement pas entrelacer les oprations dincrmentation. Des protocoles de diusion
atomiques ont t proposs pour rsoudre ce genre de situation.
1.6.4 Conclusion
Nous avons vu travers cet exemple, la fois les dicults et la richesse des solutions rparties. Encore,
navons nous pas considr le systme dinformation proprement dit. En eet, chaque guichet devra sans
doute grer un journal des oprations quil a trait par exemple dans une journe. Ces journaux enregistrs
sur chaque guichet seront ventuellement transmis un site central chaque nuit durant la fermeture du
garage. Inversement, un site central(isateur) pourra interroger rgulirement les guichets.
On peut aussi envisager une rgulation entre garages sil en existe plusieurs implants dans direntes
villes. Il faudra alors dnir un protocole dchange permettant dviter la fois les ruptures de stock et
les engorgements des garages.
Dans tous les cas, certains problmes rcurrents devront tre rsolus : choix de la rpartition des donnes,
synchronisation globale, atomicit des oprations, rplication, diusion,. . ..
1.6.5 Exercices
1. Un jeton se perd. Imaginer des solutions pour dtecter cette perte et engendrer un nouveau jeton
(Attention, il doit tre unique !).
2. La circulation permanente du jeton consomme de la bande passante rseau inutilement. Imaginer un
protocole permettant darrter le jeton sur un site et de le remettre en mouvement lorsquune requte
apparat sur un site quelconque.
3. Rchir au problme pos par larrt dun guichet de retour, de dpart notamment vis--vis des
observations.
4. Concevoir une rgulation possible entre plusieurs garages de location.
5. Imaginer un protocole qui viterait le problme des entrelacements errons doprations rpliques.
10. Latomicit est une proprit qui nest pas spcique aux systmes rparties. Les systmes transactionnels (centraliss)
ont largement tudi ce problme. Cependant, la rpartition pose des problmes de mise en uvre plus complexes.
Prcis de rpartition Dpartement Informatique et Mathmatiques appliques 19
Prcis de rpartition Dpartement Informatique et Mathmatiques appliques 20
Premire partie
Algorithmique rpartie
21
Chapitre 2
Les principes
2.1 Modlisation de la rpartition
Pour mieux comprendre la rpartition, il est ncessaire davoir une modlisation la plus prcise possible
dun systme rparti. Un certain nombre dabstractions ont t proposes. Elles conduisent des modles
de calcul rparti dirents.
On peut distinguer deux grande classes de modles :
dune part, les modles fonds sur la notion de processus communicants. Ces modles dexcution
rpartie conservent la notion fondamentale de processus des systmes parallles.
1
Par contre, divers
modes de communication entre processus sont possibles et ils modient trs profondment le modle
nal. A titre dexemple, la communication peut tre synchrone ou asynchrone, point point ou par
diusion, etc.
dautre part, les modles fonds sur la notion dobjet. Cette approche sest dveloppe avec le succs
de la technologie objet dans les langages de programmation. Toutefois, lutilisation du concept dobjet
qui en est faite est trs dirente. Laccent est mis sur la modularit apporte par le concept, laspect
rutilisation tant beaucoup plus secondaire.
Dans ce chapitre, nous nous concentrons sur le modle des processus communiquant par messages. Cest
en eet le modle de base qui a bien videmment t le plus tudi et exploit. Cest en particulier celui
utilis pour la description des algorithmes rpartis. Cest pourquoi nous dcrirons plus spciquement un
modle standard de processus communicants utilis dans ce contexte dtude.
2.1.1 Processus communiquant par messages
Les processus communiquant par messages constituent le modle la fois le plus ancien et le plus tudi
des modles de calcul rparti. Un calcul rparti est tout dabord un calcul parallle. Cest pourquoi la
notion de processus squentiel a t rutilise pour exprimer cette fois-ci le grain de rpartition. Cependant,
labsence de mmoire globale aux sites dune architecture distribue a conduit introduire des primitives
de communication permettant aux processus dchanger des messages. De multiples protocoles dchange de
messages tant envisageables, ce modle possde de nombreuses variantes et a t lobjet aussi bien dtudes
thoriques approfondies que dimplantations diverses.
2.1.2 Formalisation du modle
Dun point de vue thorique, ce modle a t formalis sous forme dalgbres de processus [1]. Deux
approches algbriques ont t particulirement dveloppes : le modle CSP (Communicating Sequential
Processes) de Hoare et le modle CCS (Calculus of Communicating Systems) de Milner. Les termes de
1. Un processus est une unit dallocation de ressources locales, donc de rpartition. Il fournit dune part des resssources
mmoires, chiers, programme et dautre part, de la puissance de traitement sous forme de processus lgers ou threads.
23
lalgbre permettent de dcrire le comportement des processus. Les changes de messages sont des actions
lmentaires simultanes synchrones (on parle de rendez-vous) entre deux processus ou plus. Cette approche
algbrique modlise un calcul rparti de faon susamment formelle pour valider certaines proprits de
sret telles que linterblocage. Cependant, la complexit du raisonnement crot trs rapidement avec le
nombre des interactions par messages et rend dicile la validation de telles applications. Paradoxalement,
bien que le formalisme de description algbrique soit trs abstrait, deux obstacles se combinent et rduisent
les possibilits oertes par cette approche : dune part, les concepts modliss sont eux trs lmentaires
et dautre part, la communication est considre comme synchrone et idalement atomique, masquant ainsi
bien des dicults rencontres dans les systmes rels.
2.1.3 Mises en uvre du modle
Au niveau systme dexploitation, limplantation de ce modle est videmment la plus rpandue puis-
quindispensable dun point de vue pratique. Depuis le systme ACCENT jusquaux protocoles dInternet,
en passant par PVM/MPI, de nombreux systmes dexploitation ont intgr des primitives de communica-
tion permettant lchange de messages entre processus distants. De faon pratique, chaque machine est le
support dexcution de plusieurs processus, ce qui amne distinguer pour xer lorigine ou la destination
dun message, dune part, un nom de site global larchitecture distribue (cette dsignation tant elle-mme
structure en domaines, sous-domaines. . .) et dautre part, un nom local associ au processus (notion de port
dans IP par exemple).
Limpact de la rpartition sur les systmes dexploitation ne sest pas rduite lintroduction de primitives
de communication par messages. Des services accessibles distance sont trs vite apparus (service de chiers
par exemple). La notion mme de processus a t sensiblement modie. lorigine, lobjet systme
processus recouvrait le suivi et la gestion de lexcution dun programme squentiel xant ainsi la granularit
du paralllisme. Le modle client-serveur a amen structurer lactivit dun processus en plusieurs sous-
activits squentielles ddies chacune la gestion des changes avec un client mais partageant les ressources
du mme processus. Ainsi, un processus peut comporter un degr quelconque de paralllisme sous forme de
processus lgers (ou threads). On distingue alors le grain de rpartition x par les processus dit lourds qui
gardent leur rle dunit dallocation de ressources et le grain de paralllisme dtermin par les processus
lgers.
Lintgration de ce modle de calcul rparti dans les langages a donn lieu de nombreuses propositions.
Lapproche la plus lmentaire est dintroduire dans le langage un type prdni canal dot doprations
de communication mettre et recevoir. Ces oprations peuvent tre synchrones (rendez-vous du langage
Occam) ou asynchrones. Pour faciliter la prise en compte du non-dterminisme inhrent aux changes de
messages, la notion de commande garde, propose par Dijkstra, a t la base de structures de contrle
permettant lcoute de plusieurs canaux simultanment.
Hormis les langages classiques impratifs, une approche issue des langages fonctionnels a aussi t pro-
pose. Il sagit en loccurrence des langages acteurs. Dans de tels langages, les activits sont reprsentes
sous forme dacteurs. Un acteur peut changer des messages avec ses acteurs voisins (accointances). Comme
dans le modle processus, il peut crer de nouveaux acteurs, mais il peut aussi changer dynamiquement
de comportement en interprtant tout message reu comme une continuation. Ce modle, de par son ori-
gine fonctionnelle, inclut la fois un fort degr de rexivit et de dynamisme. Il a t mis en uvre, par
exemple, par la ralisation de machines virtuelles acteurs orant un langage intermdiaire. Des implanta-
tions rparties ont pu tre ainsi dveloppes simplement. On peut donc souligner que de nombreuses ides
des langages acteurs sont aujourdhui exploites dans les environnements rpartis tels que Java (machine
virtuelle, rexivit, mobilit du code).
2.2 Le modle standard de lalgorithmique rpartie
Le problme de base des systmes rpartis est de trouver des principes et concepts pour matriser la
communication par messages.
Prcis de rpartition Dpartement Informatique et Mathmatiques appliques 24
Pour concevoir puis dcrire des algorithmes rpartis, il est ncessaire de choisir un modle de calcul rparti.
Plusieurs modles existent selon le niveau dabstraction des communications que lon choisit (communication
synchrone ou non, par message ou par appel de procdure, point point ou multipoint, able ou non, . . .).
Un modle lmentaire assez standard est cependant utilis pour dcrire les algorithmes. Nous en donnons
une description dtaille.
2.2.1 Structuration dun programme rparti
Un programme rparti peut tre naturellement structur en un ensemble xe de processus ou noeuds. La
description de lalgorithme consistera donc fournir le programme excut par chaque noeud (processus).
CR = i = 1, N :: P
i
)
Dnition dun processus communicant
Un processus communicant est lunit de rpartition. Il satisfait les proprits suivantes :
Encapsulation Un processus encapsule un ensemble de variables dites locales quil est seul pouvoir
utiliser. Les valeurs courantes de ces variables dnissent ltat courant du processus.
Comportement Un processus excute squentiellement une suite dinstructions. Lexcution dune ins-
truction peut modier atomiquement cet tat (transition), envoyer un message ou recevoir un message. Le
comportement dun processus peut donc tre dcrit par la suite des transitions quil excute. Cependant,
lhypothse datomicit permet dadopter un point de vue vnementiel : chaque instruction peut tre
associ un vnement qui traduit loccurrence de lexcution de cette instruction. Par consquent, il est aussi
possible de tracer et dabstraire lexcution dun processus sous la forme dune suite dvnements. En
gnral, ce sont videmment les vnements denvoi et de rception de message qui sont particulirement
signicatifs.
Lhypothse datomicit des instructions peut paratre trs restrictive. En fait, pour quun usager peroive
des instructions atomiques, il sut quune instruction localement non atomique ne soit pas interrompue
par la rception ou lmission dun message. Ce type de comportement est en gnral acceptable dans les
applications sans contraintes de temps rel.
Identication Chaque processus possde une identication distincte des autres. On peut distinguer deux
niveaux : un nom symbolique (une URL, par exemple bach.enseeiht.fr) ou une adresse IP. Cest une hypothse
communment admise.
Connaissance locale Un processus na quune connaissance trs partielle du calcul auquel il participe.
Initialement, une hypothse couramment admise est quil connat son identication, ses voisins via les canaux
quil peut utiliser et son tat interne x par la valeur de ses variables locales. Il ne peut connatre quune
approximation des tats des autres processus.
La communication par messages
Les changes de messages peuvent se faire via des canaux logiques de communication point point dont
les proprits peuvent varier : (a)synchrone, canal uni/bidirectionnel, able ou non, respectant la chronologie
denvoi en rception (canal FIFO), de capacit limite ou non,. . .
Des hypothses trs usuelles (car les plus commodes utiliser dans les algorithmes) consistent considrer
des canaux asynchrones, bidirectionnels ables et FIFO de capacit illimite.
Lensemble des canaux xe la topologie de communication.
Prcis de rpartition Dpartement Informatique et Mathmatiques appliques 25
c5
P1
P2
P3
P4
c1
c2 c3
c4
Figure 2.1 Structure dun calcul rparti
0
e1 r2 e3 e4
i1
e2
r1
e
t
P1
P2
P3
P4
Figure 2.2 Exemple de chronogramme
Remarques Bien remarquer les restrictions du modle :
le nombre de processus est constant et la topologie de communication est xe ;
Les seules interactions possibles sont les changes de messages ;
Aucun processus nest isol. Autrement dit, le graphe du rseau de communication est connexe.
Reprsentation graphique
Cette structure peut tre reprsente sous forme dun graphe non orient dont les sommets sont les
processus et les artes sont les canaux. La gure (2.1) est un exemple dun tel graphe comportant 4 processus.
2.2.2 Le chronogramme
Lorsquon cherche analyser le comportement dun calcul rparti, il est intressant den avoir une image
graphique. La notion de chronogramme est un outil lmentaire et indispensable. Il permet dabstraire
graphiquement une excution rpartie en ne considrant que les vnements signicatifs issus de chaque
processus. Trois types dvnements sont distingus : les vnements internes au processus, les missions de
message et les rceptions de message.
Le chronogramme de la gure 2.2 montre par exemple un vnement interne i1, des envois de message
point point (par exemple couple e1; r1), une diusion (mission e2), la perte dun message (mission e
),. . .
2.2.3 Reprsentation dun calcul rparti
Sous les hypothses prcdentes, un calcul rparti peut tre abstrait en terme des ensembles dvnements
produits par chaque processus au cours dune excution particulire. Cest le point de vue vnementiel.
tout processus P
i
peut donc tre associ une suite nie ou non dvnements C
i
totalement ordonns dnotant
des vnements internes, des envois ou des rceptions de messages issus de P
i
ayant eu lieu pour une excution
Prcis de rpartition Dpartement Informatique et Mathmatiques appliques 26
m1
a1 a2 a3 a4 a5
b1
b2
b3 b4
A
B
C
c2 c3 c1
m3
m4
c4
m5
m2
Figure 2.3 Exemple de calcul rparti
donne. Globalement, un calcul rparti est reprsent par une union de toutes ces suites :
C =
N
1
C
i
Les vnements issus de processus dirents ne sont pas forcment ordonns. Un ordre partiel les relie
cependant, induit par les messages changs.
Un calcul rparti va donc tre caractris par une ordre partiel fond sur une relation dite de causalit.
titre dexemple, la gure (2.3) montre une suite dvnements ayant lieu sur trois sites dirents durant
une excution rpartie comportant des changes de messages entre les sites.
2.2.4 La causalit
La causalit dnit une relation dordre partiel entre les vnements dun calcul rparti. Cette relation
dordre partiel, note , est la plus petite relation transitive satisfaisant les deux conditions suivantes :
Pour tout couple dvnements (e, e
dans la suite
associe au processus, la relation e e
est vrie ;
Lorsque deux processus changent un message M, les vnements denvoi e et de rception r sont
lis : e prcde toujours r dans un temps global et e est la cause de r. En consquence, pour tout
message M, on aura la relation e r.
Dote de cette relation de causalit, une union C =
N
1
C
i
peut reprsenter un calcul rparti si la relation
est acyclique. En eet, tout calcul rel implique que (C, ) est un ordre partiel strict.
Lide gnrale est que, si e e
, alors e
((e e
) (e
e))
Attention, cette relation [[ dnote une relation logique de paralllisme. Elle ne signie pas que les deux
vnements se sont produits simultanment dans le temps global rel mais simplement quils auraient pu
sans enfreindre la causalit.
Si lon se place dans un rfrenciel de temps global, les vnements dun calcul rparti sont ordonns
totalement avec possibilit dvnements simultans (on notera ce cas par e [[[ e
vers S : e
m
e
m
d
m
d
m
Diverses implantations de tels protocoles sont possibles. On peut remarquer que le contrle pour la
dlivrance dun message est toujours local au site rcepteur : on a toujours comparer des vnements
dmission de messages reus sur le mme site.
Prcis de rpartition Dpartement Informatique et Mathmatiques appliques 33
m2
0
P3
P2
P1
t
m1
m3
Figure 2.6 Diusion simple
dun groupe
S3
S2
S1
Cl2
Cl1
Frontire
Figure 2.7 Diusion anarchique
Le synchronisme virtuel
Lun des intrts importants de la rpartition est de pouvoir rpliquer des traitements ou des donnes
de faon obtenir des services plus ables et disponibles. Cependant, la rplication implique lutilisation de
protocoles non plus point point mais de diusion.
Or, la complexit des changes de messages est plus grande lorsque lon utilise des protocoles de diusion.
Deux problmes majeurs apparaissent :
Squentialit : Les messages successifs mis par un nud seront-ils reus dans le mme ordre par tous
les nuds cibles de la diusion;
Atomicit : Tous les sites cibles recevront-ils chaque message dius ?
Le chronogramme de la gure (2.6) montre limbroglio de messages pouvant rsulter dun protocole de
diusion faible cot.
Or, la diusion vers des groupes de processus (multicast) est utile pour raliser des applications robustes
et haute disponibilit. En eet, une mthode classique pour obtenir ces proprits de robustesse et de
disponibilit est dutiliser la redondance des ressources oertes par une architecture rpartie.
Dans un schma classique client-serveur, le service peut tre rendu plus robuste en activant deux serveurs
jumeaux. Larrt de lun nentranera pas larrt du service.
Cependant, il faut alors diuser les requtes vers les deux serveurs en assurant que celles-ci arriveront
dans le mme ordre et que toute requte sera prise en compte par les deux serveurs ou par aucun.
Le modle dexcution quali de synchronisme virtuel a pour objectif de fournir des protocoles capables
de respecter de telles proprits. Les systmes ISIS et HORUS [4] sont des exemples denvironnements
dexcution rpartie orant de tels protocoles.
Un calcul rparti virtuellement synchrone assure que les processus appartenant un mme groupe peuvent
tre cibles de diusions totalement ordonnes atomiques.
Les gures (2.7) et (2.8) rsument les dirences essentielles entre un protocole de diusion de base et
un protocole assurant un modle dexcution virtuellement synchrone.
La ralisation dun noyau dexcution support du synchronisme virtuel ncessite de fournir deux types
de primitives :
les primitives de gestion des groupes : on distingue lopration dentre dans un groupe (de sortie dun
groupe) et lopration de connexion en tant que client un groupe (de dconnexion) ;
les primitives de diusion : protocole de diusion ordonne assurant le respect de la causalit, protocole
Prcis de rpartition Dpartement Informatique et Mathmatiques appliques 34
Cl1
S3
S2
S1
Cl2
Figure 2.8 Diusion virtuellement synchrone
de diusion atomique assurant un ordre total et le caractre atomique de la diusion.
2.2.8 valuation de la complexit
La complexit des algorithmes rpartis se mesure essentiellement en terme des paramtres lis la com-
munication. Des paramtres cls sont la longueur des messages et leur nombre. un niveau dabstraction un
peu plus lev, on peut souvent distinguer des phases squentielles de calcul (vagues successives par exemple).
Il sagit alors de minimiser le nombre de phases successives. Enn, des proprits particulires peuvent tre
prises en compte telles que : la tolrance aux fautes de lalgorithme, son caractre auto-stabilisant, sa
symtrie, etc . . .
2.2.9 Un exemple dalgorithme : le problme de llection
Hypothses
On considre N processus < P
i
>
0i<N
communiquant via un rseau en anneau unidirectionnel. Chaque
processus connat donc un prdcesseur P
i
.pred dont il peut recevoir des messages et un successeur P
i
.suc
auquel il peut envoyer des messages. Chaque processus a une identit distincte des autres mais ne connait
pas lidentit des autres.
Il existe un ordre total entre les identits de chaque processus (par exemple lordre lexical si les processus
sont identis par un nom symbolique).
Le problme de llection consiste ce quun processus unique se reconnaisse comme lu au terme de
lexcution dun algoritme dlection identique pour tous les processus.
Compte tenu des hypothses faites, une solution simple consiste propager, via des messages sur lanneau,
les identits de chaque processus an quun processus P
i0
nissent par avoir la connaissance globale suivante :
P
i0
.Elu i : 0 i < N i ,= i
0
:: P
i0
.nom < P
i
.nom
Autrement dit, le processus i
0
sait quil possde la plus petite identit et sera dclar lu.
Une spcication du problme
De faon habituelle, on peut abstraire les processus participants en considrant seulement deux tats et
une transition cl . Initialement, tout processus est dans ltat non lu. Lobjectif est de parvenir un
tat o un seul processus nit par tre dans ltat lu. Le graphe (2.2.9) illustre cette abstraction de chaque
processus en terme dun systme de transitions.
Lalgorithme doit assurer lunicit de llu en garantissant linvariant :
invariant i, j : 0 i, j < N :: P
i
.Elu P
j
.Elu i = j
Prcis de rpartition Dpartement Informatique et Mathmatiques appliques 35
Elu
Elu
Non
Figure 2.9 Abstraction des tats dun processus participant
Seule la transition de ltat non lu lu est autorise :
stable P
i
.Elu
Par ailleurs, il doit garantir que nalement un processus sera lu :
true i
0
: P
i0
.Elu
Pour dcider de llection, nous avons vu quil fallait valuer, pour chaque processus P
i
, le prdicat global
j : 0 j < N j ,= i :: P
i
.nom < P
j
.nom
Les changes de messages selon les rgles imposes par une topologie du rseau en anneau permettent de
dvelopper une solution simple pour valuer ce prdicat global.
Chaque processus commence par envoyer son identit son successeur. Puis il entre dans une boucle
consistant accepter les noms envoys par son prdcesseur. Pour chaque nom reu, il adopte le comportement
suivant :
soit le nom reu est plus grand que celui du processus rcepteur : celui-ci ne retransmet pas le nom
reu son successeur ;
soit le nom reu est plus petit que celui du rcepteur : celui-ci propage ce nom son successeur ;
soit le nom reu est celui du processus rcepteur : alors celui-ci peut se dclarer lu. En eet, si
le nom quil a mis est revenu, cest quil est pass par tous les processus et donc que le prdicat
P
i0
.nom < P
i
.nom a t trouv vrai par chaque processus P
i
, i ,= i
0
.
La rception dun nouveau nom permet un processus i dvaluer un nouveau terme P
i
.nom < P
j
.nom. Le
fait quun nom revienne son metteur signie quil a t compar tous les autres et trouv plus petit que
tous les autres. La dcision dlire le processus rcepteur peut donc tre prise.
Lalgorithme ralise donc simplement une valuation rpartie du prdicat global.
Une description de lalgorithme peut se faire sous forme dune classe. Le dploiement pour excution
consistera, pour chaque processus de lanneau, instancier un objet de cette classe, lanneau de communi-
cation tant suppos cr :
public class Election {
private String nom = java.net.InetAddress.getLocalhost().getHostName();
private String unCandidat = null;
private boolean elu = false ;
public void Election() {
Anneau.envoyer(nom) ;
while (!elu) {
Anneau.recevoir(unCandidat) ;
/* propagation ventuelle */
if (unCandidat < nom) Anneau.envoyer(unCandidat) ;
/* test dlection */
elu = (unCandidat == nom) ;
}
}
Prcis de rpartition Dpartement Informatique et Mathmatiques appliques 36
Remarques
Une telle description suppose que le media de communication Anneau est capable de mmoriser
des messages en transit. En eet, tous les processus commencent par mettre. Il faut donc que ces
missions ne soient pas toutes bloquantes. La communication devra tre de type asynchrone ;
Tous les processus tentent leur chance en commenant par mettre leur nom vers leur successeur. En
fait, il surait quun seul en prenne linitiative et que chaque processus modie son comportement
lors de larrive dun nom. Si le nom reu ne doit pas tre propag (il est plus grand que le nom du
rcepteur), alors le rcepteur dcide de tenter sa chance en envoyant cette fois-ci son nom;
Le comportement des processus prsente les proprits dun calcul diusant.
Exercices
1. Dans lexemple prsent, seul llu se termine. Complter lalgorithme de faon ce que tous les
participants connaissent le nom de llu et se terminent ;
2. Pour ce mme algorithme, il surait quun seul processus prenne linitiative denvoyer son nom son
successeur pour dclencher le calcul. Quelle modication doit-on faire dans le comportement de chaque
processus pour obtenir nalement la terminaison de llection ; alors le rcepteur dcide de tenter sa
chance en envoyant cette fois-ci son nom;
3. Vrifer quun tel calcul rparti satisfait les proprits dun calcul diusant ;
4. valuer la complexit de lalgorithme en nombre moyen de messages changs. En dduire sil est
moins complexe quun algorithme qui consisterait, pour tous les processus, diuser leur nom tous
les autres.
2.3 Au-del du modle standard (ou comment oublier les messages)
La description de la communication en terme de messages est dun niveau dabstraction peu lev. Cest
pourquoi, les concepteurs de systmes dexploitation ont propos des mcanismes de communication plus
labors. Un objectif ambitieux de ces mcanismes est souvent de masquer le phnomne de communication
(de rpartition).
En ce qui concerne les traitements, un concept bien accept est celui de procdure accessible distance.
Elle est la base du modle client/serveur qui structure la plupart des applications rparties actuelles. La mise
en uvre dun mcanisme dappel procdural distance (RPC) est cependant dlicate. Plusieurs variantes
dimplantation peuvent tre envisages avec des smantiques distinctes.
En ce qui concerne les donnes, on peut distinguer dune part la communication par mmoire partage
et dautre part, la communication par chiers partags.
La notion de mmoire partage rpartie a pour objectif de fournir au programmeur dapplications un
modle de programmation centralis. Il peut disposer dune mmoire globale pour communiquer entre
processus distants. La dicult majeure pour raliser une telle abstraction sur une architecture rpartie
est dviter une trop forte synchronisation des accs cette mmoire partage rpartie. Lutilisation de la
rplication permet daugmenter le paralllisme daccs la mmoire mais des contraintes de cohrence des
copies doivent tre garanties pour garder une smantique de mmoire globale.
Enn, un service de chiers rpartis a t un des premiers services tre implant. Laccs des chiers
distants en assurant la transparence daccs (mme interface que pour un chier local) et de localisation
(dsignation logique indpendante du site) constituent les deux proprits de base garanties par les systmes
de gestion de chiers rpartis. De nombreux systmes ont t dvelopps. Un standard de fait est le systme
NFS (Network File System) de SUN. Une dicult majeure est de garantir une smantique quivalente
celle dun systme de chiers centraliss. En eet, le partage de chiers pose des problmes voisins du
partage mmoire prcdent. Des problmes dordonnancement des accs en lecture-criture par plusieurs
clients doivent tre contrls pour garantir que la version lue par un client est la dernire version crite. En
la matire, les concepteurs ont d trouver un compromis entre une smantique centralise garantie coup
sr et des performances acceptables.
Prcis de rpartition Dpartement Informatique et Mathmatiques appliques 37
Prcis de rpartition Dpartement Informatique et Mathmatiques appliques 38
Chapitre 3
Temps et causalit
3.1 Datation
Un problme de base des systmes rpartis est la datation des vnements signicatifs (mission et
rception des messages en particulier) durant lactivit du systme. Ceci permet de reconstituer lexcution
des ns de mise au point par exemple ou de contraindre la prise en compte de requtes dans un certain
ordre.
En gnral, un mcanisme de datation doit respecter une rgle fondamentale : tre compatible avec la
relation de causalit qui peut exister entre toute paire dvnements. Autrement dit,
e, e
: e e
)
On peut distinguer deux approches :
une approche temps rel consistant dater les vnements avec une horloge la plus prcise possible.
La dicult est alors de disposer de cette horloge globale ;
une approche temps logique consistant dater les vnements en respectant la causalit selon la rgle
nonce.
3.1.1 La datation Temps rel
Cette approche pose le problme de la disponibilit dune horloge globale. En eet, comme nous lavons
soulign, un systme rparti ne dispose justement pas dun rfrentiel global de temps. Chaque nud possde
une horloge locale plus ou moins prcise et surtout non synchronise a priori avec les horloges des autres
nuds. Une datation directe laide de telles horloges ne convient donc pas car des anomalies causales
peuvent tre engendres. Il sut que lhorloge du nud metteur soit en avance sur celle du nud rcepteur
pour obtenir un message dont la date de rception est antrieure la date dmission.
Pour rsoudre ce problme, des algorithmes de synchronisation dhorloges ont t conus et implants.
Ils permettent de recaler les horloges des nuds de faon ce que leur dirence reste dans un intervalle
born connu. Lalgorithme doit maintenir un invariant du type :
invariant Max(h
i
: i = 1, N) Min(h
i
: i = 1, N) <
On obtient ainsi une prcision qui garantira une datation correcte si tous les vnements causalement lis
sont spars par un dlai suprieur la prcision de lhorloge globale ainsi implante.
La datation temps rel ncessite donc un protocole de synchronisation dhorloge complexe et relativement
couteux. La disponibilit dun metteur unique (diusion de tops par une horloge atomique par exemple)
peut apporter une simplication dans la mise en uvre et plus de prcision. Cependant, la solution est
alors centralise par nature et donc moins tolrante aux dfaillances : dfaillance de lmetteur, mais aussi
dfaillance locale des rcepteurs.
39
Enn, pour de nombreuses applications, seul le respect de la causalit est important. Il est mme parfois
souhaitable de savoir si deux vnements sont causalement lis ou non. Une datation temps relle ordonne
totalement tous les vnements et ne permet donc pas de distinguer ceux qui sont indpendants (sans
causalit) malgr leur prcdence temporelle.
Face ces inconvnients, des solutions fondes sur un temps logique ont t tudies.
3.1.2 Datation Temps logique
Deux solutions ont t dcouvertes :
la premire, due L. Lamport, permet de dater les vnements selon un ordre total. Linconvnient
ventuel de cette approche est donc de mme nature que celui dune datation relle : lintroduction
dun ordre arbitraire entre des vnements indpendants.
la seconde, due F. Mattern, permet de dater les vnements selon un ordre partiel isomorphe
la relation de causalit. Ce mcanisme est plus prcis mais plus coteux implanter et permet de
distinguer (dtecter) les vnements indpendants. Toutefois, un tel mcanisme ne permet pas de
dcider de lexistence dun vnement entre deux vnements causalement lis.
Horloges de Lamport
Une date est un couple (s, cpt), o s est un numro de site et cpt est un entier, la numrotation des sites
tant suppose totalement ordonne. Lentier permet de comparer deux dates et en cas dgalit, le numro
de site permet de distinguer les deux dates. Si deux dates, ayant le mme champ site, nont jamais la mme
valeur entire, toutes les dates sont direntes et comparables.
Une horloge locale chaque site permet de dater les vments ayant lieu sur le site correspondant. Cette
horloge mmorise une date courante (s, cpt) o s est donc le site local de lhorloge. Pour que les dates obtenues
partir de ces horloges soient toutes direntes mais comparables, lalgorithme de gestion dhorloge doit
assurer linvariant :
invariant d, d
: d.s = d
.s (d.cpt ,= d
.cpt)
Pour cela, il sut que toute consultation de lhorloge pour dater un vnement, entrane lincrmentation de
lentier compteur.
Les classes Date et Horloge suivante donnent une implantation possible du mcanisme de datation.
class Date implements Cloneable { // dfinition et comparaison de date
protected int s ; protected int cpt ;
static boolean Prec ( Date d1, Date d2 ) {
return (d1.cpt < d2.cpt) ||( (d1.cpt == d2.cpt) && (d1.s < d2.s)) ;
}
}
class Horloge extends Date {
// Cration de lhorloge
Horloge( int o ) { s = o ; cpt = 0 ; }
// Lecture-Incrmentation de lhorloge
Date Top()
{ Date dc = (Date) super.clone(); this.cpt++; return dc ; }
// Recalage de lhorloge
void Recaler( Date d ) { if (Prec(this,d)) this.cpt = d.cpt + 1 ; }
// soit encore this.cpt = Max(this.cpt,d.cpt) + 1
}
Prcis de rpartition Dpartement Informatique et Mathmatiques appliques 40
(C,1)
a1 a2 a3
c1 c3 c2
<(A,2),m2>
b3 b2
A
B
C
(A,0)
(B,0)
(C,0)
b1
(A,3) (A,2) (A,1)
<(A,0), m1>
a4
(B,3) (B,4) (B,5)
(A,4)
<(B,3),m3>
<(B,4),m4>
(C,5) (C,0)
Figure 3.1 Horloges de Lamport
Les actions suivantes seront excutes sur occurrence de chaque type dvnement :
Type dvnement sur un site s Action mettant en jeu lhorloge du site s
vnement interne sur s H
s
.Top()
mission sur s de m dm = H
s
.Top() ; envoi de < dm, m >
Rception sur s de < dm, m > H
s
.Recaler(dm)
Le chronogramme de la gure (3.1) montre lvolution des horloges de chaque site et la surcharge des
messages par la date dmission de chaque message. On remarquera que les vnements de rception ne
sont pas dats. Ils ne sont loccasion que dun recalage de lhorloge du site de rception mais nentrane pas
dopration Top().
Les horloges de Lamport permettent un ordonnancement total des vnements dun calcul rparti en
respectant la causalit qui peut exister entre ces vnements. Nanmoins, lordre introduit entre des vne-
ments causalement indpendants ( logiquement simultans) est arbitraire. titre dexemple, la gure (3.1)
montre que lvnement a
3
a pour date (A, 2) et lvnement c
2
a pour date (C, 1) : on a donc c
2
qui prcde
a
3
avec cette datation alors que dans le temps absolu cest linverse qui sest produit. Ceci nest pas erron
puisque ces deux vnements ne sont pas causalement lis.
Horloges de Mattern
Nous venons de voir que le mcanisme de datation par les horloges de Lamport respecte lordre causal
mais ne permet pas davoir limplication rciproque : e, e
: d
e
< d
e
e e
: D D
i : D[i] D
[i]
et
D, D
: D < D
D D
k : D[k] < D
[k]
On peut alors constater que deux dates peuvent videmment tre non comparables puisquil peut exister des
dates telles que :
D [[ D
(D < D
) (D
< D)
En fait, la relation dordre dnie peut correctement traduire la relation de causalit par un mcanisme
adquat de gestion des horloges correspondantes.
Chaque site s gre une horloge vectorielle H
s
. La datation dun vnement se produisant sur un site s
entranera lincrmentation de la composante correspondante de lhorloge locale au site. Deux vnements
distincts quelconques nauront donc jamais la mme date et par consquent seule la relation < nous intresse.
Comme prcdemment, chaque message sera surcharg par la date de lvnement dmission.
La classe dcrivant une date vectorielle devient :
Prcis de rpartition Dpartement Informatique et Mathmatiques appliques 41
class DateV { // dfinition et comparaison de date
protected int cpt[] ;
// Oprateur de prcdence
public boolean Prec ( DateV d1, DateV d2 ) {
for ( int i = 0 ; i < cpt.length ; i++)
if (d1.cpt[i] > d2.cpt[i]) return false ;
return true;
}
// Constructeur
DateV(int dim) {
cpt = new int[dim] ; for ( int i=0 ; i < cpt.length ; i++) cpt[i] = 0 ;
}
}
On peut remarquer que la notion de site nintervient plus en composante dune date puisque lon a une
valeur propre chaque site. Par contre, un objet horloge reste prsent sur chaque site.
Les actions associes aux vnements internes, dmission et de rception restent les mmes que pour les
horloges de Lamport, seul le type date ayant chang (voir A.2).
class Horloge extends DateV {
protected int s ; // localisation de lhorloge
// Cration de lhorloge
Horloge( int o , int dim ) { super(dim) ; this.s = o ; cpt[o] = 1 ;}
// Lecture-Incrmentation de lhorloge
DateV Top() throws Exception
{ DateV dc = (DateV)super.clone(); this.cpt[s]++; return dc ; }
// Recalage de lhorloge
void Recaler( DateV D ) {
for (int i=0 ; i < cpt.length ;i++)
this.cpt[i] = Math.max(this.cpt[i],D.cpt[i]) ;
this.cpt[s]++ ; // Top implicite
}
}
Le tableau suivant prcise les actions excutes lors sur les vnements internes ainsi que lors des missions
et rceptions.
Type dvnement sur un site s Action mettant en jeu lhorloge du site s
vnement interne sur s H
s
.Top()
mission sur s de m dvm = H
s
.Top() ; envoi de < dvm, m >
Rception sur s de < dvm, m > H
s
.Recaler(dvm)
La gure (3.2) illustre lvolution des horloges vectorielles sur 3 sites. On remarquera que la composante
locale du vecteur (H
s
[s]) comptabilise exactement le nombre dvnements ayant lieu sur le site. Par ailleurs,
toute date vecteur d
e
associe un vnement e mmorise le nombre dvnements causalement lis e.
titre dexemple, lvnement c
3
est dat (3, 3, 3) et lon constate quil y a eectivement 3 vnements sur les
sites A (a
1
, a
2
, a
3
) et B (b
1
, b
2
, b
3
) et 2 vnements sur C (c
1
, c
2
) qui prcdent c
3
.
Enn, on remarquera que les vnements de rceptions sont dats explicitement et comptabiliss.
Prcis de rpartition Dpartement Informatique et Mathmatiques appliques 42
(3,3,4)
a1 a3
c1 c3 c2
b3 b2
A
B
C
b1
a4 (1,0,0)
(0,0,1)
(2,0,0)
a2
(3,0,0) (4,0,0)
<(1,0,0), m1>
<(3,0,0),m2>
(1,0,2) (1,0,3)
(0,1,0) (3,2,0) (3,3,0)
<(3,3,0),m4>
<(3,2,0),m3>
(5,2,0)
(3,4,0)
Figure 3.2 Horloges de Mattern
Exercices
1. Dans le mcanisme dhorloge de Lamport, pourrait-on ne pas dater explicitement les vnements dmis-
sion ?
2. On essaie de dnir un mcanisme de datation avec seulement un compteur local par site (on limine la
composante site des horloges de Lamport). Donner les rgles de gestion de telles horloges pour assurer
le respect de la relation : e, e
: e e
d
e
< d
e
: d
e
< d
e
e e
: e e
d
e
< d
e
5. Pourrait-on ne pas dater explicitement les vnements de rception avec des horloges de Mattern ?
(Tout en conservant leur proprit prcdente).
3.2 Protocoles dordre causal
Le transfert des messages dans un rseau ne respecte pas forcment des rgles dordonnancement strictes.
Par exemple, dans un protocole point point, lordre de rception des messages issus dun mme site par
un site x nest pas forcment identique leur ordre denvoi.
Plus gnralement, il peut tre intressant dordonner la dlivrance des messages reus par un site de
faon respecter la causalit qui peut exister entre les vnements dmission de ces messages. Pour ce
faire, on doit donc distinguer dune part, lvnement de rception dun message par un site et dautre part,
lvnement de dlivrance de ce message au niveau applicatif. En eet, des messages reus dans lordre inverse
de leur causalit dmission devront tre rordonns sur le site de rception pour tre dlivrs dans le bon
ordre.
Cette contrainte peut tre formalise de la faon suivante :
s : (m, m
: r
s
r
s
:: e e
d d
))
La gure (3.3) montre un exemple qui peut trs bien se produire lorsquon communique par e-mail. Un
usager A pose une question deux usagers B et C en leur envoyant un message chacun. Lusager B reoit en
premier le message question m. Il rpond alors A et C (constatant que la question a t aussi envoy
C grce au champ destinataires du message). Lusager C reoit alors via le message m2 une rponse dont
il ne connat pas la question. Celle-ci arrivera plus tard sous la forme du message m1. On remarquera que
cette anomalie tient au fait que les deux messages m1 et m2 qui sont reus par le site C dans lordre inverse
de leur prcdence causale dmission puisque e
1
e
2
. Dans ce cas un protocole dordre causal dlivrera les
messages dans lordre inverse. Si lon note d
1
et d
2
les vnements de dlivrance des deux messages, alors on
aura d
1
d
2
.
Prcis de rpartition Dpartement Informatique et Mathmatiques appliques 43
m3
A
C
B
e1 e
m
r
m1
m2
e2
r2 r1 d1 d2
(1,0,0)
(2,2,0)
Figure 3.3 Protocole point point dordre causal
3.2.1 Implantation du protocole dans le cas point point
Si lon utilise le mcanisme dhorloge de Mattern pour dater les vnements, les messages m
1
et m
2
emportent avec eux la date de leur mission. Sur lexemple de la gure (3.3), on constate que lon a bien
d
e1
d
e2
( puisque (1, 0, 0) < (2, 2, 0)). Mais, lors de la rception du message m
2
, la date d
e2
ne permet pas
de conclure quun message m
1
existe et aurait d tre dj reu et dlivr. Ce nest que lorsque le message
m
1
arrivera que lon dtectera lanomalie de causalit dans la rception des deux messages. Par consquent,
il faut mettre en uvre un protocole spcique.
Approche par matrice de prcdence (Raynal)
Pour dcider si un message m peut tre dlivr lapplicatif dun site s, il faut savoir si tous les messages
qui devaient tre reus par s et dont lmission prcde causalement ce message m sont arrivs et ont t
dlivrs.
Pour ce faire, un site s doit grer :
dune part, un vecteur Dernier[N] indiquant le numro dordre du dernier message reu par ce site et
provenant de chaque site origine possible.
dautre part, une matrice carre de prcdence MP[N, N] dont chaque lment MP[i, j] indique le
nombre dmissions du site i vers le site j connu du site s.
Les actions suivantes seront excutes sur occurrence des vnements dmission et de rception :
Type dvnement sur un site s Action mettant en jeu lhorloge du site s
mission sur s de m vers s
MP
s
[s, s
] + +; envoi de < MP
s
, m >
Rception sur s
de < MP
s
, m > Rordonner(MP
s
, m)
Une description en Java de ce protocole comporte deux classes :
dune part, la classe Prcdence qui dcrit le type de matrice carre NxN captant la causalit des
messages ;
import java.util.* ;
class Prcdence {
protected int[][] cpt ; // matrice de prcdence
protected int orig; // identit du crateur
protected int N ; // nombre de sites
// Cration de la matrice de prcdence
Prcdence ( int loc, int nbSite ) {
cpt = new int[nbSite][nbSite] ;
for (int i=0 ; i < nbSite; i++)
for (int j=0 ; j < nbSite ; j++) cpt[i][j] = 0 ;
orig = loc ; N = nbSite ;
}
Prcis de rpartition Dpartement Informatique et Mathmatiques appliques 44
// Recaler la matrice sur une autre
void Max(Prcdence MX) {
for (int i=0 ; i < N ; i++)
for (int j=0 ; j < N ; j++)
cpt[i][j]=Math.max(cpt[i][j],MX.cpt[i][j]);
}
}
dautre part, la classe Protocole qui dcrit lalgorithme de traitement des missions (TopEnvoi) et des
rceptions (Rordonner).
Le contrle de lordonnancement des messages reus pour assurer leur dlivrance dans un ordre causa-
lement correct sappuie sur la prcondition suivante pour un message < MP, m > reu par s :
dune part, ce message issu du site MP.orig doit bien tre le prochain message dlivrer (caractre
FIFO de la communication entre le site metteur et le site rcepteur). Autrement dit le prdicat
suivant doit tre vri :
with Protocole@s :: MP.cpt[MP.orig][s] = Dernier[MP.orig] + 1
dautre part, ce message ne doit pas prcder des messages dont lmission le prcde causalement,
cest--dire :
with Protocole@s :: i ,= s :: MP.cpt[i, s] Dernier[i]
Cest cette conjonction qui est teste par la fonction dlivrable.
Toute rception de message se traduira par un appel la mthode Rordonner qui retardera ventuel-
lement la dlivrance du message correspondant.Les messages applicatifs seront consomms dans lordre
chronologique de terminaison des oprations Rordonner.
class Protocole extends Prcdence {
protected int s ; // localisation
protected int[] Dernier ; // vecteur de comptage des reus
protected List AttDel ; // liste dattente de dlivrance
// Top sur envoi de message vers le site $dest$
Prcdence TopEnvoi(int dest) throws Exception {
this.cpt[s,dest]++;
return (Prcdence)super.clone();
}
// test si le message associ la matrice de prcdence est dlivrable
boolean dlivrable(Prcdence MP) {
for (int i=0 ; i < N ;i++)
if ((i == s && MP.cpt[MP.orig][s] != Dernier[MP.orig] + 1)
|| (i != s && MP.cpt[i][s] > Dernier[i])) return false ;
return true ;
}
// Ordonnancement de la dlivrance des messages
synchronized void Rordonner( Prcdence MP, String Message ) throws Exception {
if (!dlivrable) { AttDel.add(MP) ; MP.wait() ; }
// dlivrable(MP) => mise--jour de this
this.Dernier[MP.orig]++ ; this.Max(MP) ;
// Rveil de messages en attente
ListIterator curseur = AttDel.listIterator(0) ;
Prcis de rpartition Dpartement Informatique et Mathmatiques appliques 45
while (curseur.hasNext()) {
Prcdence mp = (Prcdence) curseur.next() ;
if (dlivrable(mp)) { mp.notify() ; curseur.remove() ; }
}
}
// Constructeur
Protocole(int o , int dim) {
super(o,dim) ; s = o ; Dernier = new int[dim] ;
for (int i=0 ; i < N ; i++) Dernier[i]=0 ;
AttDel = Collections.synchronizedList(new LinkedList());
}
}
Le transport dune matrice carre de dimension N gale au nombre de sites pose deux problmes : dune
part, il faut connatre N, dautre part, pour N grand, le cot en communication devient important. Cest
pourquoi une autre approche a t utilise.
Approche par gestion dhistoires
Une autre approche consiste concatner tout message la suite des messages qui le prcde causalement.
On appelle cette technique piggybacking. La gure (3.4) montre que la rception du message m
2
sur le site
C saccompagne en fait de la rception dune copie du message m
1
qui tait lui aussi destin C et plac
dans lhistoire causale de m
2
. Dans un tel cas, cest le message m
1
qui sera dlivr, puis le message m
2
. La
rception ultrieure du message original m
1
issu du site A se traduira par loubli pur et simple de ce message
(dont une copie a dj t dlivre lapplicatif).
<(m1,C);(m,B)>, m2
A
C
B
e1 e
r
e2
r2 r1 d1 d2
<>,m1
message ignor
<m1,C>,m
Figure 3.4 Approche par piggybacking
Un avantage de cette approche est quelle apporte une certaine redondance par les copies de messages
qui sont engendres apportant ainsi un degr de tolrance vis--vis des pertes de messages. Par contre,
la surcharge des messages est importante. Lhistoire causale des nouveaux messages salourdit au fur et
mesure du calcul. Il faut pouvoir optimiser ce cot qui peut devenir prohibitif en rduisant la taille de
lhistoire emporte par un nouveau message. La gure (3.5) montre un exemple dlimination dun message
dans une histoire. Aprs la rception des messages m
2
et m
3
, le site B sait que le message m
1
a t envoy
ET dlivr. Par consquent, il peut tre dsormais ignor par B.
3.2.2 Implantation du protocole dans la cas de la diusion
Pour un protocole de diusion se pose les mmes problmes de causalit. La gure (3.6) illustre un dbut
de calcul rparti utilisant la diusion. Cependant, limplantation dun protocole de diusion ordre causal
devient plus simple lorsquon utilise lapproche par compteurs. En eet, la matrice de prcdence se simplie :
un site envoie un message vers tous les autres sites systmatiquement. Par consquent, dans cette matrice,
Prcis de rpartition Dpartement Informatique et Mathmatiques appliques 46
liminer (m1,C)
A
C
B
<>,m1
<(m1,C)>,m2
<(m1,C),m3
<(m2,B);(m3,B)>,m4
Figure 3.5 Optimisation des histoires
<(1,1,1),m>
Vecteur local
Dfaut de
causalit
(a,b,c)
A
C
B
(1,0,0)
(1,1,0)
(0,0,0)
(1,0,0)
<(1,1,0),m>
Figure 3.6 Diusion et causalit
on a j : MP[i, j] = k. Il sut donc dun vecteur V P[N] tel que V P[i] indique le nombre de messages
envoy par i vers tout site.
Le contrle de lordonnancement des messages reus sappuie cette fois-ci sur la prcondition suivante
pour un message < V P, m > reu par le site s :
dune part, ce message issu du site V P.orig doit bien tre le prochain message dlivrer :
with Protocole@s :: cpt[V P.orig] = Dernier[MP.orig] + 1
dautre part, ce message ne doit pas prcder des messages dont la diusion le prcde causalement,
cest--dire :
with Protocole@s :: i ,= s :: V P.cpt[i] Dernier[i]
La gure (3.6) montre que les message m et m
c
i
= C
avec C pour valeur du crdit initial et c
i
pour les valeurs de crdits reus par le superviseur.
La dicult de mise en uvre de cet algorithme tient au partage du crdit. Des erreurs darrondi doivent
absolument tre vites.
1. On peut aussi supposer que cest lun des processus qui interroge les autres sans remettre en question le principe des
algorithmes prsents.
Prcis de rpartition Dpartement Informatique et Mathmatiques appliques 63
m
A
B
C
(2,2)
(4,3)
(2,3)
Passage de la vague i
M
(mis,reus)
Figure 4.5 Un exemple de fausse dtection
4.2.4 Algorithme fond sur la gestion de compteurs (Mattern)
Une hypothse simplicatrice peut tre faite sur les priodes dactivit des sites : on peut supposer que
tout pas de calcul est ininterruptible vis--vis de larrive dun nouveau message. Sur un chronogramme,
on peut alors modliser un pas de calcul par un point celui-ci ayant un caractre atomique. On vite ainsi
la gestion explicite dun tat actif/passif des sites. Pour dtecter la terminaison dun calcul diusant sous
cette hypothse, une ide simple est de compter les vnements dmission et de rception de messages
globalement. Si lon suppose connu un instant t o aucun pas de calcul nest excut, E(t) le nombre
dvnements dmissions et R(t) le nombre dvnements de rceptions, alors la terminaison du calcul est
atteinte ssi E(t) = R(t) puisquil ny a plus de messages en transit. On a bien :
E(t) = R(t) EnTransit =
Nanmoins, la connaissance des compteurs E et R nest pas immdiate. En eet, pour connatre ces
derniers, on ne peut que se contenter dune approximation en allant interroger chaque site. On peut supposer
que chaque site s gre deux compteurs E
s
et R
s
et, que par interrogation, un site observateur peut valuer
dune part
s
E
s
et dautre part
s
R
s
. Le mcanisme de vague peut tre utilis pour cette collecte. On
note E
i
la somme des missions value par la collecte de la i-me vague et R
i
la somme des rceptions.
E
i
=
s=N1
s=0
E
i
s
, R
i
=
s=N1
s=0
R
i
s
Le problme de la dtection de la terminaison serait alors rsolu si lon avait le prdicat suivant vri
aprs une i-me vague :
E
i
= R
i
t f
i
: E(t) = R(t)
o f
i
est linstant de n de la i-me vague.
Malheureusement, la gure (4.5) montre que ce nest pas le cas. Le passage de la vague aux instants
prciss sur le chronogramme conduit une fausse dtection. Lgalit entre les deux sommes est vraie, mais
le calcul nest pas termin car un message en transit existe encore (M). Lanomalie tient la prise en compte
dun vnement de rception dun message (m) dont lvnement dmission na pas t comptabilis. Nous
reviendrons sur ce genre danomalie avec la notion de coupure cohrente.
Par consquent, il faut trouver un autre prdicat en partie gauche de limplication. En fait, il sut
dutiliser deux vagues successives. Un prdicat susant est alors :
Term E
i+1
= R
i
En eet, si le nombre de messages mis collect par la vague i + 1 est gal au nombre de messages reus
collect par la vague prcdente i, alors il existe un instant t tel que E(t) = R(t). Cet instant t est au plus
tard linstant de n de la vague i. Autrement dit, le calcul tait termin avant le dbut de la vague i + 1.
Prcis de rpartition Dpartement Informatique et Mathmatiques appliques 64
di
A
B
C
ime vague
(i+1)me vague
di+1 fi+1 fi
Figure 4.6 Vagues squentielles
La preuve de la validit du prdicat peut sappuyer sur les instants de dbut d
i
, d
i+1
et de n f
i
, f
i+1
des vagues correspondantes, ces instants tant ordonns dans le temps : d
i
< f
i
< d
i+1
< f
i+1
comme sur la
gure (4.6).
Au moment f
i
de la n de la vague i, comme tout autre instant du calcul, le nombre de messages
reus ne peut tre quinfrieur ou gal aux nombre de messages mis, autrement dit :
t : R(t) < E(t) R(f
i
) E(f
i
)
Mais, le nombre de messages E(f
i
) mis jusqu linstant f
i
est lui, infrieur ou gal la somme E
i+1
rsultat de la collecte de la vague (i + 1) et de manire analogue, la somme R
i
rsultat de la collecte
de la vague i est infrieure ou gale au nombre de messages reus linstant de la n de cette vague i.
Si le prcidat Term est vri, on obtient limplication suivante :
E(f
i
) E(d
i+1
), E(d
i+1
) E
i+1
, Term E
i+1
= R
i
, R
i
R(f
i
)
E(f
i
) R(f
i
)
Par consquent, on en dduit que : E(f
i
) = R(f
i
). linstant f
i
, on avait donc bien lgalit du nombre
de messages mis et reus. Cet tat est stable, donc le calcul tait bien termin.
4.2.5 Algorithme fond sur la notion de chemin rparti
On suppose, comme pour lalgorithme prcdent, que tout pas de calcul est atomique et que lenvoi de
plusieurs messages est une seule opration de diusion. Nous verrons dans ce qui suit comment ces hypothses
peuvent tre interprtes et implantes de direntes manires.
Lobservation du calcul constitue loriginalit de lapproche. En eet, le calcul diusant nest pas vu
comme une suite dchanges de message, mais comme le dploiement dun ensemble de chemins dans larbre
du calcul. Cest cette interprtation (abstraction) qui va permettre de dtecter la terminaison. En eet, au
cours de lexcution du calcul, de nouveaux chemins apparaissent et disparaissent. Cest leur comptage qui
permettra de dire si le calcul est termin ou non au lieu de compter les messages.
Plus prcisment, lalgorithme sappuie sur le comptage des chemins maximaux issus de la racine du
calcul. Un chemin maximal est donc ici dni comme une suite darcs adjacents conduisant du nud racine
une feuille. Dans ce qui suit, nous dsignons sous le terme de chemins exclusivement des chemins maximaux
issus de la racine.
Ainsi, un calcul diusant apparat plutt sous la forme dun calcul arborescent comme la gure (4.7) en
donne une ide.
De faon classique, on suppose quun processus collecteur recevra les informations qui lui seront nces-
saires pour dtecter la terminaison du calcul.
Quelques remarques importantes avant daborder lalgorithme :
lalgorithme utilise comme mcanisme de base la notion de vecteur de chemin. Tous les messages
changs sont surchargs par un tel vecteur de taille gale au nombre de processus ;
Prcis de rpartition Dpartement Informatique et Mathmatiques appliques 65
S4
S1
S2 S3
S1
S1
S2 S3
S2
Site
Migration
Chemin
S4 S5 S6
S7 S8
S5
S8
S5 S1
S6 S5
Figure 4.7 Une vision par chemins du calcul
le simple passage dun chemin via un processus nimplique aucune action dans lalgorithme. Autre-
ment dit seules les actions locales entranant une destruction de chemin ou le dbut dun ou plusieurs
nouveaux chemins entrent en jeu ;
lalgorithme retarde la connaissance par le processus collecteur de la cration de nouveaux chemins
jusquau moment o un chemin disparat. Cest en eet ce moment quil faut savoir quel est le pass
causal du chemin qui disparat ;
lalgorithme nengendre pas de messages supplmentaires except un message par vnement n de
chemin envoy au processus collecteur. Ce principe de base de lalgorithme est lutilisation classique
de la surcharge des messages de lapplication par un seul vecteur de taille xe gale au nombre de
processus ;
si le rseau perd des messages, lalgorithme reste sr (pas de fausse dtection puisquaucune contrainte
dordonnancement des messages nest impose) mais non vivace.
Le processus collecteur, grce aux informations quil recevra au cours du calcul, pourra nalement dduire
que le calcul est termin.
Les proprits les plus intressantes de lalgorithme sont les suivantes :
lalgorithme ne ncessite aucune proprit dordonnancement des messages par le rseau (les canaux
peuvent tre non FIFO par exemple). Il faut cependant que les communications soient ables. ;
lalgorithme ne ncessite quun seul compteur local chaque processus ;
lalgorithme dtecte la terminaison ds que le site collecteur a reu tous les messages de n de chemin.
En rsum, lalgorithme sappuie sur les hypothses de base suivantes :
le rseau de communication est able et connexe ; la communication est asynchrone ;
un processus collecteur peut recevoir des messages de tous les autres processus ;
toute phase dactivit dun processus est considre comme atomique y compris lenvoi dun ou plusieurs
messages en n dtape ;
La modlisation du calcul par chemins
Lalgorithme repose sur lutilisation de vecteurs de chemins qui permettent, comme leur nom lindique,
dvaluer le nombre de chemins en cours de dploiement.
Lorsquun message arrive destination, il appartient toujours un chemin et 3 cas distincts dactions
locales peuvent se produire :
1. Follow : laction locale traite le message entrant et en rponse poursuit le calcul en envoyant un unique
message vers un autre processus : dans ce cas, on peut considrer que le chemin entrant se poursuit ;
2. End : laction locale traite le message entrant et nenvoie aucun message. Ce cas correspond la n
dun chemin;
3. Split : laction locale traite le message entrant et envoie p messages (p > 1) vers dautres processus
2
.
Ce cas correspond la cration de p1 nouveaux chemins. Lalgorithme propos impose que lenvoi de
ces p messages soit vu comme atomique cest--dire que le protocole de terminaison doit savoir combien
2. ventuellement, le processus peut senvoyer un message lui-mme, ce qui peut tre interprt comme une continuation
du mme processus.
Prcis de rpartition Dpartement Informatique et Mathmatiques appliques 66
de messages seront envoys avant lenvoi du premier de ces p messages. Ceci peut tre assur en gardant
les messages dans un tampon associ laction locale mettrice tant que celle-ci na pas explicitement
dit quelle se terminait. Dans le systme Chorus, cette approche tait adopte pour assurer latomicit
des tapes dun acteur [32].
La dtection de la terminaison repose sur le comptage des chemins. Si lon appelle C le compteur des
chemins crs et T le compteur des chemins termins, le prdicat de dtection est simplement C = T. Le
problme consiste donc russir valuer ce prdicat de faon rpartie sans provoquer de fausse dtection.
Pour le compteur de terminaison T, chaque action de type End se termine par lenvoi dun message vers
le processus collecteur. Ce message informe le processus collecteur quun chemin est termin et quil faut
donc incrmenter de 1 le compteur T. Nous allons voir que ce message doit contenir aussi un vecteur de
chemins.
Mise en uvre de lalgorithme
Pour compter les crations de chemins, le mcanisme de vecteur de chemins est mis en uvre. La gestion
de ces vecteurs dentiers repose sur les principes suivants :
dune part, on associe un compteur local C
i
chaque processus. Celui-ci enregistre le nombre de
chemins crs via ce processus. Initialement, ces compteurs sont nuls.
dautre part, un vecteur de chemins va surcharger tous les messages du calcul. Ce vecteur est transport
par les messages successifs qui construisent peu peu le chemin et sa taille est gale au nombre N
de processus. Soit V le vecteur associ un chemin, ce vecteur va tre modi au fur et mesure du
dploiement du chemin. Il enregistrera le nombre de crations de nouveaux chemins issus de chaque
processus et causalement antrieurs au message qui le contient. Un processus unique initialise le calcul
en excutant une action Split avec un vecteur initial nul.
Algorithme des processus participants
Soit V le vecteur du message reu par un processus P
i
. Les actions de mise jour de ce vecteur sont les
suivantes :
Action de type Follow : le vecteur V est simplement recopi dans le message sortant ;
Action de type End : le vecteur V est envoy au processus collecteur ; il signale ainsi au processus
collecteur quun chemin sest termin et quun ensemble de chemins existent. On peut remarquer que
cette action nest rien dautre quune opration Follow avec le processus collecteur comme destinataire
du message mis ;
Action de type Split : le compteur local est mis jour selon le nombre de chemins crs par laction :
C
i
:= C
i
+(p1). Aprs quoi, la composante i du vecteur V reoit cette valeur : V [i] := C
i
. Ce vecteur
mis jour est le vecteur qui sera plac dans tous les messages sortants. En eet, tous les chemins crs
hritent de la mme causalit issue de celle qui existait dj (chemin origine). Tout vecteur V sortant
dun processus P
i
connat donc exactement le nombre de chemins crs par le processus P
i
.
Remarque Laction Follow pourrait tre considre comme une action Split de degr 1. Cependant, une
telle action Split entrane une aectation (V [i] := C
i
) non ncessaire bien que tout fait compatible avec
lalgorithme.
Algorithme du processus collecteur
Grce aux vecteurs quil reoit, le processus collecteur value peu peu le nombre de chemins crs et
dtruits. Il gre un vecteur MT initialement nul et le compteur T lui aussi initialement nul.
Le processus collecteur reoit les vecteurs de chemins qui lui sont adresss jusqu ce quil puisse conclure
la terminaison. Pour chaque vecteur V reu par le collecteur, celui-ci :
value le nouveau vecteur maximum MT laide de la fonction max dnie par :
i :: max(A, B)[i] = if (A[i] < B[i]) then B[i] else A[i]
Prcis de rpartition Dpartement Informatique et Mathmatiques appliques 67
3
Collecteur
1
CMax (=0,0,0)
T = 0
1
0
0
0
Compteur locaux
P0
P2
P1
0,1,0
0 1 1
1,1,0
1,1,0
1,1,0
0,1,0
1,1,0
1,1,0 1,1,0 0,1,0
0,1,0
2
Figure 4.8 Exemple de dtection
(2,3,0)
0
1
0
1
0
2 2
0 0 0 0
(x,y,z) : vecteur gr par le site
0,1,0
0,1,0
1
1,1,0
1,1,0
(1,1,0)
0,1,0
(1,2,0)
3
2,3,0
(2,3,0) (1,2,0)
2,3,0
2,1,0
2,1,0
(2,1,0)
1,2,0
1,2,0
2,1,0
2,3,0
2
2,3,0
Figure 4.9 Exemple plus complet
enregistre la terminaison dun chemin (incrmentation de T)
et teste le prdicat de terminaison en comparant la somme des lments du vecteur MT
3
avec le
nombre de chemins termins indiqu par la variable T.
process Collecteur
integer MT[N] = [0, . . . , 0]; /* vecteur maximum */
integer T = 0; /* compteur des chemins termins */
repeat
integer V [N];
recevoir(V );
MT, T := max(MT, V ), T + 1; /* Term */
until ( MT + 1 = T) /* Detect */
( : e
e e
C
Autrement dit, si un vnement e appartient une coupure, alors tous les vnements du calcul qui le
prcdent causalement appartiennent aussi la coupure. Une coupure, comme son nom le suggre, tablit
une frontire sur tous les sites entre un ensemble dvnements qui sont avant et la suite du calcul
aprs . Lexemple de la gure (5.1) montre une coupure incohrente puisque lvnement dmission e de m
nest pas dans lensemble des vnements collects qui contient, par contre, lvnement r.
Un algorithme de prise de clich devra donc tout dabord raliser une coupure cohrente du calcul.
Cependant, ltat global construit naura pas forcment exist dans le temps global. titre dexemple, la
gure (5.2) montre une coupure cohrente bien quelle suppose un tat global dans lequel lvnement e est
arriv et lvnement r
v
[i] = E
f
[i] E
v
[i
0
] = E
f
[i
0
] = E
v
= E
f
Et par consquent, on aura Consensus(E
v
) = Consensus(E
f
). Les deux congurations E
v
et E
f
conduisent
donc alors au mme consensus contrairement lhypothse faite.
Il existe donc bien des tats initiaux bivalents.
Prcis de rpartition Dpartement Informatique et Mathmatiques appliques 79
Preuve du lemme 5.2.2
Partant dun tat bivalent E(t), il existerait un algorithme si aucune squence de transition vers un autre
tat bivalent ne pouvait tre trouve. Supposons donc que partant un tat bivalent, il existe un vnement
de rception r
v
dun message provoquant le passage dans un tat dterministe conduisant V , et il existe
donc aussi un vnement de rception r
f
dun message provoquant le passage dans un tat dterministe
conduisant F. Lhypothse dun tat bivalent impose lexistence de ces deux vnements.
Cas 1 : les deux vnements r
v
et r
f
ont lieu dans des processus rcepteurs distincts Loccur-
rence de ces deux vnements peut avoir lieu dans nimporte quel ordre et donne le mme tat rsultat. Or,
selon lordre doccurrence, ltat rsultat serait V ou F. Un mme tat ne peut donner un rsultat dirent.
Cas 2 : les deux vnements r
v
et r
f
ont lieu dans le mme processus Dans ce cas, un premier
vnement peut avoir lieu et le processus peut sarrter. Alors, ltat atteint ainsi est le mme quel que soit
lvnement arriv avant la panne. Or, ltat avant la panne avait conduit dcider V si lvnements tait
r
v
et dcider F si lvnement tait r
f
. On voit donc qu nouveau une contradiction existe.
Lhypothse initiale supposant quil nexistait pas de squence possible de transitions vers un autre tat
bivalent tait donc fausse.
5.2.4 Un algorithme simple
Pour que tous les processus prennent la mme dcision, valuent le mme rsultat nal, il sut quils
aient connaissance des toutes les valeurs initiales et quils utilisent une mme fonction pour valuer la valeur
nale :
i : P
i
.v
f
= F(P
0
.v
0
, . . . , P
N1
.v
0
)
Initialement, un processus i ne connat que P
i
.v
0
et il ne peut donc valuer F.
Si les communications sont ables, un algorithme rsolvant le problme peut tre trs simplement trouv.
Chaque processus diuse sa valeur initiale tous les autres processus. Il recevra donc lui-mme la valeur
initiale de tous les autres processus. Une fois en possession de toutes ces valeurs, chaque processus pourra
prendre une dcision partir des MMES donnes. Par consquent, la fonction F donnera le mme rsultat
quel que soit le processus.
5.2.5 Quelques problmes voisins
Le problme du consensus comporte de nombreuses variantes applicatives. Parmi elles, on peut en dis-
tinguer deux classiques :
Un processus Matre m propose une valeur V
m
quil diuse aux autres et nalement, tout processus
correct choisit la mme valeur qui peut tre soit la valeur propose V
m
si le processus matre tait
correct, soit une valeur par dfaut si celui-ci tait incorrect. Ce problme est plus connu sous le terme
de problme des gnraux byzantins. Il a t largement tudi dans le domaine de la tolrance aux
fautes.
Chaque processus propose une valeur v
i
et les processus corrects doivent nalement construire un
vecteur V d
i
identique dans lequel V d
i
[j] = v
j
pour tout processus i correct. Cest de cette faon que
des processus peuvent se mettre daccord sur un tat global par exemple.
5.3 Conclusion
Labsence dalgorithme pour obtenir un consensus dans le cas dun systme asynchrone nempche pas de
trouver des solutions ds que lon change quelque peu les hypothses sur les proprits de la communication.
En eet, il sut, par exemple, davoir un dlai born connu pour la transmission des messages, pour obtenir
un cadre o des algorithmes existent. Lexistence dhypothses minimales a mme t dmontre. Il faut
Prcis de rpartition Dpartement Informatique et Mathmatiques appliques 80
introduire la possibilit pour chaque participant davoir une certaine connaissance de ltat des autres. Cette
connaissance peut tre cependant imparfaite. La modlisation consiste introduire le concept de dtecteur de
dfaillance (failure dtector)[9]. Un tel dtecteur est associ chaque processus participant et est capable de
dtecter la dfaillance (larrt) des autres processus. Les proprits garanties par les dtecteurs de dfaillance
peuvent prendre diverses formes.
titre dexemple, les plus faibles proprits que doivent garantir les dtecteurs sont dnotes par 3J :
Condition faible 3J
Compltude faible : nalement tout processus dfaillant est suspect de faon permanente par au moins
un processus correct ;
Exactitude faible : il existe une date partir de laquelle au moins un processus correct nest pas
suspect par tous les autres processus corrects.
Un autre type de dtecteur, dnot 3o, garantit une compltude plus forte sur la dtection des d-
faillances :
Condition forte 3o
Compltude forte : nalement tout processus dfaillant est suspect de faon permanente par tous les
processus corrects ;
Exactitude faible : il existe une date partir de laquelle au moins un processus correct nest pas
suspect par tous les autres processus corrects.
Lexistence de ces dtecteurs vriant les conditions 3J ou 3o permet de dvelopper des algorithmes
corrects apportant des solutions au problme du consensus dans un contexte restant fondamentalement
asynchrone et non able [30].
Enn, le problme du consensus est quivalent au problme dune diusion vers un groupe (multicast)
able totalement ordonne. En particulier, si lon dispose dun tel protocole de diusion, le problme du
consensus peut tre simplement rsolu. Il sut que chaque processus diuse sa valeur au groupe. La premire
valeur reue par chaque processus est la mme et peut donc constituer la valeur choisie par tous.
Prcis de rpartition Dpartement Informatique et Mathmatiques appliques 81
Prcis de rpartition Dpartement Informatique et Mathmatiques appliques 82
Chapitre 6
Conclusion
Les principes fondamentaux de la rpartition sont maintenant bien tablis. Le modle standard vne-
mentiel dun calcul rparti permet de capter un tel calcul un niveau dabstraction susant pour observer et
contrler une excution rpartie. La relation de causalit apporte une formalisation de lordre partiel existant
entre les vnements.
Une algorithmique dites rpartie sest dveloppe pour classier et spcier les problmes gnriques
de la rpartition. Cet eort de recherche se poursuit aujourdhui compte tenu de lvolution des architectures
rparties. En eet, la plupart de ces algorithmes taient proposs dans un contexte trs statique : nombre xe
de processus, communication ge entre ces processus et hypothses de abilit simples. Aujourdhui, avec
les rseaux mobiles en particulier ad hoc, ces hypothses ne tiennent plus. Il faut envisager des algorithmes
fonds sur hypothses plus souples en terme de communication et de nombre de processus participants.
Par ailleurs, le nombre mme de participants a tendance augmenter de faon trs importante. L encore, ce
facteur dchelle peut conduire des remises en cause de lexistant. Les rseaux de capteurs sont un exemple
de cette volution.
Si le schma client-serveur reste dactualit, dautres formes de communication prennent aussi de limpor-
tance, en particulier dans les jeux en rseaux via Internet ou dans des applications mtiers plus spciques :
robotique et/ou simulation avec des contraintes de temps rel par exemple.
La preuve des algorithmes rpartie reste aussi un d dicile atteindre. Leur complexit est trs le-
ve et les mthodes de preuve par vrication de modle (model-checking) se heurtent encore lexplosion
combinatoire du nombre dtats possibles de tels calculs. Lusage de plus en plus frquent darchitectures ma-
trielles ayant des proprits rparties dans les systmes critiques (avionique, espace par exemple), ncessite
donc un eort important de recherche de mthodes de dveloppement sr de tels systmes rpartis.
Les systmes rpartis ont donc encore de beaux jours devant eux . . .
83
Prcis de rpartition Dpartement Informatique et Mathmatiques appliques 84
Appendices
85
Annexe A
Quelques sujets dexamens avec ou sans
correction. . .
A.1 Causalit, Horloge et Prise de clich
A.1.1 Causalit (4 points)
On considre le chronogramme suivant :
e1
e4 e6
r1
r4
r5
e5 r3
r6
m1
m3
m4
m5
m6 m2
e2
r2
e3 r1
Figure A.1 Chronogramme 1 : Causalit
Questions
1. Prcisez si les vnements r
4
et r
5
sont causalement lis ou pas. Justiez votre rponse.
2. Montrez que la rception du message m
1
la date relle r
1
au lieu de r
1
ne change pas les relations
de causalit qui existaient. Autrement dit, les relations de causalit directe entre lvnement r
1
et les
autres vnements sont les mmes que celles existant entre r
1
et ces mmes vnements.
A.1.2 Une horloge minimaliste (8 points)
On considre un schma de datation minimaliste utilisant simplement un compteur croissant sur chaque
site. Chaque site possde une horloge locale H
s
grant une date logique sur laquelle les oprations dincr-
mentation Top et de recalage Recaler peuvent tre excutes :
class Horloge {
int cpt = 0 ;
int Top() { cpt++; return cpt ; } // Incrmentation-Lecture
void Recaler( int d ) { if (cpt < d ) cpt = d ; } // Recalage
}
87
Lopration Top() incrmente sa valeur et renvoie la nouvelle valeur de lhorloge. Lopration Recaler(d)
aecte la valeur fournie en paramtre lhorloge si et seulement si celle-ci tait en retard.
Enn, les actions de mise jour de ces horloges lors les dirents types dvnements sont les suivantes,
o d
e
(respectivement et d
r
) dnote la date de lvnement dmission (respectivement la date de lvnement
de rception) dun message m :
Type dvnement sur un site s Action mettant en jeu lhorloge du site s
vnement interne sur s H
s
.Top()
mission sur s de m int d
e
= H
s
.Top() ; envoi de < d
e
, m >
Rception sur s de < d
e
, m > H
s
.Recaler(d
e
); d
r
= H
s
.Top()
Figure A.2 Tableau des actions de mise--jour des horloges
e4
e1
r1
r3
m1
r5
e5
e3
m2
r2
e2
m3
m5
m4
H1=0
H2=0
H3=0
r4
Figure A.3 Chronogramme 2 : Datation
Questions
3. Dcorez le chronogramme de la gure A.3 en prcisant la date de chacun des vnements aects par
le mcanisme dhorloge propos. (Note : vous pouvez utiliser le chronogramme de la gure A.5 en n
de sujet comme support de la rponse.)
4. Quelle proprit peut-on dduire des dates aectes aux vnements distincts e et e
lorsque d
e
= d
e
?
5. On appelle chemin causal C(e
n
) conduisant un vnement e
n
, une suite dvnements e
1
, e
2
, . . . , e
n
(e) : [C
(e)[ [C(e)[
Pour cela, montrez que si cette proprit est vraie avant lvnement, elle reste vraie aprs lexcution
de laction correspondant au type dvnement considr (voir tableau A.2).
6. Proposez une modication de lopration de recalage qui permettrait dobtenir linvariant suivant : la
date dun vnement est toujours suprieure au nombre total dvnements qui prcdent lvnement
dat. Autrement dit, on aurait la proprit suivante :
e : d
e
Card(G
e
) avec G
e
= e
: e
e
Note : Proposez une solution simple qui ne fasse toujours intervenir que la date " incidente" en para-
mtre et la valeur courante de lobjet horloge " rceptrice" .
1. Par convention, on admet quun chemin causal C(e) rduit lvnement lui-mme (C(e) = {e}) est donc de longueur 1.
Prcis de rpartition Dpartement Informatique et Mathmatiques appliques 88
A.1.3 Prise de clich global(8 points)
On considre un ensemble de N processus P
i
observs par un processus Collecteur. On suppose que
les communications sont ables et point point mais non FIFO. On cherche un algorithme permettant
au Collecteur de construire un clich global cohrent en utilisant le mcanisme de vague et un schma de
coloriage des processus et messages applicatifs.
Rappel Un clich global comprend dune part, les tats locaux de chaque processus et dautre part, les
messages en transit associs la coupure " trae" par les tats locaux collects. Une coupure est cohrente si
et seulement si les messages en transit traversent cette coupure du pass vers le futur (sur un chronogramme,
lvnement dmission est gauche de la coupure et lvnement de rception correspondant est droite de
celle-ci). Un clich est cohrent ssi il constitue une coupure cohrente.
Rgles de coloriage On utilise seulement deux couleurs : blanc et noir.
initialement, tous les processus et messages sont blancs ;
un processus rcepteur devient noir sil reoit un message noir ;
un processus met toujours des messages de sa propre couleur ;
un fois noir, tout processus reste noir ;
Le processus Collecteur lance une vague de couleur noire. Un processus visit devient donc noir ds
le passage de la vague (sil ne ltait pas dj). Lorsquun processus blanc reoit la visite de la vague, il
enregistre un clich local de son tat et devient noir.
m
Collecteur
P1
P2
P3
dbut de vague fin de vague
Instant de la visite
r
Message applicatif noir
Message applicatif blanc
Figure A.4 Prise de clich par vague
Questions
7. Si un processus noir visit par la vague prend son clich local au moment du passage de la vague
(comme le fait un processus blanc), montrez que le clich obtenu peut tre incohrent (Sappuyer sur la
gure A.4). En consquence, pour obtenir un clich cohrent, quelle mesure doit prendre un processus
blanc lorsquil devient noir par rception dun message applicatif noir (vnement r dans la gure A.4) ?
8. Le Collecteur doit aussi obtenir les messages en transit tels que le message m dans la gure A.4.
Caractrisez la classe dvnements de rception qui permettent de dtecter les messages en transit
(couleur du message reu, couleur du processus rcepteur).
9. On suppose que, chaque vnement de rception prcdent (dtecteur dun message en transit),
le processus rcepteur transmet le message reu au collecteur. Proposez un algorithme pour que le
Collecteur puisse savoir quil a reu tous les messages en transit associs au clich (problme particulier
de terminaison).
10. Proposer une modication de lalgorithme pour pouvoir faire plusieurs clichs successifs partir dun
mme collecteur.
Prcis de rpartition Dpartement Informatique et Mathmatiques appliques 89
Chronogramme pour la question 3
Aecter chaque vnement e
i
ou r
i
sa date.
e4
e1
r1
r3
m1
r5
e5
e3
m2
r2
e2
m3
m5
m4
H1=0
H2=0
H3=0
r4
Figure A.5 Chronogramme dcorer
A.2 Horloge et causalit directe (daprs Vilay K. Garg)
On considre un schma de datation utilisant des horloges vectorielles. Une date est reprsente par un
vecteur de dimension N o N est le nombre de processus communicants. Chaque processus P
i
possde une
horloge vectorielle locale H
i
dote des oprations classiques dincrmentation et de recalage. Initialement,
lhorloge H
i
du processus P
i
a la valeur H
i
[i] = 1 j ,= i :: H
i
[j] = 0. La classe Horloge suivante dcrit
lalgorithme des oprations Top et Recaler.
class Horloge {
int[] cpt ; int loc = 0 ;
// Lecture et incrmentation de lhorloge
int[] Top() { int[] hr = cpt.clone() ; cpt[loc]++ ; return hr ; }
// Recalage de lhorloge
void Recaler( int j, int vj ) { /* message issu du processus dindice j */
cpt[loc] = Math.max(cpt[loc],vj + 1) ;
cpt[j] = Math.max(cpt[j],vj) ;
}
// Constructeur : "loc" localise le site de lhorloge
Horloge(int o, int N) {
loc = o; cpt = new int[N] ;
for (int i = 0; i<N; i++) cpt[i]=0; cpt[loc] = 1 ;
}
}
La smantique de Recaler et Top sur une horloge H
i
sexprime sous la forme de triplets de Hoare par :
Lopration Top renvoie la valeur courante de lhorloge et incrmente de 1 llment dindice i.
H
i
= h Top() H
i
[i] = h[i] + 1 j ,= i :: H
i
[j] = h[j]
Lopration Recaler(j, vj) comporte deux paramtres dentre :
dune part, le paramtre j reprsente lindice du processus P
j
metteur du message conduisant
lappel de lopration Recaler ;
dautre part, le paramtre vj reprsente la valeur de llment h
e
[j] datant lvnement dmission e
du message mis par P
j
.
H
i
= h Recaler(j, vj) H
i
[i] = Max(h[i], vj+1) H
i
[j] = Max(h[j], vj) k ,= i, j :: H
i
[k] = h[k]
Enn, les actions de mise jour de ces horloges lors les dirents types dvnements sont les suivantes,
o h
e
dnote la date de lvnement dmission dun message par P
i
et h
r
la date de lvnement de rception
par P
i
dun message m mis par le processus P
j
:
Prcis de rpartition Dpartement Informatique et Mathmatiques appliques 90
Type dvnement du processus P
i
Action mettant en jeu lhorloge H
i
vnement interne sur i int[] h = H
i
.Top()
mission sur i de m int[] h
e
= H
i
.Top() ;
envoi de < i, h
e
[i], m >;
Rception sur i de < j, vj, m > H
i
.Recaler(j, vj);
mis par P
j
int[] h
r
= H
i
.Top();
Figure A.6 Tableau des actions de mise--jour de lhorloge vectorielle H
i
dun processus P
i
m5
0
P
1
P
2
H
0
H
2
H
1
r1
m1
e1
=
=
=
0
0
0
0
0
0
1
1
1
e3
r3
m4
e4
r4
e5
r5
e2
r2
e6
m6
r6
m2
m3
P
Figure A.7 Chronogramme exemple
Notations
Pour tout vnement e, on note e.p lindice du processus ayant provoqu cet vnement.
La relation classique de causalit est note .
Remarque prliminaire Pour la plupart des questions, utiliser la smantique par triplet de Hoare et
le tableau des actions de la gure A.2 pour donner une schma de preuve de la proprit demande. En
particulier, pour les invariants, montrer que si linvariant est vrai avant une opration Top ou Recaler, celui-
ci est encore vrai aprs lexcution de lopration.
Questions
1. Dcorer le chronogramme de la gure A.7 en prcisant la date aecte par le mcanisme dhorloge
propos chacun des vnements. (Note : vous pouvez utiliser le chronogramme de la gure A.8 en
quatrime page comme support de la rponse.)
2. Montrer que toute horloge H
i
vrie linvariant suivant :
invariant j ,= i :: H
i
[j] < H
i
[i]
3. Montrer que lhorloge dun processus est croissante. Autrement dit, deux vnements distincts e et e
: e.p = e
.p = i :: e e
h
e
< h
e
, alors h
e
[e.p] < h
e
[e
.p] :
invariant e ,= e
:: e e
h
e
[e.p] < h
e
[e
.p]
Causalit directe
On introduit la relation de causalit directe, note
m
dans laquelle m dnote un message. Cette relation
est vrie entre deux vnements e et e
.p
dans lintervale de temps [e, e
)
tels que (e
m
e
m
e)).
7. Montrez que : e, e
: e.p ,= e
.p :: e
m
e
e e
.
8. Montrer que le systme de datation propos vrie :
invariant e ,= e
: e.p ,= e
.p :: h
e
[e.p] h
e
[e.p] e
m
e
Coupe cohrente
On suppose que les processus, au cours de leur excution, dcident (sparment) de prendre un clich
de leur tat local L[i] en le datant avec lhorloge locale du processus. Ces clichs locaux dats sont ensuite
envoys un processus collecteur. Lorsque celui-ci possde une copie de tous les clichs locaux L[i], il dispose
dun clich global sous la forme du tableau L.
Questions
9. Montrez que le tableau des clichs locaux L[i] constitue un clich global cohrent si aucun des tats
locaux nest causalement li. Autrement dit si :
i ,= j : (L[i].e L[j].e)
o L[x].e dsigne lvnement de prise de clich local sur P
x
.
10. Comment vrier, partir des dates L[i].h des clichs locaux collects, la cohrence du clich global que
ces clichs locaux reprsentent ? Penser utiliser (les proprits de) la causalit directe des questions
(6, 7, 8).
Prcis de rpartition Dpartement Informatique et Mathmatiques appliques 92
m5
0
P
1
P
2
H
0
H
2
H
1
r1
m1
e1
=
=
=
0
0
0
0
0
0
1
1
1
e3
r3
m4
e4
r4
e5
r5
e2
r2
e6
m6
r6
m2
m3
P
Figure A.8 Chronogramme : complter
A.3 Causalit et horloges de Mattern, Interblocage et terminaison
A.3.1 Causalit et horloges de Mattern (10 points)
Le diagramme de la gure A.9 reprsente le dbut dune excution rpartie. Les premiers vnements
sont dats laide du mcanisme dhorloge de Mattern qui associe tout vnement x un vecteur horloge
H
x
. On note x y la relation de prcdence causale et H
x
< H
y
la relation dordre entre vecteurs horloges.
Questions (2 points par question)
1. Donner tous les chemins causaux dbutant par les vnements origines e
1
ou e
2
et aboutissant
lvnement r
4
dans le diagramme dexcution de la gure A.9. Mme question pour les chemins causaux
dbutant par les vnements origines e
1
ou e
2
mais aboutissant lvnement r
5
.
2. On suppose que lexcution relle a ordonn les vnements dans le temps global rel selon la squence
suivante :
e
1
; e
2
; r
1
; r
2
; e
3
; i
1
; r
3
; e
4
; r
4
; e
5
; i
2
; r
5
Prciser, en le justiant, si cette squence est causalement quivalente celle de la gure A.9. Au-
trement dit, reprsente-t-elle une excution relle quivalente celle prsente dans la gure A.9 ?
3. Complter le diagramme en aectant leur vecteur horloge (leur date) aux vnements non dats.
Figure A.9 Diagramme vnementiel dune excution rpartie
Prcis de rpartition Dpartement Informatique et Mathmatiques appliques 93
4. Dduire du calcul prcdent si les vnements internes i
1
et i
2
sont causalement lis ou pas.
5. Montrer que, pour deux vnements x de vecteur horloge H
x
et y de vecteur horloge H
y
, si les com-
posantes des deux vecteurs horloges pour un site s vrient H
x
[s] < H
y
[s], alors tout chemin causal
aboutissant x est pass pour la dernire fois sur le site s avant tout chemin causal aboutissant y.
A.3.2 Interblocage et terminaison dans un calcul rparti (11 points)
Figure A.10 Graphe de communication
On considre un calcul rparti compos de N processus (N x et connu) qui communiquent par messages
via des canaux unidirectionnels. Le graphe orient de communication est connu et xe comme dans lexemple
de la gure A.10 comportant 4 processus et 5 canaux. on suppose que tous les processus sont accessibles
partir du processus initial ( au moins un chemin entre le processus initial P
0
et tout autre processus).
Les rgles du calcul rparti constitu par ces N processus sont les suivantes :
Tout processus reoit des messages sur les canaux dentre ;
Chaque processus P
i
doit recevoir un message avant dexcuter une tape ;
Tout processus P
i
, aprs lexcution dune tape envoie systmatiquement un message sur chaque canal
de sortie ;
Au moins un processus puits na pas de canaux en sortie (P
3
dans la gure A.10) ;
Un processus initial (P
0
dans g. A.10) met un message sur ses canaux de sortie pour activer le calcul.
En rsum, le comportement de tout processus participant obit au schma gnrique suivant
3
:
process P(i:0..N-1) {
if (i==0) Emettre un message sur chaque canal de sortie ;
while (true) {
Recevoir un message sur lun des canaux dentre ;
Etape de calcul exploitant le message lu ;
[ Emettre systmatiquement un message sur chaque canal de sortie existant. ]
}
}
Questions (1 point par question)
6. Dans quel modle gnrique de calcul rparti peut-on classer le calcul dcrit prcdemment ?
7. Montrer la proprit stable suivante : si un processus appartenant un cycle de communication (comme,
par exemple, dans la gure A.10, le cycle entre P
0
, P
1
et P
2
) reoit un message, alors il existera dsormais
toujours un message qui circulera sur ce cycle.
8. Montrer que, pour tout cycle de communication, un processus au moins du cycle recevra nalement
un message. En dduire que les processus ne peuvent pas tre interbloqus mme sil existe des cycles
dans le graphe de communication.
9. Montrer, par contre, que le calcul ne peut pas se terminer sil existe au moins un cycle.
3. Un processus puits ne peut videmment pas mettre de message puisquil na pas de canal de sortie.
Prcis de rpartition Dpartement Informatique et Mathmatiques appliques 94
10. Donner une condition ncessaire et susante du graphe de communication pour que le calcul se termine
en justiant votre proposition.
Questions (2 points par question)
11. En supposant quil existe un SEUL processus puits, proposer un algorithme de terminaison permettant
ce processus puits de dtecter la terminaison globale du calcul (sil se termine !).
12. Adapter votre solution au cas dun calcul comportant plusieurs processus puits.
13. On considre maintenant que chaque processus attend davoir reu un message de chaque canal den-
tre avant de dbuter une tape de calcul. Montrer que, dans un graphe sans cycle, le calcul est sans
interblocage et se termine. Dans un graphe nayant quun puits, donner le critre trs simple de dtec-
tion de la terminaison en le justiant.
A.4 Clichs et datation
Remarque : Toutes les questions valent 2 points
Prambule
Le problme a pour objectif dtudier les proprits de sret (cohrence) et de vivacit associes au calcul
de clichs globaux partir de clichs locaux ainsi que les relations existant entre prise de clich global et
datation par des horloges vectorielles de Fidge-Mattern. Pour simplier, on ne sintresse ici qu la collecte
dun ensemble de clichs locaux permettant de construire un clich global.
A.4.1 Proprit de sret : cohrence dun clich global (6 points)
Le diagramme de la gure A.11 reprsente le dbut dun calcul rparti sous forme vnementielle. Les 3
processus A, B et C changent des messages applicatifs (de m
1
m
5
) et prennent des clichs locaux de leur
tat courant chaque vnement interne not a
i
, b
i
ou c
i
.
Figure A.11 Calcul rparti sur 3 processus A, B et C
Questions
1. En vous basant sur la notion de coupure, prciser la proprit que doit vrier un clich global construit
partir dun clich local de chacun des processus an que celui-ci soit cohrent.
2. Montrer que le clich global construit partir des clichs locaux a
1
, b
1
, c
2
est incohrent.
3. Montrer que le clich global construit partir des clichs locaux a
2
, b
1
, c
2
est, par contre, cohrent et
prciser le(s) message(s) en transit associ(s) ce clich global.
Prcis de rpartition Dpartement Informatique et Mathmatiques appliques 95
A.4.2 Datation des clichs locaux (8 points)
On dcide de dater tous les vnements (prises de clichs locaux, missions et rceptions de message) avec
des horloges vectorielles de Fidge-Mattern. On suppose quil existe n processus communicants numrots de 1
n. On note H
i
[1..n] le vecteur horloge local au processus P
i
et e.D[1..n] la date vectorielle de lvnement e.
Au dbut du calcul, les horloges de chaque processus vrient : i : 0 < i n : H
i
[i] = 1(j ,= i : H[j] = 0)
Questions
4. Dans la gure A.11, valuer la date vectorielle associe chaque vnement de prise de clich local
(et exclusivement ceux-ci) et prciser aussi la date surchargeant chaque message envoy de m
1
m
5
.
5. En considrant le clich incohrent construit partir des clichs locaux correspondant aux vnements
(a
1
, b
1
, c
2
), montrer que lincohrence est mise en vidence par les dates des clichs a
1
et b
1
qui vrient :
a
1
.D[1] < b
1
.D[1]
6. En dduire de faon plus gnrale quun clich est cohrent si et seulement si les dates associes aux n
clichs locaux D
i
vrient :
D
1
[1]
. . .
D
i
[i]
. . .
D
n
[n]
= Max(D
1
, . . . , D
i
, . . . , D
n
)
Max(D
1
[1], . . . , D
i
[1], . . . , D
n
[1])
. . .
Max(D
1
[i], . . . , D
i
[i], . . . , D
n
[i])
. . .
Max(D
1
[n], . . . , D
i
[n], . . . , D
n
[n])
(A.1)
7. Peut-on encore vrier la cohrence dun clich global partir des dates des clichs locaux si les seuls
vnements dats sont ces clichs locaux, autrement dit si les vnements dmission et de rception
ne sont pas dats et si les messages ne servent quau recalage ? Justier avec prcision votre rponse.
A.4.3 Proprit de vivacit : collecte de clichs globaux (6 points)
On considre un calcul rparti compos de n processus ne communiquant que par un protocole dchange
dun message jeton via un anneau logique comprenant tous les processus. Pour simplier, on suppose que
cet anneau de communication place les processus dans lordre de leur numrotation : P
1
, . . . , P
i
, . . . , P
n
.
Le processus P
1
dmarre le calcul en mettant le message jeton vers son successeur P
2
. Aprs quoi, tous
les processus ont le mme comportement rptitif : attente de la rception du jeton issu du prdcesseur,
traitement local, puis envoi du jeton vers le successeur. Le processus P
1
peut dcider darrter le calcul en
ne propageant plus le jeton. On ne sintresse pas au contenu du message jeton.
Questions
8. Chaque processus prend un clich local chaque fois quil possde le jeton. Montrer quil est alors
impossible, pour un processus collecteur qui recevrait ces clichs, de construire un clich cohrent.
9. On choisit de prendre les clichs locaux lorsque le processus na pas le jeton. Un clich local est pris
au k-me cycle sil a t pris aprs la k-me visite du jeton. Montrer quun clich global construit avec
les clichs pris lors dun k-me cycle est cohrent et prciser le nombre de message(s) en transit.
10. On suppose maintenant quun protocole causalement ordonn est utilis pour transmettre les clichs
locaux au collecteur. Lors de quels cycles peut-on prendre les clichs locaux pour tre toujours sr
que le collecteur reoit des sries de n clichs locaux conscutifs, chaque srie contenant des clichs
appartenant au mme cycle et constituant un clich global cohrent ?
Question Bonus (1 point)
Comment pourrait-on assurer trs simplement que le collecteur dtecte (sait) que le calcul est termin ?
Prcis de rpartition Dpartement Informatique et Mathmatiques appliques 96
A.5 Flux multimedia et agents mobiles
A.5.1 Quelques problmes de causalit entre ux multimedia
On considre une application changeant des ux multimedia de type MPEGx par exemple. Un site A
diuse un ux vido vers 2 autres sites B et C. Aprs avoir reu le dbut du ux mis par A, le site B met
un ux son tour (ux audio par exemple) vers les sites A et C. Le chronogramme de la gure (A.12) donne
une vision vnementielle du droulement de lexcution rpartie en ne conservant que les vnements de
dbut et n de ux quil sagisse dun ux en mission ou dun ux en rception.
A.f2
C.f2
B.d2
C.f1 C.d2 C.d1
A.d1
B.d1
C
B
A
B.f2
A.d2 A.f1
B.f1
Figure A.12 Vision vnementielle des ux
Questions
1. Sur le chronogramme de la gure (A.12), les paires dvnements suivants sont-elles lies par la relation
de causalit : (A.d1, B.d2), (A.f1, B.f2), (A.d2, B.f2), (A.d2, C.f1) ? Justiez vos rponses.
Rponse
A.d1 B.d2 car A.d1 B.d1 B.d1 B.d2
A.f1 | B.f2 car (A.f1 B.f2 B.f2 A.f1)
A.d2 | B.f2 car (A.d2 B.f2 B.f2 A.d2)
A.d2 C.f1 car A.d2 A.f1 A.f1 C.f1
2. Montrer que la rception des ux 1 et 2 sur le site C prsente une anomalie par rapport la causalit
en ce qui concerne leur dbut.
Rponse Le site C voit le ux 2 commencer avant le ux 1 alors que le site B a vu dbuter le ux 1
avant de commencer la diusion du ux 2.
Cette anomalie se traduit en terme de causalit par : A.d1 B.d2 C.d2 C.d1
3. Un protocole ordonn pourrait-il corriger cette anomalie sur lordre de dmarrage des ux sur le site
de rception C? Justiez votre rponse.
Rponse Oui, puisquil assurerait : A.d1 B.d2 C.d1 C.d2. Les vnements C.d1 et C.d2
sont alors les vnements de dlivrance du premier message de chaque ux au niveau applicatif.
4. De faon similaire, la gure A.12 montre que les ns de ux sur les sites A et B se produisent dans un
ordre dirent : sur A, la n de lmission A.f1 du ux 1 prcde la n de la rception A.f2 du ux 2
et sur B, la n de lmission B.f2 du ux 2 prcde la n de la rception B.f1 du ux 1. Montrez que
malgr cette inversion, aucune anomalie causale nexiste.
Rponse Il ny a pas danomalie causale puisquil ny a pas de relation causale entre les vnements
de n dmission de ces deux ux : A.f1 | B.f2.
Prcis de rpartition Dpartement Informatique et Mathmatiques appliques 97
5. Dans le chronogramme tudi, la question prcdente conduit considrer que la n de rception des
ux 1 et 2 sur le site C peut se produire dans nimporte quel ordre. Modier le chronogramme pour
obtenir une situation o la rception des ux 1 et 2 devrait tre forcment ordonne comme dans le
chronogramme fourni (dans lequel C.f2 C.f1) sans provoquer danomalie causale.
Rponse Le chronogramme ci-dessous introduit une causalit entre la n des missions des 2 ux,
en loccurrence B.f2 A.f1.
A.d2
C.f2
B.d2
C.f1 C.d2 C.d1
A.d1
B.d1
C
B
A
A.f1 A.f2
B.f2
B.f1
Figure A.13 Terminaison causalement ordonne des 2 ux
A.5.2 Rencontres entre agents mobiles
On considre une application rpartie base dagents mobiles. Ces agents se rencontrent pour changer
des informations lorsquils se trouvent simultanment sur le mme site
4
. Une telle rencontre est considre
comme atomique et ralise toujours entre une paire dagents
5
.
La gure (A.14) illustre le dplacement et les rencontres de tels agents dsigns par A, B, C, . . .
S3
A
B
C
D
B
D
A
C
(B,C) (A,B)
(A,C)
(A,C)
(A,C)
(A,D)
(C,D)
S0
S1
S2
Figure A.14 Rencontres dagents mobiles sur des sites
On se propose de tracer des informations sur les rencontres qui ont lieu durant lexcution des agents.
Pour cela, on peut envisager de collecter des informations soit sur les sites de rencontre, soit dans le contexte
local de chaque agent. On sintresse plus particulirement la datation des rencontres.
Trace sur les sites
On mmorise sur chaque site les dates des rencontres qui ont eu lieu. Le mcanisme de datation sinspire
du systme de datation de Mattern. Une date est reprsente par un vecteur de dimension N o N est le
nombre de sites. Chaque site possde une horloge vectorielle H
i
dote dune opration permettant de dater
4. On ne sintresse pas leurs communications ventuelles distance.
5. Un agent peut par contre rencontrer successivement plusieurs agents avant de se dplacer vers un autre site.
Prcis de rpartition Dpartement Informatique et Mathmatiques appliques 98
les rencontres et les agents vont transporter un vecteur courant unique reprsentant la date de leur dernire
rencontre. On veut que la smantique dune date T aecte une rencontre sur un site i
0
soit la suivante :
invariant (i ,= i
0
: T[i] = Card(R
i
)) T[i
0
] = Card(R
i0
) + 1
dans lequel lensemble R
i
contient tous les vnements de rencontre ayant eu lieu sur le site i et qui prcdent
causalement la rencontre date T. titre dexemple, la date T aecte la rencontre (A, D) sur le site S
1
devrait tre le vecteur T = (2, 2, 2, 1).
Initialement, lhorloge H
i
dun site S
i
est initialise zro : j :: H
i
[j] = 0. La classe Horloge suivante
possde une seule opration Dater qui ne sert qu dater les vnements de rencontre.
class Horloge {
int cpt[]; int loc; // "loc" localise le site de lhorloge
// Datation dune rencontre
public int[] Dater( int T1[], int T2[] ) { ... }
public Horloge(int o, int N) {
loc = o; cpt = new int[N] ;
for (int i = 0; i<N; i++) cpt[i]=0 ;
}
}
La smantique de Dater comporte deux paramtres dentre, en loccurrence les deux vecteurs horloges
transports par les agents participant la rencontre.
Questions
6. Donner sous forme dun triplet de Hoare, la smantique de Dater : H
i
.cpt = h H
i
.Dater(T1, T2). . .
et programmer lopration Dater dans la classe Horloge.
Rponse La date de la rencontre est un vecteur ayant pour lments le maximum de chaque vecteur
et du vecteur courant du site sauf pour llment i qui comptabilise la nouvelle rencontre partir de
la valeur courante de llment i de lhorloge locale.
6
H
i
.cpt = h
H
i
.Dater(T1, T2)
(k ,= i : H
i
.cpt[k] = max(h[k], T1[k], T2[k])) H
i
.cpt[i] = h[i] + 1
Lopration Dater est donc :
public int[] Dater( int T1[], int T2[] ) {
for (int i = 0; i<cpt.length; i++) cpt[i]=max(cpt[i],T1[i],T2[i]) ;
cpt[loc]++ ;
int[] res = new int[cpt.length]; System.arraycopy(cpt,0,res,0,cpt.length);
return res ;
}
7. Dcorer la gure avec les dates aectes aux rencontres en utilisant la feuille fournie en annexe.
Rponse Les dates obtenues sont :
6. On a toujours pour une rencontre sur le site i : H
i
.cpt[i] T1[i] H
i
.cpt[i] T2[i].
Prcis de rpartition Dpartement Informatique et Mathmatiques appliques 99
[0,0,1,0]
B
C
D
B
D
A
C
(C,D)
S0
S1
S2
S3
A (A,B)
(A,D)
[2,2,2,1]
[1,1,1,1]
(A,C)
[1,1,2,1]
[1,1,1,0]
(A,C)
(B,C)[1,0,1,0] [2,1,2,1]
(A,C)
Trace dans les agents
Cette fois-ci, chaque agent a transporte une horloge vectorielle locale H
a
(horloges embarques dans les
agents). Chaque horloge locale est initialise zro : a Agents : i 1..M : H
a
[i] = 0. Une date est
donc reprsente par un vecteur de dimension M o M est le nombre dagents
7
. Par contre, les sites nont
plus dhorloges locales. On doit donc trouver une implantation dirente de lopration Dater. On suppose
que chaque agent fournit en paramtre lopration Dater son indice et son vecteur horloge local. La classe
Datation dnit la nouvelle opration Dater :
class Datation {
// Datation dune rencontre
static public int[] Dater(int a, int Ha[], int b, int Hb[]) { ... }
}
On veut que la smantique dune date T aecte une rencontre entre un agent a et un agent b soit la
suivante :
invariant (k ,= a, b : T[k] = Card(R
k
)) T[a] = Card(R
a
) + 1 T[b] = Card(R
b
) + 1
dans lequel un ensemble R
x
contient tous les vnements de rencontre auxquels lagent x a particip et qui
prcdent causalement la rencontre date T. titre dexemple, la date T aecte la rencontre (A, C) sur
le site S
1
devrait tre le vecteur T = (2, 1, 3, 0).
Questions
8. En dsignant, dans la postcondition, le vecteur date rsultat par T
r
, donner sous forme dun triplet de
Hoare, la smantique de Dater :
H
a
= h
a
H
b
= h
b
Datation.Dater(a, Ha, b, Hb). . .
et programmer lopration Dater dans la classe Datation.
Rponse La solution consiste prendre une nouvelle fois le maximum des lments de chaque vecteur
et incrmenter de un les deux lments concernant les agents de la rencontre :
H
a
= h
a
H
b
= h
b
x=1
T[x])/2 = nr
T
+ 1
dans lequel le terme nr
T
est gal au nombre total de rencontres (quel que soit les participants) qui
prcdent causalement la rencontre date par T.
Pour cela, montrer que si le prcidat invariant est vrai avant lexcution dune opration Dater, il est
encore vrai prs lexcution de lopration.
Rponse Daprs la smantique de lopration Dater, on a, puisque les lments H
a
[a] et H
b
[b] sont
maximaux :
x=M
x=1
T[x] =
x=M
x=1
max(H
a
[x], H
b
[x]) + 2
Il reste donc prouver que :
2 nr
T
=
x=M
x=1
max(H
a
[x], H
b
[x])
Pour les lments H
a
[a] et H
b
[b], nous avons vu que :
max(H
a
[a], H
b
[a]) = H
a
[a] et max(H
b
[b], H
a
[b]) = H
b
[b]
Ces compteurs comptabilisent donc le nombre de rencontres de lagent A (resp. B) avec nimporte quel
autre agent, rencontres causalement antrieures la rencontre courante.
Les lments max(H
a
[x], H
b
[x]), x ,= a, b enregistrent les rencontres de lagent X perues par les agents
A ou B. Supposons que lagent A a enregistr H
a
[x] rencontres de X et lagent B a enregistr H
b
[x],
avec par exemple H
a
[x] < H
b
[x].
Puisque TOUTES les rencontres successives de lagent X avec les autres sont causalement lies, cela
signie simplement que lagent B a rencontr X aprs lagent A et que les rencontres de X avec A sont
donc toutes dj comptabilises. En tout tat de cause, il sut donc de prendre le maximum des deux
lments pour capter exactement le nombre de rencontres de lagent X qui prcdent cette rencontre
entre A et B.
10. Dcorer la gure avec les dates aectes aux rencontres en utilisant la feuille fournie en annexe.
Rponse Les dates de rencontre obtenues avec des horloges dans les agents sont :
[5,2,5,2]
B
C
D
B
D
A
C
(A,C)
(A,D)
(C,D)
S0
S1
S2
S3
A (B,C) (A,B)
(A,C)
(A,C)
[2,1,3,0]
[1,0,1,0]
[1,1,2,0]
[2,1,4,1]
[3,1,5,1]
[4,2,5,1]
Prcis de rpartition Dpartement Informatique et Mathmatiques appliques 101
A.6 Datation causale et simulation rpartie
A.6.1 Causalit et horloges de Mattern (10 points)
Figure A.15 Diagramme vnementiel dune excution rpartie
Le diagramme de la gure A.15 reprsente le dbut dune excution rpartie. Les premiers vnements
sont dats laide du mcanisme dhorloge de Mattern qui associe tout vnement x un vecteur horloge
H
x
. On note x y la relation de prcdence causale et H
x
< H
y
la relation dordre entre vecteurs horloges.
Questions (2 points par question)
1. Complter le diagramme en aectant leur vecteur horloge (leur date) aux vnements non dats.
2. Trouver un plus court et un plus long chemin causal menant de lvnement e
1
lvnement r
5
.
3. Montrer que la somme des lments dun vecteur H
x
associ un vnement x fournit une borne
suprieure au plus long chemin causal possible conduisant cet vnement partir du dbut du calcul.
4. Donner la condition ncessaire et susante qui doit tre vrie par les vecteurs horloges pour quun
vnement z soit sur un chemin causal allant dun vnement x un vnement y.
5. En supposant connus lensemble des vnements et leurs vecteurs horloges, dduire un algorithme pour
trouver tous les chemins causaux entre un couple donn dvnements (x, y).
A.6.2 Simulation parallle du trac arien (10 points)
On considre la simulation du trac arien entre des aroports. Chaque aroport est simul par un
simulateur particulier qui peut donc sexcuter en parallle avec les simulateurs des autres aroports et
communiquer par messages avec eux. On suppose que les interactions entre les aroports sont rduites aux
vols des avions modliss, dcrits par deux vnements dats dans un temps global commun, en loccurrence,
lvnement de dcollage dun aroport et lvnement datterrissage dans un autre (ou le mme) aroport.
Chaque simulateur progresse dans sa simulation en engendrant des vnements de dcollage et en enre-
gistrant des vnements datterrissage. Une horloge locale chaque simulateur indique la date du dernier
vnement trait. Un simulateur daroport contrle ses envols locaux et calcule une date datterrissage future
de chaque vol : plus prcisment, lorsquun simulateur engendre un vnement de dcollage, il calcule aussi
la date de lvnement datterrissage correspondant et il envoie un message contenant les informations rela-
tives cet vnement (notamment sa date) au simulateur de laroport sur lequel lavion concern atterrira
(cest--dire au simulateur devant traiter lvnement datterrissage).
La gure A.16 reprsente la simulation de trois aroports avec 6 vols (V
1
, . . . , V
6
) et les paires dvnements
de dcollage et atterrissage correspondants.
Excution de la simulation La simulation est dcoupe en pas successifs excuts en parallle par chaque
simulateur. Un nouveau pas de simulation i + 1 ne peut commencer que lorsque tous les simulateurs ont
Prcis de rpartition Dpartement Informatique et Mathmatiques appliques 102
Figure A.16 Diagramme de simulation du trac arien entre 3 aroports
termin le pas courant i de simulation. Le problme consiste trouver la dure de ces pas de simulation, pour
chacun des simulateurs, de faon garantir une simulation globale cohrente dans laquelle chaque simulateur
traite les vnements dans leur ordre croissant de datation de faon sre sans retour arrire.
Par exemple, si le simulateur (de laroport) A
1
sexcute en parallle avec le simulateur A
0
, il ne faut
pas que ce simulateur A
1
fasse voluer la simulation de cet aroport au-del de la date de latterrissage a
1
avant quil nait eu connaissance de cet vnement : autrement-dit, le simulateur A
0
doit avoir auparavant
engendr lvnement de dcollage d
1
et lvnement datterrissage a
1
, puis envoy le message concernant
latterrissage a
1
et ce message doit tre parvenu au simulateur A
1
. En eet, sinon, le simulateur A
1
aurait
connaissance de lvnement a
1
trop tard et devrait revenir en arrire dans sa simulation.
Questions (2 points par question)
6. Expliquer pourquoi lensemble des vnements (d
v
, a
v
) dune simulation est assimilable une excution
rpartie modlise de faon vnementielle ;
7. En vous basant sur le diagramme de la gure ??, prcisez, partant de linstant initial, jusqu quel
vnement limite inclus, de leur simulation, chacun des simulateurs (A
0
, A
1
, A
2
) peut sexcuter en
parallle avec les autres sans risquer doublier certains vnements.
8. En supposant que chaque simulateur sest excut jusqu ces points limites, donner de faon similaire
le prochain pas excutable (deuxime pas) par chaque simulateur.
9. Dans les deux pas de simulation des questions prcdentes, vrier que tout ensemble dvnements
i
contenant les vnements traits durant le i-ime pas de simulation parallle vrie la proprit :
i : (d
v
, a
v
) : d
v
i
a
v
/
i
10. On suppose, maintenant, que lon connat la dure minimale m dun vol, quel que soit laroport de
dcollage. Montrer que lon peut en dduire une dure de pas de simulation xe et commune tous
les simulateurs garantissant des pas de simulation vriant la proprit prcdente et donc assurant
une simulation parallle sans risque de retour arrire.
Prcis de rpartition Dpartement Informatique et Mathmatiques appliques 103
Prcis de rpartition Dpartement Informatique et Mathmatiques appliques 104
Bibliographie
[1] J.C.M. Baeten and W.P. Weijland. Process Algebra, volume 18. Cambridge Tracts in Theoritical
Computer Science, Cambridge University Press, 1990.
[2] Michel Bantre and Peter A. Lee, editors. Hardware and Software Architectures for Fault Tolerance,
volume 774 of Lecture Notes in Computer Science. Springer-Verlag, 1994.
[3] Kenneth P. Birman. The process group approach to reliable distributed computing. Communications
of the ACM, 36(12) :3753, December 1993.
[4] Kenneth P. Birman. Building secure and reliable network applications. Manning, 1996.
[5] Kenneth P. Birman, Robert Cooper, T. Joseph, Keith Marzullo, , Messac Makpangou, K. Kane, Frank
Schmuck, and Mark Wood. The ISIS System Manual, Version 2.1. Cornell University, 2.1 edition,
September 1990.
[6] Kenneth P. Birman and Bradford Glade. Consistent failure reporting in reliable communications sys-
tems. Technical Report 93-1349, Cornell University, May 1993.
[7] Kenneth P. Birman and Robbert van Renesse, editors. Reliable Distributed Computing with the Isis
Toolkit. IEEE Computer Society Press, 1994.
[8] Jerszy Brzezinski, Jean-Michel Hlary, Michel Raynal, and Mukesh Singhal. Deadlock models and a
general algorithm for distributed deadlock detection. Journal of Parallel and Distributed Computing,
31 :112125, 1995.
[9] T.D. Chandra, V Hadzilacos, and S. Toueg. The weakest failure detector for solving concensus. Journal
of ACM, 43(4) :685722, 1996.
[10] Edsger W. Dijkstra and Carel S. Scholten. Termination detection for diusing computations. Informa-
tion Processing Letters, 11(4) :14, 1980.
[11] E.W.D. Dijkstra and C.S. Scholten. Termination detection for diusing computations. Information
Processing Letters, 11(4) :14, 1980.
[12] M. Fischer, N. Lynch, and M Paterson. Impossibility of distributed consensus with one faulty process.
Journal of ACM, 32(2) :374382, April 1985.
[13] Michael J. Fischer, Nancy A. Lynch, and Michael Merritt. Easy impossibility proofs for distributed
consensus problems. Distributed Computing, 1(1) :2639, January 1986.
[14] C. A. R. Hoare. Communicating Sequential Processes. Prentice-Hall International, 1984.
[15] D. LeVerrand. Le Langage Ada : Manuel dvaluation. Dunod Informatique, 1982.
[16] Mesaac Makpangou and Kenneth P. Birman. Designing application software in wide area network
settings. Technical Report 90-1165, Cornell University, October 1990.
[17] F. Mattern. Algorithms for distributed termination detection. Distributed Computing, 2 :161175, 1987.
[18] F. Mattern. Virtual time and global states of distributed systems. In Proceedings of the International
Conference on Parallel and Distributed Computing, pages 215226. North-Holland Inc., 1988.
[19] R. Milner. A Calculus of Communicating Systems, volume 92 of Lecture Notes in Computer Science.
Springer Verlag, 1980.
105
[20] M. Nami and M. Trehel. Un algorithme distribu dexclusion mutuelle en log(n). Technique et Science
Informatiques, 6(2) :141150, 1987.
[21] B.J. Nelson. Remote Procedure Call. PhD thesis, DCS Carnegie Mellon University, 1981.
[22] M. Raynal. Dtection rpartie de la terminaison. In Synchronisation et tat global dans les systmes
rpartis, pages 157172. Editions Eyrolles, 1992.
[23] M. Raynal. Synchronisation et tat global dans les systmes rpartis. Editions Eyrolles, 1992.
[24] Michel Raynal. Algorithmes Distribus et Protocoles. Eyrolles, 1985.
[25] Michel Raynal. Gestion des Donnes Rparties : Problmes et Protocoles. Collection Direction tudes-
Recherches EDF. Edition Eyrolles, 1992.
[26] Robbert van Renesse, Kenneth P. Birman, Roy Friedman, Mark Hayden, and David A. Karr. A frame-
work for protocol composition in Horus. In 14th Symposium on Principles of Distributed Computing,
pages 8089. ACM, August 1995.
[27] Robbert van Renesse, Kenneth P. Birman, Mark Hayden, Alexey Vaysburd, and David Karr. Building
adaptative systems using Ensemble. Technical Report 97-1638, Cornell University, 1997.
[28] Robbert van Renesse, Kenneth P. Birman, and Silvano Maeis. Horus : A exible group communications
system. Communications of the ACM, 39(4) :7683, April 1996.
[29] Aleta Ricciardi, Andr Schiper, and Kenneth P. Birman. Understanding partitions and the no partition
assumption. In 4th Workshop on Future Trends Of Distributed Computing Systems, pages 354360,
Lisboa, Portugal, September 1993. IEEE.
[30] A. Schiper. Early concensus in an asynchronous system with weak failure detector. Distributed Com-
puting, 10(3) :149157, 1997.
[31] Gerard Tel and Friedmann Mattern. The derivation of distributed termination detection algorithms from
garbage collection schemes. ACM Transactions on Programming Languages and Systems, 15(1) :135,
jan 1993.
[32] H. Zimmermann, J-S. Banino, A. Caristan, M. Guillemont, and G. Morisset. Basic concepts for the
support of distributed systems : the chorus approach. In IEEE, editor, 2nd international conference on
distributed computing systems, pages 6066, April 1981.
Prcis de rpartition Dpartement Informatique et Mathmatiques appliques 106