LES SEMAPHORES
P(mutex)
<section_critique> /* mise à jour d'un compte bancaire */
V(mutex)
Producteur Consommateur
3 sémaphores :
mutex = 1
vide = N
plein = 0
producteur () Consommateur ()
{ while (true) { { while (true) {
produire_objet (...); P(plein);
P(vide); P(mutex);
P(mutex); retirer_objet(...);
mettre_objet(...); V(mutex);
V(mutex); V(vide);
V(plein);} utiliser_objet(...);}
} }
Les Moniteurs de
Hoare
Les Moniteurs de
Hoare (suite)
Implantation de l’exclusion
mutuelle
Moniteur ressource;
acquerir : entree;
debut
si non ressource_libre alors attendre(libre) fsi;
ressource_libre:= Faux;
fin acquerir;
liberer : entree;
debut
ressource_libre := vrai;
signaler(libre);
fin liberer;
debut
ressource_libre := vrai;
fin ressource;
Application au modèle
Producteur/Consommateur
Moniteur Producteur/Consommateur
fin Producteur/Consommateur;
LE PROBLEME DU SIGNAL
ex : MONITEUR
c: CONDITION;
....
e1 : ENTREE ;
DEBUT
<debut e1>
SI <condition> ALORS ATTENDRE (c) FSI;
<reste e1>
FIN e1;
e2 : ENTREE;
DEBUT
....
SIGNALER(c);
<reset e2>
FIN e2;
2 soluions :
Processus
Coordonnateur
1 demande
2
4
Ressource
critique