Vous êtes sur la page 1sur 26

Systmes distribus : Rappel sur ordre et temps logique

Eric Cariou Master Technologies de l'Internet 1re anne Universit de Pau et des Pays de l'Adour Dpartement Informatique Eric.Cariou@univ-pau.fr
1

Temps dans un systme distribu

Dfinir un temps global cohrent et identique (ou presque) pour tous les processus
Soit synchroniser au mieux les horloges physiques locales avec une horloge de rfrence ou entre elles Soit crer un temps logique Temps qui n'est pas li un temps physique But est de pouvoir prciser l'ordonnancement de l'excution des processus et de leur communication En fonction des vnements locaux des processus, des messages envoys et reus, on cr un ordonnancement logique

Temps logique

Cration horloge logique

Chronogramme

Chronogramme
Dcrit l'ordonnancement temporel des vnements des processus et des changes de messages Chaque processus est reprsent par une ligne Trois types d'vnements signals sur une ligne

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

Les messages changs doivent respecter la topologie de liaison des processus via les canaux

Chronogramme

Trois processus tous relis entre-eux par des canaux Temps de propagation des messages quelconques et possibilit de perte de message

Chronogramme

Exemples d'vnements
Processus P1

e11 : vnement d'mission du message m1 destination du processus P2 e13 : vnement interne au processus e14 : rception du message m4 venant du processus P3

Processus P2 : message m5 envoy avant m6 mais m6 reu avant m5 Processus P3 : le message m7 est perdu par le canal de communication exy avec x le numro du processus et y le numro de l'vnement pour le processus, dans l'ordre croissant 5

Rgle de numrotation d'un vnement

Dpendance causale

Relation de dpendance causale


Il y a une dpendance causale entre 2 vnements si un vnement doit avoir lieu avant l'autre Notation : e e'

e doit se drouler avant e'

Si e e', alors une des trois conditions suivantes doit tre vrifie pour e et e'

Si e et e' sont des vnements d'un mme processus, e prcde localement e' Si e est l'mission d'un message, e' est la rception de ce message Il existe un vnement f tel que e f et f e'

Ordonnancement des vnements

Les dpendances causales dfinissent des ordres 6 partiels pour des ensembles d'vnements du systme

Dpendance causale

Sur exemple prcdent


Quelques dpendances causales autour de e12

Localement : e11 e12, e12 e13 Sur message : e12 e34 Par transitivit : e12 e35 (car e34 e35) et e11 e13 A priori non : absence de dpendance causale Des vnements non lis causalement se droulent en parallle

Dpendance causale entre e12 et e32 ?


