Académique Documents
Professionnel Documents
Culture Documents
Exercice n°1 :
1. Soient les 3 processus suivants :
P1 P2 P3
Cycle Cycle Cycle
Afficher("A") ; Afficher("B") ; Afficher("C") ;
Fin Cycle Fin Cycle Fin Cycle
Utiliser les sémaphores pour synchroniser les processus P1, P2, et P3 pour les cas suivants :
– La chaine de caractères affichée soit : ACACACAC….
– Le nombre de “C” affichés soit toujours supérieur ou égal au nombre de “B” affichés.
– Chaque cycle du processus P1 précède un cycle du processus P2 et un cycle du processus P3.
2. Soit l’ensemble de processus suivant, où les contraintes de précédence sont données par le graphe ci-
dessous :
Donner une solution utilisant les sémaphores pour synchroniser ces processus de manière à respecter les
contraintes de précédence, vous préciserez combien de sémaphores vous sont nécessaires et à combien de
ressources chacun est initialisé.
Exercice n°2 :
Soit un programme composé de 8 processus "mathématiciens" qui font tous la même chose : ils choisissent
deux nombres de manière aléatoire et calculent la somme. Pour afficher les résultats, on dispose de 5
mémoires tampons.
Chaque mémoire tampon est un tableau de 4 éléments, où la première position contiendra l'identificateur du
processus qui a fait le calcul, suivi des deux opérandes puis, finalement, du résultat.
Lorsqu'un mathématicien a terminé son calcul, il choisit aléatoirement un tampon. Quand il en a obtenu un,
il le remplit et recommence avec un autre calcul. Chaque tampon a un lecteur qui affiche le résultat.
Ecrire une solution pour ce problème, qui prend en charge les mécanismes de synchronisation qui assurent
le bon fonctionnement. Définir les sémaphores nécessaires et leur valeur initial. Justifier votre réponse.
Exercice n°3 :
Le modèle des lecteurs et des rédacteurs schématise une situation rencontrée dans la gestion des fichiers
partageables, Dans ce modèle, on considère des processus parallèles (n au plus) divisés en deux classes les
lecteurs et les rédacteurs. Ces processus peuvent se partager une ressource unique, le fichier. Ce fichier peut
être lu simultanément par plusieurs lecteurs, tandis que les rédacteurs doivent y avoir un accès exclusif (un
seul rédacteur peut y écrire et aucun lecteur ne peut lire pendant ce temps). On note comme suit le
programme des lecteurs et des rédacteurs :
LECTEURS REDACTEURS
demande de lecture ; demande d'écriture ;
lecture ; écriture ;
fin de lecture ; fin d’écriture ;
Les procédures demande d'écriture et fin d'écriture devront assurer l'exclusion mutuelle entre deux
rédacteurs. Avec les procédures demande de lecture et fin de lecture, elles doivent assurer les règles de
coopération entre la classe des lecteurs et la classe des rédacteurs.
Ecrire, avec des sémaphores, des opérations P et V, et des variables d'état le programme des lecteurs et des
rédacteurs le cas où les lecteurs ont toujours priorité sur les rédacteurs sans réquisition ; le seul cas ou un
lecteur doive attendre est celui où un rédacteur occupe le fichier. Un rédacteur ne peut donc accéder au
fichier que si aucun lecteur n'est en attente ou en cours de lecture. On autorise toute coalition de lecteurs
pour occuper indéfiniment le fichier et en interdire l'accès aux rédacteurs.
Exercice n°4 :
Le but de cet exercice est la gestion du trafic aérien. On ne dispose que d’une seule piste à la fois
d’atterrissage et de décollage. En plus, cette piste ne peut accepter qu’un seul avion quel que soit la
manœuvre (atterrissage ou décollage). Pour cela, on dispose de deux files d’attente :
1. en l’air de taille N pour les avions souhaitant atterrir
2. et au sol de taille M pour les avions souhaitant décoller.
La gestion de ce trafic d’avions nécessite, alors, quatre fonctions :
1. une fonction SortirAvions ( ) qui fait sortir les avions du hangar (dépôt) et les place dans la file
d’attente de décollage,
2. une fonction Decollage ( ) qui prend un avion cloué en sol dans la file d’attente de décollage et le fait
décoller en utilisant la piste,
3. une fonction AmenerAvions ( ) qui fait entrer, dans la file d’attente d’atterrissage, des avions en vol,
4. et une fonction Atterrissage ( ) qui prend un avion de la file d’attente d’atterrissage et le fait atterrir
en utilisant la piste.
Synchronisez au moyen de sémaphores l’enchaînement des fonctions de gestion du trafic (Donner les
déclarations ainsi que les initialisations des sémaphores utilisés).
Exercice n°5 :
On désire simuler le problème de l'infirmier dormant, soit un cabinet médical avec une salle d'attente et une
salle de consultation représentées par la figure suivante :
Les malades entrent en salle d'attente un à la fois, de la salle d'attente ils peuvent pénétrer dans la salle de
consultation. Les entrées aux deux salles sont adjacentes et possèdent une porte commune glissante qui
ferme une entrée pour garder l'autre ouverte. Lorsque le médecin termine avec un malade ce dernier quitte la
salle de consultation par une autre sortie l'infirmier ouvre l'entrée à la salle de consultation, si la salle
d'attente n'est pas vide, il invite le malade suivant si non il profite pour dormir dans la salle d'attente.
Lorsqu'un malade entre en salle d'attente et trouve l'infirmier donnant il le réveille sinon il attend son tour.
Consultation
Sortie
Attente
np(s) : nombre d’opérations P(s) exécutées sur s. Question : Vérifier que la relation suivante est
correcte : nf(s) = min(np(s),i(s)+nv(s)).
nv(s) : nombre d’opérations V(s) exécutées sur s.
Partie (2) : On dispose d’une carte électronique à base de microcontrôleurs pour contrôler un ensemble de
robots. La carte est livrée avec un logiciel sous Linux, qui permet de créer son propre programme pour
commander et coordonner un ensemble de robots, et de le charger ensuite dans la mémoire non volatile (sur
la carte) par un port série. On vous sollicite pour écrire un pseudocode qui contrôle le déplacement de
plusieurs robots sur les chemins suivants :
Question : proposez une solution assurant la synchronisation des deux robots en utilisant les sémaphores.
Vérifiez la validité de votre solution.