La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

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

Présentations similaires


Présentation au sujet: "Mémoire partagée avec peu de registres 04/04/13Displexity1."— Transcription de la présentation:

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

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

3 04/04/13Displexity3

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 04/04/13Displexity4

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)) 04/04/13Displexity5

6 Implémenter les objets Correction Progression ( aussi valable pour les tâches,….) 04/04/13Displexity6

7 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

8 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

9 SURE, REGULIER, ATOMIQUE 04/04/13Displexity WRITE( 4) WRITE( 5) READ 5 9

10 SURE, REGULIER, ATOMIQUE 04/04/13Displexity WRITE( 4) WRITE( 5) READ WRITE( 4)WRITE( 5) READ 5 10

11 SÛRE 04/04/13Displexity WRITE( 4) WRITE( 5) READ 4 ou 5 ou 87 !!! 11

12 REGULIER 04/04/13Displexity WRITE( 4) WRITE( 5) READ 4 ou 5 12

13 REGULIER 04/04/13Displexity WRITE( 4) WRITE( 5) READ 4 ou 5 13

14 ATOMIQUE 04/04/13Displexity WRITE( 4) WRITE( 5) READ 54 14

15 ATOMIQUE 04/04/13Displexity WRITE( 4) WRITE( 5) READ WRITE( 4) WRITE( 5) 5 5 15

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 dopérations ainsi obtenue respecte la spécification séquentielle 04/04/13Displexity16

17 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

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 04/04/13Displexity18

19 Années : 85-90 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

20 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

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, Objet: Spécification séquentielle :Tous les decide retournent largument du premier decide 04/04/13Displexity21

22 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

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 04/04/13Displexity23

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

25 04/04/13Displexity25 Proc 1 Proc 0 01 1

26 Une configuration bivalente et les suivantes monovalentes 04/04/13Displexity Q P 01 0 10 1 26

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

28 Une lecture et une écriture ou deux écritures sur le même registres 04/04/13Displexity Q P 01 0 10 1 R/W W Q P 0 1 0 10 1 W Contradiction 28

29 2 écritures sur des registres différents 04/04/13Displexity Q P 01 0 10 1 W W Q P 01 0 10 1 W W Contradiction 29

30 Consensus WF pour 2 processus avec une file Init: 1, 0 04/04/13Displexity30

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

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 04/04/13Displexity32

33 Non blocking Parmi les processus un dentre eux finit son opération Les autres peuvent être bloqués 04/04/13Displexity33

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 ) 04/04/13Displexity34

35 Cette implémentation nest pas atomique 04/04/13Displexity35 1 2 3 Update (11) Update (22) (0, 22)

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 04/04/13Displexity36

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 04/04/13Displexity37

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 04/04/13 Displexity38

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 ???? 04/04/13Displexity39

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??? 04/04/13Displexity40

41 04/04/13Displexity41

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 04/04/13Displexity42

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) 04/04/13Displexity43

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 quil y a un registre SWMR par processus? 04/04/13Displexity44

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

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 04/04/13Displexity46

47 N=6 04/04/13Displexity47 P Q R S T

48 Borne inférieure Puis le dernier processus réalise une Ecriture en écrivant dans les registres 04/04/13Displexity48 P Q R S T

49 Borne inférieure Puis le dernier processus réalise une Ecriture en écrivant dans les registres 04/04/13Displexity49 P Q R S T

50 Borne inférieure Puis le dernier processus réalise une Ecriture en écrivant dans les registres 04/04/13Displexity50 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/13Displexity51 P Q R S T

52 Borne inférieure Les n-1 processus recouvrent les registres et lEcriture est perdue 04/04/13Displexity52

53 Borne inférieure Il faut au moins n registres MWMR pour simuler n registres SWSR. 04/04/13Displexity53

54 Autre approche On peut simuler (non blocking) n registres SWMR avec n registres MWMR 04/04/13Displexity54

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

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

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

58 LA simulation non blocking permet de réaliser toute tâche wf ( qui était possible avec un registre par processus) 04/04/13Displexity58

59 Autres résultats …. La prochaine fois ! 04/04/13Displexity59

60 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

61 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

62 Mais les algorithmes connus pour le consensus randomisé et pour les estampilles wf utilisent n ou n-1 registres…. 04/04/13Displexity62


Télécharger ppt "Mémoire partagée avec peu de registres 04/04/13Displexity1."

Présentations similaires


Annonces Google