Syst Distribués
Syst Distribués
Syst Distribués
Systèmes Distribués
P. De Loor, deloor@enib.fr
Ecole Nationale d’Ingénieurs de Brest
1. GENERALITES
P. De Loor, deloor@enib.fr
Techniques et Algorithmes des systèmes répartis : Généralités
réseau
page 1
Techniques et Algorithmes des systèmes répartis : Généralités
Délais arbitraires
pas d ’horloge globale
page 2
Techniques et Algorithmes des systèmes répartis : Généralités
message de contrôle
page 3
Techniques et Algorithmes des systèmes répartis : Généralités
Compte A : 4500
page 4
Techniques et Algorithmes des systèmes répartis : Généralités
ν Cas centralisé :
page 5
Techniques et Algorithmes des systèmes répartis : Généralités
ν Cas distribué :
page 6
Techniques et Algorithmes des systèmes répartis : Généralités
Observateur 1
temps
rouge vert
Observateur 22
∆t B
A
(m2,A)
(m3,B)
(m1,A) C
page 8
Techniques et Algorithmes des systèmes répartis : Généralités
Résumé :
♦ Distribution :
Compétition Coordination
Synchronisation + Communication
page 9
Techniques et Algorithmes des systèmes répartis : Généralités
Ce qui est distribué et les problèmes associés :
page 10
Techniques et Algorithmes des systèmes répartis : Généralités
♦ L’algorithmique distribuée :
Processus 2
Processus 1
Processus 3
page 11
Techniques et Algorithmes des systèmes répartis : Généralités
page 12
Techniques et Algorithmes des systèmes répartis : Généralités
♦ Voies de communication :
page 13
Techniques et Algorithmes des systèmes répartis : Généralités
♦ Processus :
page 14
Techniques et Algorithmes des systèmes répartis : Généralités
♦ Processus : degrès de répartition, niveau de symétrie :
Serveur Client
: :
gère X demander(X)
attendre demande(X) attendre (X)
envoyer(X) à client :
• symétrie de texte : Même texte, mais référençant les processus explicitement Æ chaque
processus peut avoir un comportement dépendant des messages reçus et de son identité
P1 P2
Réception de « message » Réception de « message »
Si a>3 envoyer message à P2 Si a>3 envoyer message à P1
Calculer a Calculer a
page 15
Techniques et Algorithmes des systèmes répartis : Généralités
• symétrie forte : Même texte mais ne référençant plus explicitement les processus Æ pour
une même succession de messages, ils ont tous le même comportement.
P1 P2
Réception de X Réception de X
Y := f(X) Y := f(X)
Emettre Y Emettre Y
• symétrie total : Même texte indépendant des messages Æ ils ont tous le même
comportement.
Fourmis1 Fourmis2
Si obstacle : contourner Si obstacle : contourner
Si nourriture : manger Si nourriture : manger
Si prédateur : mourir Si prédateur : mourir
Avancer Avancer
envoyer (position) envoyer (position)
page 16
Techniques et Algorithmes des systèmes répartis : Généralités
• Trafic engendré.
• Absence de blocage.
• Détection de terminaison.
page 17
Techniques et Algorithmes des systèmes répartis : Généralités
1) Le calcul diffusant (diffusing computation) : très utilisé pour faire des maths.
(2) go ! Processus
feuille
(3) ok !
Processus
(1) go ! noeud (2’) go !
Processus
Processus (4) ok ! (3’) ok ! feuille
racine
(n) ok !
(1’) go !
page 18
Techniques et Algorithmes des systèmes répartis : Généralités
A (m2,A,1) B
t=1 t=1->2
A la réception, B met son
horloge à 1 A l émission, B incrémente
son horloge
Estampille = date à laquelle
le message a été envoyé (m3,B,2)
(m1,A,1)
C
C consomme les messages 2 estampilles identiques ?
t=1->3 hiérarchie entre processus
dans l ’ordre de leurs
estampilles ex : (B,2>A,2).
page 19
Techniques et Algorithmes des systèmes répartis : Généralités
Développer des algorithmes distribués
page 20
Techniques et Algorithmes des systèmes répartis : Généralités
page 21
Techniques et Algorithmes des systèmes répartis : Généralités
Exécution atomique
page 22
Techniques et Algorithmes des systèmes répartis : Généralités
Suite du cours :
Ce qu'on y trouve
- aspect "théorique"
- Compétition
- Synchronisation
- Etat global
- variables et ensembles
- codage "générique"
- pseudo code : instructions envoyer, recevoir, attendre,
tant que , pour, si
-
Ce qu'on n'y trouve pas
- codage "spécifique"
- C : socket thread (signal)
- Adda
- OCCAM : par, seq, ?, !
- Noyaux : OS9,VXWorks
page 23
Techniques et Algorithmes des systèmes répartis : Généralités
Bilan de l’introduction :
page 24
Techniques et Algorithmes des systèmes répartis : Exclusion mutuelle
page 25
Techniques et Algorithmes des systèmes répartis : Exclusion mutuelle
Positionnement du problème
♦ l’objectif :
♦ Problèmes spécifiques :
• Equité (vivacité) : Tout processus ayant besoin de la ressource y aura accès au bout
d’un temps fini Æ absence de blocage.
page 26
Techniques et Algorithmes des systèmes répartis : Exclusion mutuelle
Processus 1 Processus 2
demande_1 demande_2
T1 Demande de Demande de
ressource T2
critique_1 critique_2 ressource
page 27
Techniques et Algorithmes des systèmes répartis : Exclusion mutuelle
Entre_1 Entre_2
demande_1 demande_2
T1 Demande de
Demande de T2
ressource
critique_1 ressource
/V critique_2
Sort_1
Sort_2
page 28
Techniques et Algorithmes des systèmes répartis : Exclusion mutuelle
♦ Implantation Centralisée solution matériel : Verrou et fonction test&set :
Processus i : test&set(V)
Init : V = 0 temp = V
V=1
//Demande_i return(temp)
Attendre jusqu’à ce que reset(V)
test&set(V) = 0 V=0
//Entre_i
<Critique_i>
….
//Sort_i
reset(V)
page 29
Techniques et Algorithmes des systèmes répartis : Exclusion mutuelle
V modification ∆T
test&set(V)
P1
Section critique
V
consultation modification
P2 ∆T
Section critique
Æ ressource accordée
page 30
Techniques et Algorithmes des systèmes répartis : Exclusion mutuelle
♦ Solution basée sur les messages « alternating mutex algorithm »
Message21
demande_1 demande_2
T1 Demande de
Demande de T2
ressource
critique_1 ressource
critique_2
dehors_1 Message12
dehors_2
page 31
Techniques et Algorithmes des systèmes répartis : Exclusion mutuelle
ReqExt1 ReqExt2
autorise1 autorise2
Silence Silence
equit1 equit2
Attente Attente
page 32
Techniques et Algorithmes des systèmes répartis : Exclusion mutuelle
♦ Version pseudo code : autorise_i et req_j sont des flags
//Acquisition de la section critique
si (autorise_i==1)
entrer en section critique
ou (non déterministe)
si (req_j = 1)
autorise_i = 0
envoyer accord(i) //mode
silence
req_j = 0
aller en 2 // réception de Requête(j)
fsi req_j = 1
si (autorise_i==1)
sinon :
2) envoyer requête(i) autorise_i=0
attendre accord(j) envoyer accord(i)
Entrer en section critique req_j = 0
…… fsi
Fin de section critique
autorise_i =1
fsi
page 33
Techniques et Algorithmes des systèmes répartis : Exclusion mutuelle
♦ n processus : RdP Colorés
• Couleurs :
<c1>
Repos :
:
<C> demande
C = {<ci>, 1≤i≤n} <cn>
O = {<oi>, 1≤i≤n}
autorisé
Requete
<C> <c1>
silence
f1
• Fonctions de changement f3
<c2>
:
<oi, ci> :
de couleur : <cn>
<C>
f2
f1(<ci>) = <oi> attente1
f2(<oi,cj> )= <cj>
f3(<oi,cj> )= <ci>
critique Accord
page 34
Techniques et Algorithmes des systèmes répartis : Exclusion mutuelle
♦ Problème d’équitabilité
Permissions individuelles
Permission d’arbitre
+ : rapidité
- : compléxité
page 35
Techniques et Algorithmes des systèmes répartis : Exclusion mutuelle
• Permissions individuelles :
P1 demande P5
R1={2} R5={1,2,4}
autorisation ou interdiction
P3 P2 P4
R3={1,5} R2={3,1} R4={1,2,3}
page 36
Techniques et Algorithmes des systèmes répartis : Exclusion mutuelle
• Permissions d’arbitres
P1 P2
R1={3,4} demande R2={1,4,2}
autorisation
P3 P4
R3={2,4} R4={3,1}
P5
R4={2,3}
page 37
Techniques et Algorithmes des systèmes répartis : Exclusion mutuelle
♦ L’algorithme de Ricart et Agrawala : (permission individuelle)
• Avantage :
• Equité (l’attribution de la ressource commune s’effectue dans l’ordre des demandes)
page 38
Techniques et Algorithmes des systèmes répartis : Exclusion mutuelle
♦ Quatre fonctions atomiques : (sauf la procédure attendre)
page 39
Techniques et Algorithmes des systèmes répartis : Exclusion mutuelle
k=hj ⇒ k>h
j
10 dehors 10 11
hj≥h lastj>hj
page 40
Techniques et Algorithmes des systèmes répartis : Exclusion mutuelle
• Cas 2) envoi « simultané » de 2 requêtes
test2 :
étati=demande
(h,i)<(k,j)
i hi=h
lasti=h
requête(h,i)
requête(k,j)
lastj=k
j
hj=k test1 :
étatj=demande (k,j)<(h,i)
page 41
Techniques et Algorithmes des systèmes répartis : Exclusion mutuelle
♦ Vivacité de l’algorithme de Ricart et Agrawala
⇒ Vivacité assurée
♦ Trafic :
• Nb messages :
Une utilisation de la section critique requiert 2(n-1) messages
• Temps :
Si la section critique n’est pas utilisée, il faudra attendre 2T pour qu’un processus
puisse l’acquérir. T = temps de transfert d’un message.
Si elle est utilisée, il faudra attendre T, une fois sa libération effectuée (temps de
transfert du message d’autorisation)
page 42
Techniques et Algorithmes des systèmes répartis : Exclusion mutuelle
♦ Robustesse vis-à-vis du déséquencement :
hi=α critique
i
permission(j)
requête(α+1,i) requête(α+1,i)
permission(j)
requête(β+1,j)
j
hj=β Jusqu’à ce que hi>lastj
hj=β+1
lastj=β+1
page 43
Techniques et Algorithmes des systèmes répartis : Exclusion mutuelle
♦ Structure des liaisons
♦ Possibilité d’optimisation
• Si l’on connaît δ, temps de transfert maximum entre deux sites.
Æ interessant si δ petit
page 44
Techniques et Algorithmes des systèmes répartis : Exclusion mutuelle
hi 1 2 3 4 5 6 7 8 1 2
hj 1 1 1 1 1 1 1 2 2 2
comparaison = > > > > > > > < =
page 45
Techniques et Algorithmes des systèmes répartis : Exclusion mutuelle
hi 0 1 2 3 3 3 4 4 5
hj 0 0 1 2 3 4 5 6 7
comparaison = > > > = < < < <
hi 0 1 2 3 3 3 0 0 1
hj 0 0 1 2 3 0 1 2 3
comparaison = > > > = < < < <
page 46
Techniques et Algorithmes des systèmes répartis : Exclusion mutuelle
♦ Borne des Horloges de l’algorithme de Ricart et Agrawala
• Constat : Il ne peut y avoir deux requêtes successives par un processus sans qu’il n’ait
reçu une permission.
hi
0 1
req(i,1)
Permission(j)
hj
0 1 2
req(j,2)
Cas extrème : tous les processus en attente
d’autorisation : horloges bloquées !
hk req(k,3)
0 2
Pour n processus :
• Il y a au maximum un écart de (n-1) entre la requête et l’autorisation
• Il y a au maximum un écart de (n-1) entre deux requêtes
⇒ La différence entre 2 horloges logiques est de ±(n-1) ⇒ modulo = 2(n-1)
page 47
Techniques et Algorithmes des systèmes répartis : Exclusion mutuelle
♦ Algorithmes similaires :
Carvalho et Roucairol :
Si un site veut la section critique plusieurs fois de suite, alors qu’aucun site ne l’a
demandé, il n’est pas obligé de faire plusieurs requêtes.
Adaptatif : les sites peuvent se déclarer consommateurs ou non consommateurs
potentiels de la ressource durant l’évolution de l’algorithme (l’ensemble Ri évolue dans
le temps).
Les horloges ne peuvent plus être bornées.
page 48
Techniques et Algorithmes des systèmes répartis : Exclusion mutuelle
Algorithmes fondés sur l’unicité d’un jeton
♦ Algorithme de Le Lann (mouvement perpetuel)
• Le jeton tourne indéfiniment de processus en processus.
• Un processus demandeur porteur du jeton utilise la ressource commune avant de
rendre celui-ci.
• Simple.
• Trafic inutile
• Si la section critique n’est pas utilisée il faudra attendre jusqu’à (n-1)T pour qu’un
processus puisse l’acquérir Æ LENT ! !
page 49
Techniques et Algorithmes des systèmes répartis : Exclusion mutuelle
♦ Algorithme à diffusion (le jeton est distribué au demandeur)
Processus j
tab
requête(i)
Processus i i 1
tab
j 0 k 1
Processus k jeton
k 1 tab i j k
requête(i)
i 1->2 1 2 1
j 2
• Un processus demandeur lance une requête.
• Le jeton possède l’info « combien de fois ai-je été consommé par Pn ».
• Chaque processus compte le nombre de requêtes reçues des autres processus.
• un processus p est demandeur si
page 50
Techniques et Algorithmes des systèmes répartis : Exclusion mutuelle
♦ Algorithme à diffusion (suite).
• Pas de blocage
• Delai durant lequel la section critique est inutilisée alors qu’elle est demandée :
0 à 2T
page 51
Techniques et Algorithmes des systèmes répartis : Exclusion mutuelle
♦ Répartition d’un sémaphore :
page 52
Techniques et Algorithmes des systèmes répartis : Exclusion mutuelle
incr
distribué
attendre (S>0) P(S) : acquérir jeton V(S) : envoyer incr
≈ attendre (nbPs<S0 + nbVi) ;
#P(S) < S0 + #V(S) nbPs=nbPs+1
libérer jeton Réception incr :
nbPS nbVSi nbVi = nbVi+1
page 53
Techniques et Algorithmes des systèmes répartis : Exclusion mutuelle
Donc :
(nbPs<(S0 + nbVi)) ⇒ (#P(S) < (S0 + #V(S)).
page 54
Techniques et Algorithmes des systèmes répartis : Exclusion mutuelle
Problèmes plus complexes :
♦ Lecteurs-écrivains réparti
page 55
Techniques et Algorithmes des systèmes répartis : Exclusion mutuelle
• Solutions :
- demande incrémentale
- demande simultanée
page 56
Techniques et Algorithmes des systèmes répartis : Exclusion mutuelle
♦ Demande incrémentale :
Un site ne peut demander une ressource Ri que s’il a déjà obtenu toutes les
ressources (dont il a besoin durant la session), qui sont inférieures à Ri.
Chaque ressource gère une file d’attente fifo des sites qui la réclament.
page 57
Techniques et Algorithmes des systèmes répartis : Exclusion mutuelle
♦ Demande simultanée : principe
Estampillage des messages de requête avec horloge logique (exclusion mutuelle de
Ricart et Agrawala)
• Cas pour une ressource en M exemplaires, utilisée ki fois par chaque processus i.
page 59
Informatique Répartie : Synchronisation répartie
Invoquer r temps
Processus i
Invoquer r Rendez
Processus j -
Vous.
Invoquer r
Processus k
page 60
Informatique Répartie : Synchronisation répartie
♦ Choix non déterministe entre plusieurs rendez-vous
Invoquer r1 ou r2
Processus i
Invoquer r1 ou r4 Rendez
Processus j -
Vous temps
Invoquer r3 ou r1
Processus k r1
♦ Problèmes spécifiques :
• Coordination synchrone : si un processus s’engage dans un rendez-vous, tous les
processus concernés doivent s’y engager.
• Exclusion : un processus ne peut être que dans un rendez-vous à la fois.
page 61
Informatique Répartie : Synchronisation répartie
Sj = 1 V(Sj) Si = 0 V(Sk) Sk = 1
page 62
Informatique Répartie : Synchronisation répartie
page 63
Informatique Répartie : Synchronisation répartie
♦ Principe de la solution distribuée pour n rendez-vous demandés
simultanément
Processus controleur x
Processus controleur z rdv ctl x{…….} Sens des modifications
page 64
Informatique Répartie : Synchronisation répartie
m
• Cas général, Synchronisation : ∑ α i .xi < k (αi = constantes)
i =1
• Pour maintenir un invariant, les processus doivent évaluer une condition avant de
modifier une des variables de l’invariant. (avant de produire, il faut vérifier qu’il y a
de la place dans le buffer)
• Problème spécifiques :
• Sûreté : si la condition est fausse, aucun processus ne peut l’évaluer à
vraie
• Vivacité : Si une condition est vraie, tous les sites doivent la voir vraie au
bout d’un temps fini.
page 65
Informatique Répartie : Synchronisation répartie
xi xj xk
page 66
Informatique Répartie : Synchronisation répartie
♦ Minorants et mise à jour retardée : condition de type « mk(xi) ≥ valeur »
Condition Concrète (xi≥ valeur ) ⇒ Condition Abstraite (mk(xi) ≥ valeur)
• Vue Concrète :
Processus j
Processus i Processus k
xj
Condition :
mk(xj)
mi(xj) xk-mk(xi)-mk(xj)<k
mn(xm)≤ xm Æ MajR
• Sûreté :
xk-mk(xi)-mk(xj) <k ⇒xk-xi-xj<k
page 67
Informatique Répartie : Synchronisation répartie
xi+xj-xg<k xi+Mi(xj)-mi(xg)<k
xi xi
xi+Mi(xj)-mi(xg) < k
xj ≤Mi(xj), MajA
⇒ xi+xj-xg<k
xg≥mi(xg) MajR
page 68
Informatique Répartie : Synchronisation répartie
j inc(j,n) i
……..
…….. reception(inc(j,n))
ok
envoyer(inc(j,n)) Mi(xj)= Mi(xj)+n
attente(ok) envoyer(ok)
xj = xj+n
page 69
Informatique Répartie : Synchronisation répartie
page 70
Informatique Répartie : Synchronisation répartie
♦ Technique d’éclatement
• Chaque site i transmet sa valeur ei et si
• (MajR pour si et MajA pour ei)
• Vue Concrète :
Entrée/sortie2
e= ∑ ei
i
s= ∑ si
i
e3, s3
Entrée/sortie1 e1, s1 e2,s2 Entrée/sortie3
e= ∑ ei e= ∑ ei
i
e2, s2 e2, s2
e3, s3 i
s= ∑ si s= ∑ si
i
e1, s1 i
e1,s1
e3,s3
• Problème : beaucoup de messages
page 71
Informatique Répartie : Synchronisation répartie
p=∑pi
Entrée/sortie1 Entrée/sortie2
Trop de place
Crédit(n)
p1=p1+n p2=p2-n
e1,s1,p1 e2,s2,p2
page 72
Informatique Répartie : Synchronisation répartie
♦ Exemple : exy sont des « événements » devant être partagés par deux processus Pi et Pj.
ei1 ei2
Pi t
ej1 ej2
Pj t
• En non réparti, les deux processus verraient ei1, ej1, ej2, ei2.
page 73
Informatique Répartie : Synchronisation répartie
♦ Horloge virtuelle
• principe : l’émetteur d’un message précise la date virtuelle à laquelle celui-ci doit
arriver (m,t).
• Problème à résoudre :
La vivacité
• Si du point de vu d’un processus, le temps virtuel peut progresser, il
progressera.
page 74
Informatique Répartie : Synchronisation répartie
♦ Solution centralisée
hv = i hv Tampon
d’attente
(mi,h)
hv (mj,k)
page 75
Informatique Répartie : Synchronisation répartie
♦ Solution décentralisée :
• Chaque processus possède une image de l’horloge virtuelle
• Quand un message est consommé, le processus récepteur met son horloge à jour.
Pi Pj
(m,k+d)
Pz
hvi = k hvj = …
Problème d’interblocage :
• Le processus j doit-il consommer le message (m,k+d), ou existe-t-il un message
arrivant de z à une date inférieure. J est bloqué et se met en attente.
page 76
Informatique Répartie : Synchronisation répartie
♦ Méthode pessimiste de Chandy et Misra
Pi Pj Pz
hvi = 5 hvj = 4Æ6 (m,7)
(m,6) (null,7) hvz = 6
i :6
z :7
• Ici : Si Pj ne possède que deux liaisons entrantes (en provenance de Pi et de Pz), il
peut consommer (m,6) et positionner hvj à 6.
page 77
Informatique Répartie : Synchronisation répartie
♦ Interblocage et méthode pessimiste :
• Pk peut recevoir des messages de Pj qui peut en recevoir de Pk
(null,5)
Pi (m2,10) Pj Pk (m1,5) Pz
i:2
j:5
1) k envoi (m1,5) à z, (null,5) à j.
2) j reçoit (m2,10), il consomme (null,5) et met hvj = 5.
3) j met (m2,10) en attente car il attend le prochain message de k (pour faire un
choix).
4) k attend un message de j (qui est en attente de k), conditionnant le prochain
message qu’il enverra Æ Interblocage.
page 78
Informatique Répartie : Synchronisation répartie
♦ Méthode pessimiste et anticipation.
page 79
Informatique Répartie : Synchronisation répartie
page 80
Informatique Répartie : Synchronisation répartie
♦ Exemple :
Sauvegarde i10
Pi hvi
10 12 (m,13) 14 15
Retour arrière
Vers i10
Pi hvi Compromis # sauvegarde ↔ précision
15 10
anti(m,13) des décalage (temps)
page 81
Informatique Répartie : Synchronisation répartie
Le GVT est la borne inférieure sur les dates de retour arrière possibles.
Le GVT est calculé à l’aide d’un algorithme réparti d’observation (chapitre suivant)
page 82
Informatique Répartie : Observation et état global
page 83
Informatique Répartie : Observation et état global
♦ Objectif :
• Savoir si une application répartie est terminée, sans faire aucune hypothèse sur la
structure ou l’organisation de celle-ci (surveillance d’un calcul)
♦ Sûreté :
• Si l’observation indique que le calcul est terminé, alors le calcul est effectivement
terminé
♦ Vivacité :
• Si le calcul se termine, alors l’algorithme de détection annoncera sa terminaison au bout
d’un temps fini.
page 84
Informatique Répartie : Observation et état global
♦ Principe :
• Un processus dans l’état actif peut passer dans l’état passif (fin d’un sous-calcul)
• Lorsqu’un processus dans l’état passif reçoit un message, il repasse dans l’état actif.
⇒ Le calcul global est terminé si tous les processus sont inactifs et qu’il n’y a aucun
message en circulation
page 85
Informatique Répartie : Observation et état global
page 86
Informatique Répartie : Observation et état global
temps-réel
t3 t2 t1
Vague de consultation
e1 (t1 ) = 0, e2(t 2 ) = 1, e3 (t 3 ) = 0 ⎫
⎬ E = ∑ ei (ti ) = R = ∑ ri (ti )
r1 (t1 ) = 1, r2 (t 2 ) = 0, r3 (t 3 ) = 0 ⎭ i i
page 87
Informatique Répartie : Observation et état global
Faits : Démonstration :
1 : d1<f1<d2<f2 Si R1=E2
2 : ei(t) ≤ ei(t’) et ri(t) ≤ ri(t’) ∀t ≤ t’ Alors E2 ≤ R(f1) (4)
2 : E(t) ≤ E(t’) et R(t) ≤ R(t’) ∀t ≤ t’ Donc E(d2) ≤ R(f1) (4+5)
3 : R(t) ≤ E(t) ∀t Si E(d2) ≤ R(f1)
4 : R1 ≤ R(f1) Alors E(f1) ≤ R(f1) (car E(f1)≤E(d2)) (1+2)
5 : E(d2) ≤ E2
Or E(f1)≥ R(f1)
Donc E(f1) = R(f1)
page 88
Informatique Répartie : Observation et état global
♦ Algorithme général :
• Plus d’hypothèses sur le temps de calcul des processus, ni sur les caractéristiques des
liaisons.
♦ Structure de la solution :
Prédicats :
≡ i est passif et tous les messages qu’il a envoyé ont été reçus.
page 89
Informatique Répartie : Observation et état global
♦ Objectif :
• Savoir si plusieurs processus « s’inter-bloquent » lors d’un calcul plutôt que d’éviter
l’interblocage (les méthodes pessimistes sont souvent trop restrictives)
♦ Sûreté :
• Si l’algorithme de contrôle annonce qu’il y a interblocage, celui-ci est effectif.
♦ Vivacité :
• Si un interblocage existe, il doit être détecté en un temps fini
♦ Difficulté particulière :
• Seul un sous groupe des processus gérant un calcul peuvent être concernés par un
interblocage
• Il est souhaitable qu’un seul processus détecte l’interblocage
page 90
Informatique Répartie : Observation et état global
2 3
• Détecter un interblocage revient à détecter une boucle dans le graphe des processus en
attente.
page 91
Informatique Répartie : Observation et état global
plus d’interblocage
4
3
2
page 92
Informatique Répartie : Observation et état global
Principe :
• Au moment d’un blocage, une valeur unique est calculée par le processus bloqué
page 93
Informatique Répartie : Observation et état global
♦ Mise en œuvre
• Chaque processus i possède : une étiquette privi, une étiquette pubi
• L’opérateur sup(pubi, pubj) renvoi une valeur supérieure à pubi et pubj
R1 : règle de blocage
Lorsque le processus i se bloque en attente d’une ressource possédée par le site j, il
redéfinit ses étiquettes : pubi = privi = sup(pubi, pubj)
R2 : Règle de propagation
Lorsque i est bloqué par j, il consulte régulièrement la valeur de pubj et effectue :
si pubi<pubj alors pubi = pubj fsi
R3 : Règle d’activation
Lorsque j libère une ressource demandée par i,k,… celle-ci est allouée à l’un d’entre eux.
Les autres processus sont désormais bloqués par celui qui a été choisi et appliquent la règle
R1 avec lui.
R4 : Règle de détection
Si suite à la règle R2, un site i bloqué par j constate pubi = privi = pubj ⇒ il est sur un
circuit et il est le seul à le savoir.
page 94
Informatique Répartie : Observation et état global
question(1,4)
4
0 question(0,1) 1
question(1,3) Graphe des
3 processus en attente
2
• Un processus recevant 2 fois « question() » fait parti d’une boucle
• Si tous les processus « fils » d’un processus donné font parti d’une boucle, il existe une
composante fortement connexe.
page 95
Informatique Répartie : Observation et état global
♦ Formalisation
ens_depi = ensemble des processus dont i est en attente
le processus cherchant à savoir s’il est en interblocage est k
R1 : lancer un parcourt
∀j∈ens_depk : envoyer question(k,j)
rep_attk = card(ens_depk) R3 : lors de la reception de réponse(j,i)
rep_atti = rep_atti-1
si rep_atti = 0 alors
R2 : lors de la reception de question(j,i) cas i≠ k → envoyer réponse(i,pèrei)
si non déjavisitéi alors i=k → le parcours est terminé
déjàvisitéi = vrai, pèrei=j fcas
∀r ∈ens_depi : envoyer question(i,r) à r fsi
rep_atti = card(ens_depi)
sinon envoyer réponse(i,j) à j
fsi
page 96
Informatique Répartie : Observation et état global
♦ Exemple d’exécution : j
1) pas d’interblocage : l
i
k
i♦
Rep_atti=2
question(i,j)
j
question(i,k) reponsel(k,i)
l
page 97
Informatique Répartie : Observation et état global
Exemple d’exécution :
2) interblocage : j
♦ l
i
k
Rep_atti=2
i
question(i,j) reponsel(j,i)
l
page 98
Informatique Répartie : Observation et état global
Problème de cohérence :
♦ Solution :
• cont_passifi ≡ le processus n’est pas repassé à l’état actif depuis la première réception
de « question ».
page 99
Informatique Répartie : Observation et état global
♦ Etat global :
• Somme des états locaux
page 100
Informatique Répartie : Observation et état global
m1
eli elj
page 101
Informatique Répartie : Observation et état global
m1
eli elj
eli∪elj ≡ incohérent
page 102
Informatique Répartie : Observation et état global
m1
eli elj
• Problème : On ne doit pas mémoriser m1 avec (elj, eli) car il n’a pas été émis en eli.
Mais elj tient compte de la réception de m1.
page 103
Informatique Répartie : Observation et état global
♦ Définitions préliminaires :
⎧⎪ ⎫⎪
• état global EG = ⎨U eli, U ecij ⎬
⎪⎩ i (i , j ) ⎪⎭
page 104
Informatique Répartie : Observation et état global
• d est transmise sur les canaux de sortie d’un processus i effectuant une mémorisation eli,
à l’aide d’un message particulier « marqueur »
elj
marqueur
page 105
Informatique Répartie : Observation et état global
marqueur
j
)
page 106
Informatique Répartie : Observation et état global
♦ Exemple :
elj
j
d- d
m3
marqueur marqueur
eli
i
d- d
m1 m2
marqueur
k
d- elk d
Attiya Hagit and Welch Jennifer, « Distributed Computing, Fundamentals, Simulations and
Advanced Topics », Mc Graw Hill editor, 1998.
Hamilton John et al, « Distributed Simulation », CRC Press Computer Engineering Series,
1997.
Raynal Michel, « Synchronisation et état global dans les systèmes répartis » Eyrolles,
1992.
Raynal Michel, « La communication et le temps dans les réseaux et les systèmes répartis »,
Eyrolles, 1991.
page 108
Informatique Répartie : Observation et état global
page 109
Informatique Répartie : Observation et état global
page 110
Informatique Répartie : Observation et état global
page 111
Informatique Répartie : Observation et état global
•
♦ Solution 2 : « state testing mutex algorithm »
Pas_équit1 Pas_équit2
demande_1 demande 2
T1 Demande de
Demande de T2
ressource critique 1
critique 2 ressource
page 112
Informatique Répartie : Observation et état global
page 113
Informatique Répartie : Observation et état global
• Nœud = processus P1
♦ Cas simples :
page 114
Informatique Répartie : Observation et état global
• Demande incrémentale :
Un site ne peut demander une ressource Ri que s’il a déjà obtenu toutes les
ressources (dont il a besoin durant la session), qui sont inférieures à Ri.
Chaque ressource gère une file d’attente fifo des sites qui la réclament.
Equité locale =
page 115
Informatique Répartie : Observation et état global
Equité globale = tous les processus pourront accéder à la section critique
au bout d’un temps fini
Echange par message/ par consultation
page 116
Informatique Répartie : Observation et état global
ReqExt1 ReqExt2
autorise1 autorise2
Silence Silence
equit1 equit2
Attente Attente
page 117
Informatique Répartie : Observation et état global
• 1. La recherche d’invariants : On est sûr que ça marchera si les processus font des
opérations dans un ordre donné, alors on “ force ” cet ordre Æ pas optimal mais sûr
(bon par construction), principe de l’algorithmique séquentielle.
• 2. Approche empirique : Fabrication de l’algorithme puis phase de validation Æ la plus
utilisée en distribué.
page 118
Informatique Répartie : Observation et état global
D’un point de vue Rdp, les transitions de partage doivent être localement équitables :
Processus 1
Processus 1
messages
consultation
P2
p P2
t’
page 119
Informatique Répartie : Observation et état global
Données D
{x,y,z,…..}
page 120
Informatique Répartie : Observation et état global
Données D
{x,y,z,…..}
Données D
{x,y,z,…..}
Sîte 1 Sîte 1 Sîte 1 Sîte 1
D D D D
x1 .. x2 .. x3 .. xn ..
Sîte 1 Sîte 1 Sîte 1 Sîte 1
D D D D
• Problème :x1
définition
.. du partitionnement
x2 .. x3 .. xn ..
♦ Association duplication/partitionnement
♦
page 121
Informatique Répartie : Observation et état global
Les avantages du parallélisme et de la distribution
♦ Evolution :
mémoire mémoire m m m
page 122
Informatique Répartie : Observation et état global
♦ Conséquence de la distribution :
• Besoins :
Compétition Synchronisation
+ +
nécessitent
Coopération Communication
page 123
Informatique Répartie : Observation et état global
• Pas de mémoire commune : interaction entre processus par messages et non plus par
variables partagées.
• Absence d’un état global connu par un processus à un instant donné : où en est-on ?
page 124
Informatique Répartie : Observation et état global
2) L’estampillage (Lamport) : ordonnancement des messages (équité), symétrie de texte
possible.
P1 (m,1,3) P2 P3
(m,1,4)
(m,3,6)
Avantage : relation d’ordre totale entre les messages échangés (l’algorithme s’y retrouve)
Note : si deux valeurs d’horloge identique Æ introduction d’une hiérarchie des processus
page 125
Informatique Répartie : Observation et état global
page 126
Informatique Répartie : Observation et état global
Processus 1 Processus 2
demande_1 demande_2
T1 Demande de Demande de
ressource T2
critique_1 critique_2 ressource
Pi Pj
attendre(drapeau(j) = 0) ; attendre(drapeau(i) = 0) ;
drapeau(i) = 1 drapeau(j) = 1
<Critique> <Critique>
drapeau(i) = 0 drapeau(j) = 0
drapeau(i)
drapeau(j)
• Echec : si i et j commencent en même temps, ils entrent en section critique tous les deux
page 128
Informatique Répartie : Observation et état global
♦ Deuxième proposition :
Pi Pj
drapeau(i) = 1 ; drapeau(j) = 1 ;
attendre(drapeau(j) = 0) ; attendre(drapeau(i) = 0) ;
<Critique> <Critique>
drapeau(i) = 0 drapeau(j) = 0
drapeau(i)
drapeau(j)
page 129
Informatique Répartie : Observation et état global
♦ Troisième proposition :
Pi Pj
drapeau(i) = 1 ; drapeau(j) = 1 ;
tant que (drapeau(j) = 1) tant que (drapeau(i) = 1)
drapeau(i) = 0 drapeau(j) = 0
attendre(drapeau(j) = 0) ; attendre(drapeau(i) = 0) ;
drapeau(i) = 1 drapeau(j) = 1
<critique> <critique>
drapeau(i) = 0 drapeau(j) = 0
drapeau(i)
drapeau(j)
page 130
Informatique Répartie : Observation et état global
♦ Quatrième proposition : Dekker 1965
Pi Pj
drapeau(i) = 1 ; drapeau(j) = 1 ;
tant que (drapeau(j) = 1) tant que (drapeau(i) = 1)
si tour=j alors si tour=i alors
drapeau(i) = 0 drapeau(j) = 0
attendre(drapeau(j) = 0) ; attendre(drapeau(i) = 0) ;
drapeau(i) = 1 drapeau(j) = 1
finsi finsi
<critique> <critique>
tour=j tour=i
drapeau(i) = 0 drapeau(j) = 0
page 131
Informatique Répartie : Observation et état global
• Dijkstra 1965 : Algorithme de Dekker généralisé à n processus.
drapeau(i)=vrai drapeau(j)=vrai
tour=i tour=j
attendre drapeau(j) = faux∨tour=j attendre drapeau(i) = faux∨tour=i
<section critique> <section critique>
drapeau(i) = faux drapeau(j) = faux
page 132
Informatique Répartie : Observation et état global
page 133
Informatique Répartie : Observation et état global
Fin1
Crit1
Demande21
Local2
Demande11 Req1 k
j
local1
Demande21
Req2
Demande22
Servi1
Ac1
Crit2
Fin2
Repos2
page 134