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

Post on 03-Apr-2015

111 views 1 download

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

Displexity1

S

Mémoire partagée avec peu de

registres

04/04/13

Displexity2

Système distribué

Processus

Communication/coopération: Par messages Par objets ( mémoire partagée== par registres)

04/04/13

Displexity304/04/13

Displexity4

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

Displexity5

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

Displexity6

Implémenter les objets

Correction

Progression ( aussi valable pour les tâches,….)

04/04/13

Displexity7

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

04/04/13

Displexity8

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)

04/04/13

Displexity9

SURE, REGULIER, ATOMIQUE

04/04/13

WRITE( 4)

WRITE( 5)

READ 5

Displexity10

SURE, REGULIER, ATOMIQUE

04/04/13

WRITE( 4)

WRITE( 5)

READ

WRITE( 4) WRITE( 5) READ

5

Displexity11

SÛRE

04/04/13

WRITE( 4)

WRITE( 5)

READ

4 ou 5 ou 87 !!!

Displexity12

REGULIER

04/04/13

WRITE( 4)

WRITE( 5)

READ

4 ou 5

Displexity13

REGULIER

04/04/13

WRITE( 4)

WRITE( 5)

READREAD

4 ou 5 4 ou 5

Displexity14

ATOMIQUE

04/04/13

WRITE( 4)

WRITE( 5)

READREAD

5 4

15

ATOMIQUE

04/04/13 Displexity

WRITE( 4)

WRITE( 5)

READ

WRITE( 4) WRITE( 5)5 5

Displexity16

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

04/04/13

Displexity17

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

04/04/13

Displexity18

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

Displexity19

Années : 85-90

A partir d’un 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/13

Displexity20

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

04/04/13

Displexity21

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 les decide retournent l’argument du premier decide

04/04/13

Displexity22

Wait free

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

04/04/13

Displexity23

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

Displexity24

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

Proc 1Proc 0

0 1

0 1

Displexity2504/04/13

Proc 1Proc 0

0 1

1

Displexity26

Une configuration bivalente et les suivantes monovalentes

04/04/13

QP

0 1

0 1

Displexity27

Une configuration bivalente et les suivantes monovalentes

04/04/13

QP0 1

0 1

R R’QP

0 1

0 1

R R’

Contradiction

Displexity28

Une lecture et une écriture ou deux écritures sur le même registres

04/04/13

QP0 1

0 1

R/W W’QP

0 1

0 1

R/W W’

Contradiction

29

2 écritures sur des registres différents

04/04/13 Displexity

QP0 1

0 1

W W’QP

0 1

0 1

W W’

Contradiction

Displexity30

Consensus WF pour 2 processus avec une file

Init: 1, 0

04/04/13

Displexity31

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

Displexity32

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

Displexity33

Non blocking

Parmi les processus un d’entre eux finit son opération Les autres peuvent être bloqués

04/04/13

Displexity34

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

Displexity35

Cette implémentation n’est pas atomique

04/04/13

1

2

3

Update (11)

Update (22)

(0, 22)

Displexity36

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

Displexity37

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

Displexity38

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

Displexity39

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

Displexity40

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

Displexity4104/04/13

Displexity42

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

Displexity43

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

Displexity44

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?

04/04/13

Displexity45

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 d’abord faire du renommage

04/04/13

Displexity46

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

Displexity47

N=6

04/04/13

P Q R S T

48

Borne inférieure

Puis le dernier processus réalise une Ecriture en écrivant dans les registres

04/04/13 Displexity

P Q R S T

49

Borne inférieure

Puis le dernier processus réalise une Ecriture en écrivant dans les registres

04/04/13 Displexity

P Q R S T

50

Borne inférieure

Puis le dernier processus réalise une Ecriture en écrivant dans les registres

04/04/13 Displexity

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/13 Displexity

P Q R S T

52

Borne inférieure

Les n-1 processus recouvrent les registres et l’Ecriture est perdue

04/04/13 Displexity

Displexity53

Borne inférieure

Il faut au moins n registres MWMR pour simuler n registres SWSR.

04/04/13

Displexity54

Autre approche

On peut simuler (non blocking) n registres SWMR avec n registres MWMR

04/04/13

Displexity55

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

Displexity5604/04/13

Write( x):1 v = (x; p; k) //valeur, processus, numero2 next = 03 View = View U {v}4 do5 Snap = NBScan()6 View = Snap U View7 write(R[next]; V iew)8 next = (next + 1) mod m9 until (card {r s.t v in Snap[r])}=n)10 k = k + 1

Displexity57

read(q): //lecture du registre de q

View = Collect()

return x such that (x; q; u) in View with maximal u

04/04/13

Displexity58

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

04/04/13

Displexity59

Autres résultats ….

La prochaine fois !

04/04/13

Displexity60

Résultats connus

(Modèle où il n’y 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 l’exclusion mutuelle ( Burn et Lynch (Information and Computation 1993)

04/04/13

Displexity61

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

Displexity62

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

04/04/13