Vous êtes sur la page 1sur 1

ENSET DE RABAT BTS : Génie Informatique

TD : Système d'exploitation
Série N° 2
(Processus : Synchronisation)

Ex I :
On souhaite modifier la solution du problème des producteurs et des consommateurs
de manière à pouvoir changer la taille du buffer partagé en cours d'exécution . Il vous est
demandé d'écrire deux fonctions augmente_buffer(n) et Réduire_buffer(n) ( et de modifier si
cela s'avère nécessaire le code des fonctions Producer et consumer ) afin d'ajouter ces
nouvelles fonctionnalités . On supposera que l'on dispose de deux fonctions élémentaires
Ajoute_memoire(k) et Retire_mémoire(k) qui se chargent des aspects sordides de gestion de
la mémoire ( ajouter/retirer k cases au buffer ) . Il est vous simplement demandé de prendre
en compte les aspects de synchronisation (Sémaphores).

Ex II :
Un salon de coiffure avec un coiffeur , un fauteuil de coiffure et n chaises pour les
clients qui attendent . En absence de clients , le coiffeur s'assoit dans le fauteuil et s'endort. Le
premier client qui arrive réveille le coiffeur. Les clients suivants doivent s'asseoir sur une
chaise ( s'il y en a de libre ) ou partir ( si toutes les chaises sont occupées) . Le problème
consiste à programmer le coiffeur et les clients pour éviter les accès concurrents .
Utilisez pour votre solution trois sémaphores :
Clients : pour compter le nombre de clients en attente ( sans le client dans le fauteuil
du coiffeur )
Coiffeur : pour savoir si le coiffeur est libre ou pas ( 0 ou 1)
Mutex : pour l'exclusion mutuelle
Attente : une variable pour compter le nombre de clients en attente ( c'est une copie
des clients , puisque on ne peut pas obtenir sa valeur et qu'un nouveau client doit
connaître le nombre de clients qui attendent pour comparer au nombre de chaises du
salon )

EX III :
Imaginez une grande base de données, comme un système de réservation de places
d'avion, où plusieurs processus tentent de lire et d'écrire des informations . On ne peut
accepter que plusieurs processus lisent la base en même temps . Mais, si un processus est en
train de modifier la base en y écrivant les données , aucun autre processus , pas même un
lecteur , ne doit être autorisé à y accéder .
Comment programmer les lecteurs et les rédacteurs ?

1ére Année Génie Informatique A.ABOUABDELLAH