Exercises on Process Management

Operating Systems, Process Management · exam

Voir tous les documents en gestion et économie

Exercices gestion des processus

26/02/18

OS I

1

Exercice #1

1)Répondre par OUI ou NON en justifiant

vos réponses.

1)Un processus est une entité produite après

compilation

2)Un processus est une entité produite après

chargement d’un binaire en mémoire

26/02/2018

2

Correction Exercice #1

● 1. Un processus est une entité produite après

compilation

– Non, car un processus est une image d’un programme

en exécution

● 2. Un processus est une entité

produite après chargement d’un

binaire en mémoire

– Oui, car une fois terminé le chargement d’un

programme en mémoire un processus est créé

26/02/2018

3

Exercice #2

● Préciser le nombre de processus créer par les

programmes ci-dessous :

Code1

Code 2

Code 3

int main() {

int main() {

fork();

fork();

fork();

}

if (fork() > 0)

fork();

}

int main() {

int cpt=0;

while (cpt < 3) {

if (fork() > 0)

cpt++;

else

cpt=3;

}

26/02/18

4

Correction Exercice #2

Publicité

code 1

● 8 processus sont crées :

– L'exécution du programme crée un

processus P1.

– A la lecture de la première instruction

fork() , P1 se duplique et crée alors P2.

Les deux processus continuent

l'exécution à partir de la ligne incluse ;

– A la lecture de la seconde instruction

fork(), P1 se duplique et crée P3 tandis

que P2 crée P4.

P1

P2

P3

P5

P4

P6

P7

– Les quatre processus continuent

l’exécution a partir de la ligne incluse ;

P8

– A la lecture de la troisième instruction

fork(), P1 se duplique et crée P5, P2

crée P6, P3 crée P7 et P4 crée P8

26/02/18

5

Correction Exercice #2

code 2

P1

P2

P3

● 3 processus sont crées:

– L'exécution du programme crée un

processus P1.

– A la lecture de la première instruction fork(),

P1 se duplique et crée alors P2. P1 est le

processus parent, P2 le processus enfant.

– Les deux processus continuent l'exécution a

partir de la ligne incluse ; Le résultat de

l'appel précédent est supérieur à 0 pour P1.

Ce dernier rentre donc dans la suite

d'instructions conditionnée et exécute

l'instruction fork().

– P1 se duplique et crée donc P3.

– En revanche, le résultat de l'appel précédent

est égale a 0 pour P2, qui ne rentre donc

pas dans la suite d'instructions conditionnée.

26/02/18

6

Correction Exercice #2

code 3

P1

Publicité

P2

P3

P4

● 4 processus sont crées :

– L'exécution du programme crée un processus P1, qui initialise

la variable cpt a 0.

– P1 rentre dans la boucle while() et se duplique lors de

l'exécution de fork(). Il crée alors P2.

– Le résultat de l'appel précédent est supérieur à 0 pour P1. Ce

dernier rentre donc dans la suite d'instructions conditionné par

"if" et incrémente son compteur cpt qui passe a 1.

– En revanche, le résultat de l'appel précédent est égale a 0 pour

P2, qui rentre donc dans la suite d'instructions conditionnée par

else et affecte cpt à 3. Des lors P2 sort de la boucle et

n’exécutera plus d'instruction.

– Seul P1 ré-exécute la séquence d'instruction de la boucle

while(), et le même schéma ce reproduit : a chaque entrée

dans la boucle, P1 se duplique, tandis que le processus

dupliqué n'exécute aucune instruction.

– P1 aura ainsi exécuté 3 fois l'instruction fork() jusqu'a ce que sa

variable cpt atteigne 3.

– Il aura donc engendréé P2, P3 et P4

26/02/18

7

Exercices gestion des processus

26/02/18

OS I

1

Exercice #1

1)Répondre par OUI ou NON en justifiant

vos réponses.

1)Un processus est une entité produite après

compilation

2)Un processus est une entité produite après

chargement d’un binaire en mémoire

26/02/2018

2

Correction Exercice #1

● 1. Un processus est une entité produite après

compilation

– Non, car un processus est une image d’un programme

en exécution

● 2. Un processus est une entité

produite après chargement d’un

binaire en mémoire

– Oui, car une fois terminé le chargement d’un

programme en mémoire un processus est créé

26/02/2018

3

Exercice #2

● Préciser le nombre de processus créer par les

Publicité

programmes ci-dessous :

Code1

Code 2

Code 3

int main() {

int main() {

fork();

fork();

fork();

}

if (fork() > 0)

fork();

}

int main() {

int cpt=0;

while (cpt < 3) {

if (fork() > 0)

cpt++;

else

cpt=3;

}

26/02/18

4

Correction Exercice #2

code 1

● 8 processus sont crées :

– L'exécution du programme crée un

processus P1.

– A la lecture de la première instruction

fork() , P1 se duplique et crée alors P2.

Les deux processus continuent

l'exécution à partir de la ligne incluse ;

– A la lecture de la seconde instruction

fork(), P1 se duplique et crée P3 tandis

que P2 crée P4.

P1

P2

P3

P5

P4

P6

P7

– Les quatre processus continuent

l’exécution a partir de la ligne incluse ;

P8

– A la lecture de la troisième instruction

fork(), P1 se duplique et crée P5, P2

crée P6, P3 crée P7 et P4 crée P8

26/02/18

5

Correction Exercice #2

code 2

Publicité

P1

P2

P3

● 3 processus sont crées:

– L'exécution du programme crée un

processus P1.

– A la lecture de la première instruction fork(),

P1 se duplique et crée alors P2. P1 est le

processus parent, P2 le processus enfant.

– Les deux processus continuent l'exécution a

partir de la ligne incluse ; Le résultat de

l'appel précédent est supérieur à 0 pour P1.

Ce dernier rentre donc dans la suite

d'instructions conditionnée et exécute

l'instruction fork().

– P1 se duplique et crée donc P3.

– En revanche, le résultat de l'appel précédent

est égale a 0 pour P2, qui ne rentre donc

pas dans la suite d'instructions conditionnée.

26/02/18

6

Correction Exercice #2

code 3

P1

P2

P3

P4

● 4 processus sont crées :

– L'exécution du programme crée un processus P1, qui initialise

la variable cpt a 0.

– P1 rentre dans la boucle while() et se duplique lors de

l'exécution de fork(). Il crée alors P2.

– Le résultat de l'appel précédent est supérieur à 0 pour P1. Ce

dernier rentre donc dans la suite d'instructions conditionné par

"if" et incrémente son compteur cpt qui passe a 1.

– En revanche, le résultat de l'appel précédent est égale a 0 pour

P2, qui rentre donc dans la suite d'instructions conditionnée par

else et affecte cpt à 3. Des lors P2 sort de la boucle et

n’exécutera plus d'instruction.

– Seul P1 ré-exécute la séquence d'instruction de la boucle

while(), et le même schéma ce reproduit : a chaque entrée

dans la boucle, P1 se duplique, tandis que le processus

dupliqué n'exécute aucune instruction.

– P1 aura ainsi exécuté 3 fois l'instruction fork() jusqu'a ce que sa

variable cpt atteigne 3.

– Il aura donc engendréé P2, P3 et P4

26/02/18

7