Temps Logique
Temps Logique
Temps Logique
Interblocage
1
Le temps logique dans les systèmes distribués
Introduction
✓ Un Système distribué est organisé comme un ensemble de processus qui
s’exécutent sur des sites reliés par un système de communication et qui
communiquent en échangeant des messages. Sur chaque site, il est
possible de définir un état local, qui est modifié par l’exécution des
processus du site.
2
Le temps logique dans les systèmes distribués
Introduction (1)
✓ Une horloge locale unique permet de dater chacun des événements. Tous
les événements ont des dates différentes. Mais, dans les systèmes
distribués., bien que chaque site dispose d’une horloge locale, il n’existe
pas d’horloge réelle globale, alors que l’ordre dans lequel surviennent les
événements est parfois primordial
Exemples:
✓ Un message ne peut pas avoir une date de réception antérieure à sa date
d’émission.
✓ Deux sites modifient une donnée partagée. Quelle est la modification la
plus récente?
3
Le temps logique dans les systèmes distribués
Introduction (2)
Il est donc nécessaire de définir des méthodes qui permettent d’assurer une
relation causale entre les différents événements. Pour cela, il faut définir un
temps global cohérent et « identique » (ou presque) pour tous les processus:
4
Le temps logique dans les systèmes distribués
Temps logique
5
Le temps logique dans les systèmes distribués
6
Le temps logique dans les systèmes distribués
7
Le temps logique dans les systèmes distribués
8
Le temps logique dans les systèmes distribués
ensemble d'événements
o Créer un ordre total global sur tous les événements de tous les
processus
➢ Horloge logique
10
Le temps logique dans les systèmes distribués
11
Le temps logique dans les systèmes distribués
a, b, c, d, e, o
12
Le temps logique dans les systèmes distribués
Temps logique
Horloges logiques (Algorithme de Lamport, 1978)
On s'intéresse ici à construire un ordre total qui soit cohérent avec la relation
de causalité. Pour cela, on associe à chaque évènement une estampille telle
que si on compare les estampilles de 2 évènements, l'estampille de la cause
est inférieure à celle de l'effet.
Sur Chaque site Si, on trouve une variable entière Hi, dite horloge locale,
initialisée à 0. La date locale d'un évènement E est notée d(E).
✓ Pour chaque évènement E ne correspondant pas à l'envoi ou à la
réception d'un message, le site Si incrémente l'horloge locale Hi de 1 et
date cet évènement par d(E) = Hi.
13
Le temps logique dans les systèmes distribués
Temps logique
Horloges logiques (Algorithme de Lamport, 1978)
✓ Lors de l'émission d'un message M par Si, on incrémente l'horloge locale
Hi de 1, on estampille M par (Hi, i) et on date l‘émission par d(E) = Hi.
✓ Lors de la réception d'un message estampillé (Hj, j) par Si, Si recale son
horloge locale de la manière suivante:
14
Le temps logique dans les systèmes distribués
Temps logique
Horloges logiques (Algorithme de Lamport, 1978)
Ce système d'estampillage est très intéressant lorsque le problème à
résoudre nécessite un ordre total sur les évènements respectant les relations
de causalité qui les lient. C'est le cas par exemple de l'exclusion mutuelle.
Si H est la valeur d'horloge associée à un évènement A, alors il y a
exactement H - 1 évènements qui précèdent causalement A sur le plus long
chemin causal se terminant par A. En d'autres termes, il s'agit là du nombre
maximum d‘ évènements qui peuvent avoir lieu avant que A se produise.
L’horloge de lamport respecte la dépendance causale e → e’ h(e)h(e’)
Mais non sa réciproque h(e)(he’) n’implique pas forcement que e→e’
15
Le temps logique dans les systèmes distribués
16
Le temps logique dans les systèmes distribués
17
Le temps logique dans les systèmes distribués
18
Le temps logique dans les systèmes distribués
Limitations de l’algorithme
E1‐> E2 implique H(E1) < H(E2) est une condition faible, car on
ne peut rien affirmer si H(E1) < H(E2)
❑ soit les évènements E1 et E2 sont concurrents
❑ soit les évènements E1 et E2 sont ordonnés
Les estampilles ne sont pas “denses” => Horloge de Lamport
respecte les dépendances causales mais avec e et e' tel que
H(e) < H(e') on ne peut rien dire sur la dépendance entre e et e'
19
Le temps logique dans les systèmes distribués
20
Le temps logique dans les systèmes distribués
évident que la relation d'ordre sur les horloges ne peut pas être totale comme
celle sur les entiers. On définit donc une fonction H qui associe à tout
de la manière suivante :
21
Le temps logique dans les systèmes distribués
les horloges par H(i)[k] = Max (H(i)[k], H[k] ) , pour tout k allant de 1 à n, et
22
Le temps logique dans les systèmes distribués
23
Le temps logique dans les systèmes distribués
24
Le temps logique dans les systèmes distribués
❑ Etat global
l’instant de la coupure.
25
Le temps logique dans les systèmes distribués
❑ Coupure
coupure.
26
Le temps logique dans les systèmes distribués
❑ Exemple coupure
27
Le temps logique dans les systèmes distribués
▪ Frontière
La frontière F d'une coupure C est l'ensemble des évènements les plus récents de la
coupure, un sur chaque site.
Un évènement a appartient à F si et seulement si a appartient à C et qu'il n'existe
aucun évènement b appartenant à C tel que a → b.
▪ Coupure/ état cohérent
Une coupure cohérente est une coupure qui respecte la causalité (un message ne
peut pas venir du futur). C'est une coupure fermée par la relation de dépendance
causale suivante : Si a appartient à C et b → a, alors b appartient à C.
On dit que l'état global est cohérent si la coupure associée est cohérente.
28
Le temps logique dans les systèmes distribués
Exemple
29
Le temps logique dans les systèmes distribués
30
Le temps logique dans les systèmes distribués
Exemple 2
31
Le temps logique dans les systèmes distribués
Exemple2
32
Le temps logique dans les systèmes distribués
Horloges matricielles
❑ Sur processus Pi :
Ligne j (avec j ≠ i) :
33
Le temps logique dans les systèmes distribués
Horloges matricielles
34
Le temps logique dans les systèmes distribués
Horloges matricielles
✓ lorsqu'un événement local se produit sur le site Si , HMi [i,i] est
incrémenté;
✓ lorsqu'un message est expédié à partir du site Si vers le site Sj , HMi [i,i]
et HMi [i, j] sont incrémentés;
✓ lorsqu'un message m en provenance du site Sj est reçu sur le site Si il
faut s'assurer que tous les messages envoyés antérieurement au site Si y
sont effectivement arrivés. Cela suppose donc que Si ait reçu d'une part
tous les messages précédents de Sj et d'autre part tous ceux envoyés
plutôt causalement depuis d'autres sites. Cela correspond aux conditions
suivantes:
▪ HMm[j,i] = HMi[j,i] + 1 (ordre FIFO sur le canal (j,i))
35
Le temps logique dans les systèmes distribués
Horloges matricielles
▪ pour tout k # i et j , HMm[k,i] = HMi[k,i] (tous les messages des sites
différents de Sj ont été reçus)
- Si toutes ces conditions sont vérifiées, le message est délivrable et
l'horloge du site Sj est mise à jour:
▪ HMi[i,i]++ (incrémentation);
▪ HMi[j,i]++ (incrémentation);
▪ pour tout k # i et j et pour tout l # i , HMi[k,l] = max(HMi[k,l], EMm[k,l])
36
Le temps logique dans les systèmes distribués
Horloges matricielles
P1
P2
P3
37
Le temps logique dans les systèmes distribués
38