• Simple, efficace mais nécessite une méthodologie
• Oublier un P ou un V pour, tout le système tombe en panne
• Contrôle et code du traitement mélangés: maintenance?
• Commenter les appels de P et de V est difficile
Le moniteur est un contrôleur d'accès à une ressource.
Si la ressource est critique, il suffit de la déclarer dans le moniteur.
L'utilisation obligatoire de cette ressource à travers les opérations du moniteur assure son utilisation en exclusion mutuelle.
Si la ressource pouvait être accédée en parallèle, alors elle doit être déclarée à l'extérieur du moniteur.
Le contrôle d'accès sera programmé dans le moniteur.
[...] Reveil_Moi Moniteur { int condition void init(int { H = H variable du moniteur partagée entre les processus à travers les opérations du moniteur exécutée à chaque interruption horloge*/ void incr() { c.signal; réveiller, éventuellement, un processus. Ce dernier va tester sa condition de réveil (voir boucle dans } void W_M (int { int MH; MH = while [...]
[...] ) fichier écrire Fichier.Lire( . ) 000000 000000 Autorisation pour un lecteur: Pas d'écriture en cours Autorisation pour un rédacteur: Pas d'écriture, ni lecture en cours Libération pour un lecteur: Le fichier est libre à la sortie du dernier lecteur Libération pour un rédacteur: Le fichier est libre à la sortie du rédacteur en cours libérer 2. On spécifie le moniteur d'accès Les opérations lire et écrire sont enveloppées par les opérations du moniteur qui permettent d'obtenir: une autorisation d'accès une sortie du fichier Lecteur L_R.Deb_Lire(); Fichier.Lire( . [...]
[...] Programmation modulaire et synchronisation : Moniteur de Hoare Remarques sur les sémaphores: Simple, efficace mais nécessite une méthodologie Oublier un P ou un V pour, tout le système tombe en panne Contrôle et code du traitement mélangés: maintenance? Commenter les appels de P et de V est difficile P . Intst Inst2; P . inst3 P(mutex); SC1; V(mutex); P(mutex); SC2: P(mutex); SCn; V(mutex); Syntaxe Moniteur { } Module, objet passif En exclusion mutuelle S'exécutent dans le contexte de l'appelant Utilisation nom.op( . [...]
[...] L'utilisation obligatoire de cette ressource à travers les opérations du moniteur assure son utilisation en exclusion mutuelle Si la ressource pouvait être accédée en parallèle, alors elle doit être déclarée à l'extérieur du moniteur. Le contrôle d'accès sera programmé dans le moniteur. Exemple4: Lecteurs/Rédacteurs Nous souhaitons programmer le contrôle d'accès à un fichier Les lecteurs peuvent accéder au fichier en parallèle Une écriture doit être en exclusion mutuelle avec une lecture ou avec une autre écriture 1. On spécifie d'abord l'objet utilisé à l'extérieur du moniteur. [...]
[...] ) Privé Types, variables . Privé Files d'attente (Fifo éventuellement avec priorité) Condition .Wait(), c.signal() et c.empty() Exemple1 Ressource Critique Moniteur RC { Ressource_Critique void Utiliser Entry u2 } { utiliser R u1 } ressource critique, à utiliser en exclusion mutuelle Il suffit de la déclarer dans le moniteur Elle sera accessible seulement à travers les opérations du moniteur Seules les opérations du moniteur sont visibles U1 RC.utiliser U2 RC.utiliser(); Exemple2 BAL Simple 1 producteur 1 consommateur Moniteur BAL { condition oc; oc ? [...]
Source aux normes APA
Pour votre bibliographieLecture en ligne
avec notre liseuse dédiée !Contenu vérifié
par notre comité de lecture