1 / 62

Mémoire partagée avec peu de registres

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

kyne
Télécharger la présentation

Mémoire partagée avec peu de registres

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Mémoire partagée avec peu de registres Displexity

  2. Système distribué • Processus • Communication/coopération: • Par messages • Par objets ( mémoire partagée== par registres) Displexity

  3. Displexity

  4. 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

  5. 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

  6. Implémenter les objets • Correction • Progression ( aussi valable pour les tâches,….) Displexity

  7. 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

  8. 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

  9. SURE, REGULIER, ATOMIQUE WRITE( 4) WRITE( 5) READ 5 Displexity

  10. SURE, REGULIER, ATOMIQUE WRITE( 4) WRITE( 5) READ 5 WRITE( 4) WRITE( 5) READ Displexity

  11. SÛRE WRITE( 4) WRITE( 5) READ 4 ou 5 ou 87 !!! Displexity

  12. REGULIER WRITE( 4) WRITE( 5) READ 4 ou 5 Displexity

  13. REGULIER WRITE( 4) WRITE( 5) READ READ 4 ou 5 4 ou 5 Displexity

  14. ATOMIQUE WRITE( 4) WRITE( 5) READ READ 5 4 Displexity

  15. ATOMIQUE WRITE( 4) WRITE( 5) READ 5 5 WRITE( 4) WRITE( 5) Displexity

  16. 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

  17. 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

  18. 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

  19. 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

  20. 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

  21. 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

  22. Wait free • Un processus, s’il fait des pas, (quoi que fassent les autres) peut toujours finir son opération • Très fort Displexity

  23. 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

  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) 01 Proc 1 Proc 0 0 1 Displexity

  25. Proc 1 Proc 0 1 0 1 Displexity

  26. Une configuration bivalente et les suivantes monovalentes 01 Q P 0 1 Displexity

  27. Une configuration bivalente et les suivantes monovalentes 01 01 R’ R R’ R Q Q P P 0 1 0 1 Contradiction Displexity

  28. 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

  29. 2 écritures sur des registres différents 01 01 W’ W W’ W Q Q P P 0 1 0 1 Contradiction Displexity

  30. Consensus WF pour 2 processus avec une file • Init: 1, 0 Displexity

  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]} Displexity

  32. 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

  33. Non blocking • Parmi les processus un d’entre eux finit son opération • Les autres peuvent être bloqués Displexity

  34. 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

  35. Cette implémentation n’est pas atomique Update (11) 1 Update (22) 2 3 (0, 22) Displexity

  36. 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

  37. 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

  38. 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

  39. 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

  40. 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

  41. Displexity

  42. 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

  43. 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

  44. 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

  45. 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

  46. 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

  47. N=6 P Q R S T Displexity

  48. Borne inférieure • Puis le dernier processus réalise une Ecriture en écrivant dans les registres P Q R S T Displexity

  49. Borne inférieure • Puis le dernier processus réalise une Ecriture en écrivant dans les registres P Q R S T Displexity

  50. Borne inférieure • Puis le dernier processus réalise une Ecriture en écrivant dans les registres P Q R S T Displexity

More Related