Systèmes d'Exploitation III - 2

Page 1 sur 5Lecteur de document UniversityLib

Systèmes d'Exploitation III - 2

Systèmes d'Exploitation, Programmation, Synchronisation des processus · exam

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