Cours NFP111 – Chapitre 03 – Synchronisation dans les SD – Etat Global – Algorithmes...

36
Cours NFP111 – Chapitre 03 – Synchronisation dans les SD – Etat Global – Algorithmes Distribués Page 1 P. SWEID S1 S2 S3 e11 e12 e31 e21 e22 e32 e23 e24 e25 e13 e14 algorithme de Lamport - Exercice N° 2 Solution

Transcript of Cours NFP111 – Chapitre 03 – Synchronisation dans les SD – Etat Global – Algorithmes...

Cours NFP111 – Chapitre 03 – Synchronisation dans les SD – Etat Global – Algorithmes Distribués Page 1P. SWEID

S1

S2

S3

e11 e12

e31

e21 e22

e32

e23 e24 e25

e13 e14

algorithme de Lamport - Exercice N° 2

Solution

Cours NFP111 – Chapitre 03 – Synchronisation dans les SD – Etat Global – Algorithmes Distribués Page 2P. SWEID

Remarques

1. H( E 1 ) < H( E 2 ) n'implique pas E 1 --> E 2

H( E 1 ) < H( E 2 ) ? E 1 -->E 2

Exemple :

H( Q 1 ) < H( P 2 ) < H( P 3 )H( Q 1 ) < H( Q 2 )

Mais P 3 Q 2 et Q 2 P 3

P 1 P 2 P 3

Q 1 Q 2

2. La relation → définit un ordre partiel sur les événements d’un calcul réparti.

Cours NFP111 – Chapitre 03 – Synchronisation dans les SD – Etat Global – Algorithmes Distribués Page 3P. SWEID

Définitions

Passé de l'événement Aensemble des événements B tel que B A

Passé de l'événement

exemple :Passé ‘ historique ’ de

l'événement e :

hist(e) = {ensemble des e' tels que e'

e}

hist(e33) = {e11 e21 e22 e23 e24 e25 e31 e32 e33}

Passé

Cours NFP111 – Chapitre 03 – Synchronisation dans les SD – Etat Global – Algorithmes Distribués Page 4P. SWEID

exemple :Passé ‘ historique ’ de l'événement e hist(e) = {ensemble des e' tels que e' e}hist(e33) = {e11 e21 e22 e23 e24 e25 e31 e32 e33}

(projection de hist(e) sur P i )

)/)( ()( 'ii pehisteehist

Définition :

333231333

2524232221332

11331

)(

)(

)(

eeeehist

eeeeeehist

eehist

Passé de l'événement - exemple

Cours NFP111 – Chapitre 03 – Synchronisation dans les SD – Etat Global – Algorithmes Distribués Page 5P. SWEID

2 3

4

5

6

8

9

10 14

16

2 3 4 6 7 12 1311

1

1

14 5 6 7 8

9 13 14 15

e11 e12 e13 e14 e15 e16 e17 e18 e19

e21

e22 e23

e24

e25

e26

e27

e28 e29

e31 e32e33 e34 e35 e36 e37 e38 e39

e2 10

e3 10

S1

S2

S3

La figure suivante donne la valeur des estampilles logiques scalaires associées en appliquant la méthode décrite précédemment à des événements de 3 sites entre lesquels des messages estampillés sont échangés.

Algorithme de L. Lamport : exemple complet

Cours NFP111 – Chapitre 03 – Synchronisation dans les SD – Etat Global – Algorithmes Distribués Page 6P. SWEID

A un événement e on peut alors associer trois ensembles

d'événements :

Passé(e):

ensemble des événements antérieurs à e dans l'ordre causal (e

appartient à cet ensemble);

Futur(e):

ensemble des événements postérieurs à e dans l'ordre causal (e

appartient à cet ensemble);

Concurrent(e):

ensemble des événements concurrents avec e.

Ordre total des événements -1-

Cours NFP111 – Chapitre 03 – Synchronisation dans les SD – Etat Global – Algorithmes Distribués Page 7P. SWEID

Considérons l'événement e27. Il appartient à son propre passé et est précédé directement par e26 et e35.

- On a Passé(e27) = {e27} + Passé(e26) + Passé(e35)

