WOW !! MUCH LOVE ! SO WORLD PEACE !
Fond bitcoin pour l'amélioration du site: 1memzGeKS7CB3ECNkzSn2qHwxU6NZoJ8o
  Dogecoin (tips/pourboires): DCLoo9Dd4qECqpMLurdgGnaoqbftj16Nvp


Home | Publier un mémoire | Une page au hasard

 > 

La tolérance aux pannes des algorithmes de partage de ressources dans les systèmes répartis et les réseaux Ad Hoc (simulation par ns-2)

( Télécharger le fichier original )
par Sami et Abdelmadjid Oubbati et Benarfa
Université Amar Telidji Laghouat - Ingénieur d'état en informatique 2010
  

précédent sommaire suivant

Bitcoin is a swarm of cyber hornets serving the goddess of wisdom, feeding on the fire of truth, exponentially growing ever smarter, faster, and stronger behind a wall of encrypted energy

3.2.5.2 Les messages utilisés

Dans cet algorithme, on utilise cinq types de messages:

- Demande (Jeton, i) : envoyé par le site i vers sa racine lors de la demande de la SC. - Libération (Jeton) : envoyé par le site i vers sa racine après la libération de sa SC.

- Accord (Jeton) : envoyé par une racine à un site demandeur pour lui permettre d'utiliser la ressource critique demandée.

- Requête (Jeton, i) : envoyé par une racine i pour demander un jeton supplémentaire d'un voisin.

- Aide (Jeton, i) : Réponse favorable à une requête d'un voisin.

3.2.5.3 Les procédures de l'algorithme

Procédure 1: Demander la Section Critique

1 Début

2

3

Etati ?-Demandeur;

Envoyer Demande (Jeton, i) à Racinei;

4 Fin

Cette procédure est utilisée lorsqu'un site simple appartenant à un arbre donné, désire d'entrer en section critique.

Procédure 2: Réception de Accord (Jeton)

1 Début

2

3

Etati ?-En SC;

< Entrer en Section Critique>

4 Fin

Lorsqu'un site de l'arbre a déjà envoyé une demande d'entrer en section critique, il va

recevoir un message de type Accord si sa racine possède au moins un jeton libre, lors de la réception de ce message, le site va mettre son état EN SC, et entre à la section critique.

Finsi

Procédure 3: Libérer la Section Critique

1 Début

Etati ?-Dehors;

Envoyer Libération (Jeton) à Racinei;

4 Fin

Cette procédure est utilisée si un site veut libérer la section critique.

Procédure 4: Réception de Libération (Jeton)

1 Début

2

Si Longueuri > 0 alors

3

Jeton Reçu ();

4

Sinon

5

Jetons_libresi ?- Jetons_libresi + 1;

6

Finsi

7 Fin

lorsque la racine reçoit une libération du jeton, elle va voir si sa file d'attente elle est vide, si c'est le cas elle va incrémenter son compteur de jetons libres, sinon elle va appeler la procédure Jeton_Reçu().

Procédure 5: Réception de Demande (Jeton, j)

1 Début

Si Jetons_libresi > 0 alors

Envoyer Accord (Jeton) à j;

Jetons_libresi ?- Jetons_libresi - 1;

2

3

Sinon

Si Jetons_presentsi = Longueuri alors

Envoyer Requête (Jeton, i) à voisin_droiti;

Finsi

Demandeursi ?- Demandeursi + {j}; Longueuri ?- Longueuri + 1;

2

3

4

5

6

7

8

9

10

11

12 Fin

Le site racine qui reçoit une demande d'un site dans l'arbre, il va accorder cette demande en envoyant un jeton, s'il détient des jetons libres. Dans le cas contraire, on a deux situations : si le nombre de jetons utilisés dans l'arbre permet de satisfaire les requêtes reçues au bout d'un temps fini, la racine va attendre la libération d'un jeton, si non, le site racine va demander un jeton supplémentaire d'un voisin dans l'anneau par l'envoi d'un message de type Requête, dans les deux cas, la demande sera ajoutée à la file d'attente.

Procédure 6: Réception de Requête (Jeton, j)

1 Début

Si Jetons_libresi > 0 alors

Utiliser le plus court chemin (j);

Jetons_libresi +- Jetons_libresi - 1; Jetons_presentsi +- Jetons_presentsi - 1;

Sinon

Si Jetons_presentsi > Longueuri alors

Demandeursi +- Demandeursi + {j}; Longueuri +- Longueuri + 1;

Sinon

Envoyer Requête (Jeton, j) à voisin_droiti;

Finsi

Finsi

14 Fin

Lorsqu'un site racine reçoit une requête d'un voisin, et il détient des jetons libres, il envoie un jeton vers le voisin demandeur via le plus court chemin pour minimiser le nombre de messages échangés. Si ce site ne détient pas des jetons libres, mais le nombre de jetons dans l'arbre est suffisant pour satisfaire toutes les requêtes au bout d'un temps fini, alors, la requête sera ajoutée à la file d'attente. Si non, le site va simplement propager la requête vers son voisin droit.

Procédure 7: Utiliser le plus court chemin(x : noeud)

1 Début

Distance +- i - x;

