TP6 : ColdFire Sémaphore...une histoire qui décoiffe


Mise en situation
- Le travail de ce TP se déroule seul.
- Temps alloué : 6h
- Il est obligatoire d’effectuer un algorithme avant codage.
- La programmation se fait sur PC, compilation croisée, uClinux.
|
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
- Environnement compilation croisée.
- Utilisation de programmes multitâches.
- Programmation en C Ansi
|
Travail demandé
Listing commenté.
|
Critères d’évaluation
Autonomie, apprentissage d’un nouvel environnement de travail, maîtrise de la commande vfork, 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é