TP7 : Sémaphore. Analyse du problème du coiffeur


Mise en situation
- Le travail de ce TP se déroule en binome.
- Temps alloué : 6h
- Il est obligatoire d’effectuer un algorithme avant codage.
|
Objectif
- Mise en œuvre d'une mémoire partagée protégée par sémaphore d'exclusion
(Dijkstra).
- C4.4 : Résoudre les problèmes de communication et de synchronisation inter-processus.
|
Pré requis
- Notions de programmes multitâches.
- Notion sur les sémaphores
|
Travail demandé
Listing commenté.
|
Critères d’évaluation
Autonomie, apprentissage d’un nouvel environnement de travail, maîtrise de la commande fork, section critique, sémaphore.
|
Problème posé :
Une illustration classique du problème de la synchronisation est celui du salon de coiffure.
Dans le salon de coiffure, il y a un coiffeur C, un fauteuil F dans lequel se met le client pour être coiffé et N sièges pour attendre.
- S'il n'a pas de clients, le coiffeur C somnole dans le fauteuil F.
- Quand un client arrive et que le coiffeur C dort, il le réveille, C se lève. Le client s'assied dans F et se fait coiffer.
- Si un client arrive pendant que le coiffeur travaille
- si un des N sièges est libre, il s'assied et attend,
- sinon il ressort et va manger une glace.
Il s'agit de synchroniser les activités du coiffeur et de ses clients avec des sémaphores.
Cas à étudier :
- Il n’y a pas de client Coiffeur dort.
- Un client arrive, la salle d’attente est vide, réveille le coiffeur et se fait coiffer. Une fois la coupe finie, le coiffeur réveille un client dans la salle d’attente et le client coiffé sort.
- Quand le client entre, il y a déjà un autre client qui se fait coiffer. Le client va en salle d’attente et attend que le coiffeur ait fini de coiffer.
- Le coiffeur coiffe et la salle d’attente est pleine. Le nouveau client ressort tout de suite.
Travail demandé