Si Distance < 0 alors

Si Distance ~ -K / 2 alors

Envoyer Aide (Jeton, j) à voisin_droiti;

2

3

4

5

6

7

8

9

10

11

12

13

Sinon

Envoyer Aide (Jeton, j) à voisin_gauchei;

Finsi

Sinon

Si Distance > K / 2 alors

Envoyer Aide (Jeton, j) à voisin_droiti;

Sinon

Envoyer Aide (Jeton, j) à voisin_gauchei;

Finsi

Finsi

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16 Fin

Cette procédure représente la stratégie qui nous permet d'améliorer la complexité en nombre de messages, cette procédure est utilisée pour envoyer le jeton via le plus court chemin, le site racine qui va répondre favorablement à la requête de son voisin, doit calculer

la distance, qui est le nombre d'arêtes qui les séparent, si cette distance est inférieure à K/2, le jeton sera donc envoyé vers le voisin gauche (retour en arrière), si non, le jeton sera envoyé vers le voisin droit.

2

3

4

5

6

7

8

9

10

11

12

13

14

Procédure 8: Réception de Aide (Jeton, j)

1 Début

2

Si i =6 j alors

3

Utiliser le plus court chemin (j);

4

Sinon

5

 

Si Longueuri > 0 alors

6

 
 

Jetons_presentsi +- Jetons_presentsi + 1;

7

 
 

Jeton Reçu ();

8

 

Sinon

9

 
 

Jetons_libresi +- Jetons_libresi + 1;

10

 
 

Jetons_presentsi +- Jetons_presentsi + 1;

11

 

Finsi

12

Finsi

13 Fin

Après l'envoi d'un jeton vers un voisin, le jeton peut passer par plusieurs sites avant d'atteindre sa destination, ces sites peuvent être aussi des sites demandeurs, pour cela, on doit garantir que chaque jeton doit être utilisé par son demandeur. Le message Aide désigne l'identité du demandeur, le site qui reçoit ce message va comparer son identité avec celle de demandeur qui se trouve dans le message, dans le cas où les identités sont différentes, le site doit propager le jeton vers le voisin adéquat en utilisant le plus court chemin.

Procédure 9: Jeton Reçu ()

1 Début

Q +- la_tete_de_la_file_d'attente; Supprimer la tête de la file d'attente; Longueuri +- Longueuri - 1;

Si Q = Site_Racine alors

Utiliser le plus court chemin (Q); Jetons_presentsi +- Jetons_presentsi - 1;

Finsi

Si Q = Site_Simple alors

Envoyer Accord (Jeton) à Q;

Finsi

Si Q = i alors

Etati +-En SC;

< Entrer en Section Critique>

Finsi

15

16 Fin

Lorsqu'un site racine reçoit un jeton à partir d'un voisin ou d'un site de l'arbre, il doit mettre à jour ses variables locales. Si la file d'attente des sites demandeurs n'est pas vide, on doit donc satisfaire la plus ancienne requête dans cette file en appliquant la procédure Jeton_Reçu.

- 1er cas : la tête de la file est un site racine, le site doit donc envoyer le jeton vers le site demandeur et doit encore mettre à jour les deux variables : Jetons libres et Jetons présents.

- 2ème cas : la tête de la file d'attente est un site régulier dans l'arbre, la racine va envoyer le jeton et mettre à jour la variable Jetons_libres.

- 3ème cas : le site demandeur est la racine elle-même, cette situation nous amène à décrire le comportement d'un site racine lorsqu'il désire entrer en SC, donc il passe directement en SC.

2

3

4

5

6

7

8

9

10

11

Procédure 10: Demande de la Section Critique par une racine

1 Début

Si Jetons_libresi > 0 alors

Jetons_libresi ?- Jetons_libresi - 1; Etati ?-En SC;

< Entrer en Section Critique>

Sinon

Si Jetons_presentsi = Longueuri alors

Envoyer Requête (Jeton, i) à voisin_droiti; Finsi

Demandeursi ?- Demandeursi + {i}; Longueuri ?- Longueuri + 1;

Finsi

12

13 Fin

Lorsqu'une racine veut entrer en SC.

Finsi

Procédure 11: Libération de la Section Critique par une racine

1 Début

Etati +-Dehors;

Si Longueuri > 0 alors

Q +- la_tete_de_la_file_d'attente;

Supprimer la tête de la file d'attente;

Longueuri +- Longueuri - 1;

Si Q = Site_Racine alors

Utiliser le plus court chemin (Q);

Jetons_presentsi +- Jetons_presentsi - 1;

Finsi

Si Q = Site_Simple alors

Envoyer Accord (Jeton) à Q;

Finsi

Sinon

Jetons_libresi +- Jetons_libresi + 1;

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17 Fin

Si un site racine veut libérer la SC. 3.2.6 Preuve de l'algorithme

précédent sommaire suivant






Bitcoin is a swarm of cyber hornets serving the goddess of wisdom, feeding on the fire of truth, exponentially growing ever smarter, faster, and stronger behind a wall of encrypted energy








"Un démenti, si pauvre qu'il soit, rassure les sots et déroute les incrédules"   Talleyrand