next up previous contents
suivant: Equivalences monter: Les mécanismes de synchronisations précédent: Implémentation   Table des matières

Les moniteurs

Définition : Un moniteur comprend des variables, des conditions, des procédures et un code d'initialisation. Seules les procédures peuvent être manipulées par les processus, et le mécanisme du moniteur garantit l'exécution de chaque procédure en exclusion mutuelle.


Syntaxe d'un moniteur


type nom du moniteur = monitor
déclarations de variables
déclarations de conditions
procedure entry P1(...)
begin ...end;

procedure entry Pn(...)
begin ...end;
begin
code d'initialisation
end.

La synchronisation des processus est obtenu à l'aide des procédures wait et signal appliquées sur les variables de type condition. L'action X.signal provoque le réveil de tous les processus qui ont auparavant effectué X.wait.

Une solution au problème de la section critique

type SectionCritique = monitor
token : booleen;
sc : condition
procedure entry EntreeSC
begin
while not token do sc.wait;
token := false;
end;
procedure entry SortieSC
begin
token := true;
sc.signal;
end;
begin
token := true
end.


shared var SC = SectionCritique

Code des processus

begin
while true do begin
code de la section non critique
SC.EntreeSC;
code de la section critique
SC.SortieSC
end
end.


next up previous contents
suivant: Equivalences monter: Les mécanismes de synchronisations précédent: Implémentation   Table des matières
Alain Griffault 2003-05-07