0% ont trouvé ce document utile (0 vote)
538 vues19 pages

Synchronisation par Moniteur en Informatique

Le document présente un exercice sur la synchronisation par moniteur pour résoudre le problème d'accès concurrent à un rond-point par des véhicules. Deux programmes de moniteur sont proposés pour gérer l'accès au rond-point, le premier supposant qu'un seul véhicule peut y accéder à la fois, le second autorisant le partage entre véhicules d'une même voie.

Transféré par

YIDHIR HAMMAS
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
538 vues19 pages

Synchronisation par Moniteur en Informatique

Le document présente un exercice sur la synchronisation par moniteur pour résoudre le problème d'accès concurrent à un rond-point par des véhicules. Deux programmes de moniteur sont proposés pour gérer l'accès au rond-point, le premier supposant qu'un seul véhicule peut y accéder à la fois, le second autorisant le partage entre véhicules d'une même voie.

Transféré par

YIDHIR HAMMAS
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Université de Tizi Ouzou

Faculté de Génie Electrique et Informatique


Département d’Informatique
2021-2022

TD2 Systèmes d’exploitation L3

Mme ACHEMOUKH

1
Synchronisation par Moniteur

 Un moniteur est une approche qui permet de


synchroniser entre plusieurs tâches utilisant des
ressources partagées.

 C’est un module contenant: ²


 Variables locales
 Une ou plusieurs procédures
 Une séquence d’initialisation

 L’initialisation est executée une seule fois lors de la


création du Moniteur
2
Moniteur

File d’attente

Variables locales

Initialisation

Représentation d’un Moniteur 3


Synchronisation par Moniteur

Caractéristiques d’un Moniteur

-- Les variables locales sont accessibles seulement à


l’aide d’une procédure du moniteur
²
-- Un processus entre dans le moniteur en invoquant une
de ses procédures attrendre ou signaler

--Un seul processus peut exécuter dans le moniteur à


tous instant , mais plusieurs processus peuvent être en
attente dans le moniteur
4
Synchronisation par Moniteur
Caractéristiques d’un Moniteur
Le blocage et le réveil d’un processus s’expriment sur les
procédures du moniteur au moyen de condition c sur une
file de tâches (processus) .

-- La procédure attrendre /* c.attendre*/


²
Bloque le processus appelant et la place dans la file d’attente
corespondante à la condition c

-- La procédure signaler /* c.signaler*/

Débloque (réveille ) un processus en attente dans la file liée


à la condition c selon la stratégie FIFO
5
Exercice n° 1: (Le problème du rond-point)

On considère un rond-point comportant N voies (N = 3) numérotées de 0 à


N-1.
Tous les véhicules empruntant le rond-point tournent dans le même sens et
dans le sens croissant des indices des voies.

6
Exercice n° 1: (Le problème du rond-point)

En assimilant les véhicules à des processus , et le rond-


point à une ressource partagée.

processus véhicule
début Procédure Moniteur
... ²
Section critique
rond-point.Entrer(i);
<tourner dans le rond-point de i à j (dans le bon sens )>
rond-point.Sortir(j);
...
fin Procédure Moniteur
7
Exercice n° 1: (Le problème du rond-point)

1- Programme du moniteur en supposant qu’un


véhicule peut entrer dans le rond-point ssi aucun autre
véhicule n’est déjà présent dans le rond-point :

-- Condition d’accès au rond-point : rond- point libre


occuper= faux 8
Exercice n° 1: (Le problème du rond-point)

1- Programme du moniteur en supposant qu’un


véhicule peut entrer dans le rond-point ssi aucun autre
véhicule n’est déjà présent dans le rond-point :

occuper= vrai
9
Exercice n° 1: (Le problème du rond-point)

1- Programme du moniteur en supposant qu’un véhicule peut entrer dans le rond-


point ssi aucun autre véhicule n’est déjà présent dans le rond-point :

