Cours 3 - Causalité Et Datation
Cours 3 - Causalité Et Datation
Cours 3 - Causalité Et Datation
3 octobre 2017
plan
1 Problème de datation
Temps réel vs temps logique
Horloge de Lamport
Horloge vectorielle de Fidge-Mattern
Plan
1 Problème de datation
Temps réel vs temps logique
Horloge de Lamport
Horloge vectorielle de Fidge-Mattern
∀e, e 0 : e ≺ e 0 ⇒ de < de 0
Exemple
Idée : → Utiliser les horloges matérielles de chaque site
Risque : Datation incohérente de l’événement de réception
d’un message : la date de réception précède la date d’émission
Possible si l’horloge du site de réception est en retard
(suffisamment) sur celle du site de l’émetteur
Temps réel
Difficultés
Cohérence avec la causalité
Datation définissant un ordre total
Solutions
Nécessite une synchronisation des horloges locales :
Temps logique
Principes de base
Compter les événements au lieu du temps réel
Associer à chaque site une horloge logique locale
Surcharger les messages avec leur date d’émission
Recaler si nécessaire l’horloge locale d’un site lors de chaque
réception de message
Avantage : vision plus abstraite d’un calcul réparti
Une tentative. . .
Un compteur horloge sur chaque site
Surcharge des messages et recalage de compteur
(1) (2) (3) (6)
0 a1 1 a2 2 a3 3 a4 6
A
<1,m1> <3,m2> <5,m3> (6)
0 4 5 b3 6
B
b1 b2
<6,m4>
(4) (5)
0 2 3 7
C
c1 c2 c3
Recalage
(2) (3) (7)
Horloge de Lamport
Propriétés
Introduit un ordre total entre événements
→ Dates distinctes pour tout couple d’événements
Date = (numéro de site, compteur local)
⇒ ordre total sur les sites (par leur numéro)
Coupure
Date d’une coupure C = (c1 , . . . , cn ) :
∆
HV (C ) = sup(HV (c1 ), . . . , HV (cn ))
C2 ⊂ C1 ⇔ HV (C2 ) < HV (C1 )
C cohérente ⇔ HV (C ) = hHV (c1 )[1], . . . , HV (cn )[n]i
Plan
1 Problème de datation
Temps réel vs temps logique
Horloge de Lamport
Horloge vectorielle de Fidge-Mattern
Protocole FIFO
e1 e2 e1 e2
S1 m2
m1 m1 m2
S2 r2 r1 r1 r2
Non FIFO FIFO
m m0
∀m, m0 : s1 −→ s2 ∧ s1 −→ s2 ∧ e(m) ≺ e(m0 ) ⇒ r (m) ≺ r (m0 )
e1 e2
S1 m2
m1
S2 r2 r1 d1 d2
délivrance 6= réception
⇒ délivrance 6= réception
Protocole FIFO
Objectif
Garantir la cohérence des réceptions sur un même site par rapport
à leur éventuelle émission depuis un même site
⇒ réordonner les messages reçus sur un site
Protocole FIFO
Réalisation : il suffit de numéroter les messages pour chaque canal
(couple site d’émission, site de réception)
Récepteur pour un canal :
type Message = hcontenu, numéroi;
int prochain = 0;
SortedSet<Message> enAttente; // trié par numéro
while (true) {
recevoir m;
enAttente.add(m);
while (enAttente.first().numéro == prochain) {
m ← enAttente.removeFirst();
délivrer m.contenu
prochain++;
}
}
Systèmes et algorithmes répartis – III 17 / 29
Délivrance ordonnée
Problème de datation Protocoles ordonnés
Les protocoles de communication Protocole causalement ordonné
Diffusion causalement ordonnée
Objectif
Garantir la cohérence des réceptions sur un même site par rapport
à leur causalité éventuelle en émission
⇒ réordonner les messages reçus sur un site
Histoire causale
Exemple
Hc (m10 ) = {m8 , m4 , m9 , m7 , m1 , m6 , m3 , m2 }
Hc (m6 ) = {m3 }
Hc (m8 ) = {m4 , m1 , m2 }
Systèmes et algorithmes répartis – III 20 / 29
Délivrance ordonnée
Problème de datation Protocoles ordonnés
Les protocoles de communication Protocole causalement ordonné
Diffusion causalement ordonnée
Exemple
e1 e
A
<m1,C>,m
<>,m1
e2
B
r
<(m1,C);(m,B)>, m2
C
r2 d1 d2 r1
message ignoré
Mise en œuvre
, Simple et apport d’une certaine tolérance aux pertes de
messages par redondance
/ Messages de + en + longs
⇒ Quand, Comment réduire les histoires ?
Exemple
A
<(m1,C)>,m3
<>,m1 <(m1,C);...>,m5
B
<(m1,C)>,m2 <(m2,B);(m3,B)>,m4
Éliminer (m1,C)
car B sait que C a reçu m1
Horloges vectorielles
Connaissance de premier ordre : passé de s 0 que s connaı̂t,
connaissance par s que s 0 a eu un certain nombre d’événements
Horloges matricielles
Connaissance de second ordre : connaissance par s de la
connaissance par s 0 du passé de s 00 .
A (1,0,0)
(1,0,0) (1,1,0)
Défaut de
(1,1,1)
B causalité
(1,1,0) Vecteur local (a,b,c)
C (0,0,0)
Conclusion