ExamSys2 LMD Epreuve 2013 2014cor
ExamSys2 LMD Epreuve 2013 2014cor
ExamSys2 LMD Epreuve 2013 2014cor
Département Informatique
ème
Filière : 3 Année Licence TSW
Processus P1 Processus P2
Debut Debut
Si X > 50 Alors
X := X+1
Y := Y +1
sinon
Fin
Y:= Y/2
Finsi;
Z := Z + Y
Fin
Question 1 : Expliquez quel problème peut-on avoir si les deux processus s'exécutent simultanément.
Réponse :
Si les deux processus s'exécutent simultanément, il y'a un problème d'accès concurrents à la variable partagée X. On peut
avoir un résultat incohérent si le processus P1 tente de modifier cette variable alors que le processus P2 tente de son coté de la
consulter.
(3 points)
Question 2 : Corrigez le problème en utilisant des sémaphores. Réécrivez le code des deux processus.
Réponse :
La solution doit assurer l'accès en exclusion mutuelle à la variable partagée X. On utilise un sémaphore mutex , initialisé à 1.
Processus P1 Processus P2
Debut Debut
Wait(mutex)
Wait (mutex)
Si X > 50 Alors
X := X+1 Signal(mutex)
Y := Y +1
Signal(mutex) Sinon
Signal(mutex)
Fin Y:= Y/2
Finsi;
Z := Z + Y
Fin
(4 points)
Page 1 / 2
Exercice 2 : (13 points)
On reprend le problème de synchronisation du Producteur-Consommateur avec buffer circulaire et de taille limitée N,
mais on suppose qu'il y'a maintenant deux producteurs P1 et P2 et un seul consommateur C. Le producteur P2 a une
particularité : il produit et dépose deux messages à la fois (si toutefois, il y'a des places libres dans le buffer).
Travail à faire : Proposez un schéma de synchronisation de ce problème. Ecrivez le code des 3 processus P1, P2 et C.
Soignez vos déclarations.
Réponse :
Déclarations :
In : Entier (Init à 0) indice du dernier élément déposé dans le buffer
Out : Entier (Init à 0) indice de l'élément prêt à être prélevé par le Consommateur
Mutex : Sémaphore (init à 1) assurant l'accès en exclusion mutuelle à la variable partagée In.
Empty : Sméphore (Init à N) permettant de bloquer les producteur si le buffer est plein.
Full : sémaphore (Init à 0) permettant de bloquer le consommateur s'il n'ya aucune case pleine dans le buffer.
(3 points)
(3 points)
Page 2 / 2