TD PS 2020 2
TD PS 2020 2
TD PS 2020 2
MIRA-BEJAIA
FACULTE DES SCIENCES EXACTES
DEPARTEMENT INFORMATIQUE
TRAVAUX DIRIGES
PROGRAMMATION SYSTEME
Série 2 : Synchronisation de Processus
Exercice1 : Soit P0 et P1 deux processus parallèles se partageant deux ressources R1 et R2. Les
algorithmes de ces deux processus sont écrits comme suit :
Shared semaphore s1=1, s2=1;
P0( ){ P1( ){
While(TRUE){ While (TRUE){
P(s1) P(s2)
utiliser R1 utiliser R2
P(s2) P(s1)
utiliser R1 et R2 utiliser R1 et R2
V(s1) V(s2)
V(s2) V(s1)
} }
} }
Exercice 4 : On considère trois processus P1, P2 et P3. Le processus P1 produit des messages
qu'il dépose dans un tampon T1. P2 prélève les messages contenus dans T1, les traites puis
dépose les résultats dans un tampon T2. P3 prélève les messages contenus dans T2 et les
consomme.
1) Ecrire les algorithmes de P1, P2 et P3 de façon à garantir le non-interblocage en utilisant les
sémaphores.
2) On considère maintenant que les 3 processus travaillent sur un même tampon T (au lieu de T1
et T2). Réétudier la question 1.
Exercice5 :
A) Soit l’ordre d’arrivée suivant des processus. Donner l’ordre d’accès à la section critique suivant
les 4 variantes du modèle Lecteurs/Rédacteurs :
Lect1, Redact1, Lect2, Redact2, Lect3, Redact3
B) Supposons, maintenenat, que la section d’entrée et de sortie est instantanée (sauf blocage) et
que la lecture dure 10 ms alors que l’écriture dure 30ms. Donner l’ordre d’exécution, selon les 4
variantes, des processus suivants avec leur dates d’arrivées :
Lect1(0), Redact1(5), Lect2(9), Redact2(15), Lect3(19), Redact3(22).
Lecteur(){ Redacteur(){
P(mutex3) ; P(mutex2) ;
P(S1) ; nbr_red ++ ;
P(mutex1) ; if( nbr_red==1) P(S1) ;
nbr_lect ++ ; V(mutex2) ;
if( nbr_lect==1) P(S2) ; P(S2) ;
V(mutex1) ; Ecrire () ;
V(S1) ; V(S2) ;
V(mutex3) ; P(mutex2) ;
Lire () ; nbr_red - - ;
P(mutex1) ; if( nbr_red==0) V(S1) ;
nbr_lect - - ; V(mutex2) ;
if( nbr_lect==0) V(S2) ; }
V(mutex1) ;
}
-FIN-