4.2.2 Les procédures de l'algorithme
Procédure : Demander la Section
Critique
Environnement : AD HOC
1 Début
2
3
Etati ?-Demandeur;
Envoyer Demande (Jeton, i) à Racinei; 4
Fin
2
3
2
3
Finsi
Procédure : Réception de Accord
(Jeton)
Environnement : AD HOC
1 Début
Etati ?-En SC;
< Entrer en Section Critique>
4 Fin
Procédure : Libérer la Section
Critique
Environnement : AD HOC 1 Début
Etati ?-Dehors;
Envoyer Libération (Jeton) à
Racinei;
4 Fin
Procédure : Réception de Demande (Jeton,
j)
Environnement : AD HOC
1 Début
Si Jetons_libresi > 0
alors
Envoyer Accord (Jeton) à j;
Jetons_libresi ?-
Jetons_libresi - 1;
Sinon
Si Jetons_presentsi = Longueuri
alors
Envoyer Requête (Jeton, i) à
voisin_droiti;
Sinon
Envoyer Recherche (Jeton, i) à
voisin_droiti;
Finsi
Demandeursi ?- Demandeursi +
{j};
Longueuri ?- Longueuri +
1;
2
3
4
5
6
7
8
9
10
11
12
13
14 Fin
Procédure : Réception la Recherche (Jeton,
j)
Environnement : AD HOC
1 Début
Si Jetons_libresi > 0
alors
Envoyer Aide (Jeton, j) à j;
Jetons_libresi ?-
Jetons_libresi - 1;
Jetons_presentsi ?- Jetons_presentsi -
1;
2
3
4
5
6
7
8
9
10
Sinon
Si i =6 j
alors
Envoyer Recherche (Jeton, j) à
voisin_droiti; Finsi
Finsi
11 Fin
Procédure : Réception de Requête
(Jeton, j)
Environnement : AD HOC 1 Début
2
|
Si Jetons_libresi > 0
alors
|
3
|
|
Envoyer Aide (Jeton, j) à j;
|
4
|
|
Jetons_libresi ?-
Jetons_libresi - 1;
|
5
|
|
Jetons_presentsi ?-
Jetons_presentsi - 1;
|
6
|
Sinon
|
7
|
|
Si Jetons_presentsi >
Longueuri alors
|
8
|
|
|
Demandeursi ?- Demandeursi +
{j};
|
9
|
|
|
Longueuri ?- Longueuri +
1;
|
10
|
|
Sinon
|
11
|
|
|
Si i =6 j
alors
|
12
|
|
|
Envoyer Requête (Jeton, j) à
voisin_droiti;
|
13
|
|
|
Finsi
|
14
|
|
Finsi
|
15
|
Finsi
|
16 Fin
2
3
4
5
6
7
8
Procédure : Réception de Aide (Jeton,
j)
Environnement : AD HOC
1 Début
Si Longueuri > 0
alors
Jetons_presentsi +-
Jetons_presentsi + 1; Jeton Reçu
();
Sinon
Jetons_libresi +-
Jetons_libresi + 1;
Jetons_presentsi +- Jetons_presentsi +
1;
Finsi
2
3
4
5
6
9 Fin
Procédure : Réception de Libération
(Jeton)
Environnement : AD HOC
1 Début
Si Longueuri > 0
alors Jeton Reçu ();
Sinon
Jetons_libresi +-
Jetons_libresi + 1;
Finsi
2
3
4
5
6
7
8
9
10
11
12
13
14
7 Fin
Procédure : Jeton Reçu ()
Environnement : AD HOC
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
Envoyer Aide (Jeton, j) à 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
Finsi
Finsi
Procédure : Demande de la Section Critique par une
racine
Environnement : AD HOC
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;
13 Fin
Procédure : Libération de la Section
Critique par une racine
Environnement : AD HOC
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
Envoyer Aide (Jeton, j) à Q;
Jetons_presentsi ?-
Jetons_presentsi - 1;
2
3
4
5
6
7
8
9
10
11
12
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
|