Rond_Point: Moniteur ;
var occuper : boolean ; Si Rond-Point occupé
accès : condition ; Alors mettre le
² processus vehicule en file
Procedure Entrer() ; d’attente
Debut
si occuper alors
accés.attendre;
Finsi Rond-Point occupé
occuper:=vrai;
Fin_Entrer;
10
Exercice n° 1: (Le problème du rond-point)
1- Programme du moniteur en supposant qu’un véhicule peut entrer dans le rond-
point ssi aucun autre véhicule n’est déjà présent dans le rond-point :
Rond_Point: Moniteur ;
var occuper : boolean ;
accès : condition ; Rond-point libre
Procedure Sortir();
Debut ²

occuper:=faux; Réveil du processus bloqué


accés.signaler;
Fin_Sortir.

INIT() /* initialisation*/
occuper:=faux; Etat initial
Rond-point libre
Fin _Rond_point.
11
Exercice n° 1: (Le problème du rond-point)

1- Programme du moniteur en supposant qu’un


véhicule peut entrer dans le rond-point ssi aucun autre
véhicule n’est déjà présent dans le rond-point :

-- Condition d’accès au rond-point : rond- point libre


12
Exercice n° 1: (Le problème du rond-point)

2. Programme du moniteur en supposant qu’il y a


partage de l’accès par les véhicules issus d’une même
voie :

-- Condition d’accès au rond-point :


n=0 (rond- point libre)
ou voie (voiture)= voie courante
13
Exercice n° 1: (Le problème du rond-point)

2- Programme du moniteur en supposant qu’il y a partage de l’accès par les


véhicules issus d’une même voie :

Donc c’est le réveil en chaîne pour les voitures de la voie


dont est issue le véhicule qui² est dans le Rond-Point.

-- Définir une file d’attente pour chaque voie

-- Chaque file d’attente est dotée d’une condition

14
Exercice n° 1: (Le problème du rond-point)

2- Programme du moniteur en supposant qu’il y a partage de l’accès par les


véhicules issus d’une même voie :

Rond_Point: Moniteur ;
Crée un type voie

Const N=3 ; Un tableau de conditions


Type voie = 0.. N-1 ; ²

Var accés = tableau [voie] de condition ;


vc: voie ;
voie courante
n :entier ;

Nombre de véhicules dans le


Rond-point
15
Exercice n° 1: (Le problème du rond-point)
2- Programme du moniteur en supposant qu’il y a partage de l’accès par les
véhicules issus d’une même voie :

Rond_Point: Moniteur ; voie courante correspond à la


Procedure Entrer(v :voie) ; voie passée en paramètre
Debut Demande d’accès par une
si n=0 alors voie ≠ voie courante
vc :=v ; ²

Finsi
bloquer les processus de
si (v ≠ vc) alors
la voie v
accés[v].attendre ;
Finsi
n :=n+1 ; Conditions vérifiées :
-Nbr de voitures est incrémenté
accés[v].signaler ; - Réveil en chaîne des voitures de la
Fin_Entrer. file liée à la voie v 16
Exercice n° 1: (Le problème du rond-point)
2- Programme du moniteur en supposant qu’il y a partage de l’accès par les
véhicules issus d’une même voie :
Rond_Point: Moniteur ;
Procedure Sortir(); Nbr de voitures est
décrémenté
var i : entier ;
Debut
n :=n-1 ; ² Changement de la voie
courante
i :=0 ;
Tantque (n=0) et (i<N-1) faire
vc :=(vc+1) MOD N ;
accés[vc].signaler ; Signaler à la file liée à la
voie vc que l’accès est
i :=i+1 ;
libre
Fin_Tantque ;
Fin_Sortir .
17
Exercice n° 1: (Le problème du rond-point)

2- Programme du moniteur en supposant qu’il y a partage de l’accès par les


véhicules issus d’une même voie :

Rond_Point: Moniteur ;
Const N=3 ;
Type voie = 0.. N-1 ;
Var accés = tableau [voie] de condition ;
²
vc: voie ;
n :entier ;
Procedure Entrer(v :voie) ;
Procedure Sortir();

INIT() /*
initialisation*/
n:=0
Fin _Rond_point. 18
Exercice n° 1: (Le problème du rond-point)

2. Programme du moniteur en supposant qu’il y a


partage de l’accès par les véhicules issus d’une même
voie :
attente

²
Réveil en chaîne

attente
-- Conditions d’accès au rond-point :
n=0 (rond- point libre)
ou voie (voiture)= voie courante

Vous aimerez peut-être aussi