Onyest dossier - Moniteur Ajouter à mes favoris
Sommaire
Systèmes parallèles
Cours
Atomicité et processus
Exclusion mutuelle
Les sémaphores
Approche "langage"
Moniteur
Implémentation d’un moniteur
Lecteur(s)-Rédacteur(s)
Priorité forte à la lecture
Préférence aux lecteurs
Le problème des voies
TDs
TPs
Probabilités appliquées aux systèmes
Théorie des langages et compilation
VHDL
Suite : Implémentation d’un moniteur

Moniteur

Le moniteur est un objet de haut niveau inscrit dans un contexte parallèle, donc partagé. Par définition, on appliquera une sémantique d'exclusion ; une seule procédure est active à la fois dans un même moniteur. C'est une exclusion mutuelle.

Un moniteur possède des files d'attente (les conditions). On crée autant de file d'attente que de raison d'attendre.Deux primitives existent :

  • f.WAIT : attendre dans la file f et libère l'exclusion sur le moniteur.
  • f.SIGNAL : si f est vide alors sans effet, sinon, réactive un processus bloqué dans f. Le processus signalé devient actif et le processus signaleur devient passif. Cependant, il reste prioritaire pour redevenir actif.

exemple :

moniteur allocateur =
bool occ init faux
condition f
procedure acquerir = si occ alors f.WAIT ; occ := vrai.
procedure liberer = occ := faux ; f.SIGNAL.
fin
moniteur pc =
tp[0 .. k-1] de valeurs
in,out : 0..k-1, init 0
nbocc : 0 .. k init 0
condition fp,fc init vide
procedure prod(x) =
si non nbocc < k alors fp.WAIT
tp[in] := x
in := (in +1) mod k
nbocc ++
fc.SIGNAL
fin prod
procedure cons(x) =
si non nbocc > 0 alors fc.WAIT
x := tp[out]
out := (out +1) mod k
nbocc--
fp.SIGNAL
fin cons
fin
L'invariant I = 0 <= occupees <= k et 0 <= in, out <= k-1 et les cases occupées se trouvent entre out et in.

{ I } P { I } : lorsqu'on exécute une procédure P, on vérife que l'invariant est bien respecté (c'est le cas).

On utilise les ressources en écrivant : allocateur.acquerir, allocateur.liberer, pc.prod(x), pc.cons(x).

Suite : Implémentation d’un moniteur
Onyest dossier - cours ingénieur informatique et électronique : SPAR, PAS, TLC, VHDL - http://www.onyest.free.fr/dossier/cours - webmaster : novis@chez.com

-