Mémoire partagée avec peu de registres 04/04/13Displexity1
Système distribué Processus Communication/coopération: Par messages Par objets ( mémoire partagée== par registres) 04/04/13Displexity2
04/04/13Displexity3
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/13Displexity4
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/13Displexity5
Implémenter les objets Correction Progression ( aussi valable pour les tâches,….) 04/04/13Displexity6
Correction Spécification séquentielle: elle décrit le comportement de lobjet si les processus lutilisent en séquence. Quelle est la condition de correction quand plusieurs processus lutilisent concurremment ? par rapport à la spécification séquentielle 04/04/13Displexity7
Registres Spécification séquentielle: une lecture retourne la dernière valeur écrite (la valeur initiale sil ny 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 nimporte 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/13Displexity8
SURE, REGULIER, ATOMIQUE 04/04/13Displexity WRITE( 4) WRITE( 5) READ 5 9
SURE, REGULIER, ATOMIQUE 04/04/13Displexity WRITE( 4) WRITE( 5) READ WRITE( 4)WRITE( 5) READ 5 10
SÛRE 04/04/13Displexity WRITE( 4) WRITE( 5) READ 4 ou 5 ou 87 !!! 11
REGULIER 04/04/13Displexity WRITE( 4) WRITE( 5) READ 4 ou 5 12
REGULIER 04/04/13Displexity WRITE( 4) WRITE( 5) READ 4 ou 5 13
ATOMIQUE 04/04/13Displexity WRITE( 4) WRITE( 5) READ 54 14
ATOMIQUE 04/04/13Displexity WRITE( 4) WRITE( 5) READ WRITE( 4) WRITE( 5)
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 dopérations ainsi obtenue respecte la spécification séquentielle 04/04/13Displexity16
ATOMIQUE Cette définition sapplique pour tous les objets Bonne propriété de composition Très forte Dautres types de corrections sont considérées: séquentielle, quiescente ….. Objets atomiques/ implémentation dobjet linéarisable 04/04/13Displexity17
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/13Displexity18
Années : A partir dun 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/13Displexity19
Progression Que se passe-t-il si certains processus ne font pas de pas? ( la définition formelle de latomicité tient compte du fait quune opération peut être débutée mais pas terminée « pendante ») 04/04/13Displexity20
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, Objet: Spécification séquentielle :Tous les decide retournent largument du premier decide 04/04/13Displexity21
Wait free Un processus, sil fait des pas, (quoi que fassent les autres) peut toujours finir son opération Très fort 04/04/13Displexity22
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/13Displexity23
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/13Displexity Proc 1 Proc
04/04/13Displexity25 Proc 1 Proc
Une configuration bivalente et les suivantes monovalentes 04/04/13Displexity Q P
Une configuration bivalente et les suivantes monovalentes 04/04/13Displexity Q P R R Q P R R Contradiction 27
Une lecture et une écriture ou deux écritures sur le même registres 04/04/13Displexity Q P R/W W Q P W Contradiction 28
2 écritures sur des registres différents 04/04/13Displexity Q P W W Q P W W Contradiction 29
Consensus WF pour 2 processus avec une file Init: 1, 0 04/04/13Displexity30
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/13Displexity31
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/13Displexity32
Non blocking Parmi les processus un dentre eux finit son opération Les autres peuvent être bloqués 04/04/13Displexity33
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/13Displexity34
Cette implémentation nest pas atomique 04/04/13Displexity Update (11) Update (22) (0, 22)
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/13Displexity36
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/13Displexity37
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 04/04/13 Displexity38
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/13Displexity39
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/13Displexity40
04/04/13Displexity41
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/13Displexity42
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/13Displexity43
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 quil y a un registre SWMR par processus? 04/04/13Displexity44
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 dabord faire du renommage 04/04/13Displexity45
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/13Displexity46
N=6 04/04/13Displexity47 P Q R S T
Borne inférieure Puis le dernier processus réalise une Ecriture en écrivant dans les registres 04/04/13Displexity48 P Q R S T
Borne inférieure Puis le dernier processus réalise une Ecriture en écrivant dans les registres 04/04/13Displexity49 P Q R S T
Borne inférieure Puis le dernier processus réalise une Ecriture en écrivant dans les registres 04/04/13Displexity50 P Q R S T
Borne inférieure Puis le dernier processus réalise une Ecriture en écrivant dans les registres Ecriture terminée 04/04/13Displexity51 P Q R S T
Borne inférieure Les n-1 processus recouvrent les registres et lEcriture est perdue 04/04/13Displexity52
Borne inférieure Il faut au moins n registres MWMR pour simuler n registres SWSR. 04/04/13Displexity53
Autre approche On peut simuler (non blocking) n registres SWMR avec n registres MWMR 04/04/13Displexity54
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/13Displexity55
04/04/13Displexity 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
read(q): //lecture du registre de q View = Collect() return x such that (x; q; u) in View with maximal u 04/04/13Displexity57
LA simulation non blocking permet de réaliser toute tâche wf ( qui était possible avec un registre par processus) 04/04/13Displexity58
Autres résultats …. La prochaine fois ! 04/04/13Displexity59
Résultats connus (Modèle où il ny 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 lexclusion mutuelle ( Burn et Lynch (Information and Computation 1993) 04/04/13Displexity60
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/13Displexity61
Mais les algorithmes connus pour le consensus randomisé et pour les estampilles wf utilisent n ou n-1 registres…. 04/04/13Displexity62