Vous êtes sur la page 1sur 9

02/11/2010 Exclusion mutuelle : algorithme de Ma…

Exclusion mutuelle : algorithme de Maekawa


Référence
M. Maekawa, A.E Oldehoeft et R.R Oldehoeft
Operating systems : advanced concepts
The Benjamin/Cummings Publishing Company, 1987 (pp. 211-230)

Introduction
Dans les algorithmes de Lamport et de Ricart/Agrawala, un composant peut donner la permission d'entrer en
section critique à plusieurs autres simultanément. Dans l'algorithme de Maekawa, chaque participant ne peut
donner sa permission qu'à un seul à la fois: il a ainsi la charge d'arbitrer un certain nombre de conflits
susceptibles d'apparaître entre différents participants. Il va se soi que cela impose au partcipant à qui cette
permission a été donnée de la restituer spontanément une fois qu'il ne l'utilise plus, c'est-à-dire lorsqu'il sort de
sa section critique (a priori, la permission n'est valable que pour une seule entrée).
Chaque site i dispose d'un ensemble RS («request set») de sites, que nous noterons RSi , dont il doit obtenir
l'accord avant de pouvoir entrer en section critique.
Comme c'est le cas de tous les algorithmes basés sur la stratégie de l'arbitrage, les différents ensembles
doivent satisfaire la condition suivante qui assure que pour tout couple de sites, un site au moins est
susceptible d'arbitrer les conflits entre ces deux sites :

Afin de minimiser le trafic de messages et le travail des sites tant dans leur fonction d'arbitre que dans celle
de clients du service d'exclusion mutuelle et demander le même effort à tous les sites de ces deux points de
vue, l'algorithme impose les conditions suivantes en cherchant à y minimiser les valeurs des constantes K et
D:

Propriétés et problèmes
Le calcul des ensembles RSi
Examinons les relations entre les constantes N (nombre de sites), K (cardinal des différents ensembles
d'arbitres) et D (nombre d'ensembles d'arbitres auquel chaque site appartient) dans le cas où les différentes
conditions énoncées précédemment peuvent >re satisfaites.
La constitution des N ensembles d'arbitres (supposés contenir chacun K éléments avec duplication possible)
nécessite N.K éléments.
Chacun est donc dupliqué K fois et K = D
Considérons un ensemble d'arbitres: il contient K éléments, chacun de ces éléments, pouvant lui-m&gme
appartenir à (D-1)=(K-1) autres ensembles d'arbitres. Cela signifie qu'il existe en plus de l'ensemble d'arbitres
considéré K.(K-1) autres ensembles d'arbitres. Le nombre total d'ensembles d'arbitres est exactement le
nombre total de sites, c'est-à-dire N.
On a donc N=K.(K-1)+1. La valeur de N est donc approximativement N1/2.
On peut montrer (voir Albert et Sandler) qu'il est possible de calculer des ensembles d'arbitres satisfaisant les
conditions énoncées
si (K-1) est puissance d'un nombre premier, c'est-à-dire 1, 2, 3, 4, 5, 7, 8, 9, 11, ...

www.pps.jussieu.fr/…/maekawa.html 1/9
02/11/2010 Exclusion mutuelle : algorithme de Ma…
Cela correspond aux valeurs de N = K.(K-1)+1 suivantes: 3, 7, 13, 21, 31, 57, 73, 91, 133, ..
Commençons par calculer les ensembles d'arbitres RSi dans les cas favorables permettant l'optimalité.
Considérons une matrice carré d'ordre (K-1) premier (les indices commençant à 0 par commodité). Il est tout
d'abord possible de générer K groupes de (K-1) ensembles, les (K-1) ensembles d'un m&gme groupe étant
disjoints (tous les ensembles contiennent (K-1) éléments):

(K-1) lignes disjointes


(K-1) colonnes disjointes
(K-1) diagonales réelles (en avançant de 1 modulo [K-1] sur l'indice de colonne) :
{(0,0), (1,1), ..., (K-2,K-2)}
{(0,1), (1,2), ..., (K-2,(K-1)%(K-1)=0}
{(0,2), (1,3), ..., (K-2, K%K=1), (K-1, (K+1)%K =2)}
..................................
{(0, K-2), (1,0), ...(K-2,K-3)}
(K-1) diagonales en sautant de 2 (en avançant de 2 modulo [K-1] sur l'indice de colonne) :
{(0,0), (1,2), (2,4) ..., }
{(0,1), (1,3), (2,4) ..., }
{(0,2), (1,4), (2,6) ..., }
..................................
{(0, K-2), (1,1), ...}
......................
diagonales en sautant de (K-2) (en avançant de ([K-2] modulo (K-1)) sur l'indice de colonne :
{(0,0), (1,K-2), ..., }
{(0,1), (1,0), ..., }
..................................
{(0,K-2), (1,K-3), ..., }

Pour construire les ensembles d'arbitres, on considère les K premiers nombres entiers (1, 2, 3, ..., K).

on combine 1 avec chacune des (K-1) lignes


on combine 2 avec chacune des (K-1) colonnes
on combine 3 avec chacune des (K-1) diagonales avec saut de 1
on combine 4 avec chacune des (K-1) diagonales avec saut de 2
..................................
on combine K avec chacune des (K-1) diagonales avec saut de (K-2)

On obtient ainsi K.(K-1) ensembles satifaisant. Celui qui manque est {1, 2, ..., K}.
Appliquons cela pour K=6 (N=31).
On construit la matrice 5x5 contenant les 25 nombres 7, 8, 9, ...,31 = K.(K-1)+1.

La construction des 4 différents groupes de diagonales (G1, G2, G3 et G4) donne :

On peut constater que chacun des 25 nombres 7, 8, ..., 31 figure une fois et une seule dans chacun de ces 4
groupes : les 5 ensembles de 5 éléments de chaque groupe sont disjoints deux à deux. Il en est bien sûr de
m&gme, par construction, d'une part pour les différentes lignes (groupe GL d'ensembles) et d'autre part des
différentes colonnes (groupe GC d'ensembles).
Enfin, l'ensemble de 6 entiers {1,2,3,4,5,6} est naturellement disjoint des 30 autres ensembles précédents.
On peut aussi vérifier que l'intersection de deux ensembles pris dans deux groupes différents parmi les 6
groupes de 5 entiers contient exactement un élément.

www.pps.jussieu.fr/…/maekawa.html 2/9
02/11/2010 Exclusion mutuelle : algorithme de Ma…
Une solution pour les 31 ensembles d'arbitres satisfaisant la condition d'optimalité pour un ensemble de 31
sites (quels que soient les sites, il existe un seul site arbitrant le conflit entre ces deux sites) est donnée ci-
dessous. A chaque étape on y a fait apparaitre la liste des 31 sites: un ensemble d'arbitres a déjà été associé
à ceux qui sont en rouge. Lorsqu'un nouvel ensemble d'arbitres est construit, il est associé au premier de ses
éléments (donc en vert dans la liste) auquel il n'a pas encore été associé un ensemble RS.

RS1 = {1, 2, 3, 4, 5, 6}
[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
28 29 30 31]
ajouter 1 à chacun des 5 ensembles du groupe GL (les lignes) :
RS7 = {1, 7, 8, 9, 10, 11}
[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
27 28 29 30 31]
RS12 = {1, 12, 13, 14, 15, 16}
[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
27 28 29 30 31]
RS17 = {1, 17, 18, 19, 20, 21}
[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
27 28 29 30 31]
RS22 = {1, 22, 23, 24, 25, 26}
[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
27 28 29 30 31]
RS27 = {0, 27, 28, 29, 30, 31}
[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
27 28 29 30 31]
ajouter 2 à chacun des 5 ensembles du groupe GC (les colonnes) :
RS2 = {2, 7, 12, 17, 22, 27}
[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
27 28 29 30 31]
RS8 = {2, 8, 13, 18, 23, 28}
[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
27 28 29 30 31]
RS9 = {2, 9, 14, 19, 24, 29}
[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
27 28 29 30 31]
RS10 = {2, 10, 15, 20, 25, 30}
[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
27 28 29 30 31]
RS11 = {2, 11, 16, 21, 26, 31}
[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
27 28 29 30 31]
ajouter 3 à chacun des 5 ensembles du groupe G1 (les diagonales d'ordre 1):
RS3 = {3, 7, 13, 19, 25, 31}
[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
27 28 29 30 31]
RS14 = {3, 8, 14, 20, 26, 27}
[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
27 28 29 30 31]
RS15 = {3, 9, 15, 21, 22, 28}
[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
27 28 29 30 31]
RS16 = {3, 10, 16, 17, 23, 29}
[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
27 28 29 30 31]
RS18 = {3, 11, 12, 18, 24, 30}
[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
27 28 29 30 31]

ajouter 4 à chacun des 5 ensembles du groupe G2 (les diagonales d'ordre 2) :


RS4 = {4, 7, 14, 21, 23, 30}
[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
27 28 29 30 31]
RS24 = {4, 8, 15, 17, 24, 31}
[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26

www.pps.jussieu.fr/…/maekawa.html 3/9
02/11/2010 Exclusion mutuelle : algorithme de Ma…
27 28 29 30 31]
RS25 = {4, 9, 16, 18, 25, 27}
[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
27 28 29 30 31]
RS19 = {4, 10, 12, 19, 26, 28}
[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
27 28 29 30 31]
RS13 = {4, 11, 13, 20, 22, 28}
[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
27 28 29 30 31]

ajouter 5 à chacun des 5 ensembles du groupe G3 (les diagonales d'ordre 3):


RS5 = {5, 7, 15, 18, 26, 29}
[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
27 28 29 30 31]
RS30 = {5, 8, 16, 19, 22, 30}
[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
27 28 29 30 31]
RS20 = {5, 9, 12, 20, 23, 31}
[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
27 28 29 30 31]
RS21 = {5, 10, 13, 21, 24, 27}
[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
27 28 29 30 31]
RS28 = {5, 11, 14, 17, 25, 28}
[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
27 28 29 30 31]

ajouter 6 à chacun des 5 ensembles du groupe G4 (les diagonales d'ordre 4):


RS6 = {6, 7, 16, 20, 24, 28}
[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
27 28 29 30 31]
RS29 = {6, 8, 12, 21, 25, 29}
[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
27 28 29 30 31]
RS26 = {6, 9, 13, 17, 26, 30}
[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
27 28 29 30 31]
RS31 = {6, 10, 14, 18, 22, 31}
[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
27 28 29 30 31]
RS23 = {6, 11, 15, 19, 23, 27}
[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
27 28 29 30 31]

Les ensembles RS pour les premières valeurs de K

K=2 (N=3) K=3 (N=7) K=4 (N=13) K=5 (N=21)

RS1 {1,2} {1,2,3} {1,2,3,4} {1,2,3,4,5}

RS2 {2,3} {2,4,6} {2,5,8,11} {2,6,10,14,18}

RS3 {1,3} {3,5,6} {3,6,8,13} {3,7,10,16,21}

RS4 ----- {1,4,5} {4,6,10,11} {4,7,13,14,20}

RS5 ----- {2,5,7} {1,5,6,7} {5,7,12,17,18}

RS6 ----- {1,6,7} {2,6,9,12} {1,6,7,8,9}

RS7 ----- {3,4,7} {2,7,10,13} {2,7,11,15,19}

RS8 ----- ----- {1,8,9,10} {2,8,12,16,20}


www.pps.jussieu.fr/…/maekawa.html 4/9
02/11/2010 Exclusion mutuelle : algorithme de Ma…

RS9 ----- ----- {3,7,9,11} {2,9,13,17,21}

RS10 ----- ----- {3,5,10,12} {1,10,11,12,13}

RS11 ----- ----- {1,11,12,13} {3,6,11,17,20}

RS12 ----- ----- {4,7,8,12} {3,9,12,14,19}

RS13 ----- ----- {4,5,9,13} {3,8,13,15,18}

RS14 ----- ----- ----- {1,14,15,16,17}

RS15 ----- ----- ----- {4,6,12,15,21}

RS16 ----- ----- ----- {4,9,11,16,18}

RS17 ----- ----- ----- {4,8,10,17,19}

RS18 ----- ----- ----- {1,18,19,20,21}

RS19 ----- ----- ----- {5,6,13,16,19}

RS20 ----- ----- ----- {5,9,10,15,20}

RS21 ----- ----- ----- {5,8,11,14,21}

Approximations nécessaires
Pour conclure, examinons comment on peut procéder lorsque le nombre de sites N ne s'exprime pas
sous la forme voulue.
La solution la plus simple consiste à considérer l'entier M supérieur à N s'exprimant comme K.(K-1)+1 avec K
puissance d'un nombre premier.
Ainsi par exemple, pour N=10 on considérera M=13.
Si on considère alors les ensembles RS des sites, certains contiennent des sites n'existant pas: ainsi dans le
cas où N=10, les sites 11, 12 et 13 n'existent pas. On va alors substituer à chacun de ces sites, un site
existant.
Par exemple, on pourra remplacer chaque site de numéro p supérieur à N par p % N.
Ainsi, pour N=10, on remplacera dans les ensembles RS les numéros 11, 12 et 13 respectivement par 1, 2 et
3.
Les différents ensembles RS ont alors comme valeurs:

RS1 {1,2,3,4}

RS2 {1 [11],2,5,8}

RS3 {3 [3 et 13],6,8}

RS4 {1 [11],4,6,10}

RS5 {1,5,6,7}

RS6 {2 [2 et 12],6,9}

RS7 {2,3 [13],7,10}

RS8 {1,8,9,10}

RS9 {1 [11],3,7,9}

RS10 {2 [12],3,5,10}

Les ensembles ainsi construits ont une intersection 2 à 2 non vides mais contrairement à ce qui se passe
dans le cas optimal l'intersection de deux ensembles peut contenir plus d'un seul élément (par exemple pour 4
et 5, l'intersection contient 1 et 6). D'autre part, les ensembles ne contiennent pas tous le m&gme nombre
d'éléments (ici 3 ou 4 selon le cas).

www.pps.jussieu.fr/…/maekawa.html 5/9
02/11/2010 Exclusion mutuelle : algorithme de Ma…
Les interblocages
Le fait qu'un arbitre ne puisse donner sa permission qu'àve un seul demandeur conduit naturellement à des
situations d'interblocage (deadlock ) comme le montre la situation simple suivante :

Les trois sites demandent à entrer en section critique "simultanément". Ils obtiennent localement la
permission (flèches vertes) et par voie de conséquence chacun d'eux est bloqué par l'impossibilité pour l'autre
membre de son ensemble d'arbitres de lui accorder la permission puisqu'il se l'est déjà attribuée (flèches
rouges).
La solution pour résoudre ces situations est tout d'abord de dater les différentes demandes en utilisant des
horloges scalaires sur lesquelles un ordre total existe. Ainsi en recevant une demande, un arbitre qui a déjà
donné sa permission à un site pourra :

soit informer le demandeur qu'il n'est pas en mesure de satisfaire la demande (si la permission a été
donnée pour une demande antérieure),
soit essayer de reprendre la permission qu'il a préalablement donné à un site si la nouvelle demande
est antérieure à celle qu'il a satisfaite. Pour cela, il enverra un message de type particulier permettant
de sonder le site auquel il a donné sa permission. Dans le cas où ce site sait qu'il n'est pas en mesure
de recevoir tous les accords (si donc un avis d'échec en procenance de l'un de ses arbitres lui est
parvenu en réponse à sa demande), il lui renverra spontanément la permission accordée, charge à
l'arbitre correspondant de la lui redonner ultérieurement. Il donc s'agit d'une réquisition temporaire de la
ressource non utilisée avec consentement de la victime.

Dans l'exemple d'interblocage simple que nous avons considéré, si on suppose que les demandes des sites
1, 2 et 3 sont datées respectivement 4.1, 5.2 et 4.3, on observe le comportement suivant pour résoudre
l'interblocage

Le site 1 renvoie un avis d'échec au site 3 (sa demande est postérieure [4.3] à la propre demande du site 1
[4.1] qui a été satisfaite) et le site 3, quant à lui, renvoie un avis d'échec au site 2 (sa demande est postérieure
[5.2] à la propre demande du site 3 [4.3] qui a été satisfaite). A l'arrivée sur le site 2 de la demande du site 1
daté 4.1, le site 2 sonde le site auquel il a donné sa permission, c'est-à-dire lui-m&gme; la nouvelle demande
étant antérieure et le site ayant reçu un avis d'échec, la permission est restituée et peut >re envoyée au site 1
qui entre alors en section critique.

L'algorithme complet
Les types de messages échangés
DEMANDE: un tel message est envoyé par un site à tous les arbitres qui lui sont affectés lorsqu'il veut
entrer en section critique ;
ACCORD: un tel message est envoyé par un arbitre en réponse à un message du type DEMANDE s'il n'a
pas encore donné cette permission à un autre participant (pour lequel il est donc arbitre) ;
ECHEC: un tel message est envoyé par un arbitre en réponse à un message du type DEMANDE s'il ne
peut pas répondre favorablement (il a par conséquent déjà donné sa permission à un autre site);
SONDAGE: un tel message est envoyé en certaines circonstances par un arbitre pour essayer de
récupérer auprès d'un site la permission qui lui été attribuée. Un message de ce type permet ainsi de
réquisitionner une permission non utilisée, ce qui va permettre de résoudre d'éventuels interblocages;
RESTITUTION: un tel message est envoyé par un site en réponse à un message de type SONDAGE
afin de restituer une permission non utilisable. Une telle situation se produit si le site a reçu de l'un de
ses arbitres un message de type ECHEC. Il va de soi que l'arbitre devra ultérieurement renvoyé la
permission au site qui la lui a rendue de cette manière, puisqu'il n'a pas pu exécuter sa section

www.pps.jussieu.fr/…/maekawa.html 6/9
02/11/2010 Exclusion mutuelle : algorithme de Ma…
critique ;
LIBERATION: un tel message est envoyé par un site à tous ses arbitres lorsqu'il sort de sa section
critique.

Terminologie et notations
chaque site gère, dans le cadre de sa fonction d'arbitre, une file d'attente dans laquelle il place toutes
les requêtes en attente. Les requ>es y sont ordonnées par estampilles croissantes ;
un site ayant donné sa permission en réponse à une demande est dit verrouillé ;
on appelle pendant un message appelant une réponse dont celle-ci n'est pas encore arrivée.

Description complète de l'algorithme

Remarque 1 : le message envoyé à tous les sites est estampillé en utilisant la valeur de l'horloge
scalaire du site.
Remarque 2 : le message est envoyé symboliquement au site lui-m&gme puisqu'il appartient à son
propre ensemble d'arbitres.

Remarque 1 : lors de la réception d'une requ>e, l'horloge du site récepteur est mise à jour ;
Remarque 2 : une demande possédant une petite estampille mais qui ne peut >re satisfaite provoque
un sondage (sauf si un sondage est déjà en cours). Il est intéressant de noter que lorsque la réponse à
un sondage arrive (message de type RESTITUTION ou LIBERATION), ce n'est pas nécessairement le
site au profit duquel il a été lancé qui va en profiter, mais celui dont la demande, dans la file d'attente
quand cette réponse arrive, a la plus petite estampille.

www.pps.jussieu.fr/…/maekawa.html 7/9
02/11/2010 Exclusion mutuelle : algorithme de Ma…

Illustrations
Un scénario avec résolution d'interblocage potentiel
On considère un système de 13 sites dans lequel les sites 3, 5 et 12 formulent une demande pour entrer en
section critique. Les horloges des différents sites sont nulles (les numéros des sites les départagent).

Le site S3 va donc obtenir les permissions de lui-même, de S6 et de S13, le site S5 va obtenir celles de lui-
même, de S1 et de S7 et S12 obtiendra celles de lui-même, de S4 et de S8. Aucun des sites ne parvient à
obtenir toutes les permissions qui lui sont nécessaires pour entrer en section critique. Pire, le système se
trouve en situation d'interblocage (deadlock ): elle correspond au circuit 12, 7, 5, 6, 3, 8 12 dans le graphe
graphe d'allocation de ressources associée à la situation correspondant à la figure ci-dessous avec les
conventions suivantes :

une ressource (permission donnée par le site correspondant) est un noeud circulaire ;
un site est un noeud carré ;
une flèche (verte) d'une ressource vers un site signifie que le site a acquis la ressource (i.e. la
permission du site correspondant) ;
une flèche (rouge) d'un site vers une ressource signifie que le site a demandé la ressource (la
permission) mais n'a pas pu l'obtenir.

www.pps.jussieu.fr/…/maekawa.html 8/9
02/11/2010 Exclusion mutuelle : algorithme de Ma…

Dernière mise à jour : 7 novembre 2008

www.pps.jussieu.fr/…/maekawa.html 9/9

Vous aimerez peut-être aussi