Systemes Distribues Chap2
Systemes Distribues Chap2
Systemes Distribues Chap2
Le but de ce chapitre est de faire une tour d’horizon des problèmes fondamentaux auxquels sont
confrontés les systèmes d’exploitation répartis, ainsi que les différentes solutions qui ont été
proposées pour les résoudre.
• temps de communication potentiellement longs par rapport aux temps de transition locaux
• temps de transmission variables
• éventuellement non-préservation de l’ordre des messages
Dans les sections suivantes nous décrirons les trois concepts fondamentaux des systèmes
d’exploitation répartis : ordres entre les événements, temps et état global.
On peut facilement constater que si on n’impose pas de contrainte sur l’ordre de traitement des
messages par les gardiens, ceux-ci vont obtenir pour le nombre de places libres des valeurs
différentes. Si chaque gardien entretient un exemplaire de l’état d’allocation des places, il faut, pour
que ces exemplaires demeurent cohérents entre eux, exécuter la séquence de mises à jour dans le
même ordre sur chaque site.
Le tableau suivant illustre un scénario de réception des messages par les sites, provoquant un état
incohérent.
2
On constate que l’état obtenu est devenu incohérent. En effet, le nombre de places disponibles pour
les gardiens 1, 2, 3 et 4 est égal respectivement à : 98, 99, 100, 101. La raison en est que l'ordre de
traitement des messages n'a pas été le même pour chaque site (gardien).
Cet exemple montre la nécessite l’établissement d’un ordre unique sur l’ensemble des messages du
système.
Supposons défini un tel ordre sur l’ensemble des événements d’un système réparti, au moyen d’une
relation notée → et nommée précèdence, on dit aussi précédence causale ou dépendance causale. ou
relation de causalité. Cette relation doit satisfaire au minimum les contraintes suivantes :
Contrainte 1 : Si A et B sont des événements d’un même site et si A est exécuté avant B, selon un
ordre local au site, alors : A→B.
Contrainte 2 : Si A est l’émission d’un message par un site et si B est la réception de ce message, on
a : A→B.
Exemple : Un système est composé de deux sites A et B. Au niveau du site A il existe un ordre local
des événements : A1→A2→A3→A4→A5. Au niveau du site B, il existe aussi un ordre local :
B1→B2→B3→B4. De plus, on suppose que les sites A et B se sont échangés des messages dont la
causalité est décrite par les deux relations suivantes : A2→B2 et B3→A4 (A a envoyé un message à B.
Ce message a été reçu. Ensuite, B a envoyé un message à A qui l’a reçu). On peut représenter l’ordre
des événements par le schéma suivant.
A partir de ce schéma on peut déduire par transitivité l’ordre existant entre certains événements :
- A1→A2→B2→B3→B4
- B1→B2→B3→A4→A5
- A1→A2→B2→B3→A4→A5
En revanche certains autres événements sont incomparables (ne peuvent pas être classés
par une relation d’ordre). Exemple :
- B1 et A1, A2, A3
- A3 et B2, B3, B4
Systèmes d’exploitation des Ordinateurs 3
Site A Site A
A1
B1
A2
B2
A3
B3
A4
B4
A5
Chaque site gère un compteur dont la valeur est un entier : les valeurs des horloges sont donc
comparables en tant que valeurs entières. Sur chaque site ce compteur est initialisé à 0 au lancement
du système. La valeur de l'horloge logique d'un site est incrémentée chaque fois qu'un événement
local s'y produit : un tel événement est soit une opération purement locale, soit l'envoi d'un message.
Dans ce dernier cas la valeur courante (après incrémentation) de l'horloge de l'émetteur est
embarquée avec le message et sert à l'estampiller.
La réception d'un message permet de synchroniser l'horloge du récepteur avec celle de l'émetteur du
message qui est transportée par le message. Le principe est simple : il consiste à attribuer à l'horloge
du récepteur une valeur supérieure à la fois à la valeur courante de l'horloge du site et à celle de
l'estampille du message reçu. En résumé :
- Chaque site S est muni d’un compteur à valeurs entières, noté Hs et appelé horloge locale, qu’il
incrémente entre deux événements successifs.
- Un site e qui émet un message le marque d’une estampille E égale à la valeur courante de He.
- A la réception du message, le site récepteur r met à jour sa propre horloge Hr de la façon
suivante :
Si Hr < E
Alors Hr := E+1
Sinon Hr := Hr+1
Finsi
LOUKAM Mourad
4
L’événement « Réception du message » est alors daté par la valeur de Hr. Cet algorithme assure donc
que la réception d’un message est postérieure à celle de son émission. Cette datation permet de
définir une relation d’ordre total que nous notons →.
Un événement a qui se produit par un site i est daté par la valeur courante de l’horloge de ce site, noté
Hi(a). Si a et b sont deux événements localisés respectivement sur les sites i et j, on a, par définition :
a→b ⇔ Hi(a) < Hj(b)
Exemple : 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.
0
0 0
1
1 1
2
3
4
3
4
5
5 4
7 6 6
8 7
10
11
9
12
13
13
14 14
15
16
Remarque : L’ordre induit par la datation avec les horloges logiques n’est pas strict : deux événements
qui se produisent sur deux sites peuvent avoir des dates identiques.
On peut étendre la relation → à une relation d’ordre total strict, notée , en associant un numéro
distinct fixe à chaque site, et en datant chaque événement a du site i par le couple (Hi(a), i).
Chaque site i du réseau peut envoyer des messages de la forme (T, Hi, i) où Hi est l’estampille du
message, c(est à dire son heure logique d’émission et T peut prendre les trois valeurs REQ, REL et
ACQ qui définissent trois types de messages :
- Un message REQ (Request : Requête) est diffusé à tous les sites quand le site i veut entrer en
section critique.
- Un message REL (Release : Libération) est diffusé à tous les sites quand le site i a quitté sa
section critique.
- Un message ACQ (Acknowledge : Accusé de réception) est envoyé par le site j au site i, lorsque le
site j a bien reçu du site i un message REQ.
- Chaque site gère une file de messages REQ ordonnée totalement par la relation suivant le
couple (Estampille, Numéro de site) de chaque message.
- Les sites voulant entrer en section critique maintiennent en plus un ensemble ACKi où seront
stockés les numéros de sites ayant répondu par un ACK.
-Il envoie un message (REQ, Hi, i) à tous les sites, y compris lui-même (il place le
message REQ dans sa propre file d’attente Filei).
- Il initialise l'ensemble ACKi des réponses attendues.
Il ne pourra entrer effectivement dans sa section critique que s’il a reçu un accusé de réception (ACK)
de tous les autres sites et que sa requête (REQ) se trouve en tête de sa file d’attente Filei.
Procédure exécutée par un site j qui reçoit un message de type REQ en provenance du site i (REQ,
Hi, i) :
- il met à jour son horloge Hj selon l’algorithme de mise à jour des horloges locales,
- il place le message dans sa file d’attente Filej
- il envoie au site i un message d’accusé de réception (ACK, Hj, j).
- il envoie à tous les autres sites un message de libération (REL, Hj, j),
- il retire sa requête REQ de sa propre file d’attente Filej
LOUKAM Mourad
6
Procédure exécutée par un site j qui reçoit un message de type REL en provenance du site i (REL, Hi,
i) :
- il met à jour son horloge Hj selon l’algorithme de mise à jour des horloges locales,
- il retire la requête REQ du site i de sa file d’attente Filej ainsi que tous les ACK
correspondant.
Pour un système ayant n sites, le coût (en nombre de messages) pour l'entrée et la sortie d'un seul
site est de : 3 * N messages.
Exemple :
0
0 0
1
1 1
2
2 2
3 REQ, 2, 2 3
REQ, 3, 1
4
4
REQ, 3, 1
REQ, 2, 2
5
4
5
ACK, 5, 1
ACK, 5, 2
5
6
6
ACK, 5, 3 6
7
7
ACK, 7, 3
8
SC
REL, 9, 2 9
10 REL, 9, 2
10
SC
11
REL, 11,1
12
REL, 11,1
12
Chacun des sites du système utilise une horloge scalaire qu'il synchronise lors de la réception de
messages.
Les messages envoyés sont de la forme (T, Hi, i).Chaque messages sera systématiquement envoyé
à tous les autres sites. Le type de message T peut être :
• REQ : (request) un tel message est envoyé lorsqu'un site veut entrer en section critique ;
• ACK : (acknowledge) un tel message est envoyé (soit immédiatement à la réception d'un
message de type REQ, soit ultérieurement à la sortie de section critique du site).
Un site a trois états possibles :
• OUT : il n'est ni en section critique, ni demandeur pour y entrer;
• READY : il a demandé à entrer en section critique et attend d'obtenir l'accord de tous les
autres sites.
Chaque site gère une file d'attente dans laquelle il place toutes les requêtes qu'il ne peut satisfaire
immédiatement. Les sites demandant l'entrée en SC maintiennent en plus un ensemble ACK où sont
stockées toutes les réponses reçues des autres sites.
L'algorithme est le suivant :
Procédure exécutée par un site i qui veut entrer en Section critique
Procédure exécutée par un site j qui reçoit un message de type REQ ou ACK en provenance du site i :
− Mettre à jour l'horloge locale en utilisant la méthode de mise à jour des horloges scalaires.
− Si le message reçu est un ACK, l'ajouter à l'ensemble ACKj.
− Si le message reçu est un REQ , faire le traitement suivant :
Si [ (etatj = OUT) ou (etatj = READY)] et (Hi<Estampille de Demandej )
Alors Envoyer (ACK, Hj, j) au site i
Sinon Mettre le message (REQ, Hi, i) dans la Filej
finsi
Procédure exécutée par un site qui sort de sa section critique :
− Envoyer un ACK à tous les sites dont les REQ sont rangés dan,s la File j
− Mettre son état à OUT
Pour un système ayant n sites, le coût (en nombre de messages) pour l'entrée et la sortie d'un seul
site est de : 2 x (N-1) messages.
LOUKAM Mourad
8
Exemple :