Title: ALGORITHMIQUE REPARTIE
1ALGORITHMIQUE REPARTIE
- Définitions et Problématiques
2Définitions (1/2)
- Linformatique répartie (distributed computing)
repose sur linteraction entre deux ou plusieurs
systèmes informatiques interconnectés - Un système ou une application répartie est
décomposée en processus, nuds, sites, etc. qui
exécutent chacun un flot de contrôle séquentiel - Un système ou une application répartie présente
une différence essentielle par rapport à un
système ou une application centralisée - Les entités qui le/la composent coopèrent à la
réalisation dun but commun - La notion détat global du système repose sur
lagrégation détats locaux
A. Tanenbaum Distributed Operating Systems.
Prentice Hall, Englewood Cliffs, 1995
3Définitions (2/2)
- Un système ou une application répartie est une
collection dentité qui ne partagent ni mémoire,
ni horloge commune (architecture faiblement
couplée) caractéristiques fondamentales des
systèmes répartis - Les entités qui composent le système ou
lapplication communiquent par lutilisation de
différents paradigmes de communication réseau,
principalement par - Échange de messages
- Appel de procédure à distance (RPC)
- Mémoire virtuelle partagée
- Comprendre les problèmes posés par la
répartition, cest appréhender (en partie) le
fonctionnement des systèmes informatiques répartis
4La Problématique Temporelle
- Dans un système centralisé
- Il est toujours possible de déterminer lordre
dans lequel deux événements se sont produits - Temps non ambiguë horloge et mémoire commune
- Dans un système réparti
- Temps ambiguë labsence dun temps universel
est une caractéristique fondamentale - Un service temporel centralisé est difficilement
concevable à cause des délais incertains de
transit des messages - Toutefois, il est possible de synchroniser les
horloges et les processus des différentes noeuds
avec une précision adaptée au contexte
dapplication synchronisation temporelle et
événementielle
5La Problématique de Fiabilité
- Dans une exécution répartie, les processus et les
canaux de communications peuvent être défaillants - En environnement synchrone lutilisation dun
time-out permet de résoudre le problème de
détection de défaillance - En environnement asynchrone la détection des
défaillances est beaucoup plus complexe Ã
réaliser - En général, aucune hypothèse nest réalisée sur
les états et fonctionnements des processus et des
canaux de communication - Les processus sont assez naturellement
- Asynchrones ou partiellement synchrones
- Non fiables car les défaillances englobent des
pannes beaucoup plus graves que le simple crash
(attaques volontaires) - Les canaux de communication sont asynchrones et
non fiables
J.C. Lapri, Sûreté de fonctionnement concepts
de base et terminologie, Dependable Computing and
Fault-Tolerant Systems, 47-95, 1991
Selon Lapri, un système est dit défaillant
lorsque le service délivré ne se conforme plus Ã
sa spécification
6Exemples dApplications Réparties
- Gestion de la concurrence (mutex), mécanisme de
synchronisation, de nommage et de caching - Threads, scheduling, réplication de données,
migration de processus, système de fichier
répartis (e.g. NFS), protocoles réseaux - Transactions, RPC, tolérance aux fautes, mémoire
virtuelle partagée, objets répartis (e.g. CORBA),
base de données réparties - Imprimante réseau, rlogin, telnet, World Wide
Web, ATM (distributeur de banque) - Etc.
7ALGORITHMIQUE REPARTIE
- Synchronisation Temporelle
8Synchronisation Temporelle
- La synchronisation temporelle consiste à définir
et à mettre en oeuvre des protocoles permettant
de synchroniser les horloges physiques - Les horloges sont basées sur les oscillations
dun cristal de fréquence connue décalage
(clock skew) et dérive (clock drift) - La précision est un facteur prépondérant
- Applications mesurer des délais entre des
composants répartis, synchroniser des flux audio
et vidéo, simulation  time driven , etc.
Clock Skew
réseau
9Synchronisation dHorloges
- Externe synchroniser avec une source
temporelle de référence - La valeur absolue de la différence entre les
horloges et la source est bornée par une valeur ? - Le temps est précis à ? prêt
- Interne synchroniser les horloges entre elles
- La valeur absolue des différences entre les
horloges est bornée par une valeur ? - Le temps est imprécis (potentiellement aucune ne
connaît lheure UTC de référence) mais les
horloges sentendent sur une heure commune avec
limprécision ? - Dans les deux cas, la synchronisation repose sur
une communication entre le système à synchroniser
et lextérieur
10Synchronisation dHorloges en Systèmes Synchrones
(1/2)
- La synchronisation est simple et repose sur les
bornes temporelles (connues) déchange de
messages - Algorithme
- Soient les processus P1 et P2 Ã synchroniser
- P1 envoie un message à P2 avec la valeur TP1
représentant le temps courant de P1 - Soient min et max les bornes démission du
message - A la réception du message, P2 positionne son
horloge à la valeur TP1 (maxmin)/2 - Exercice
- Quel est le décalage minimal et maximal entre les
deux horloges ? - Illustrez ce décalage à laide dun schéma
temporel
11Synchronisation dHorloges en Systèmes Synchrones
(2/2)
- Réponse
- P2 positionne son horloge à TP2 mais le message
est reçu entre TP1min et TP1max - Le décalage est donc au plus (max-min)/2
min
max
TP1
a (max min)/2
a
P1
P2
temps
TP2 TP1 (maxmin)/2
12Synchronisation dHorloges en Systèmes
Asynchrones (1/3)
- Lalgorithme de Cristian repose sur une
estimation de la propagation des messages
(approche externe, adapté LAN) - Algorithme
- Le client envoie une requête à T1
- Le serveur envoie en réponse la valeur de son
horloge Hserveur - A T2, le client positionne son horloge Ã
HserveurE ou E est lestimation donnée par E
(T2-T1)/2 - Les requêtes successives permettent de converger
en moyennant les différents E calculés (les
valeurs aberrantes sont écartées) ou en prenant
la plus petite valeur de E
T1
T2
client
requête
réponse (Hserveur)
serveur
temps
Ttraitement
13Synchronisation dHorloges en Systèmes
Asynchrones (2/3)
- Lalgorithme de Berkeley repose sur la moyenne
des horloges participantes à la synchronisation
(approche interne, adapté LAN) - Algorithme
- Un coordinateur interroge périodiquement les
autres noeuds - Le coordinateur approxime les différents temps
locaux par une évaluation des allers/retours - Le coordinateur calcule un temps moyen pour
chacun des nuds (ignorant les valeurs
aberrantes) - Le coordinateur envoie un message avec une valeur
dajustement à chaque nud
0
5
30000
30001
30002
30000
25
-20
30000
15
-10
30000
25950
30025
25951
30026
25952
30027
réponse
ajustement
requête
14Synchronisation dHorloges en Systèmes
Asynchrones (3/3)
- Le protocole NTP (Network Time Protocol, RFC 958)
repose sur la constitution de multiple serveurs
de temps organisés en strates et répartis Ã
travers le réseau (adapté Internet) - Protocole
- Les serveurs primaires connectés directement
aux récepteurs UTC - Les serveurs secondaires se synchronisent avec
les primaires - Les serveurs tertiaires se synchronisent avec
les secondaires, etc.
1
Multicast un serveur envoie périodiquement aux
autres serveurs. Les sous serveurs se mettent Ã
jour assumant un ? lié à la transmission
ntp.pasteur.fr
2
2
chronos.univ-brest.fr
Requête similaire à Cristian, les clients
émettent une requête vers un serveur
synchronisation
3
3
3
Symétrique similaire à Berkeley, utilisé par
les serveurs principaux pour se synchroniser
entre eux
ntp.iu-vannes.fr
15ALGORITHMIQUE REPARTIE
- Synchronisation Événementielle
16Synchronisation Événementielle
- Lutilisation dhorloges physiques
(synchronisées) pour dater les événements nest
pas toujours adaptée en raison de limprécision - La construction dun temps logique est parfois
plus adaptée au contexte - Utilisation dun système destampilles
temporelles permettant dordonner (partiellement
ou totalement) les événements sans faire
référence au temps réel - Le temps logique par ordre de richesse de la
représentation temps linéaire, temps vectoriel,
temps matriciel - Applications définition de critères de
cohérence, tolérance aux fautes, observation dun
système réparti, simulation répartie  event
driven , etc.
M. Raynal, Systèmes répartis et réseaux,
Eyrolles, 1987
17Exécution Répartie
- La définition d'une exécution répartie dans le
modèle à communication par messages est due Ã
Lamport - Les processus produisent des événements
- L'envoi d'un message m produit un événement
d'émission send(m) - La réception d'un message m produit un événement
de réception receive(m) - Enfin l'exécution d'instructions n'induisant ni
envoi ni réception de message produit un
événement interne - L'histoire locale d'un processus Pi est la
séquence de tous les événements qu'il a produit - C'est l'union de toutes les histoires locales
(ensemble des événements de tous les Pi) munie
d'une relation d'ordre particulière sur les
événements qui constitue une exécution répartie
L. Lamport, Time clocks and the ordering of
events in a distributed system, Communications of
the ACM, 21(7)558-565, 1978
18Ordre Partiel
- Un ordre partiel Ê(E,?E) est constitué dun
ensemble E appelé le domaine de lordre partiel
et dune relation binaire transitive et non
réflexive (?E) sur les éléments de ce domaine - Le fait de noter e1 ?E e2 signifie que e1 précède
e2 dans lordre partiel - Une relation binaire est non réflexive si ?e ? E,
e ?E e est faux - Une relation binaire est transitive si ?e1, e2,
e3 ? E, (e1 ?E e2) ? (e2 ?E e3)?? (e1 ?E e3) - Une exécution répartie ou une histoire est un
ordre partiel notée H(H,?H). H étant lensemble
des événements produits par les processus et (?H)
la relation de précédence causale
même ordre partiel
19La Précédence Causale (1/3)
- La relation d'ordre implicite sur les événements
d'une exécution répartie est la précédence
causale - La précédence causale permet de définir une
relation de type  X est arrivé avant Y sans
avoir recourt à la synchronisation dhorloges - Cest un ordre logique sur les événements
- Formellement, la précédence causale est définie
par 3 règles - Relation program-order deux événements e1 et e2
produits par un même processus sont totalement
ordonnés (e1 ? e2) - Relation receive-from send(m) précède
receive(m) - Relation de transitivité (e1 précède e2) ? (e2
précède e3)?? (e1 précède e3) - Indépendance causale (événements concurrents)
(a b) ssi ?(a ? b) et ?(b ? a)
20La Précédence Causale (2/3)
- Sur lexemple suivant
- La relation program-order dit que e11 précède e12
qui précède e13 etc. (les e1i sont totalement
ordonnés) - La relation receive-from dit que e33 précède e24
- La règle de transitivité dit que e31 précède e26
- Cette relation dordre étant partielle, tous les
événements ne sont pas ordonnés, par exemple e11
précède e12 et e31 précède e12 mais e11 et e31
sont concurrents (e11 e31)
e12
e14
e11
e13
P1
e22
e23
e24
e25
e26
P2
e21
P3
temps
e32
e34
e31
e33
21La Précédence Causale (3/3)
- Définition de lhistoire causale dun événement
- passé (e) e e ? e ? e
- futur (e) e e ? e'
- Le passé causal de e24
- passé (e24) ?? passéi (e24), e24 avec
passéi (e24) e e ? e24 et e ? Pi ,? i ?
1,2,3 - passé(e24) e11, e21, e22, e23, e24, e31, e32 ,
e33
e12
e14
e13
e11
P1
e22
e23
e24
e25
e26
P2
e21
P3
temps
e34
e32
e31
e33
futur (e24)
passé (e24)
22Ordre Total sur Les Événements
- Une extension linéaire S(S,?S) dun ordre
partiel Ê(E,?E) est un tri topologique de cet
ordre partiel tel que - S E
- ? a,b ? E, (a ?E b) ?? (a ?S b), cest-Ã -dire
que lextension linéaire préserve lordre partiel
précédemment établi - (?S) définit un ordre total
- La notion d'extension linéaire permet définir un
ordre total sur les événements - Un ordre total sur les événements permet
- Dassurer que lorsque deux processus P1 et P2
reçoivent deux messages m1 et m2, ceux-ci les
délivreront dans le même ordre - Aux processus davoir en permanence la même vue
de lexécution répartie
23Ordre FIFO et Ordre Causal (1/2)
- Lordre FIFO assure que si un processus émet deux
messages a un même processus alors ces messages
sont reçus dans l'ordre démission, lordre FIFO
définit - Une relation d'ordre sur un canal de
communication - Lordre FIFO est un ordre partiel sur les
événements - Lordre causal est une extension de la précédence
causale dans lequel, aux trois règles de base,
est ajoutée la règle suivante - Soit m1 et m2 deux messages destinés au même
processus - send(m1) ? send(m2) ?? receive(m1) ? receive(m2)
- Cette règle assure qu'il n'existe pas de messages
partis après m1 et qui arrivent avant lui chez le
même destinataire - Lordre causal est un ordre partiel qui
généralise lordre FIFO dans la mesure où il
prend en compte la transitivité
24Ordre FIFO et Ordre Causal (2/2)
- Exercice
- Représentez un exemple simple dexécution
répartie qui respecte lordre FIFO mais pas
lordre causal
De règle générale les contraintes sur un canal
sont asynchrone ? FIFO ? ordre causal (? ? ?)
logique instantanée
25Horloges Linéaires (1/3)
- Les horloges logiques de Lamport définissent un
temps linéaire permettant de dater tous les
événements dune exécution répartie - Repose sur la précédence causale (ordre partiel)
- Compteur nayant pas de relation avec les
horloges physiques - Méthode
- A chaque événement est associé une estampille
temporelle mise en uvre par un compteur entier - Chaque processus Pi a une horloge logique locale
HLi commençant à 0 et dont la valeur courante est
lestampille temporelle du dernier événement - Lhorloge logique HLi est incrémenté à chaque
événement - Chaque message m transporte la dernière
estampille temporelle de lémetteur (m,
HLisend(m)) - A la réception d'un message (m, HLisend(m)) sur
le site j, HLj est positionnée à max (HLj,
HLisend(m)) 1
26Horloges Linéaires (2/3)
- Dans ce modèle, ? i,j
- (a précède b) ? (HLi (a) lt HLj (b)) mais la
réciproque nest pas vraie - (HLi (a) lt HLj (b)) ? ! (b précède a)
- (HLi (a) HLj (b)) ? (a b) avec i ?? j
- Réalisation dun ordre total qui respecte la
causalité - Prise en compte de lID du processus pour gérer
légalité - (Pi, HL(a)) lt (Pj, HL(b)) ssi HL(a) lt HL(b) ou
(HL(a)HL(b) et i lt j) - (a précède b) ?? (HL(a) lt HL(b))
1
2
3
4
0
P1
8
3
4
6
7
P2
2
temps physique
P3
4
5
6
0
27Horloges Linéaires (3/3)
- Le temps logique linéaire peut être utilisé pour
la réalisation dune section critique grâce au
doublet (ID, temps) - Propriété de sûreté 1 seul en section critique
même si les canaux ne sont pas FIFO - Propriété de vivacité absence dinterblocage et
absence de famine
P1
cas normal, pas de problème
requêtes
P2
permission en attente
permissions
SC
a
P3
P1
P2
P1 et P2 sont en concurrence pour lentrée en
section critique en même temps les événements a
et b son indépendants (a b)
b
P3
estampille plus petite, envoie une permission
Ricard Agrawala, 1981
28Horloges Vectorielles (1/2)
- Les horloges vectorielles de Fidge et Mattern
définissent un mécanisme de datation des
événements - Chaque processus gère un vecteur local qui lui
apporte une vision de létat global de
lexécution répartie - Compteur nayant pas de relation avec les
horloges physiques - Méthode
- On associe un vecteur Vi à chaque processus Pi
- Initialement, Vi (0, ... , 0)
- A chaque événement local à Pi Vii Vii 1
- Chaque message m envoyé par Pi porte une
estampille HVsend(m) correspondant à Vi - A la réception par un processus Pj de (m,
HVsend(m)) venant de Pi - Vjj Vjj 1
- Vjk max(Vjk, HVsend(m)k), ? k ? 1, ... ,
n et k ?? j
Fidge Mattern, 1988
29Horloges Vectorielles (2/2)
- La relation dordre est définie par
- Vi ?? Vj ? ?k, Vik ? Vjk
- Vi ?? Vj ? Vi ?? Vj et Vi ? Vj
- Vi ll Vj ? ??(Vi ?? Vj) et ?(Vj ? Vi)
- Horloges vectorielles et dépendance causale ?
a, b a ? b ? V(a) lt V(b) - Exercice complétez le chronogrammes suivant
avec les horloges vectorielles correspondantes
P1
P2
temps physique
P3
30Horloges Matricielles (1/4)
- Les horloges matricielles définissent un
mécanisme de datation des événements permettant Ã
chaque processus davoir une vision globale de
lexécution répartie - Utilisation dune matrice carrée par chaque
processus - Compteur nayant pas de relation avec les
horloges physiques - Méthode
- Mij,k x signifie que Pi sait que Pj sait que
Pk a produit x événements - Règle 1 quand Pi produit un événement Mii,i
- Règle 2 tout message envoyé par Pi transporte
la matrice Mi - Règle 3 lorsque Pj reçoit un message de Pi
- ? k,l Mjk,l max (Mjk,l , Mik,l)
- ? k Mjj,k max (Mjj,k , Mii,k)
31Horloges Matricielles (2/4)
- Les horloges matricielles résistent mal au
facteur déchelle accroissement en n2 - Exercice complétez le chronogramme
P1
P2
temps physique
P3
32Horloges Matricielles (3/4)
- Utilisation des horloges matricielles pour
implémenter lordre causal (i envoi vers j) - Les envois de messages sont datés par une horloge
matricielle Mi - Le nombre de livraison de messages est noté dans
un vecteur delivji - Condition de livraison delivji1 Mii,j et
? k ? i delivjk ? Mik,j
P1
(0,0,0)
P2
(0,0,0)
(1,0,0)
temps physique
P3
(0,0,0)
(1,0,0)
(2,0,0)
(2,1,0)
33Horloges Matricielles (4/4)
- Conditions de livraison non validées dans une
exécution qui ne respecte pas lordre causal - delivji1 Mii,j et ? k ? i delivjk ?
Mik,j ? - deliv321 M22,3 et ? k ? 2 deliv3k ?
M2k,3 ? - (1 1) et (1 ? 2) et (0 ? 0)
P1
temps physique
P2
(0,0,0)
(1,0,0)
(1,0,0)
condition de livraison non respectée
P3
(0,0,0)
(1,0,0)
(1,0,0)
34ALGORITHMIQUE REPARTIE
- Mémoire Virtuelle Partagée
35Mémoire Virtuelle Partagée
- La mémoire virtuelle partagée (MVP) est une
mémoire logicielle - Elle est composée dun ensemble déléments de
stockage locaux aux sites de larchitecture (i.e.
physiquement répartis) - Le partage virtuel peut être réalisé par un
gestionnaire de mémoire dont chaque site est muni
mémoire virtuelle commune
réseau de transport
M1
M2
Mn
P1
P2
Pn
36Critère de Cohérence
- Une mémoire virtuelle partagée nécessite
lintroduction de critères de cohérence pour
assurer la cohérence des données réparties sur k
?? n noeuds - Un critère de cohérence
- Définit la sémantique de la mémoire partagée
- Exprime le degré de synchronisation imposé sur
lévolution des données partagées - Contraint lordonnancement des opérations daccès
(opérations de lecture et décriture) à la
mémoire - Cohérence atomique (CA), séquentielle (CS),
causale (CC), objet (CO), mixte (CM), PRAM,
faible (CF), release (CR), entry (CE), etc. - Les différentes MVP se distinguent par le type et
la granularité de leurs unités de partage (unités
sur lesquelles porte la cohérence) page, objet
Dans le cas des machines multiprocesseurs les
mémoires (et caches) partagées et leurs
mécanismes de cohérence sont mis en uvre
matériellement
D. Mosberger, Memory Consistency Models,
Operating Systems Reviews, 27(1)1826, 1993
37Modèle de Mémoire Partagée (1/4)
- Soit une architecture répartie asynchrone Ã
mémoire virtuelle partagée composée dun ensemble
de processus séquentiels P1Pn - Les processus interagissent via une mémoire
globale partagée composée dun ensemble fini
dobjets partagés - Chaque objet de cette mémoire peut être accédé
par des opérations de lecture et décriture - On note ri(x)v la lecture par le processus Pi sur
lobjet x délivrant la valeur v - On note wj(y)v lécriture de la valeur v faite
par le processus Pj sur lobjet y - Pour l'utilisateur ces opérations sont immédiates
et indivisibles malgré leur répartition sur
différents sites
38Modèle de Mémoire Partagée (2/4)
- Une exécution repartie dans le modèle de
communication par mémoire partagée est définie
par un ordre partiel Ê(E,?E) sur lensemble des
opérations de lecture et décriture et les
opérations internes - E ?i Ei
- Lordre ?E est défini par op1 ?E op2 tq
- ? Pi / op1 ?i op2 la relation ?E est la
relation program-order - wj(x)v ? op1 et rj(x)v ? op2 la relation ?E est
la relation read-from - ? op3 / op1 ?E op3 et op3 ?E op2 la relation ?E
est transitive - Cet ordre partiel permet davoir deux opérations
op1 et op2 indépendantes. Dans ce cas nous
n'avons ni op1 ?E op2 ni op2 ?E op1
39Modèle de Mémoire Partagée (3/4)
- Il est important de noter que lon considère ici
une relation read-from entre les événements et
non plus une relation receive-from - La relation entre w1(x)1 et r2(x)1 ne signifie
pas (receive-from) que P1 envoie un message à P2 - La relation signifie que lorsque P2 lit la valeur
1 dans x il fait référence à lécriture faite par
P1 (w1(x)1) - w1(x)1 ?E r2(x)1
- Il est important de comprendre que ces modèles
remettent en cause la sémantique habituelle
centralisée de la mémoire
W1(y)3
r1(y)2
w1(x)1
W1(x)2
P1
P2
r2(x)1
w2(y)2
r2(y)3
40Modèle de Mémoire Partagée (4/4)
- Au sein dune exécution Ê, une opération est dite
légale si elle ne lit pas de valeur écrasée. La
valeur lue par un processus doit être la dernière
valeur écrite - Formellement une opération légale est définie par
- ? op r(x)v, tq ? op tq
- op ?E op (op précède op)
- op w(x)v (op est lopération qui a écrit v
dans x) - ? op tq op ?E op ?E op (op ? w(x)u) ??
(op ? r(x)u) (il nexiste pas dopération
décriture intermédiaire avec une autre valeur) - La notion de légalité ne porte que sur les
opérations de lecture - Les opérations décriture sont elles toujours
légales quelque soit leur rang dans lordre
partiel - Une histoire Ê est donc légale si toutes ses
opérations de lecture sont légales
41Cohérence Séquentielle (1/3)
- La cohérence séquentielle a été proposée par
Lamport pour définir un critère de cohérence pour
des systèmes multiprocesseurs a mémoire partagée - Définition une histoire Ê(E,?E) est
séquentiellement cohérente si elle admet une
extension linéaire S légale - Lextension linéaire S constitue la vue commune
perçue par tous les processus - Ce critère de cohérence défini cette vue commune
comme un ordre total - Informellement, une exécution répartie est
séquentiellement cohérente si elle peut avoir été
produite (équivalente) sur un système
monoprocesseur
L. Lamport, How to make a multiprocessor computer
that correctly executes multiprocess programs,
IEEE Transactions on Computers, 28(9), 690-691,
1979
La cohérence atomique est similaire à la
cohérence séquentielle, excepté quelle considère
les accès mémoire comme non ponctuels
42Cohérence Séquentielle (2/3)
- En se référant aux règles de lexécution répartie
dans le modèle de communication par mémoire
partagée - Lordre partiel est w1(x)1 ?E w1(x)2, w1(x)1 ?E
r2(x)1, r2(x)1 ?E w2(y)2, w1(x)2 ?E r3(x)2,
w2(y)2 ?E r3(y)2, r3(x)2 ?E r3(y)2 - Une extension linéaire légale de cet ordre
partiel est w1(x)1 ?S r2(x)1 ?S w1(x)2 ?S
r3(x)2 ?S w2(y)2 ?S r3(y)2 - Notons que la séquentialité des événements en
elle-même est secondaire, lessentiel est que
tous les processus se mettent daccord sur un
ordre total des opérations
w1(x)1
w1(x)2
P1
1
3
w2(y)2
2
P2
5
r2(x)1
4
6
P3
r3(x)2
r3(y)2
Exécution non déterministe
43Cohérence Séquentielle (3/3)
- Une façon de mettre en oeuvre la cohérence
séquentielle consiste à utiliser une primitive de
diffusion atomique (Atomic Broadcast) - Avec cette primitive tous les messages envoyés
sont délivrés dans le même ordre à tous les
processus y compris lémetteur - Le problème dune telle mise en oeuvre est
quelle nécessite beaucoup de synchronisation ??
peu performante - Lors dun accès mémoire, le protocole de
cohérence diffuse (ABCAST) aux autres processus
un message les prévenant de laccès
w(x)1
P1
P1
P2
P2
w(x)2
w(x)2
P3
P3
requête
acq
écriture
ABCAST Logique
ABCAST implémentation en 3 étapes
44Cohérence Causale (1/4)
- Le critère de cohérence causale est fondé sur le
concept de causalité - Consiste à assurer pour chaque processus un ordre
causal sur les opérations de lecture et
décriture - La cohérence causale est un critère strictement
plus faible que la cohérence séquentielle - Tous les processus sont daccord sur le même
ordre partiel - Toutefois les vues séquentielles des différents
processus peuvent être différentes - Définition une histoire Ê(E,?E) est
causalement cohérente si pour chaque processus
Pi, Êi est légale - Êi étant lhistoire visible par un processus Pi
- Êi est composée des opérations de lecture de Pi
et de lensemble des opérations décriture
effectuées par tous les processus
M. Ahamad, J.E. Burns, P.W. Hutto and G. Neiger,
Causal Memory, 5th International Workshop
Distributed Algorithms, LNCS 579, 9-30, 1991
45Cohérence Causale (2/4)
- Informellement, deux processus peuvent ne pas
être daccord sur le même ordre des opérations
décriture qui sont indépendantes, les lectures
doivent toutefois êtres légales - P1 w1(x)1 ?E w1(x)2 ?E w1(y)3 ?E w2(y)2 ?E
r1(y)2 - P2 w1(x)1 ?E r2(x)1 ?E w2(y)2 ?E W1(x)2 ?E
W1(y)3 ?E r2(y)3 - P3 w1(x)1 ?E w1(x)2 ?E r3(x)2 ?E w2(y)2 ?E
r3(y)2
W1(y)3
r1(y)2
w1(x)1
W1(x)2
P1
P2
r2(x)1
w2(y)2
r2(y)3
P3
r3(x)2
r3(y)2
46Cohérence Causale (3/4)
- Une façon de mettre en oeuvre la cohérence
causale consiste à utiliser une primitive de
diffusion causale (causal broadcast) - Avec cette primitive tous les messages envoyés
sont délivrés dans lordre causal - Cette primitive peut être réalisée avec des
horloges vectorielles
(2,1,0)
(1,0,0)
(1,1,0)
w1(x)1
w1(x)4
P1
(2,1,0)
(0,1,0)
(1,1,0)
P2
w2(x)2
(2,1,0)
(1,1,0)
P3
(0,1,0)
Utilisation du Causal Broadcast pour implémenter
une mémoire causale
47Cohérence Causale (4/4)
- Exercice réalisez un chronogramme présentant
les valeurs de x pouvant être lues par les 3
processus
(2,1,0)
(1,0,0)
(1,1,0)
w1(x)1
w1(x)4
P1
(2,1,0)
(0,1,0)
(1,1,0)
P2
w2(x)2
(2,1,0)
(1,1,0)
P3
(0,1,0)
48Cohérence PRAM (1/2)
- La cohérence pipelined RAM (PRAM) est un critère
qui correspond dans le modèle envoi de messages Ã
un ordre FIFO - Ce critère est strictement plus faible que la
cohérence causale - La cohérence PRAM correspond à la cohérence
causale mais sans considérer la relation de
transitivité entre les processus - Définition une histoire Ê(E,?E) vérifie la
cohérence pipelined RAM si pour chaque processus
Pi, Êi est légale - Êi est la sous histoire dans laquelle toutes les
lectures non effectuées par Pi ont été enlevées - La cohérence PRAM nécessite moins de
synchronisation que la cohérence causale, son
inconvénient est quelle offre à lutilisateur un
modèle de programmation plus difficile
R.J. Lipton et J.S. Sandberg, PRAM a scalable
shared memory, rapport technique n180-88,
Princeton University, Departement of Computer
Science, 1988
49Cohérence PRAM (2/2)
- La cohérence PRAM peut être simplement mise en
oeuvre par une horloge linéaire (temps, ID) - Pour rappel, lordre FIFO assure que si un
processus émet deux messages a un même processus
alors ces messages sont reçus dans l'ordre
démission - Dans lexemple suivant, la livraison de w1(x)4
doit attendre la livraison de w1(x)1
w1(x)4
w1(x)1
P1
(2,1)
(1,1)
P2
w2(x)2
P3
50Cohérence Objet
- La cohérence objet consiste a assurer une
cohérence séquentielle séparément pour chaque
objet - Toutes les opérations décriture sur un même
objet sont totalement ordonnées - Les opérations de lecture sont légales
- Les événements dune histoire Ê sont
partiellement ordonnés - Définition une histoire Ê(E,?E) vérifie la
cohérence objet si pour tout objet x elle admet
une extension linéaire Sx de Hx légale - Ce critère est un affaiblissement de la cohérence
séquentielle nécessitant moins de synchronisation
puisque contrairement à la cohérence séquentielle
deux opérations sur deux objets distincts peuvent
avoir un ordre différent selon les différents
processus
C.K. Kazimierczak, B. Andersen, Object
consistency A new model for distributed memory
systems, In Proc. of the 4th International
Workshop on Object Orientation in Operating
Systems, 33-36, 1995
51Relations Entre Critères (1/3)
- Les critères de cohérence plus faibles réduisent
les pénalités daccès à la mémoire (moins de
synchronisations) - Importance de connaître quel critère est le plus
adapté pour chaque classe de problèmes a résoudre - En règle générale on préfère une cohérence faible
du point de vue des performances et une cohérence
forte de point de vue de la facilité
dutilisation - De nombreuses primitives de communication sont
disponibles pour implémenter les différents
critères - Total Order Multicast, Atomic Broadcast, Causal
Broascast, Causal Reliable Multicast, Reliable
Ordered Multicast (FIFO, causal, total) - Le coût dune MVP repose grandement sur le choix
du mécanisme de communication (broadcast,
multicast, fiable ou non, 1, 2 ou 3 phases, etc.)
D. Mosberger, Memory Consistency Models,
Operating Systems Review, 27(1),18-26, 1993
52Relations Entre Critères (2/3)
cohérence séquentielle CS
relations sous forme hiérarchique
cohérence entry CE
CA
cohérence processeur CP
cohérence release CR
CS
cohérence faible CF
CP
CC
CO
PRAM
CF
CR
cohérence causale CC
cohérence objet CO
cohérence Pipelined RAM PRAM
CE
cohérence atomique CA
relations sous forme dinclusion densemble
Une exécution qui vérifie la cohérence
séquentielle vérifie la cohérence causale
53Relations Entre Critères (3/3)
- Exercice illustrez la relation entre CC et CO
en montrant la non inclusion de lun dans lautre
54ALGORITHMIQUE REPARTIE
55Défaillance des Canaux de Communication
- Un canal de communication est fiable si les
messages ne sont - Ni perdus, tout message émis est reçu
- Ni altérés
- Ni dupliqués
- Ni générés par le canal, chaque message a
effectivement été émis - Un problème majeur dans un système asynchrone est
quon se sait jamais si un message est très lent
ou perdu on ne peut pas borner les temps de
messages - Fiabiliser le canal de communication
- Dans les cas de perte et de duplication,
lestampillage des messages permet au récepteur
de savoir si un message reçu a été dupliqué ou si
un ou plusieurs messages précédents ont été
perdus - Le problème de laltération peut se résoudre Ã
laide de codes correcteurs chez le récepteur
56Défaillance de Processus (1/2)
- Plaçons nous dans le cadre où les canaux de
communication sont fiables - Un processus byzantin est un processus qui exhibe
un comportement conflictuel par rapport à son
comportement habituel (relatif à sa
spécification) - Signifie quà nimporte quel moment un processus
de lexécution répartie peut faire tout et
nimporte quoi (e.g. envoi de message) - Les fautes dues à des comportements arbitraires
de la part de certains composants sont très
difficiles a traiter - Dans les modèles de gestion de la défaillance,
les processus sont souvent considérés comme
fail-stop (à arrêt sur faute) bien que cette
notion de  tout ou rien soit difficile a
implémenter (nécessite une redondance élevée)
L. Lamport, R. Shostak, M. Pease, The Byzantine
generals problem, ACM Transactions on Programming
Languages and Systems, 4(3)382-401, 1982
57Défaillance de Processus (2/2)
processus correct up indéfiniment
processus incorrect up puis down indéfiniment
état
état
up
up
down
down
temps
temps
modèle crash / no recovery
faute (cause dune erreur)
état
erreur (état provoqué par la faute)
up
down
temps
défaillance (ne respecte plus ses spécifications)
modèle crash / recovery
58Détecter les Défaillances (1/5)
- Le problème du consensus est un problème
fondamental de lalgorithmique répartie - Il consiste à mettre daccord tous les processus
sur une valeur (oui ou non par exemple), un état
commun - Il abstrait une famille de problèmes connus sous
le nom de problèmes daccord - Base pour la construction doutils pour de
nombreux problèmes importants diffusion
atomique, protocoles de groupe - Réaliser le consensus
- Le consensus est facile à mettre en oeuvre dans
un système synchrone - Toutefois Fischer, Lynch et Paterson (FLP) ont
montré quil est sans solution déterministe dans
les systèmes asynchrones où les canaux de
communication sont non fiables et asynchrones et
où des défaillances de noeuds sont possibles
M.J. Fischer, N.A. Lynch, M.S. Paterson,
Impossibilty of distributed consensus with one
faulty, Journal of the ACM, 32(2)374-382, 1985
59Détecter les Défaillances (2/5)
- Dans les systèmes repartis lorsquun site est
défaillant il faut reconfigurer tous les
processus vivants dans un état stable - La reconfiguration nest possible que si la
défaillance en question a pu être détectée - Détecter cette défaillance revient à obtenir un
consensus par les tous processus up de létat
down dun ou plusieurs processus
2?
1
Pi
3
Pi
Pj
Pj
2
Pi
Synchrone 1, 2
Pj
Asynchrone 1, 2, 3
down
60Détecter les Défaillances (3/5)
- Comment vivre avec FLP et réaliser un accord
(détecter une défaillance dans notre cas) dans un
système réparti asynchrone sujet aux défaillances
deux possibilités - Lever une des restrictions
- Système partiellement synchrone (Dwork, Lynch,
Stockmeyer) - Algorithmes non déterministe (Rabin)
- Accepter une solution imparfaite (et faire du
best effort) - Algorithme de Paxos (Lamport)
- Intérêt hypothèses très faibles transposable
au cas de pannes byzantines - Détecteurs de pannes imparfaits (Chandra Toueg)
- Intérêt identification précise de lorigine de
limpossibilité et des limites des algorithmes
réalisables
61Détecter les Défaillances (4/5)
- Lalgorithme de Paxos est un algorithme pour le
consensus asynchrone - Principe informel
- Lalgorithme utilise un processus coordinateur
(ou primaire) qui gère un ensemble de processus
(dits agents) et tente dobtenir une valeur de
décision par vote majoritaire - Pour résister à la défaillance du primaire,
plusieurs processus peuvent jouer le rôle du
primaire, successivement ou simultanément - Lalgorithme se termine sil existe un primaire
unique pendant une période suffisamment longue
pour que le primaire ait deux tours déchanges
avec une majorité dagents - On essaie dassurer cette condition à laide de
délais de garde - Cette méthode peut échouer (la communication
étant asynchrone), et dans ce cas lalgorithme ne
se termine pas (FLP est toujours valable)
L. Lamport, The part-time parliament, Tech.
Report 49, Systems Research Center, Digital
Equipment Corp., Palo Alto, 1989
62Détecter les Défaillances (5/5)
- Les détecteurs de pannes imparfaits reposent sur
deux propriétés, la complétude et la précision
pour quantifier lécart entre ces détecteurs et
le détecteur parfait - Complétude un processus incorrect est détecté
- Forte P crashé sera détecté par tous les
processus correct - Faible P crashé sera détecté par au moins un
correct - Précision un processus correct nest pas
suspecté - Forte aucun processus nest suspecté avant
davoir crashé - Faible ? P correct qui nest jamais suspecté
- Inéluctablement forte ? t après lequel on a la
précision forte - Inéluctablement faible ? t après lequel on a la
précision faible
précision
complétude
P est réalisable en synchrone, ?W nest pas
réalisable en asynchrone
T. D. Chandra, S. Toueg, Unreliable failure
detectors for reliable distributed systems,
Journal of the ACM, 43(2), 1991
63Corriger les Défaillances (1/7)
- La première technique de tolérance aux fautes
consiste à traiter les fautes - Prévoir des composants multiples, pour réduire la
probabilité quune faute conduise à une
défaillance - Réaliser des traitements multiples (e.g. réaliser
la même opération par des algorithmes différents) - La deuxième technique consiste à traiter les
erreurs - Détecter lexistence dun état incorrect (erreur)
et prévenir (si possible) loccurrence dune
défaillance - Remplacer létat incorrect par un état correct
(conforme aux spécifications) - Dans tous les cas, le principe est la redondance
dinformation (détection derreur), temporelle
(traitements multiples) ou matérielle (composants
dupliqués)
S. Krakowiak, cours dalgorithmique répartie,
Université Joseph Fourier, 2004
64Corriger les Défaillances (2/7)
- Traitement des erreurs la compensation (error
masking) repose sur une redondance suffisante
pour - Masquer et rendre invisibles aux processus les
conséquences dune erreur - Détecter et corriger lerreur (les tests externes
de vraisemblance sont inutiles) - Les fautes doivent être indépendantes sur les
composants dupliqués - Exemple de réalisation dune mémoire virtuelle
partagée avec le mécanisme de compensation - Dans un système réparti de N sites où f
défaillance(s) peuvent intervenir - Chaque objet X de la mémoire possède K
gestionnaire(s) avec (f ? K ? N) K sites
hébergent et gèrent une copie de X - Le total order multicast, nécessite une majorité
de gestionnaire non défaillants pour fonctionner
K gt 2f
65Corriger les Défaillances (3/7)
- Traitement des erreurs le recouvrement (error
recovery) - Remplacer létat derreur par un état correct
- Nécessite une détection de lerreur au moyen dun
test de vraisemblance - Explicite (exprimer et vérifier des propriétés
spécifiques de létat) - Implicite (via des conséquences visibles
violation dun délai de garde, violation de
protection de mémoire, etc.) - Deux techniques de recouvrement
- Reprise (backward recovery)
- Retour en arrière vers un état antérieur dont on
sait quil est correct - Nécessite la sauvegarde de létat
- Poursuite (forward recovery)
- Tentative de reconstitution dun état correct,
sans retour arrière - Technique spécifique, la reconstitution dépend de
lapplication, et nécessite une analyse préalable
des types derreurs possibles
66Corriger les Défaillances (4/7)
- Un exemple de recouvrement pour gérer la perte
dun paquet - La reprise
- Lémetteur conserve une copie des paquets quil a
envoyés, jusquà réception de lacquittement - En cas de détection de perte (paquet suivant
reçu), le récepteur demande à lémetteur de
renvoyer le paquet manquant ou lémetteur renvoi
de lui même (délai de garde dépassé) - La poursuite
- Lémetteur peut reconstituer (totalement ou
partiellement) le contenu dun paquet manquant en
utilisant les informations locales - Le récepteur peut alors poursuivre sans
interroger lémetteur - Comparaison
- Reprise technique générique, peut être coûteuse
en temps et place mais cest la plus utilisée - Poursuite technique spécifique, peut être
efficace, mais dapplication limitée
67Corriger les Défaillances (5/7)
- Le mécanisme de reprise repose sur la réalisation
dun point de reprise - Consiste a sauvegarder létat local dun
processus - Si un seul processus doit être redémarré, le fait
davoir un simple point de reprise pour ce
processus sans synchronisation avec les autres
peut être suffisant - Lorsque que plusieurs (tous) les processus
participent à la reprise et doivent être
relancés, il faut que la reprise soit coordonnée - Un état global est constitué par lensemble des
états locaux de chaque processus - Une ligne de recouvrement est un ensemble des
points de reprise un par processus - La ligne de recouvrement est cohérente si létat
global formé par tous les points de reprise est
cohérent
68Corriger les Défaillances (6/7)
- Le problème de ligne de recouvrement incohérente
- Chandy et Lamport ont montré quune ligne de
recouvrement est cohérente si elle respecte pour
chacun des messages m une des règles suivantes - m nest ni orphelin ni perdu lors de la reprise
de lexécution - m est orphelin mais lapplication autorise m a
être orphelin - m est perdu mais lapplication autorise m a être
perdu
Un message est orphelin si sa réception est
enregistrée dans une ligne de recouvrement mais
pas son émission
Un message est dit perdu si son émission est
enregistrée dans une ligne de recouvrement mais
pas sa réception
receive(m)
receive(m)
Pi
Pi
Pj
Pj
crash
crash
send(m)
send(m)
K.M. Chandy, L. Lamport, Distributed snapshots
Determining global states of distributed systems,
TOCS, 3(1)63-75, 1985
69Corriger les Défaillances (7/7)
- Les deux principales stratégies de définition de
points de reprise sont coordonnées et non
coordonnées - La méthode coordonnée consiste a faire coopérer
tous les processus afin de définir des points de
reprise formant une ligne de recouvrement
cohérente coûteux - La méthode non coordonnée consiste à effectuer
des points de reprise de façon totalement
indépendante, cest-à -dire sans se préoccuper de
lexistence dune ligne de recouvrement cohérente - Les processus doivent coopérer à la reprise pour
trouver un point de reprise commun - Peu coûteux, mais risque deffet domino
- Le choix dépend principalement du type des
processus déterministe, non déterministe par
morceaux, déterministe par morceaux (les seules
actions non déterministes sont les réceptions de
messages)