AccueilđŸ‡«đŸ‡·Chercher

Horloge vectorielle

Une horloge vectorielle est un dispositif logiciel introduit indépendamment en 1988 par Colin Fidge[1] et Friedemann Mattern[2] afin de donner à chaque processus d'un systÚme distribué asynchrone des informations sur la relation de causalité arrivé-avant.

Principe

Chaque processus p possÚde un vecteur d'entiers appelé estampille dans lequel chaque composant estampille[i] est l'estimation par p de la valeur de l'horloge de Lamport du processus i. En particulier, estampille[p] est exactement l'horloge de Lamport de p. Il est mis à jour selon les rÚgles suivantes :

  • un Ă©vĂ©nement interne provoque l'incrĂ©mentation d'estampille[p] ;
  • avant l'envoi d'un message, estampille[p] est incrĂ©mentĂ© et le message est envoyĂ© avec la nouvelle valeur de l'estampille ;
  • lors de la rĂ©ception d'un message, chaque composante j ≠ p de l'estampille prend la valeur max(estampille[j] du message, estampille[j] courante). Ensuite, estampille[p] est incrĂ©mentĂ©.

Pour comparer deux horloges logiques, on dit que c â‰ș c' (l'estampille c prĂ©cĂšde l'estampille c') si et seulement si les deux conditions suivantes sont vĂ©rifiĂ©es :

  • ∀ i, c[i] ≀ c'[i] (toute datation de site de l'estampille c est infĂ©rieure ou Ă©gale Ă  la datation correspondante dans c'),
  • ∃ i tel que c[i] < c'[i] (il existe au moins une datation strictement infĂ©rieure).

Si c ⊀ c' et c' ⊀ c, alors c ∄ c' (les deux horloges ne sont pas comparables).

Les horloges vectorielles capturent totalement la relation → : pour deux Ă©vĂ©nements a et b, a → b si et seulement si l'estampille de a est infĂ©rieure Ă  celle de b. D'autre part, a et b sont indĂ©pendants si et seulement si leurs estampilles ne sont pas comparables.

Les horloges vectorielles donnent une information plus précise que les horloges logiques pour un coût plus élevé en mémoire. Elles sont utilisées dans des algorithmes d'exclusion mutuelle, de débogage et d'optimisation de systÚmes distribués.

Bien qu'il soit possible de dĂ©terminer totalement la relation → en utilisant des horloges vectorielles, il est parfois nĂ©cessaire d'utiliser des dispositifs plus Ă©laborĂ©s : les horloges matricielles.

Exemple

Soit 3 processus, p1, p2, p3. Chacun a son estampille, chacune composée de trois numéros ou dates, les trois correspondant à chaque processus :

  • estampille p1 : [0 (date pour p1), 0 (pour p2), 0 (pour p3)]
  • estampille p2 : [0, 0, 0]
  • estampille p3 : [0, 0, 0]

Imaginons qu'il se produise un Ă©vĂšnement interne Ă  p1. Les estampilles deviendront :

  • estampille p1 : [1, 0, 0]
  • estampille p2 : [0, 0, 0]
  • estampille p3 : [0, 0, 0]

Imaginons maintenant que p1 envoie un message Ă  p3. À l'Ă©mission, les estampilles deviendront :

  • estampille p1 : [2, 0, 0]
  • estampille p2 : [0, 0, 0]
  • estampille p3 : [0, 0, 0]

Le message portera comme estampille [2, 0, 0], qui correspond Ă  l'estampille de p1 lors de l'Ă©mission.

À la rĂ©ception, les estampilles deviendront :

  • estampille p1 : [2, 0, 0]
  • estampille p2 : [0, 0, 0]
  • estampille p3 : [2, 0, 1]

Sur l'estampille de p3, la date de p3 est incrémentée à la réception du message puisque la réception est un événement, tandis que la date de p1 est mise à jour à 2, en fonction du maximum entre date existante et date reçue.

Sur cet exemple, on peut dire que l'estampille de p1 précÚde l'estampille de p3, puisque toutes les dates de la premiÚre sont respectivement inférieures ou égales à la seconde, et qu'il en existe au moins une de strictement inférieure : celle de p3.

Liens externes

(fr) Horloges et estampilles logiques

Notes et références

  1. (en) Colin J. Fidge, « Timestamps in Message-Passing Systems that Preserve the Partial Ordering », Proceedings of the 11th Australian Computer Science Conference,‎ , p. 56-66 (lire en ligne [PDF])
  2. (en) Friedemann Mattern, « Virtual Time and Global States of Distributed Systems », Proceedings of the Workshop on Parallel and Distributed Algorithms,‎ , p. 215-226 (lire en ligne [PDF])
Cet article est issu de wikipedia. Text licence: CC BY-SA 4.0, Des conditions supplĂ©mentaires peuvent s’appliquer aux fichiers multimĂ©dias.