M©moire partag©e avec peu de registres 04/04/13Displexity1

download M©moire partag©e avec peu de registres 04/04/13Displexity1

of 62

  • date post

    03-Apr-2015
  • Category

    Documents

  • view

    107
  • download

    1

Embed Size (px)

Transcript of M©moire partag©e avec peu de registres 04/04/13Displexity1

  • Page 1
  • Mmoire partage avec peu de registres 04/04/13Displexity1
  • Page 2
  • Systme distribu Processus Communication/coopration: Par messages Par objets ( mmoire partage== par registres) 04/04/13Displexity2
  • Page 3
  • 04/04/13Displexity3
  • Page 4
  • Que veut-on rsoudre et comment on le spcifie? Tche Entres, Sorties Spcification :une relation entres / sorties Problme/ spcification: exclusion mutuelle Objets 04/04/13Displexity4
  • Page 5
  • Objets (dterministes) 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
  • Page 6
  • Implmenter les objets Correction Progression ( aussi valable pour les tches,.) 04/04/13Displexity6
  • Page 7
  • Correction Spcification squentielle: elle dcrit le comportement de lobjet si les processus lutilisent en squence. Quelle est la condition de correction quand plusieurs processus lutilisent concurremment ? par rapport la spcification squentielle 04/04/13Displexity7
  • Page 8
  • Registres Spcification squentielle: une lecture retourne la dernire valeur crite (la valeur initiale sil ny a pas de valeur crite prcdemment). Spcification concurrente: (sre) si une criture et une lecture sont concurrentes la lecture peut retourne nimporte quelle valeur (Rgulier) si une criture et une lecture sont concurrentes, la lecture peut retourner une des critures concurrentes ou la valeur crite prcdemment (valeur initiale si pas dcriture avant) 04/04/13Displexity8
  • Page 9
  • SURE, REGULIER, ATOMIQUE 04/04/13Displexity WRITE( 4) WRITE( 5) READ 5 9
  • Page 10
  • SURE, REGULIER, ATOMIQUE 04/04/13Displexity WRITE( 4) WRITE( 5) READ WRITE( 4)WRITE( 5) READ 5 10
  • Page 11
  • SRE 04/04/13Displexity WRITE( 4) WRITE( 5) READ 4 ou 5 ou 87 !!! 11
  • Page 12
  • REGULIER 04/04/13Displexity WRITE( 4) WRITE( 5) READ 4 ou 5 12
  • Page 13
  • REGULIER 04/04/13Displexity WRITE( 4) WRITE( 5) READ 4 ou 5 13
  • Page 14
  • ATOMIQUE 04/04/13Displexity WRITE( 4) WRITE( 5) READ 54 14
  • Page 15
  • ATOMIQUE 04/04/13Displexity WRITE( 4) WRITE( 5) READ WRITE( 4) WRITE( 5) 5 5 15
  • Page 16
  • ATOMIQUE Chaque appel une opration semble tre instantane et apparaitre entre le moment de son invocation et de sa rponse. Point de linarisation La squence doprations ainsi obtenue respecte la spcification squentielle 04/04/13Displexity16
  • Page 17
  • ATOMIQUE Cette dfinition sapplique pour tous les objets Bonne proprit de composition Trs forte Dautres types de corrections sont considres: squentielle, quiescente .. Objets atomiques/ implmentation dobjet linarisable 04/04/13Displexity17
  • Page 18
  • Registres Combien de lecteurs/ crivains peuvent y accder? SWSR, SWMR, MWSR, MWMR Contenu du registre: boolen, multi-valu Correction: sr (safe), rgulier, atomique 04/04/13Displexity18
  • Page 19
  • Annes : 85-90 A partir dun SWSR booleen sr (le plus faible) on peut construire un MWMR multi valu atomique (le plus fort) Tous les processus qui invoquent une opration font des pas. 04/04/13Displexity19
  • Page 20
  • Progression Que se passe-t-il si certains processus ne font pas de pas? ( la dfinition formelle de latomicit tient compte du fait quune opration peut tre dbute mais pas termine pendante ) 04/04/13Displexity20
  • Page 21
  • Digression: consensus Spcification: Accord : tous les processus qui dcident, dcident la mme valeur Validit : si un processsus dcide il dcide une valeur propose Terminaison : Tous les processus corrects dcident Tche: ( I,O, Objet: Spcification squentielle :Tous les decide retournent largument du premier decide 04/04/13Displexity21
  • Page 22
  • Wait free Un processus, sil fait des pas, (quoi que fassent les autres) peut toujours finir son opration Trs fort 04/04/13Displexity22
  • Page 23
  • Wait free On peut faire peu de choses wait free: snapshot ( instantane de la mmoire) oui, renommage (2n-1) oui ; exact non pile file etc. non Impossibilit du consensus 04/04/13Displexity23
  • Page 24
  • 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 0 01 0 1 24
  • Page 25
  • 04/04/13Displexity25 Proc 1 Proc 0 01 1
  • Page 26
  • Une configuration bivalente et les suivantes monovalentes 04/04/13Displexity Q P 01 0 10 1 26
  • Page 27
  • Une configuration bivalente et les suivantes monovalentes 04/04/13Displexity Q P 01 0 10 1 R R Q P 01 0 10 1 R R Contradiction 27
  • Page 28
  • Une lecture et une criture ou deux critures sur le mme registres 04/04/13Displexity Q P 01 0 10 1 R/W W Q P 0 1 0 10 1 W Contradiction 28
  • Page 29
  • 2 critures sur des registres diffrents 04/04/13Displexity Q P 01 0 10 1 W W Q P 01 0 10 1 W W Contradiction 29
  • Page 30
  • Consensus WF pour 2 processus avec une file Init: 1, 0 04/04/13Displexity30
  • Page 31
  • 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 >n. Avec M registres on peut tout faire A-t-on besoin de M registres??? 04/04/13D">
  • n processus dont les identits 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
  • Page 41
  • 04/04/13Displexity41
  • Page 42
  • Moins de registres que de processus: problmes 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 ntre jamais vu 04/04/13Displexity42
  • Page 43
  • Pas de registres pr-allous: problme A et B excutent le mme code et crivent rptitivement dans le registre 1 puis le registre 2. A ne voit jamais les critures de B ( par contre B voit A) 04/04/13Displexity43
  • Page 44
  • N processus qui ont des identits dans 1..M avec M>>N Peut on tout faire avec moins de M registres?? Les registres ne peuvent pas tre allous suivant les noms des processus Peut on simuler le fait quil y a un registre SWMR par processus? 04/04/13Displexity44
  • Page 45
  • 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 accs exclusif un des 2n-1 registres auxquels il accde suivant son nom. Mais il faut dabord faire du renommage 04/04/13Displexity45
  • Page 46
  • Borne infrieure 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 excution o n-1 processus couvrent chacun un registre 04/04/13Displexity46
  • Page 47
  • N=6 04/04/13Displexity47 P Q R S T
  • Page 48
  • Borne infrieure Puis le dernier processus ralise une Ecriture en crivant dans les registres 04/04/13Displexity48 P Q R S T
  • Page 49
  • Borne infrieure Puis le dernier processus ralise une Ecriture en crivant dans les registres 04/04/13Displexity49 P Q R S T
  • Page 50
  • Borne infrieure Puis le dernier processus ralise une Ecriture en crivant dans les registres 04/04/13Displexity50 P Q R S T
  • Page 51
  • Borne infrieure Puis le dernier processus ralise une Ecriture en crivant dans les registres Ecriture termine 04/04/13Displexity51 P Q R S T
  • Page 52
  • Borne infrieure Les n-1 processus recouvrent les registres et lEcriture est perdue 04/04/13Displexity52
  • Page 53
  • Borne infrieure Il faut au moins n registres MWMR pour simuler n registres SWSR. 04/04/13Displexity53
  • Page 54
  • Autre approche On peut simuler (non blocking) n registres SWMR avec n registres MWMR 04/04/13Displexity54
  • Page 55
  • 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
  • Page 56
  • 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 + 1 56
  • Page 57
  • read(q): //lecture du registre de q View = Collect() return x such that (x; q; u) in View with maximal u 04/04/13Displexity57
  • Page 58
  • LA simulation non blocking permet de raliser toute tche wf ( qui tait possible avec un registre par processus) 04/04/13Displexity58
  • Page 59
  • Autres rsultats . La prochaine fois ! 04/04/13Displexity59
  • Page 60