moniteurs
Partie 2 : Les moniteurs
• Qu’est ce qu’un moniteur ?
• Variables de condition des moniteurs
• Exemple : Problème Producteur/consommateur
• Implémentation des moniteurs (au moyen de sémaphores)
• Moniteurs JAVA
Noyau d'un système d’exploitation
Génie Informatique et Génie Logiciel
École Polytechnique de Montréal
Chapitre 6.1
Qu’est ce qu’un moniteur ?
•
Moniteur = { variables globales + sections critiques d’un même problème}
•
Pour assurer l’exclusion mutuelle, à tout moment un processus au plus est actif dans le moniteur.
•
Si un processus est actif dans le moniteur et un autre demande à y accéder
(appelle une procédure du moniteur), ce dernier est mis en attente.
•
C’est le compilateur qui se charge de cette gestion. Pour ce faire, il rajoute au moniteur le code nécessaire pour assurer l’exclusion mutuelle.
•
Cette solution est plus simple que les sémaphores et les compteurs d’événements, puisque le programmeur n’a pas à se préoccuper de contrôler les accès aux sections critiques.
•
La majorité des compilateurs utilisés actuellement ne supportent pas les moniteurs (à l’exception de JAVA, C#).
Noyau d'un système d’exploitation
Noyau d'un système d'exploitation
Génie Informatique et Génie Logiciel
École Polytechnique de Montréal
Chapitre 6.2
1
Qu’est ce qu’un moniteur ? (2)
•
Comment utiliser les moniteurs pour assurer l’exclusion mutuelle ?
Moniteur Compte
{ int solde = 0 ; void Deposer (int montant) // section critique pour le dépôt
{
solde = solde + montant ;
}
void retirer (int montant)
//section critique pour le retrait
{
if (solde >= montant) solde = solde – montant ;
}
}
Noyau d'un système d’exploitation
Génie Informatique et Génie Logiciel
École Polytechnique de Montréal
Chapitre 6.3
Qu’est ce qu’un moniteur ? (3)
Risque d’interblocage
•
Situation d’interblocage si le processus actif dans le moniteur a besoin