- Passé(e25) = {e25} + Passé(e24) - Passé(e24) = {e24} + Passé(e23) + Passé(e11) - Passé(e23) = {e23} + Passé(e22) - Passé(e22) = {e22} + Passé(e21) + Passé(e31) - Passé(e21) = {e21} - Passé(e31) = {e31} - Passé(e11) = {e11} - Passé(e14) = {e14} + Passé(e13) - Passé(e13) = {e13} + Passé(e12) - Passé(e12) = {e12} + Passé(e11) + Passé(e21)

- Passé(e35) = {e35} + Passé(e34)

- Passé(e34) = {e34} + Passé(e33) + Passé(25)

- Passé(e33) = {e33} + Passé(e32)

- Passé(e32) = {e32} + Passé(e11) + Passé(e23)

Ordre total des événements -2-

Cours NFP111 – Chapitre 03 – Synchronisation dans les SD – Etat Global – Algorithmes Distribués Page 8P. SWEID

Le calcul de Passé(e27) suppose donc le calcul de celui de e26 et e35. - On a Passé(e26) = {e26} + Passé(e25) + Passé(e14)

Par conséquent Passé(e27) = {e11, e12, e13, e14, e21, e22, e23, e24, e25,e26 , e27, e31, e32,e33,e34,e35} Par un calcul analogue, on obtient:

Futur(e27) = {e17, e18, e19, e27,e28, e29, e2 10, e2 11, e3 8, e3 9, e3 10}

Finalement les événements n'appartenant ni à Passé(e27), ni à Futur(e27) sont concurrents avec e27. On a donc Concurrent(e27) = {e15, e16, e36, e37}

Ordre total des événements -3-

Cours NFP111 – Chapitre 03 – Synchronisation dans les SD – Etat Global – Algorithmes Distribués Page 9P. SWEID

Remarques : Les 2 règles précédentes ne résolvent pas le problème des événements

concurrents. L'ordre n'est que partiel.

L’ordre des événements ainsi défini, n’est pas un ordre strict : Plusieurs événements peuvent porter la même valeur.

C ’est le cas (sur notre exercice N°.2) des événements e15, e26 et e34

appartenant respectivement aux S1, S2 et S3 et qui ont chacun 6 comme valeur

de date. { E E ’ => H(E) < H(E ’) mais H(E) < H(E ’) non E E ’ }

Il est facile de rendre cet ordre strict « total  » en modifiant légèrement le système de datation :

• « la date d ’un événement sur un site est obtenue en adjoignant à la valeur de

l ’horloge scalaire de ce site l’identification du site (par exemple un entier

attribué artificiellement ou une adresse IP ou physique) ».

Ordre total des événements -4-

Cours NFP111 – Chapitre 03 – Synchronisation dans les SD – Etat Global – Algorithmes Distribués Page 10P. SWEID

Pour établir un ordre total des événements, il faut départager les événements concurrents :

L ’horloge logique ,Hi (EI ) d’un événement Ei du site Si est un couple (Hi , i)

On a Ei précède Ej Ei Ej , si et seulement si

• ou bien Hi(Ei ) < Hj (E j )

• ou bien Hi(Ei ) =H j (Ej ) et i < j [ Hi(Ei ) , i]

Ordre total des événements -5-

Cours NFP111 – Chapitre 03 – Synchronisation dans les SD – Etat Global – Algorithmes Distribués Page 11P. SWEID

Sur notre exemple :

• si on ordonne les sites par l'ordre de leurs numéros , S1 précède S2 qui

précède S3 et donc du point de vue des événements, e15 précède e26 qui

précède e34.

• l'ordre ainsi défini respecte la causalité :

• si un événement e précède un événement e',

la valeur de son estampille logique est inférieure à celle de e'.

Ordre total des événements -6-

Cours NFP111 – Chapitre 03 – Synchronisation dans les SD – Etat Global – Algorithmes Distribués Page 12P. SWEID

Si on considère les événements dans le passé de l'événement e27, ils ont tous une estampille scalaire inférieure à celle de e27 (8.2).

De manière duale, les événements du futur de e27 ont une estampille supérieure à celle de 8.2.

