620 likes | 750 Views
Mémoire partagée avec peu de registres. Système distribué. Processus Communication/coopération: Par messages Par objets ( mémoire partagée== par registres). Que veut-on résoudre e t comment on le spécifie?. Tâche Entrées, Sorties Spécification :une relation entrées / sorties
E N D
Mémoire partagée avec peu de registres Displexity
Système distribué • Processus • Communication/coopération: • Par messages • Par objets ( mémoire partagée== par registres) Displexity
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 Displexity
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)) Displexity
Implémenter les objets • Correction • Progression ( aussi valable pour les tâches,….) Displexity
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 Displexity
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) Displexity
SURE, REGULIER, ATOMIQUE WRITE( 4) WRITE( 5) READ 5 Displexity
SURE, REGULIER, ATOMIQUE WRITE( 4) WRITE( 5) READ 5 WRITE( 4) WRITE( 5) READ Displexity
SÛRE WRITE( 4) WRITE( 5) READ 4 ou 5 ou 87 !!! Displexity
REGULIER WRITE( 4) WRITE( 5) READ 4 ou 5 Displexity
REGULIER WRITE( 4) WRITE( 5) READ READ 4 ou 5 4 ou 5 Displexity
ATOMIQUE WRITE( 4) WRITE( 5) READ READ 5 4 Displexity
ATOMIQUE WRITE( 4) WRITE( 5) READ 5 5 WRITE( 4) WRITE( 5) Displexity
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 Displexity
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 Displexity
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 Displexity
Années : 85-90 • A partir d’un SWSR booleensû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. Displexity
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 ») Displexity
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 lesdecideretournent l’argument du premier decide Displexity
Wait free • Un processus, s’il fait des pas, (quoi que fassent les autres) peut toujours finir son opération • Très fort Displexity
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 Displexity
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) 01 Proc 1 Proc 0 0 1 Displexity
Proc 1 Proc 0 1 0 1 Displexity
Une configuration bivalente et les suivantes monovalentes 01 Q P 0 1 Displexity
Une configuration bivalente et les suivantes monovalentes 01 01 R’ R R’ R Q Q P P 0 1 0 1 Contradiction Displexity
Une lecture et une écriture ou deux écritures sur le même registres 01 01 W’ R/W W’ R/W Q Q P P 0 1 1 0 Contradiction Displexity
2 écritures sur des registres différents 01 01 W’ W W’ W Q Q P P 0 1 0 1 Contradiction Displexity
Consensus WF pour 2 processus avec une file • Init: 1, 0 Displexity
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]} Displexity
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 Displexity
Non blocking • Parmi les processus un d’entre eux finit son opération • Les autres peuvent être bloqués Displexity
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 ) Displexity
Cette implémentation n’est pas atomique Update (11) 1 Update (22) 2 3 (0, 22) Displexity
Scan()= { A=collect (); B=collect(); while ( A<>B){A:=B; B=collect();} Return A;} Atomique: point de linéarisation entre les 2 derniers collects Displexity
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 Displexity
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 Displexity
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 ???? Displexity
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??? Displexity
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 Displexity
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) Displexity
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? Displexity
Premiere approche • On commence par faire du renommagewait 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 Displexity
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 Displexity
N=6 P Q R S T Displexity
Borne inférieure • Puis le dernier processus réalise une Ecriture en écrivant dans les registres P Q R S T Displexity
Borne inférieure • Puis le dernier processus réalise une Ecriture en écrivant dans les registres P Q R S T Displexity
Borne inférieure • Puis le dernier processus réalise une Ecriture en écrivant dans les registres P Q R S T Displexity