Mémoire partagée avec peu de registres

Download Report

Transcript Mémoire partagée avec peu de registres

Mémoire partagée avec
peu de registres
S
04/04/13
1
Displexity
Système distribué
S Processus
S Communication/coopération:
S Par messages
S Par objets ( mémoire partagée== par registres)
04/04/13
2
Displexity
04/04/13
3
Displexity
Que veut-on résoudre et
comment on le spécifie?
S Tâche
S Entrées, Sorties
S Spécification :une relation entrées / sorties
S Problème/ spécification: exclusion mutuelle
S Objets
04/04/13
4
Displexity
Objets (déterministes)
S Registres ( Val read(), write(Val v))
S Pile, file, …( mettre(Val v), Val enlever())
S Test and set (Boolean tas(Boolean v))
S Compare and set ( Boolean cas(Val C,Val x, Val y)
S Consensus ( Val decide( Val x))
04/04/13
5
Displexity
Implémenter les objets
S Correction
S Progression ( aussi valable pour les tâches,….)
04/04/13
6
Displexity
Correction
S Spécification séquentielle: elle décrit le comportement de
l’objet si les processus l’utilisent en séquence.
S Quelle est la condition de correction quand plusieurs
processus l’utilisent concurremment ?
S par rapport à la spécification séquentielle
04/04/13
7
Displexity
Registres
S Spécification séquentielle: une lecture retourne la dernière valeur
écrite (la valeur initiale s’il n’y a pas de valeur écrite
précédemment).
S Spécification concurrente:
S (sûre) si une écriture et une lecture sont concurrentes la lecture
peut retournée n’importe quelle valeur
S (Régulier) si une écriture et une lecture sont concurrentes, la
lecture peut retourner une des écritures concurrentes ou la valeur
écrite précédemment (valeur initiale si pas d’écriture avant)
04/04/13
8
Displexity
SURE, REGULIER,
ATOMIQUE
WRITE( 4)
WRITE( 5)
READ
04/04/13
9
5
Displexity
SURE, REGULIER,
ATOMIQUE
WRITE( 4)
WRITE( 5)
READ
WRITE( 4)
04/04/13
WRITE( 5)
10
5
READ
Displexity
SÛRE
WRITE( 4)
WRITE( 5)
READ
4 ou 5
ou 87 !!!
04/04/13
11
Displexity
REGULIER
WRITE( 4)
WRITE( 5)
READ
4 ou 5
04/04/13
12
Displexity
REGULIER
WRITE( 4)
WRITE( 5)
READ
READ
4 ou 5
04/04/13
4 ou 5
13
Displexity
ATOMIQUE
WRITE( 4)
WRITE( 5)
READ
READ
5
04/04/13
4
14
Displexity
ATOMIQUE
WRITE( 4)
WRITE( 5)
READ
WRITE( 4)
04/04/13
5
WRITE( 5)
15
5
Displexity
ATOMIQUE
S Chaque appel à une opération semble être instantanée et
apparaitre entre le moment de son invocation et de sa
réponse.
S Point de linéarisation
S La séquence d’opérations ainsi obtenue respecte la
spécification séquentielle
04/04/13
16
Displexity
ATOMIQUE
S Cette définition s’applique pour tous les objets
S Bonne propriété de composition
S Très forte
S D’autres types de corrections sont considérées: séquentielle,
quiescente …..
S Objets atomiques/ implémentation d’objet linéarisable
04/04/13
17
Displexity
Registres
S Combien de lecteurs/ écrivains peuvent y accéder?
S SWSR, SWMR, MWSR, MWMR
S Contenu du registre: booléen, multi-valué
S Correction: sûr (safe), régulier, atomique
04/04/13
18
Displexity
S Années : 85-90
S A partir d’un SWSR booleen sûr (le plus faible) on peut
construire un MWMR multi valué atomique (le plus fort)
S Tous les processus qui invoquent une opération font des pas.
04/04/13
19
Displexity
Progression
S Que se passe-t-il si certains processus ne font pas de pas?
S ( la définition formelle de l’atomicité tient compte du fait
qu’une opération peut être débutée mais pas terminée
« pendante »)
04/04/13
20
Displexity
Digression: consensus
S Spécification:
S Accord: tous les processus qui décident, décident la même
valeur
S Validité: si un processsus décide il décide une valeur proposée
S Terminaison: Tous les processus corrects décident
S Tâche: ( I,O, D)
S Objet: Spécification séquentielle :Tous les decide retournent
l’argument du premier decide
04/04/13
21
Displexity
Wait free
S Un processus, s’il fait des pas, (quoi que fassent les autres)
peut toujours finir son opération
S Très fort
04/04/13
22
Displexity
Wait free
S On peut faire peu de choses wait free:
snapshot ( instantanée de la mémoire) oui,
S renommage (2n-1) oui ; exact non
S pile file etc…. non
S
S Impossibilité du consensus
04/04/13
23
Displexity
Impossibilité du consensus WF
S Il est impossible de faire du consensus wait free pour n>=2
processus avec des registres
S Une configuration bivalente initiale : (0,1)
0 1
Proc 0
0
04/04/13
Proc 1
1
24
Displexity
Proc 1
Proc 0
1
0
04/04/13
1
25
Displexity
S Une configuration bivalente et les suivantes monovalentes
01
Q
P
0
04/04/13
1
26
Displexity
S Une configuration bivalente et les suivantes monovalentes
01
R
01
R’
P
0
Q
R
R’
0
1
P
1
Q
Contradiction
04/04/13
27
Displexity
S Une lecture et une écriture ou deux écritures sur le même
registres
01
R/W
01
W’
P
0
R/W
Q
P
1
0
W’
Q
1
Contradiction
04/04/13
28
Displexity
S 2 écritures sur des registres différents
01
W
01
W’
P
0
Q
W
W’
0
1
P
1
Q
Contradiction
04/04/13
29
Displexity
Consensus WF pour 2 processus
avec une file
S Init: 1, 0
04/04/13
30
Displexity
Consensus WF pour 2 processus
avec une file
S Init: 1, 0
S Pour le processus i
S Val Decide (Val v)==
{R[i]:=v;
x=enlever();
si x==1 alors return v
sinon return R[1-i]}
04/04/13
31
Displexity
Pour 2 processus
S On peut faire du consensus wait free pour 2 processus avec
une file + des registres
S On ne peut pas faire du consensus wait free avec des
registres
S  on ne peut pas faire de file wait free avec des registres
04/04/13
32
Displexity
Non blocking
S Parmi les processus un d’entre eux finit son opération
S Les autres peuvent être bloqués
04/04/13
33
Displexity
Snapshot
S Un ensemble de registres, le registre R[i] est écrit par le
processus i et lu par tous.
S 2 opérations : update( val v) , Val [] scan()
S Implémentation naïve:
S update(val v) exécuté par le processus i : R[i]=v;
S Scan lecture séquentielle de tous les registres ( Collect )
04/04/13
34
Displexity
S Cette implémentation n’est pas atomique
Update (11)
1
Update (22)
2
3
(0, 22)
04/04/13
35
Displexity
S Scan()= {
A=collect (); B=collect();
while ( A<>B){A:=B; B=collect();}
Return A;}
Atomique: point de linéarisation entre les 2
derniers collects
04/04/13
36
Displexity
S Non blocking : un processus qui écrit peut empêcher tous les
autres de terminer le scan (un processus progresse (celui
qui fait les write))
S Pas wait free
S Il est possible de le réaliser wait free
04/04/13
37
Displexity
Obstruction free
S Si un processus est seul alors il termine son opération
S
propriété faible
S
On peut « tout » faire obstruction free
S
Attention il faut toujours assurer la correction quand il y a des
exécutions concurrentes
38
Displexity
Retour sur les registres
S n processus dont on connait les identités 1..n
S Si on peut réaliser un objet (une tâche, un pb) avec des
registres alors on peut le faire avec n registres SWMR (un
par processus)
S Faut-il n registres pour tout tâche/objet/pb ????
04/04/13
39
Displexity
S n processus dont les identités sont dans un ensemble 1..M
avec M>>n.
S Avec M registres on peut « tout » faire
S A-t-on besoin de M registres???
04/04/13
40
Displexity
04/04/13
41
Displexity
Moins de registres que de
processus: problèmes
S 3 processus, 2 registres:
S Proc A écrit dans le registre 1
S Proc B écrit dans le registre 2
S Proc C écrit alternativement dans 1 et dans 2: C peut
n’être jamais vu
04/04/13
42
Displexity
Pas de registres pré-alloués:
problème
S A et B exécutent le même code et écrivent répétitivement
dans le registre 1 puis le registre 2.
S A ne voit jamais les écritures de B ( par contre B voit A)
04/04/13
43
Displexity
S N processus qui ont des identités dans 1..M avec M>>N
S Peut on « tout » faire avec moins de M registres??
S Les registres ne peuvent pas être alloués suivant les noms des
processus
S Peut on « simuler » le fait qu’il y a un registre SWMR par
processus?
04/04/13
44
Displexity
Premiere approche
S On commence par faire du renommage wait free. Les
processus ont alors un nom entre 1 et 2n-1
S Chaque processus a alors un accès exclusif à un des 2n-1
registres auxquels il accède suivant son nom.
S Mais il faut d’abord faire du renommage
04/04/13
45
Displexity
Borne inférieure
S On ne peut pas faire une telle émulation avec n-1 registres
S Argument de couverture: un processus couvre un registre si
son prochain pas consiste à écrire dans ce registre
S Preuve par contradiction: on construit une exécution où n-1
processus couvrent chacun un registre
04/04/13
46
Displexity
S N=6
P
04/04/13
Q
S
R
47
T
Displexity
Borne inférieure
S Puis le dernier processus réalise une Ecriture en écrivant
dans les registres
P
04/04/13
Q
S
R
48
T
Displexity
Borne inférieure
S Puis le dernier processus réalise une Ecriture en écrivant
dans les registres
P
04/04/13
Q
S
R
49
T
Displexity
Borne inférieure
S Puis le dernier processus réalise une Ecriture en écrivant
dans les registres
P
04/04/13
Q
S
R
50
T
Displexity
Borne inférieure
S Puis le dernier processus réalise une Ecriture en écrivant
dans les registres
S Ecriture terminée
P
04/04/13
Q
S
R
51
T
Displexity
Borne inférieure
S Les n-1 processus recouvrent les registres et l’Ecriture est
perdue
04/04/13
52
Displexity
Borne inférieure
S Il faut au moins n registres MWMR pour simuler n registres
SWSR.
04/04/13
53
Displexity
Autre approche
S On peut simuler (non blocking) n registres SWMR avec n
registres MWMR
04/04/13
54
Displexity
Shared variable :
array of n MWMR-register : R
Code for process p
Local variable:
set of Values View = ensemble vide ;
integer k = 0
04/04/13
55
Displexity
Write( x):
1 v = (x; p; k) //valeur, processus, numero
2 next = 0
3 View = View U {v}
4 do
5
Snap = NBScan()
6
View = Snap U View
7
write(R[next]; V iew)
8
next = (next + 1) mod m
9 until (card {r s.t v in Snap[r])}=n)
10 k = k + 1
04/04/13
56
Displexity
S read(q): //lecture du registre de q
View = Collect()
return x such that (x; q; u) in View with maximal u
04/04/13
57
Displexity
S LA simulation non blocking permet de réaliser toute tâche
wf ( qui était possible avec un registre par processus)
04/04/13
58
Displexity
Autres résultats ….
S La prochaine fois !
04/04/13
59
Displexity
Résultats connus
S (Modèle où il n’y a pas de pannes: un processus qui a
commencé à faire des pas en fera une infinité)
S O(Log(n)) registres MWMR sont nécessaires et suffisants
pour faire une élection de leader. Styer et Peterson
(PODC89)
S n registres pour faire de l’exclusion mutuelle ( Burn et Lynch
(Information and Computation 1993)
04/04/13
60
Displexity
Résultat connus
S Des bornes inf :
S Il faut au moins
sqrt(n) registres pour le consensus (randomisé) obstruction free
(Ellen et Al [JACM98])
S sqrt( n-1)/2 pour avoir des estampilles (obstruction free)
S
04/04/13
61
Displexity
S Mais les algorithmes connus pour le consensus randomisé et
pour les estampilles wf utilisent n ou n-1 registres….
04/04/13
62
Displexity