l'ordre ainsi défini respecte la causalité :

si un événement e précède un événement e', la valeur de son

estampille logique est inférieure à celle de e'.

L'ordre ainsi défini est total : il induit une chaîne de tous les événements. Sur notre

exemple, la chaîne induite par ce système de datation est :

e11 e21 e31 e12 e22 e13 e23 e14 e24 e32 e25 e33 e15 e26 e34

e16 e35 e27 e36 e28 e37 e29 e17 e18 e19 e38 e2 10 e39 e3 10 e2 11

Ordre total des événements -7-

Cours NFP111 – Chapitre 03 – Synchronisation dans les SD – Etat Global – Algorithmes Distribués Page 13P. SWEID

e11 e21 e31 e12 e22 e13 e23 e14 e24 e32 e25 e33 e15 e26 e34 e16 e35 e27 e36 e28 e37 e29 e17 e18 e19 e38 e2 10 e39 e3 10 e2 11 e11 e12 e13 e14 e15 e16 e17 e18 e19

e21

e22 e23

e24

e25

e26

e27

e28 e29

e31 e32e33 e34 e35 e36 e37

e38

e39

e2 10

e3 10

1

2 3

4

5

6

8

9 10 14

16

1 2 3 4 6 7 12 1311

1 4 5 6 7 8 9 13 14 15

S1

S2

S3

Ordre total des événements -8-

Cours NFP111 – Chapitre 03 – Synchronisation dans les SD – Etat Global – Algorithmes Distribués Page 14P. SWEID

• Tous les événements dans Passé(e27) apparaissent avant e27 dans

cette chaîne.

• Tous les événements dans Future (e27) apparaissent après e27 dans

cette chaîne.

• Des événements concurrents sont quant à eux artificiellement

ordonnés.

• Si nous considérons les événements incomparables e27 et e16 de

notre exemple (nous avons vu que e16 appartient à

concurrent(e27)), le système de datation fait que e16 apparaît

antérieur à e27. Parmi les événements concurrents de e27, les

événements e15 et e16 apparaissent antérieurs alors que e36,

e37 et e38 apparaissent postérieurs.

Ordre total des événements -9-

e11 e21 e31 e12 e22 e13 e23 e14 e24 e32 e25 e33 e15 e26 e34 e16 e35 e27 e36 e28

e37 e29 e17 e18 e19 e38 e2 10 e39 e3 10 e2 11

Cours NFP111 – Chapitre 03 – Synchronisation dans les SD – Etat Global – Algorithmes Distribués Page 15P. SWEID

1- Initialiser toutes les Hi à zéro : H i = 0 i

2 - A chaque événement local (Ei) sur un site Si H i := Hi + 1 Ei: est daté par H i

Conséquence : E 1 et E 2 sont dans le processus P i et que E 1 --> E 2 alors

H i (E 1 ) < H i (E 2 ).

3- Chaque message émis par Pi doit estampillée par la date de son émission : (m, TS(m)), avec TS(m) = H(Emission) = H i 4- A la réception d ’un message (m, TS(m)) sur site Sj :H j = max (TS(m) ,H j ) + 1= max (H i ,H j ) + 1

Exercice N° 1 - Algorithme de L. Lamport

Cours NFP111 – Chapitre 03 – Synchronisation dans les SD – Etat Global – Algorithmes Distribués Page 16P. SWEID

0

0

0

S1

S2

S3

e11 e12

e31

e21

e22

e32

m1

m2

1

1

2

H j = max (TS(m) ,H j ) + 1 = max (H i ,H j ) + 1

3

4

5

Initialiser toutes les Hi à zéro : H i = 0 i H i := Hi + 1

TS(m1) = 2

TS(m2) = 4

H 2 (e21) = max (2 ,0 ) + 1 = 3

H 3 (e32) = max (4 ,1 ) + 1 = 5

Exercice N° 1 - Algorithme de L. Lamport

Retour

Cours NFP111 – Chapitre 03 – Synchronisation dans les SD – Etat Global – Algorithmes Distribués Page 17P. SWEID

0

0

0

1

1 2

