Systèmes d'Exploitation III - 2
année Li en e
ème
A.U : 2017-2018
Travaux Dirigés III : La on urren e et syn hronisation des pro essus
ESEN - Université de la Manouba
Amine DHRAIEF
1. Pourquoi le partage de ressour es pose des problèmes dans un système multi-programmé
en temps partagé ?
2. Comment le système UNIX permet-il de ontrler les a ès aux ressour es partagées ?
3. Qu'est- e qu'une se tion ritique ?
4. Un pro essus peut se bloquer
A. lorsqu'il libère un sémaphore "plein".
B. lorsqu'il demande un sémaphore "vide".
C. lorsqu'il rée un sémaphore.
D. lorsqu'il libère un sémaphore sur lequel un autre pro essus est en attente.
5. On onsidère 6 blo s d'instru tions, S1 à S6. Un graphe de pré éden e présente les
ontraintes sur l'ordre d'exé ution des instru tions. Par exemple, la (cid:29)è he allant de S1
vers S2 indique que l'instru tion S2 doit né essairement être exé utée après S1. On pla e
haque blo d'instru tion dans un pro essus distin t P1 à
Pro ess P1 { S1; }
Pro ess P2 { S2; }
Pro ess P3 { S3; }
Pro ess P4 { S4; }
Pro ess P5 { S5; }
Pro ess P6 { S6; }
Utilisez des sémaphores pour syn hroniser les pro essus de manière à respe ter les
ontraintes du graphe de pré éden e i-dessous
6. Soient trois pro essus on urrents P1, P2 et P3 qui partagent les variables n et out. Pour
ontrler les a ès aux variables partagées, un programmeur propose les odes suivants
Semaphore mutex1 = 1 ;
Semaphore mutex2 = 1 ;
(a) Cette proposition est-elle orre te ? Si non, pourquoi ?
(b) Proposer une solution orre te.
7. Deux villes A et B sont reliées par une seule voie de hemin de fer. Les trains peuvent
ir uler dans le même sens de A vers B ou de B vers A. Cependant, ils ne peuvent
pas ir uler dans les sens opposés. On onsidère deux lasses de pro essus : les trains
allant de A vers B( Train AversB) et les trains allant de B vers A (Train BversA). Leur
omportement se dé(cid:28)nit omme suit :
− − − − − − − − − − − − − − −−
Train AversB :
Publicité
Page 2
Demande d'a ès à la voie par A;
Cir ulation sur la voie de A vers B;
Sortie de la voie par B;
− − − − − − − − − − − − − − −−
Train BversA :
Demande d'a ès à la voie par B ;
Cir ulation sur la voie de B vers A;
Sortie de la voie par A;
(a) Parmi les modèles étudiés en ours (produ teur/ onsommateur, le teur/réda teur,
les philosophes), à quel modèle e problème orrespond-il ?
(b) En utilisant les sémaphores (opérations P et V), traduire les demandes d'a ès et
de sorties, de façon à e que les pro essus respe tent les règles de ir ulation sur la
voie unique.
8. Considérez les deux mor eaux de ode suivants. Deux threads exé utent respe tivement
les fon tions writer_thread() et reader_thread(), et partagent la variable pointer.
int *pointer = NULL;
void * writer_thread() {
while (1) {
if (pointer == NULL) {
pointer = mallo (sizeof(int));
*pointer = rand();
//fon tion dans stdlib.h pour re evoir une valeur aléatoire
}
}
}
void *reader_thread() {
while (1) {
if (pointer != NULL) {
printf("pointer = %d", *pointer);
free(pointer);
pointer = NULL;
}
}
}
(a) En exé utant le programme qui rée deux threads ayant les fon tions pré édentes,
une erreur "Erreur de segmentation" apparaît au bout d'un ertain temps. D'où
provient ette erreur ? Expliquer.
Page 3
(b) Résolvez e problème en modi(cid:28)ant le programme par l'a jout d'un sémaphore. On
supposera que le sémaphore est initialisé dans le thread prin ipal.
Publicité
( ) Peut-on résoudre e problème sans utilisation d'un sémaphore ou de tout autre mé-
anisme de syn hronisation ? Même question si on exé ute plusieurs paires é rivain
(fon tion writer_thread()) et le teur (fon tion reader_thread()) ?
(d) Nous proposons d'utiliser une variable onditionnelle pour régler e problème. La
variable onditionnelle doit servir, d'une part à garantir l'ex lusion mutuelle entre
les a ès à pointer (rle joué par le sémaphore utilisé dans les questions pré édentes),
et d'autre-part à alerter l'autre thread d'une modi(cid:28) ation de la variable pointer.
Modi(cid:28)ez les fon tions en onséquen e.
Examen Session Mai 2017
9. Soit les odes suivants.
S em a p h o r e S = 1 ;
Listing 1 (cid:21) initialisation
Listing 2 (cid:21) Pro essus A
P r o e s s A ( )
Listing 3 (cid:21) Pro essus B
{
P r o e s s B ( )
a ;
{
P ( S ) ;
P ( S ) ;
b ;
d ;
;
V( S ) ;
V( S )
}
}
(a) (1 point) Donner les di(cid:27)érents ordres d'exé ution des instru tions atomiques a, b,
c et d des pro essus A et B.
(b) (1 point) Supposer que le sémaphore S est initialisé à 0. Donner les di(cid:27)érents ordres
d'exé ution des instru tions atomiques des pro essus A et B
10. Considérer les pro essus P1 et P2 présentés par les odes i-dessous. P1 et P2 partagent
la variable verrou. Le signal SIGCONT permet de débloquer un pro essus si e dernier
est bloqué. Dans le as ontraire, le signal est tout simplement ignoré
i n t v e r r o u = 0 ;
Listing 4 (cid:21) initialisation
Page 4
Listing 5 (cid:21) Pro essus 1
Listing 6 (cid:21) Pro essus 2
P r o e s s P1 ( )
Publicité
P r o e s s P2 ( )
{
{
w h i l e ( v e r r o u ! = 0 ) p a u s e ( ) ;
w h i l e ( v e r r o u ! = 0 ) p a u s e ( ) ;
v e r r o u = 1 ;
v e r r o u = 1 ;
SC ( ) ;
SC ( ) ;
v e r r o u = 0 ;
v e r r o u = 0 ;
k i l l
( P2 , SIGCONT ) ;
k i l l
( P1 , SIGCONT ) ;
}
}
(a) (1 point) Les pro essus P1 et P2 peuvent-ils se retrouver en se tion ritique (exé-
uter la fon tion SC()) en même temps ? Justi(cid:28)er votre réponse.
(b) (1 point) Est- e que l'un des deux pro essus peut se retrouver en pause pour tou-
jours ? Justi(cid:28)er votre réponse.
11. (1 point) On onsidère 3 blo s d'instru tions, I1 à I3. On pla e haque blo d'instru tion
dans un pro essus distin t P1 à P3.
Pro ess P1 { I1; }
Pro ess P2 { I2; }
Pro ess P3 { I3; }
Soit le graphe de pré éden e suivant : P 1 → P 2 → P 3 Compléter le ode i-dessous
en utilisant des sémaphores pour syn hroniser les pro essus de manière à respe ter les
ontraintes du graphe.
Listing 7 (cid:21) Graphe de pré éden e 2
PROGRAM P1P2P3 ; \ \
v a r
. . . . . . . . . . . .
s em a p h o r e i n i t
. . . . . . . . . . . ;
P r o e s s P1 { . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . }
P r o e s s P2 { . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . }
P r o e s s P3 { . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . }
Page 5