Synchronisation des processus à l’aide des moniteurs
On dispose du programme suivant proposé pour le modèle des lecteurs/rédacteurs:
Allocation: moniteur
Variables
occupé: booléen;nb: entier;Lect, Redac: condition;
Procédure Début-Lecture{ nb++; si(occupé) alors Lect.wait; Lect.signal fsi } |
Procédure Début-Lecture{ nb++; si(occupé) alors Lect.wait; Lect.signal fsi } |
Procédure Fin-Lecture{ nb--; si(nb==0) alors Redac.signal fsi } |
Procédure Fin-Ecriture{ occupé= faux; si(nb > 0) alors Lect.signal sinon Redac.signal fsi } |
1.Discuter la solution proposée en expliquant le rôle de chaque procédure du moniteur et de chaque variable utilisée, ainsi que la classe de processus prioritaire (lecteur ou rédacteur).
2.Modifier la solution pour donner la priorité à l'autre classe de processus.
3.Modifier la solution pour permettre une politique FIFO.
Ajouter un commentaire