3 4

5

S1

S2

S3

e11 e12

e31

e21 e22

e32

e23 e24 e25

e13 e14

2

3 4

3

6

Exercice N°2 - Algorithme de L. Lamport

Retour

Cours NFP111 – Chapitre 03 – Synchronisation dans les SD – Etat Global – Algorithmes Distribués Page 18P. SWEID

S1

S2

S3

e11 e12

e21

e22

e31 e32

(0,0,1)

(1,0,0)

(2,0,0)

(2,1,0)

(2,2,0)

(2,2,2)

1 - Vi[1,…,N] = (0,…..,0)

2 - Vi[i] := Vi[i] + 1

3 - Vi[i] := Vi[i] + 1 Vi[j] := max(Vi[j], EVm[j]) pour tous j = 1,…N, j i

(0,0,0)

(0,0,0)

(0,0,0)

Exercice N°3 - Estampillage vectorielle

Retour

Cours NFP111 – Chapitre 03 – Synchronisation dans les SD – Etat Global – Algorithmes Distribués Page 19P. SWEID

1 - Vi[1,…,N] = (0,…..,0)

2 - Vi[i] := Vi[i] + 1

3 - Vi[i] := Vi[i] + 1 Vi[j] := max(Vi[j], TSm[j]) pour tous j = 1,…N, j i

S1

S2

S3

S4

[0,0,0,0]

[0,0,0,0]

[0,0,0,0]

[0,0,0,0]

[0,1,0,0]

[1,1,0,0] [2,1,0,0]

[2,1,2,1]

[0,0,1,1]

[0,0,0,1]

[2,1,3,1]

[3,3,0,0]

[0,0,0,2]

[3,1,0,0]

[3,4,3,1]

[0,2,0,0]

Exercice N°3 - Estampillage vectorielle

Retour

Cours NFP111 – Chapitre 03 – Synchronisation dans les SD – Etat Global – Algorithmes Distribués Page 20P. SWEID

Problème – Difficulté moyenne

A

C

D

B

Cours NFP111 – Chapitre 03 – Synchronisation dans les SD – Etat Global – Algorithmes Distribués Page 21P. SWEID

Problème – Difficulté moyenne

A

B

C

D

M1M3 M4

M2

M5

M6

Cours NFP111 – Chapitre 03 – Synchronisation dans les SD – Etat Global – Algorithmes Distribués Page 22P. SWEID

Problème – Difficulté moyenne

A

B

C

D

M1M3 M4

M2

M5

M6

[0,0,0,0]

[0,0,0,0]

[0,0,0,0]

[0,0,0,0]

[1,0,0,0]

[1,1,0,0]

[0,0,1,0]

[1,2,0,0]

[0,0,0,1] [0,0,0,2].

[1,2,2,0]

[1,3,1,0]

[2,0,0,1] [3,0,0,1]

[3,2,3,1]

[1,4,1,2].

Cours NFP111 – Chapitre 03 – Synchronisation dans les SD – Etat Global – Algorithmes Distribués Page 23P. SWEID

Problème – Difficulté moyenne

Chaque ordinateur commence avec un compteur à 0 et un vecteur de 4 compteurs

à 0.

Les compteurs dans le vecteurs sont ainsi: [a,b,c,d].

Les opérations sont donc: A: [0,0,0,0], envoi M1 [1,0,0,0], arrivée M3 [2,0,0,1], envoi M4[3,0,0,1].

B: [0,0,0,0], arrivée M1 [1,1,0,0], envoi M2 [1,2,0,0], arrivée M5[1,3,1,0], arrivée M6[1,4,1,2].

C: [0,0,0,0], envoi M5 [0,0,1,0], arrivée M2 [1,2,2,0], arrivée M4[3,2,3,1].

D: [0,0,0,0], envoi M3 [0,0,0,1], envoi M6 [0,0,0,2].

Envoi M1 = [1,0,0,0] est avant arrivée M2 = [1,2,2,0],

envoi M3 = [0,0,0,1] concurrent arrivée M5 = [1,3,1,0].

Retour

