Mémoire partagée avec peu de registres 04/04/13Displexity1.
-
Upload
adrien-lafond -
Category
Documents
-
view
111 -
download
1
Transcript of Mémoire partagée avec peu de registres 04/04/13Displexity1.
Displexity1
S
Mémoire partagée avec peu de
registres
04/04/13
Displexity2
Système distribué
Processus
Communication/coopération: Par messages Par objets ( mémoire partagée== par registres)
04/04/13
Displexity304/04/13
Displexity4
Que veut-on résoudre et comment on le spécifie?
Tâche Entrées, Sorties Spécification :une relation entrées / sorties
Problème/ spécification: exclusion mutuelle
Objets
04/04/13
Displexity5
Objets (déterministes)
Registres ( Val read(), write(Val v))
Pile, file, …( mettre(Val v), Val enlever())
Test and set (Boolean tas(Boolean v))
Compare and set ( Boolean cas(Val C,Val x, Val y)
Consensus ( Val decide( Val x))
04/04/13
Displexity6
Implémenter les objets
Correction
Progression ( aussi valable pour les tâches,….)
04/04/13
Displexity7
Correction
Spécification séquentielle: elle décrit le comportement de l’objet si les processus l’utilisent en séquence.
Quelle est la condition de correction quand plusieurs processus l’utilisent concurremment ?
par rapport à la spécification séquentielle
04/04/13
Displexity8
Registres
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).
Spécification concurrente: (sûre) si une écriture et une lecture sont concurrentes la
lecture peut retournée n’importe quelle valeur (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
Displexity9
SURE, REGULIER, ATOMIQUE
04/04/13
WRITE( 4)
WRITE( 5)
READ 5
Displexity10
SURE, REGULIER, ATOMIQUE
04/04/13
WRITE( 4)
WRITE( 5)
READ
WRITE( 4) WRITE( 5) READ
5
Displexity11
SÛRE
04/04/13
WRITE( 4)
WRITE( 5)
READ
4 ou 5 ou 87 !!!
Displexity12
REGULIER
04/04/13
WRITE( 4)
WRITE( 5)
READ
4 ou 5
Displexity13
REGULIER
04/04/13
WRITE( 4)
WRITE( 5)
READREAD
4 ou 5 4 ou 5
Displexity14
ATOMIQUE
04/04/13
WRITE( 4)
WRITE( 5)
READREAD
5 4
15
ATOMIQUE
04/04/13 Displexity
WRITE( 4)
WRITE( 5)
READ
WRITE( 4) WRITE( 5)5 5
Displexity16
ATOMIQUE
Chaque appel à une opération semble être instantanée et apparaitre entre le moment de son invocation et de sa réponse. Point de linéarisation
La séquence d’opérations ainsi obtenue respecte la spécification séquentielle
04/04/13
Displexity17
ATOMIQUE
Cette définition s’applique pour tous les objets
Bonne propriété de composition
Très forte
D’autres types de corrections sont considérées: séquentielle, quiescente …..
Objets atomiques/ implémentation d’objet linéarisable
04/04/13
Displexity18
Registres
Combien de lecteurs/ écrivains peuvent y accéder? SWSR, SWMR, MWSR, MWMR
Contenu du registre: booléen, multi-valué
Correction: sûr (safe), régulier, atomique
04/04/13
Displexity19
Années : 85-90
A partir d’un SWSR booleen sûr (le plus faible) on peut construire un MWMR multi valué atomique (le plus fort)
Tous les processus qui invoquent une opération font des pas.
04/04/13
Displexity20
Progression
Que se passe-t-il si certains processus ne font pas de pas?
( 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
Displexity21
Digression: consensus
Spécification: Accord: tous les processus qui décident, décident la
même valeur Validité: si un processsus décide il décide une valeur
proposée Terminaison: Tous les processus corrects décident
Tâche: ( I,O, )D
Objet: Spécification séquentielle :Tous les decide retournent l’argument du premier decide
04/04/13
Displexity22
Wait free
Un processus, s’il fait des pas, (quoi que fassent les autres) peut toujours finir son opération Très fort
04/04/13
Displexity23
Wait free
On peut faire peu de choses wait free: snapshot ( instantanée de la mémoire) oui, renommage (2n-1) oui ; exact non pile file etc…. non
Impossibilité du consensus
04/04/13
Displexity24
Impossibilité du consensus WF
Il est impossible de faire du consensus wait free pour n>=2 processus avec des registres Une configuration bivalente initiale : (0,1)
04/04/13
Proc 1Proc 0
0 1
0 1
Displexity2504/04/13
Proc 1Proc 0
0 1
1
Displexity26
Une configuration bivalente et les suivantes monovalentes
04/04/13
QP
0 1
0 1
Displexity27
Une configuration bivalente et les suivantes monovalentes
04/04/13
QP0 1
0 1
R R’QP
0 1
0 1
R R’
Contradiction
Displexity28
Une lecture et une écriture ou deux écritures sur le même registres
04/04/13
QP0 1
0 1
R/W W’QP
0 1
0 1
R/W W’
Contradiction
29
2 écritures sur des registres différents
04/04/13 Displexity
QP0 1
0 1
W W’QP
0 1
0 1
W W’
Contradiction
Displexity30
Consensus WF pour 2 processus avec une file
Init: 1, 0
04/04/13
Displexity31
Consensus WF pour 2 processus avec une file
Init: 1, 0
Pour le processus i Val Decide (Val v)==
{R[i]:=v;
x=enlever();
si x==1 alors return v
sinon return R[1-i]}
04/04/13
Displexity32
Pour 2 processus
On peut faire du consensus wait free pour 2 processus avec une file + des registres
On ne peut pas faire du consensus wait free avec des registres
on ne peut pas faire de file wait free avec des registres
04/04/13
Displexity33
Non blocking
Parmi les processus un d’entre eux finit son opération Les autres peuvent être bloqués
04/04/13
Displexity34
Snapshot
Un ensemble de registres, le registre R[i] est écrit par le processus i et lu par tous.
2 opérations : update( val v) , Val [] scan()
Implémentation naïve: update(val v) exécuté par le processus i : R[i]=v; Scan lecture séquentielle de tous les registres
( Collect )
04/04/13
Displexity35
Cette implémentation n’est pas atomique
04/04/13
1
2
3
Update (11)
Update (22)
(0, 22)
Displexity36
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
Displexity37
Non blocking : un processus qui écrit peut empêcher tous les autres de terminer le scan (un processus progresse (celui qui fait les write))
Pas wait free
Il est possible de le réaliser wait free
04/04/13
Displexity38
Obstruction free
Si un processus est seul alors il termine son opération propriété faible On peut « tout » faire obstruction free Attention il faut toujours assurer la correction quand il
y a des exécutions concurrentes
Displexity39
Retour sur les registres
n processus dont on connait les identités 1..n
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)
Faut-il n registres pour tout tâche/objet/pb ????
04/04/13
Displexity40
n processus dont les identités sont dans un ensemble 1..M avec M>>n.
Avec M registres on peut « tout » faire
A-t-on besoin de M registres???
04/04/13
Displexity4104/04/13
Displexity42
Moins de registres que de processus: problèmes
3 processus, 2 registres:
Proc A écrit dans le registre 1
Proc B écrit dans le registre 2
Proc C écrit alternativement dans 1 et dans 2: C peut n’être jamais vu
04/04/13
Displexity43
Pas de registres pré-alloués: problème
A et B exécutent le même code et écrivent répétitivement dans le registre 1 puis le registre 2.
A ne voit jamais les écritures de B ( par contre B voit A)
04/04/13
Displexity44
N processus qui ont des identités dans 1..M avec M>>N
Peut on « tout » faire avec moins de M registres??
Les registres ne peuvent pas être alloués suivant les noms des processus
Peut on « simuler » le fait qu’il y a un registre SWMR par processus?
04/04/13
Displexity45
Premiere approche
On commence par faire du renommage wait free. Les processus ont alors un nom entre 1 et 2n-1
Chaque processus a alors un accès exclusif à un des 2n-1 registres auxquels il accède suivant son nom.
Mais il faut d’abord faire du renommage
04/04/13
Displexity46
Borne inférieure
On ne peut pas faire une telle émulation avec n-1 registres
Argument de couverture: un processus couvre un registre si son prochain pas consiste à écrire dans ce registre
Preuve par contradiction: on construit une exécution où n-1 processus couvrent chacun un registre
04/04/13
Displexity47
N=6
04/04/13
P Q R S T
48
Borne inférieure
Puis le dernier processus réalise une Ecriture en écrivant dans les registres
04/04/13 Displexity
P Q R S T
49
Borne inférieure
Puis le dernier processus réalise une Ecriture en écrivant dans les registres
04/04/13 Displexity
P Q R S T
50
Borne inférieure
Puis le dernier processus réalise une Ecriture en écrivant dans les registres
04/04/13 Displexity
P Q R S T
51
Borne inférieure
Puis le dernier processus réalise une Ecriture en écrivant dans les registres
Ecriture terminée
04/04/13 Displexity
P Q R S T
52
Borne inférieure
Les n-1 processus recouvrent les registres et l’Ecriture est perdue
04/04/13 Displexity
Displexity53
Borne inférieure
Il faut au moins n registres MWMR pour simuler n registres SWSR.
04/04/13
Displexity54
Autre approche
On peut simuler (non blocking) n registres SWMR avec n registres MWMR
04/04/13
Displexity55
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
Displexity5604/04/13
Write( x):1 v = (x; p; k) //valeur, processus, numero2 next = 03 View = View U {v}4 do5 Snap = NBScan()6 View = Snap U View7 write(R[next]; V iew)8 next = (next + 1) mod m9 until (card {r s.t v in Snap[r])}=n)10 k = k + 1
Displexity57
read(q): //lecture du registre de q
View = Collect()
return x such that (x; q; u) in View with maximal u
04/04/13
Displexity58
LA simulation non blocking permet de réaliser toute tâche wf ( qui était possible avec un registre par processus)
04/04/13
Displexity59
Autres résultats ….
La prochaine fois !
04/04/13
Displexity60
Résultats connus
(Modèle où il n’y a pas de pannes: un processus qui a commencé à faire des pas en fera une infinité)
O(Log(n)) registres MWMR sont nécessaires et suffisants pour faire une élection de leader. Styer et Peterson (PODC89)
n registres pour faire de l’exclusion mutuelle ( Burn et Lynch (Information and Computation 1993)
04/04/13
Displexity61
Résultat connus
Des bornes inf :
Il faut au moins sqrt(n) registres pour le consensus (randomisé)
obstruction free (Ellen et Al [JACM98]) sqrt( n-1)/2 pour avoir des estampilles (obstruction
free)
04/04/13
Displexity62
Mais les algorithmes connus pour le consensus randomisé et pour les estampilles wf utilisent n ou n-1 registres….
04/04/13