Relation de paralllisme : ||
e || e' ((e e') v (e' e))
Paralllisme logique : ne signifie pas que les 2 vnements se droulent simultanment mais qu'il peuvent se drouler 7 dans n'importe quel ordre

Horloges logiques

Horloges logiques
Datation de chacun des vnements du systme Avec respect des dpendances causales entre evts Estampille (horloge de Lamport)

3 familles d'horloge
Une donne par vnement : information au niveau global Un vecteur par vnement : information sur chacun des autres processus Une matrice par vnement : information sur les informations que connaisse chacun des processus des autres processus

Vectorielle (horloge de Mattern)

Matricielle

Horloge de Lamport

Lamport, 1978

Une date (estampille) est associe chaque venement : couple (s, nb)

s : numro du processus nb : numro d'vnement e e' H(e) < H(e')

Respect dpendance causale


Avec H(s, nb) < H(s' , nb') si (nb < nb') ou (nb = nb' et s < s') H(e) < H(e') (e' e) C'est--dire : soit e e', soit e || e'

Mais pas la rciproque :

Invariant sur les dates

Pour deux dates d'un mme processus, les numros de ces dates sont diffrentes d,d' : d.s = d'.s d.nb d'.nb

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

Cration du temps logique

Horloge de Lamport

Localement, chaque processus Pi possde une horloge locale logique Hi, initialise 0

Sert dater les vnements Hi = Hi + 1 : on incrmente l'horloge locale L'vnement est dat localement par Hi On incrmente Hi de 1 puis on envoie le message avec (i, Hi) comme estampille Hi = max(Hi, nb) +1 et marque l'vnement de rception avec Hi

Pour chaque vnement local de Pi


mission d'un message par Pi

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

Hi est ventuellement recale sur l'horloge de l'autre processus 10 avant d'tre incrmente

Horloge de Lamport

Exemple : chronogramme avec ajouts des estampilles

Date de e23 : 6 car le message m5 reu avait une valeur de 5 et l'horloge locale est seulement 3 Date de e34 : 4 car on incrmente l'horloge locale vu que sa valeur est suprieure celle du message m3 Pour e11, e12, e13 ... : incrmentation de +1 de l'horloge locale 11

Ordonnancement global

Horloge de Lamport

Via Hi, on ordonne tous les vnements du systme entre eux Ordre total obtenu est arbitraire Si dpendance causale entre 2 evts : ordre respecte dpendance Si indpendance causale entre : choix d'un ordre entre les 2

Pas de problme en pratique puisqu'ils sont indpendants

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

Soit e vnement de Pi et e' vnement de Pj : e << e' (Hi(e) < Hj(e')) v (Hi(e) = Hj(e') avec i < j)

Localement (si i = j), Hi donne l'ordre des vnements du processus Les 2 horloges de 2 processus diffrents permettent de dterminer l'ordonnancement des vnements des 2 processus

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

Ordre total global obtenu pour l'exemple

e11 << e31 << e12<< e21 << e32 << e13 << e22 << e33 << e14 << e34 << 12 e35 << e23 << e24 << e15

Horloge de Mattern

Horloge de Mattern & Fidge, 1989-91


Horloge qui assure la rciproque de la dpendance causale

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

Permet galement de savoir si 2 vnements sont parallles (non dpendants causalement) Ne dfinit par contre pas un ordre total global Utilisation de vecteur V de taille gale au nombre de processus

Principe

Localement, chaque processus Pi a un vecteur Vi Un message est envoy avec un vecteur de date

Pour chaque processus Pi, chaque case Vi[ j ] du vecteur contiendra des valeurs de l'horloge du processus Pj13

Horloge de Mattern

Fonctionnement de l'horloge
Initialisation : pour chaque processus Pi, Vi =(0, ... , 0) Pour un processus Pi, chacun de ses vnements (local, mission, rception) :

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

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

Mmorise le nombre d'vnements sur Pj qui sont sur Pj dpendants causalement par rapport l'mission du message La rception du message est donc aussi dpendante causalement de ces vnements sur Pj

14

Horloge de Mattern

Exemple : chronogramme d'application horloge de mattern

Mme exemple que pour horloge de Lamport

15

Horloge de Mattern

Relation d'ordre partiel sur les dates


V V' dfini par i : V[ i ] V'[ i ] V < V' dfini par V V' et j tel que V [ j ] < V' [ j ] V || V' dfini par ( V < V' ) ( V' < V )
Horloge de Mattern assure les proprits suivantes, avec e et e' deux vnements et V(e) et V(e') leurs datations

Dpendance et indpendance causales

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

Si deux dates sont ordonnes, on a forcment dpendance causale entre les vnements dats Si il n'y a aucun ordre entre les 2 dates, les 2 vnements sont indpendants causalement 16

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

Horloge de Mattern

Retour sur l'exemple

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


V(e13) < V(e14) donc e13 e14 V(e14) < V(e15) donc e13 e15 V(e35) < v(e23) donc e35 e23

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

L'horloge de Mattern respecte les dpendances causales des vnements

Horloge de Lamport respecte cela galement On a ni V(e32) < V(e13) ni V(e13) < V(e32) donc e32 || e13 L'horloge de Mattern respecte les indpendances causales

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


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

Horloge matricielle

Horloge matricielle
n processus : matrice M de (n x n) pour dater chaque evt Sur processus Pi

Ligne i : informations sur vnements de Pi


Mi [ i , i ] : nombre d'vnements raliss par Pi Mi [ i , j ] : nombre de messages envoys par Pi Pj (avec j i) Mi [ j , k ] : nombre de messages que l'on sait que Pj a envoy Pk Mi [ j , j ] : nombre d'vnements que l'on connait sur Pj (avec j k)

Ligne j (avec j i)

Un processus Pi a une connaissance sur le nombre de messages qu'un processus Pj a envoy Pk

Quand on reoit un message d'un autre processus, on compare l'horloge d'mission avec l'horloge locale

Peut dterminer si on ne devait pas recevoir un message avant 18

Horloges

Informations donnes par les horloges


Estampille : connaissance global du nombre d'vnements du systme Vectorielle: connaissance d'vnements sur chacun des autres processus Matricielles : connaissance de la connaissance d'vnments qu'un processus connait sur les autres Estampille : ordonnancement global, gestion priorit Vectorielle : validation de la cohrence d'un tat global, proprits sur de la diffusion Matricielle : assurer la dlivrance causale de messages entre plusieurs processus 19

Application, utilit

Cf TD systmes distribus L3 Informatique

tat global

tat Global

tat du systme un instant donn Buts de la recherche d'tats globaux


Trouver des tats cohrents partir desquels on peut reprendre un calcul distribu en cas de plantage du systme Dtection de proprits stables, du respect d'invariants Faciliter le debugging et la mise au point d'applications distribues

Dfini partir de coupures Photographie un instant donn de l'tat du systme Dfinit les vnements appartenant au pass et au futur par rapport l'instant de la coupure 20

Coupure

Coupure

Dfinition coupure
Calcul distribu = ensemble E d'vnements Coupure C est un sous-ensemble fini de E tel que

Soit a et b deux vnements du mme processus : a C et b a b C


Si un vnement d'un processus appartient la coupure, alors tous les vnements locaux le prcdant y appartiennent galement

Etat associ une coupure


Si le systme est compos de N processus, l'tat associ une coupure est dfini au niveau d'un ensemble de N vnements (e1, e2, ... ei, ... eN), avec ei vnement du processus Pi tel que

i :e C et e vnement du processus Pi e ei L'tat est dfini la frontire de la coupure : l'vnement le 21 plus rcent pour chaque processus

Coupure

Exemple de coupure
(mme chronogramme que pour exemples horloges Lamport et Mattern)

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

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

22

Coupure/tat cohrent

Coupure cohrente
Coupure qui respecte les dpendances causales des vnements du systme

Et pas seulement les dpendances causales locales chaque processus Soit a et b deux vnements du systme : a C et b a b C Coupure cohrente : aucun message ne vient du futur

tat cohrent
tat associ une coupure cohrente Permet par exemple une reprise sur faute
23

Coupure cohrente

Exemple (mme chronogramme que prcdent)

Coupure C1 : cohrente Coupure C2 : non cohrente car e35 e23 mais e35 C2

La rception de m5 est dans la coupure mais pas son mission 24 m5 vient du futur par rapport la coupure

Datation Coupure

Horloge de Mattern permet de dater la coupure


Soit N processus, C la coupure, ei l'vnement le plus rcent pour le processus Pi, V(ei) la datation de ei et V(C) la datation de la coupure

V(C) = max ( V(e1), ... , V(eN) ) : i : V(C)[ i ] = max ( V(e1)[ i ] , ... , V(eN)[ i ] )
Pour chaque valeur du vecteur, on prend le maximum des valeurs de tous les vecteurs des N vnements pour le mme indice

Permet galement de dterminer si la coupure est cohrente

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


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

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

25

Datation Coupure

Datation des coupures de l'exemple


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

V(e13) = (3,0,0), V(e22) = (1,2,1), V(e33) = (0,0,3) V(C) = (max(3,1,0), max(0,2,0), max(0,1,3)) = (3,2,3) Coupure cohrente car V(C)[1] = V(e13)[1], V(C)[2] = V(e22)[2], V(C)[3] = V(e33)[3] V(e13) = (3,0,0), V(e23) = (2,3,5), V(e34) = (2,0,4) V(C) = (max(3,2,2), max(0,3,0), max (0,5,4)) Non cohrent car V(C)[3] V(e34)[3]

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


D'aprs la date de e23, e23 doit se drouler aprs 5 vnements de P3 or e34 n'est que le quatrime vnement de P3 Un vnement de P3 dont e23 dpend causalement n'est donc pas dans la coupure (il s'agit de e35 se droulant dans le futur) 26

Vous aimerez peut-être aussi