Cours NFP111 – Chapitre 03 – Synchronisation dans les SD – Etat Global – Algorithmes Distribués Page 24P. SWEID

Exercice N°4 – Chandy-Lamport-1-

P1

P2

P3

e24

e12 e13 e14 e15 e16

e21e22

e23

e11

e25

e32 e33 e34 e35e31

Mk3

Mk3

m1 m2

m6

m4m3

m7m8

m5

EL3EC 13= ..

EC 23 = …

Cours NFP111 – Chapitre 03 – Synchronisation dans les SD – Etat Global – Algorithmes Distribués Page 25P. SWEID

Exercice N°4 – Chandy-Lamport-1-

P1

P2

P3

e24

e12 e13 e14 e15 e16

e21e22

e23

e11

e25

e32 e33 e34 e35e31

Mk3

Mk3

m1 m2

m6

m4m3

m7m8

m5

EL3

EL1

EC 31 =

Enregistrer état canal EC31 Vide

EC 21 = …

EC 13=

EC 23 = …

Cours NFP111 – Chapitre 03 – Synchronisation dans les SD – Etat Global – Algorithmes Distribués Page 26P. SWEID

Exercice N°4 – Chandy-Lamport-1-

P1

P2

P3

e24

e12 e13 e14 e15 e16

e21e22

e23

e11

e25

e32 e33 e34 e35e31

Mk3

Mk3

m1 m2

m6

m4m3

m7m8

m5

EL3

EL1

EL2

EC 31 =

EC 13=

EC 21 = …

EC 23 = …

EC 12 =

EC 32 = …

Cours NFP111 – Chapitre 03 – Synchronisation dans les SD – Etat Global – Algorithmes Distribués Page 27P. SWEID

Exercice N°4 – Chandy-Lamport-1-

P1

P2

P3

e24

e12 e13 e14 e15 e16

e21e22

e23

e11

e25

e32 e33 e34 e35e31

Mk3

Mk3

m1 m2

m6

m4m3

m7m8

m5

EL3

EL1

EL2

EC 31 =

EC 13=

EC 21 = …

EC 12 =

EC 23 =

EC 32 =m7

Cours NFP111 – Chapitre 03 – Synchronisation dans les SD – Etat Global – Algorithmes Distribués Page 28P. SWEID

Exercice N°4 – Chandy-Lamport-1-

P1

P2

P3

e24

e12 e13 e14 e15 e16

e21e22

e23

e11

e25

e32 e33 e34 e35e31

Mk3

Mk3

m1 m2

m6

m4m3

m7m8

m5

EL3

EL1

EL2

EC 31 =

EC 13=

EC 12 =

EC 23 =

EC 32 =m7

EC 21 =

Retour

Cours NFP111 – Chapitre 03 – Synchronisation dans les SD – Etat Global – Algorithmes Distribués Page 29P. SWEID

Cours NFP111 – Chapitre 03 – Synchronisation dans les SD – Etat Global – Algorithmes Distribués Page 30P. SWEID

Exercice : Etat global cohérent d’une application répartie

Solution :Voir la figure ci-dessous pour un trajet possible du marqueur.

En A :1. le processus P1 enregistre son état (état(P1) = 1)2. et envoie un marqueur sur tous ses canaux sortants,

ici un marqueur est envoyé vers P2 . En B :

le processus P2 reçoit un marqueur en provenance du processus P1 . Comme il n’a pas encore enregistré son état,

3. il enregistre celui-ci (état(P2 ) = 1), 4. enregistre l’état du canal de P1 vers P2 à (vide) ;. 5. Puis il diffuse en C un marqueur sur tous ses canaux sortants. Ici il

envoie le marqueur à P3 

En D :le processus P3 reçoit un marqueur,

6. enregistre son état (état(P3) = 0) 7. et l’état du canal de P2 vers P3 à . 8. Il diffuse ensuite le marqueur à P1  

Cours NFP111 – Chapitre 03 – Synchronisation dans les SD – Etat Global – Algorithmes Distribués Page 31P. SWEID

Exercice : Etat global cohérent d’une application répartie

Solution :En E :le processus P1 ayant déjà enregistré son état,

