Systèmes d’Exploitation : TD6 : Synchronisation des processus avec des Moniteurs
Télécharger PDFObtenir le pack complet des cours, TDs, examens sur Systèmes d’Exploitation!
Vous souhaitez maîtriser Systèmes d’Exploitation ? Ne cherchez plus, nous avons le pack bien choisi pour vous.
Accédez à une collection complète des supports de cours, des travaux dirigés (TDs) corrigés, TPs avec solution, examens...
Télécharger packSystèmes d’Exploitation : Correction Td6 : Synchronisation des processus avec des Moniteurs
Télécharger PDFInstitut Supérieur d’Informatique Université de Tunis el Manar MME. LILIA SFAXI TD6 : Synchronisation des processus avec des Moniteurs Systèmes d’Exploitation Avancés – 1
ère année ING. Année Universitaire : 2011/2012 TD6 : Synchronisation des processus avec des Moniteurs MME. LILIA SFAXI
2011/2012 1 TD6 : Synchronisation des processus avec des Moniteurs Systèmes d’Exploitation Avancés I. Définition • Les moniteurs proposent une solution de "haut-niveau" pour la protection de données partagées (Hoare 1974) • Ils simplifient la mise en place de sections critiques • Ils sont définis par – des données internes (appelées aussi variables d'état) – des primitives d'accès aux moniteurs (points d'entrée) – des primitives internes (uniquement accessibles depuis l'intérieur du moniteur) – une ou plusieurs files d'attentes II. Structure d'un moniteur Type m = moniteur Début Déclaration des variables locales (ressources partagées); Déclaration et corps des procédures du moniteur (points d’entrée); Initialisation des variables locales; Fin III. Sémantique • Seul un processus (ou tâche ou thread) peut être actif à un moment donné à l'intérieur du moniteur • La demande d'entrée dans un moniteur (ou d'exécution d'une primitive du moniteur) sera bloquante tant qu'il y aura un processus actif à l'intérieur du moniteur ⇒ L'accès à un moniteur construit donc implicitement une exclusion mutuelle • Lorsqu'un processus actif au sein d'un moniteur ne peut progresser dans son travail (une certaine condition est fausse), il libère l'accès au moniteur avant de se bloquer. • Lorsque des variables internes du moniteur ont changé, le moniteur doit pouvoir «réveiller » un processus bloqué. • Pour cela, il existe deux types de primitives : – wait : qui libère l'accès au moniteur, puis bloque le processus appelant sur une condition TD6 : Synchronisation des processus avec des Moniteurs MME. LILIA SFAXI
2011/2012 2 – signal : qui réveille sur une condition un des processus en attente à l'intérieur du moniteur (un processus qui a exécuté précédemment un wait sur la même condition) IV. Les variables Condition • Une variable condition : est une variable – qui est définie à l’aide du type condition; – qui a un identificateur mais, – qui n'a pas de valeur (contrairement à un sémaphore). • Une condition : – ne doit pas être initialisée – ne peut être manipulée que par les primitives Wait et Signal. – est représentée par une file d'attente de processus bloqués sur la même cause; – est donc assimilée à sa file d'attente. • La primitive Wait bloque systématiquement le processus qui l'exécute • La primitive Signal réveille un processus de la file d'attente de la condition spécifiée, si cette file d'attente n'est pas vide; sinon elle ne fait absolument rien. • Syntaxe : cond.Wait; cond.Signal; /* cond est la variable de type condition déclarée comme variable locale */ • Autre syntaxe : Wait(cond) ; Signal(cond); • Un processus réveillé par Signal continue son exécution à l'instruction qui suit le Wait qui l'a bloqué. V. Exercices d'application 1. Réaliser le moniteur correspondant à l’exemple de la barrière de synchronisation vu en TD. 2. Réaliser un moniteur ProducteurConsommateur qui définit deux méthodes produire(M) et consommer(M) permettant respectivement d’ajouter et de supprimer le message M d’un buffer partagé.
