Vous êtes sur la page 1sur 13

Systèmes Distribués

Chapitre 2 : Synchronisation dans les systèmes distribués


Exclusion mutuelle fondée sur l’unicité d’un jeton

Fateh Latreche
NTIC
fateh.latreche@univ-constantine2.dz

Université Constantine 2 2020/2021. Semestre 1


Systèmes Distribués

Chapitre 2 : Synchronisation dans les systèmes distribués


Exclusion mutuelle fondée sur l’unicité d’un jeton

Fateh Latreche
NTIC
fateh.latreche@univ-constantine2.dz

Étudiants concernés :
Faculté/Institut Département Niveau Spécialité

Nouvelles technologies TLSI Master 1 GL

Université Constantine 2 2020/2021. Semestre 1


Principe
Gestion de déplacement du jeton
Algorithme à base de mouvement perpétuel
Algorithme à base de requêtes

Le droit d’accéder à la section critique est matérialisé par un


jeton ;
Les sites peuvent transmettre le jeton (le jeton se déplace) ;
L’unicité du jeton garantit l’exclusion mutuelle ;
Le problème est : comment garantir la vivacité ?

Université Constantine 2 c Fateh Latreche


2 / 12
Principe
Gestion de déplacement du jeton
Algorithme à base de mouvement perpétuel
Algorithme à base de requêtes

Pour garantir la vivacité le jeton doit visiter séquentiellement tous


les site demandeurs :
1 Mouvement perpétuel :

les sites sont placés sur une structure de communication que


parcourt le jeton,
quand le jeton arrive à un site qui est à l’état dehors il passe
au suivant,
si le site est à l’état demandeur, le site entre en SC ;
le jeton ne passe au site suivant que lors de sa sortie de la SC.
2 Les sites envoient des requêtes pour atteindre le jeton. Deux
méthodes sont utilisées :
Diffusion systématique ;
Utilisation d’une arborescence.

Université Constantine 2 c Fateh Latreche


3 / 12
Principe
Gestion de déplacement du jeton
Algorithme de Lann
Algorithme à base de mouvement perpétuel
Algorithme à base de requêtes

Lors d’un appel à acquérir


étati :=demandeur ;
attendre(jetonDispi ) ;
étati := dedans ;
Lors d’un appel à libérer
étati :=dehors ;
jetonDispi := faux ;
envoyer jeton au suivant
Lors de la réception du jeton
si étati = demandeur alors jetonDispi := vrai :
sinon envoyer jeton au suivant ;
fsi

Université Constantine 2 c Fateh Latreche


4 / 12
Principe
Gestion de déplacement du jeton
Algorithme de Lann
Algorithme à base de mouvement perpétuel
Algorithme à base de requêtes

Caractéristiques :
Un algorithme à base de mouvement perpétuel ;
L’algorithme peut nécessiter une infinité de messages si aucun
des sites ne veut enter en SC ;
Si un seul site veut utiliser la SC et le jeton se trouve juste
après ce site, il faut n-1 messages ;
Dans les autres cas le nombre de messages varie entre 0 et
n-1 ;

Université Constantine 2 c Fateh Latreche


5 / 12
Principe
Gestion de déplacement du jeton Algorithme de Suzuki et Kasami (version initiale)
Algorithme à base de mouvement perpétuel Algorithme de Suzuki et Kasami (version finale)
Algorithme à base de requêtes

Un algorithme à base de diffusion systématique ;


Un site demandeur qui ne possède pas le jeton, diffuse un
message de requête vers les autres sites ;
Tout site i est doté d’un tableau nbreqi : [1..n] d’entiers
croissants init à (0...0 ), nbreqi [j] est le nombre de requêtes
faites par j et connues par i ;
Le jeton est un tableau : jeton :[1..n] d’entiers init à 0, jeton[i]
contient le nombre d’utilisation de la SC par le site i ;
Seul le site i peut modifier l’entrée jeton[i].

Université Constantine 2 c Fateh Latreche


6 / 12
Principe
Gestion de déplacement du jeton Algorithme de Suzuki et Kasami (version initiale)
Algorithme à base de mouvement perpétuel Algorithme de Suzuki et Kasami (version finale)
Algorithme à base de requêtes

Lors d’un appel à acquérir


étati := demandeur ;
si non ( jetonDispi ) alors
nbreqi [i] := nbreqi [i]+1 ;
∀j 6= i :envoyer requête à j ;
attendre(jetonDispi ) ;
fsi ;
étati :=dedans ;

Université Constantine 2 c Fateh Latreche


7 / 12
Principe
Gestion de déplacement du jeton Algorithme de Suzuki et Kasami (version initiale)
Algorithme à base de mouvement perpétuel Algorithme de Suzuki et Kasami (version finale)
Algorithme à base de requêtes

Lors d’un appel à libérer


étati := dehors ;
jeton[i] :=nbreqi [i] ;
pour j de i+1 à n puis de 1 à i-1
si ( nbreqi [j]>jeton[j] ) alors
jetonDispi := faux ;
envoyer jeton à j ;
exit boucle.
finsi ;

Université Constantine 2 c Fateh Latreche


8 / 12
Principe
Gestion de déplacement du jeton Algorithme de Suzuki et Kasami (version initiale)
Algorithme à base de mouvement perpétuel Algorithme de Suzuki et Kasami (version finale)
Algorithme à base de requêtes

Lors de la réception de jeton


jetonDispi := vrai ;
Lors de la réception de requête (j,n)
nbreqi [j] := nbreqi [j] + 1 ;
si jetonDispi et (étati = dehors) et (nbreqi [j]>jeton[j]) alors
jetonDispi := faux ;
envoyer jeton à j
fsi

Université Constantine 2 c Fateh Latreche


9 / 12
Principe
Gestion de déplacement du jeton Algorithme de Suzuki et Kasami (version initiale)
Algorithme à base de mouvement perpétuel Algorithme de Suzuki et Kasami (version finale)
Algorithme à base de requêtes

Lors d’un appel à acquérir


étati := demandeur ;
si non ( jetonDispi ) alors
nbreqi [i] := nbreqi [i]+1 ;
∀j 6= i :envoyer requête(i, nbreqi [i]) à j ;
attendre(jetonDispi ) ;
fsi ;
étati :=dedans ;

Université Constantine 2 c Fateh Latreche


10 / 12
Principe
Gestion de déplacement du jeton Algorithme de Suzuki et Kasami (version initiale)
Algorithme à base de mouvement perpétuel Algorithme de Suzuki et Kasami (version finale)
Algorithme à base de requêtes

Lors d’un appel à libérer


étati := dehors ;
jeton[i] :=nbreqi [i] ;
pour j de i+1 à n puis de 1 à i-1
si ( nbreqi [j]>jeton[j] ) alors
jetonDispi := faux ;
envoyer jeton à j ;
exit boucle.
finsi ;

Université Constantine 2 c Fateh Latreche


11 / 12
Principe
Gestion de déplacement du jeton Algorithme de Suzuki et Kasami (version initiale)
Algorithme à base de mouvement perpétuel Algorithme de Suzuki et Kasami (version finale)
Algorithme à base de requêtes

Lors de la réception de jeton


jetonDispi := vrai ;
∀ j : nbreqi [j] :=max(nbreqi [j], jeton[j])
Lors de la réception de requête (j,n)
nbreqi [j] := max(nbreqi [j], n) ;
si jetonDispi et (étati = dehors) et (nbreqi [j]>jeton[j]) alors
jetonDispi := faux ;
envoyer jeton à j
fsi

Université Constantine 2 c Fateh Latreche


12 / 12

Vous aimerez peut-être aussi