1. il enregistre l’état du canal de P3 vers P1 2. comme la liste des messages reçus depuis l’enregistrement, ici {M3}.

Finalement, l’état enregistré est: [1; ; 0; ; 0; {M3}]

On remarquera que l’état enregistré n’est pas un état de la trajectoire du processus.

Mais en permutant les événements e2,S et e1,R qui sont concurrents, on passerait par l’état enregistré.

l’état enregistré :Etat (P1)Canal P3 ->P1 = M3

Etat (P2)Canal P1 ->P2 =

Etat (P3)Canal P2 ->P3 =

Cours NFP111 – Chapitre 03 – Synchronisation dans les SD – Etat Global – Algorithmes Distribués Page 32P. SWEID

Exercice : Etat global cohérent d’une application répartie

e1S e1R

e2R

e2S e2S

e3S e3Re3R

A

B

C

D E

F

M1

M2

M3

M2

[1; q ;

0; q

; 0

; q

]

[1;

M1;

0; q

; 0

; q

]

[1;

M1 ;

1;

M2

; 0

; q

]

[1; q;

0;

M2

; 0

; q

]

[1; q ;

0; q

;1; q

]

[1; q;

1; M

2;

1; q

]

[1; q;

1;

M2

; 0

; M

3]

[0; q;

1;

M2

; 0

; q

]

e1S e1R

e2R

e2S e2S

e3S e3Re3R

A

B

C

D E

F

M1

M2

M3

M2

[1; q

; 0

; q;

0; q

]

[1;

M1 ;

0; q

; 0

; q]

[1;

M1 ;

1;

M2

; 0

; q]

[1; q

; 0

; M

2;

0; q

]

[1; q

; 0

; q;1

; q]

[1; q

;1;

M2

; 1

; q]

[1; q

; 1

; M

2;

0;

M3

]

[0; q

; 1;

M2

; 0

; q]

P1

MK1

P2

P3

1. enregistrer sont état local (état P2)

2. envoyer marqueur sur P2 -> P3

état canal P1 P2 =

MK2

MK3

1. enregistrer sont état local (état P3)

2. envoyer marqueur sur P3 -> P1

état canal P2 P3 =

Observation sur canal entrant (P3 -> P1)

retour

Cours NFP111 – Chapitre 03 – Synchronisation dans les SD – Etat Global – Algorithmes Distribués Page 33P. SWEID

Annexe

Cours NFP111 – Chapitre 03 – Synchronisation dans les SD – Etat Global – Algorithmes Distribués Page 34P. SWEID

Hypothèse : respect de l’ordre des messages : (canaux FIFO)

Principe Utiliser un message “marqueur” pour séparer “avant” et “après” enregistrement pour chaque processus

Algorithme (à exécuter par tout processus Pi ) Première réception du marqueur (depuis Pj )

1) Enregistrer état (Pi )2) Enregistrer état (canal <j, i>) comme vide3) Diffuser le marqueur à tous ses voisins (processus vers lequel il a un canal)

{1-2-3} doit être atomique

Réceptions suivantes du marqueur (depuis Pk )Enregistrer état (canal <k, i>) comme : tous les messages reçus de Pk entre l’enregistrement de état (Pj ) et la réception du marqueur de Pk

Nécessité de détecter la terminaison (enregistrement de tous les états) et de regrouper l’ensemble des données enregistrées

Résumé

Cours NFP111 – Chapitre 03 – Synchronisation dans les SD – Etat Global – Algorithmes Distribués Page 35P. SWEID

EXEMPLE DE DETERMINATION D'UN ETAT COHERENT

S2 lance la détermination d'état global et diffuse mk2

Les 3 événements émission2(mk2), réception1(mk2) et réception3(mk2) déterminent une

coupure incohérente.

Les marqueurs mk1 et mk3 permettent :

de forcer la transitivité de la causalité et d'avoir une coupure cohérente.

de noter dans les ECij les messages qui traversent la coupure cohérente.

Cours NFP111 – Chapitre 03 – Synchronisation dans les SD – Etat Global – Algorithmes Distribués Page 36P. SWEID

Exemple 2

autre trace et autre état cohérent