Académique Documents
Professionnel Documents
Culture Documents
Exercice 1 :
Pour que les tâches 1, 2, 3, 4, 5 et 6 se déroulent selon cet ordre, on va considérer les sémaphores
suivants :
Exercice 2 :
Var s : semaphore ;
s← N ;
Processus Client
Debut
Wait (s) ; /* Prendre un chariot*/
<Effectuer des achats> ;
Signal (s) ; /*Libérer le chariot*/
Fin ;
Avant d’accéder au magasin pour effectuer des achats, chaque client doit prendre un chariot. Or, le
nombre de chariots est N. Si tous les chariots sont pris, le client voulant entrer ne pourra pas car Wait(s)
avec s= 0 va le bloquer. Notez que chaque wait (s) effectuée auparavant (pour les clients ayant pu
accéder au magasin) faisait décrémenter s de 1. Une fois qu’un client quitte le magasin, il va libérer
un chariot ce qui est exprimé par signal(s). Cette instruction va incrémenter s de 1 et réveiller le client
qui était en attente du chariot, qui va le prendre et décrémenter à son tour s.
Exercice 3 :
Processus Nageur
Debut
Wait(s1) ; /*Prendre un panier*/
Wait(s2) ; /*Occuper une cabine*/
<Se Changer> ;
Signal(s2) ; /*Libérer la cabine*/
<Nager> ;
Wait (s2) ; /*Occuper une cabine*/
<Se Changer> ;
Signal(s2) ; /*Libérer la cabine*/
Signal(s1) ; /*Libérer panier*/
Fin ;
Exercice 4 :
Processus Utilisateur_Ressource_R
Debut
Wait(mutex) ;
si (nu>0) alors
nu ← nu-1 ;
Signal (mutex) ;
<Utiliser R> ;
Wait (mutex) ;
nu ← nu +1 ;
fin si
signal (mutex) ;
Fin ;
Exercice 5 :
Var s : semaphore ;
s← M ;
Processus voiture
Debut
Wait (s) ;
<Acceder au parking> ;
Signal (s) ;
Fin ;