Chapitre II : La gestion des processus - ESEN

63
Systèmes d’Exploitation I Chapitre II : La gestion des processus Amine DHRAIEF 1 ère année Licence LFIG ESEN, Université De La Manouba

Transcript of Chapitre II : La gestion des processus - ESEN

Page 1: Chapitre II : La gestion des processus - ESEN

Systèmes d’Exploitation I

Chapitre II :

La gestion des processusAmine DHRAIEF

1ère année Licence LFIGESEN, Université De La Manouba

Page 2: Chapitre II : La gestion des processus - ESEN

Définitionsource#1 : Dictionnaire Larousse

● Processus nom masculin , latin processus, de procedere, progresser– Enchaînement ordonné de faits ou de phénomènes,

répondant à un certain schéma et aboutissant à quelque chose : Le processus d'une crise.

– Suite continue d'opérations, d'actions constituant la manière de faire, de fabriquer quelque chose : Les processus de fabrication doivent être revus.

Page 3: Chapitre II : La gestion des processus - ESEN

Définitionsource#2 : ISO 9000

● Processus : ensemble d'activités corrélées ou interactives qui transforme des éléments d'entrée en éléments de sortie.

Page 4: Chapitre II : La gestion des processus - ESEN

Définitionsource#3 : Dictionnaire de l'informatique de Pierre

Yves Morvan

● Processus : – Suite d'actions élémentaires dont le résultat est

équivalent à l'action principale dont elles sont la décomposition.

– La notion de processus permet de décrire le comportement d'un système d'exploitation

Page 5: Chapitre II : La gestion des processus - ESEN

Définitionsource#4 :

Page 6: Chapitre II : La gestion des processus - ESEN

Définitionsource#5 : wikipedia

● Un processus est un programme en cours d'exécution par un ordinateur. De façon plus précise, il peut être défini comme :– Un ensemble d'instructions à exécuter, pouvant être

dans la mémoire morte, mais le plus souvent chargé depuis la mémoire de masse vers la mémoire vive ;

– un espace d'adressage en mémoire vive pour stocker la pile, les données de travail, etc. ;

– des ressources telles que les ports réseau.

Page 7: Chapitre II : La gestion des processus - ESEN

Chaîne de production d’un programme exécutable

La chaîne de production est l'ensemble des opérations de fabrication nécessaires, à la réalisation d'un produit manufacturé, des matières premières jusqu'à la mise

sur le marché

Page 8: Chapitre II : La gestion des processus - ESEN

Chaîne de production d’un programme exécutable

Chaîne de production

Programme écrit dans un langage de haut niveau

Programme dit exécutable, écrit en langage machine

Page 9: Chapitre II : La gestion des processus - ESEN

Chaîne de production d’un programme exécutable

(1) Éditeur de texte

(2) Compilateur :$gcc -c monprog.c

(3) Éditeur de lien$gcc monprog.o -o monprog

(4) Chargeur

Source : monprog.c

objet: monprog.o

Bibliothèque

Ficher exécutable sur le disque : monprog

monprog : Exécutable en mémoireprocessus

Page 10: Chapitre II : La gestion des processus - ESEN

Chaîne de production d’un programme exécutable

● (1) Le programme est saisie à l'aide de l'éditeur de texte → création un fichier sur le disque que l'on appelle le fichier source (monprog.c).

● (2) le fichier source (monprog.c) est ensuite compilé à l'aide d'un compilateur (gcc) dépendant du langage de programmation utilisé . – Le compilateur vérifie que la syntaxe du langage est respectée – Le compilateur génère ensuite l'équivalent du programme source en langage machine – On obtient le fichier objet (monprog.o)

● (3) le fichier objet est ensuite soumis à l'éditeur de liens (ld invoqué via gcc -o) dont le rôle est de résoudre les références externes, c'est-à-dire par exemple, d'associer les appels système inclus dans le programme à leur adresse dans le système. – L'éditeur de liens produit sur disque le fichier exécutable (monprog)

● (4) Lorsque l'utilisateur demande l'exécution de son programme, le fichier

exécutable est alors monté en mémoire centrale : c'est l'étape de chargement. Le système alloue de la place mémoire pour placer le code et les données du programme.

Page 11: Chapitre II : La gestion des processus - ESEN

05/02/18 OS I 11

Du monotâche vers le multitâche● Les premiers OS autorisaient un seul programme à

être exécuter à la fois. – Un tel programme avait un contrôle complet du système et

un accès à toutes les ressources du système

● Les OS actuels permettent à plusieurs programmes d'être charger en mémoire et exécuter en même temps.– Cette évolution a nécessité un contrôle plus strict et un

cloisonnement plus rigoureux des différents programmes.

Page 12: Chapitre II : La gestion des processus - ESEN

05/02/18 OS I 12

Du monotâche vers le multitâche● Ces besoins ont conduit à la création de la notion de

processus, qui est « un programme en exécution ». – Un processus est l'unité fondamental dans le cadre d’un OS moderne

temps partagé.

● Un système se compose d'un ensemble de processus: – les processus du OS exécutent le code du OS– et des processus utilisateurs exécutent le code de l'utilisateur.

● Tous ces processus s'exécutent en même temps.

→ En commutant le processeur entre les processus, le système d‘exploitation peut rendre l'ordinateur plus productif.

Page 13: Chapitre II : La gestion des processus - ESEN

05/02/18 OS I 13

Définition d’un processus● Un processus est souvent définit comme étant un programme en

exécution. – Un processus est plus que le code du programme (text section)

● Un processus inclus une représentation de l'activité en cours du programme :– Le contenu des registres du processeur tel qur le program counter (PC) (un

registre qui contient l’adresse mémoire de l’instruction en cours/prochaine selon les architectures des CPUs)

– une pile d’exécution qui contient des données provisoires (tels que la fonction, les paramètres, des adresses de retour, et les variables locales),

– une section de données (data section), qui contient les variables globales. – un tas (heap) qui est un mémoire allouée dynamiquement lors de l'exécution

processus.

Page 14: Chapitre II : La gestion des processus - ESEN

05/02/18 OS I 14

Définition d’un processus

● Un processus est un programme en cours d'exécution auquel est associé : (i) un environnement processeur (les registres, compteurs,...)) et (ii) un environnement mémoire appelés contexte du processus.

● Un processus est l'instance dynamique d'un programme et incarne le fil d'exécution de celui-ci dans un espace d'adressage protégé

Page 15: Chapitre II : La gestion des processus - ESEN

05/02/18 OS I 15

Définition d’un processus

(1) Programme en coursd’exécution

(2) Environnement CPU

(3) Environnement Mémoire

PROCESSUS

Page 16: Chapitre II : La gestion des processus - ESEN

05/02/18 OS I 16

Programme vs. Processus● Le programme n'est pas en soi un processus !

– un programme est une entité passive, comme un fichier contenant une liste d'instructions

– alors qu'un processus est une entité active avec un ensemble de ressources associées.

→ Un programme devient un processus lorsqu'un fichier exécutable est chargé en mémoire.

● Même si deux processus peuvent être associés à un même programme, ils sont néanmoins considérés comme deux séquences d'exécution séparées. – Chacune d'elles est un processus distinct, et bien que les sections de

texte sont équivalentes, les data section, la pile, le tas sont différents.

Page 17: Chapitre II : La gestion des processus - ESEN

05/02/18 OS I 17

Les états d’un processus● Lors de son exécution,

un processus est caractérisé par un état

● Lorsque le processus obtient le processeur et s'exécute, il est dans l'état élu. – L'état élu est l'état

d'exécution du processus.

ÉLUPRÊT

BLOQUÉ

Élection

BlocageDéblocage

MortNaissance

En attente du processeur

En exécution

En attente des

ressources

Page 18: Chapitre II : La gestion des processus - ESEN

05/02/18 OS I 18

Les états d’un processus● lors de cette exécution, le

processus peut demander à accéder à une ressource qui n'est pas immédiatement disponible – le processus ne peut pas

poursuivre son exécution tant qu'il n'a pas obtenu la ressource

● le processus quitte alors le processeur et passe dans l'état bloqué.– L'état bloqué est l'état d'attente

d'une ressource autre que le processeur.

ÉLUPRÊT

BLOQUÉ

Élection

BlocageDéblocage

MortNaissance

En attente du processeur

En exécution

En attente des

ressources

Page 19: Chapitre II : La gestion des processus - ESEN

05/02/18 OS I 19

Les états d’un processus● Lorsque le processus a enfin

obtenu la ressource qu'il attendait, celui-ci peut potentiellement reprendre son exécution.

● Or, lorsque le processus est passé dans l'état bloqué, le processeur a été alloué à un autre processus. – Le processeur n'est donc pas

forcément libre.

● Le processus passe alors dans l'état Prêt.– L'état Prêt est l'état d'attente du

processeur.

ÉLUPRÊT

BLOQUÉ

Élection

BlocageDéblocage

MortNaissance

En attente du processeur

En exécution

En attente des

ressources

Page 20: Chapitre II : La gestion des processus - ESEN

05/02/18 OS I 20

Process Control Block (PCB)● Chaque processus est

représenté dans le système d'exploitation par un bloc de contrôle de processus (Process Control Block - PCB) appelé aussi un task-control block

● Le système d’exploitation maintient dans une table appelée «table des processus»– les informations sur tous les

processus créés (une entrée par processus : PCB).

Page 21: Chapitre II : La gestion des processus - ESEN

05/02/18 OS I 21

Process Control Block (PCB)● Le bloc de contrôle d'un processus (PCB) contient les

informations suivantes :– un identificateur unique du processus (un ‘entier’) : le PID (process identifier)– l'état courant du processus (élu, prêt, bloqué)– le contexte processeur du processus : la valeur du CO, la valeur des autres

registres du processeur– le contexte mémoire : ce sont des informations mémoire qui permettent de

trouver le code et les données du processus en mémoire centrale– des informations diverses de comptabilisation pour les statistiques sur les

performances système– des informations liées à l' ordonnancement du processus. Le PCB permet

la sauvegarde et la restauration du contexte mémoire et du contexte processeur lors des opérations de commutations de contexte .

Page 22: Chapitre II : La gestion des processus - ESEN

05/02/18 OS I 22

Process Control Block (PCB)

Page 23: Chapitre II : La gestion des processus - ESEN

05/02/18 OS I 23

Commutation de contextes de processus

Page 24: Chapitre II : La gestion des processus - ESEN

05/02/18 OS I 24

La mémoire associée à un processusAllocation de la mémoire

● Au cours de son exécution, un processus alloue de la mémoire. Il existe trois types d’allocations :

1)allocation statique

2)allocation sur la pile (« stack allocation »)

3)allocation sur le tas (« heap allocation »)

Page 25: Chapitre II : La gestion des processus - ESEN

05/02/18 OS I 25

La mémoire associée à un processusAllocation de la mémoire

● Rappel : variable statique

– Les variables statiques sont allouées au début de l'exécution du programme, et ne sont libérées qu'à la fin de l'exécution du programme.

– Permet de donner une variable locale une durée de vie égale à celle du processus

Page 26: Chapitre II : La gestion des processus - ESEN

05/02/18 OS I 26

La mémoire associée à un processusAllocation de la mémoire

● Exemple

Page 27: Chapitre II : La gestion des processus - ESEN

05/02/18 OS I 27

La mémoire associée à un processusAllocation de la mémoire

● Allocation statique :– Exemple : static int exemple=1 ; – Espace mémoire nécessaire précisé dans le code avant

l’exécution– Espace réservé au moment de la compilation dans le

fichier binaire résultant– Espace accessible lors du chargement du binaire avant

l’exécution

→ Pas d’allocation lors de l’exécution

Page 28: Chapitre II : La gestion des processus - ESEN

05/02/18 OS I 28

La mémoire associée à un processusAllocation de la mémoire

● Allocation statique :– La mémoire allouée statiquement placée dans le segment de données ou

le segment bss

– Segment de données: ● variables globales ● variables statiques initialisées

– Segment BSS : ● zone de données non initialisées ● les variables globales et statiques qui sont initialisées à zéro ou non initialisées

Page 29: Chapitre II : La gestion des processus - ESEN

05/02/18 OS I 29

La mémoire associée à un processusAllocation de la mémoire

● Allocation dynamique de mémoire du processus

– Se fait pendant l’exécution du programme

– Espace non prévue dans le binaire du programme

– Demande d’allocation se fait durant l’exécution

● Deux segments de processus concernés :

– Segment de pile

– Segment de tas

Page 30: Chapitre II : La gestion des processus - ESEN

05/02/18 OS I 30

La mémoire associée à un processusAllocation de la mémoire

● Allocation sur la pile (stack allocation)

– Programme : routines (fonctions/procédures) + variables locales (lexicales)

– Variables locales (lexicales) : sa portée est définie par le texte du programme

● Mémoire allouée à l’entrée de la routine

● Mémoire libérée au retour de la routine

● → Le segment de pile est utilisé pour ces allocations/dés-allocations

Page 31: Chapitre II : La gestion des processus - ESEN

05/02/18 OS I 31

La mémoire associée à un processusAllocation de la mémoire

● Allocation sur le tas (heap allocation)– Selon l’exécution, un programme peut allouer de la

mémoire (malloc) et la libérer par la suite– l’allocation se fait alors dans le segment de tas.– Un tas : est une structure de données de type

arbre qui permet de retrouver rapidement un élément.

Page 32: Chapitre II : La gestion des processus - ESEN

05/02/18 OS I 32

Exemple : Anatomie d’un processus sous Linux

Page 33: Chapitre II : La gestion des processus - ESEN

05/02/18 OS I 33

Exemple : Anatomie d’un processus sous Linux

Page 34: Chapitre II : La gestion des processus - ESEN

05/02/18 OS I 34

Exemple : Anatomie d’un processus sous Linux

Page 35: Chapitre II : La gestion des processus - ESEN

05/02/18 OS I 35

Processus Sous UNIX

Page 36: Chapitre II : La gestion des processus - ESEN

05/02/18 OS I 36

Contexte : la division cellulaire

Page 37: Chapitre II : La gestion des processus - ESEN

05/02/18 OS I 37

Contexte : UNIX est multitâche

● La qualité du fonctionnement multitâche d’Unix représente l’un des points les plus attractifs de ce système d’exploitation.

● On peut faire exécuter simultanément plusieurs programmes sans qu’aucun d’eux ne ressente la présence des autres, ou à l’inverse en leur permettant de dialoguer entre eux.

Page 38: Chapitre II : La gestion des processus - ESEN

05/02/18 OS I 38

Appel systéme fork()

● Le parallélisme Unix bas niveau est fourni par le noyau qui duplique un processus lorsqu’on invoque l’appel-système fork() .

● Les deux processus sont alors strictement identiques, et seule la valeur de retour de fork() permet de les distinguer.

Page 39: Chapitre II : La gestion des processus - ESEN

05/02/18 OS I 39

Comment faire un processus ?● Un nouveau processus est créé par fork() du système appelant.

● Le nouveau processus comprend une copie de l'espace d'adressage du processus original.– Ce mécanisme permet au processus parent de communiquer facilement avec

son processus enfant.

● Les deux processus (le parent et l'enfant) poursuivre l'exécution à l'instruction après le fork(), avec une différence: – le code retour du fork() est égal à zéro pour le nouveau (enfant)

processus,– alors que le PID (non nulle) de l'enfant est retourné au processus père.

Page 40: Chapitre II : La gestion des processus - ESEN

05/02/18 OS I 40

Comment faire un processus ?● L'appel-système fork() est déclaré dans <unistd.h> : pid_t fork(void);

● DEUX valeurs de retour en cas de succès:– Dans le processus père : valeur de retour = le PID du fils,– Dans le processus fils : valeur de retour = zéro.

● Sinon– erreur : valeur de retour = -1.

● Afin d'obtenir le numéro du processus, il suffit de faire l'appel système getpid(), ou getppid() pour obtenir le numéro du père.– PID (Process IDentifier) – PPID : numéro du processus père (Parent Process Identifier)

Page 41: Chapitre II : La gestion des processus - ESEN

05/02/18 OS I 41

Naissance d’un processusexemple

Page 42: Chapitre II : La gestion des processus - ESEN

05/02/18 OS I 42

Naissance d’un processusprincipe du copy-on-write

● Le copy-on-write ou copie sur écriture est une stratégie d'optimisation utilisée en programmation informatique.

● L'idée fondamentale : si de multiples appelants demandent des ressources initialement impossibles à distinguer, vous pouvez leur donner des pointeurs vers la même ressource.

● Ceci est maintenue jusqu'à ce qu'un appelant modifie sa « copie » de la ressource. – À ce moment-là, une copie privée est créée. – Cela évite que le changement soit visible ailleurs. – Ceci se produit de manière transparente pour les appelants. – L'avantage principal est que si un appelant ne fait jamais de modifications, la copie

privée n'est jamais créée

Page 43: Chapitre II : La gestion des processus - ESEN

05/02/18 OS I 43

Naissance d’un processuscopy-on-write et fork()

● Lorsqu'un processus crée une copie de lui-même, les pages de la mémoire qui doivent être modifiées soit par le processus soit par sa copie sont marquées copy-on-write.

● Lorsque le processus modifie une page mémoire, le noyau du système d'exploitation intercepte l'opération et copie la page mémoire pour que les changements de la mémoire d'un processus n'affectent pas celle d'un autre.

Page 44: Chapitre II : La gestion des processus - ESEN

05/02/18 OS I 44

Naissance d’un processus -exemple 2

Page 45: Chapitre II : La gestion des processus - ESEN

05/02/18 OS I 45

Naissance d’un processus -exemple 2

Page 46: Chapitre II : La gestion des processus - ESEN

05/02/18 OS I 46

Mort naturelle et Zombie● Un processus peut se terminer normalement ou

anormalement.

● Dans le premier cas, l'application est abandonnée à la demande de l'utilisateur, ou la tâche à accomplir est finie.

● Dans le second cas, un dysfonctionnement est découvert, qui est si sérieux qu'il ne permet pas au programme de continuer son travail

Page 47: Chapitre II : La gestion des processus - ESEN

05/02/18 OS I 47

Mort naturelle d’un processus● Un programme peut se finir de plusieurs manières. La plus simple est de

revenir de la fonction main( ) en renvoyant un compte rendu d'exécution sous forme de valeur entière.

● Cette valeur est lue par le processus père, qui peut en tirer les conséquences adéquates. – Par convention, un programme qui réussit à effectuer son travail renvoie une valeur

nulle, tandis que les cas d'échec sont indiqués par des codes de retour non nuls (et qui peuvent être documentés avec l'application).

● Il est possible d'employer les constantes symboliques EXIT_SUCCESS ou EXIT_FAILURE définies dans <stdlib.h>. – Ceci a l'avantage d'adapter automatiquement le comportement du programme, même

sur les systèmes non-Posix, où ces constantes ne sont pas nécessairement 0 et 1.

Page 48: Chapitre II : La gestion des processus - ESEN

05/02/18 OS I 48

Orphelin et Zombie● Processus orphelins

– si un processus père meurt avant son fils ce dernier devient orphelin.

● Processus zombie– Si un fils se termine tout en disposant toujours d'un PID

celui-ci devient un processus zombie– Le cas le plus fréquent : le processus s’est terminé mais

son père n’a pas (encore) lu son code de retour.

Page 49: Chapitre II : La gestion des processus - ESEN

05/02/18 OS I 49

Orphelin et Zombie● Un processus fils peut devenir orphelin si son

père termine avant lui, auquel cas le noyau s'arrange pour le « faire adopter » par un processus système (INIT), le processus fils peut donc lui transmettre son statut de terminaison.

● Un processus est dit zombie s’il s'est achevé, mais qui dispose toujours d'un identifiant de processus (PID) et reste donc encore visible dans la table des processus. On parle aussi de processus défunt.

Page 50: Chapitre II : La gestion des processus - ESEN

05/02/18 OS I 50

Orphelin et Zombie● Au moment de la terminaison d'un processus, le système désalloue

les ressources que possède encore celui-ci mais ne détruit pas son bloc de contrôle.

● Le système passe ensuite l'état du processus à la valeur TASK_ZOMBIE (représenté généralement par un Z dans la colonne « statut » lors du listage des processus par la commande ps).

● Le signal SIGCHLD est alors envoyé au processus père du processus qui s'est terminé, afin de l'informer de ce changement. – Dès que le processus père a obtenu le code de fin du processus achevé au

moyen des appels systèmes wait ou waitpid, le processus terminé est définitivement supprimé de la table des processus.

Page 51: Chapitre II : La gestion des processus - ESEN

05/02/18 OS I 51

Orphelin et Zombie● Il est primordial dans les scripts de pouvoir déterminer si une commande a

réussi à effectuer son travail correctement ou non.

● On imagine donc l'importance qui peut être portée à la lecture du code de retour d'un processus. Cette importance est telle qu'un processus qui se termine passe automatiquement par un état spécial, zombie, en attendant que le processus père ait lu son code de retour.

● Si le processus père ne lit pas le code de retour de son fils, celui-ci peut rester indéfiniment à l'état zombie.

● Voici un exemple, dans lequel le processus fils attend deux secondes avant de se terminer. Tandis que le processus père affiche régulièrement l'état de son fils en invoquant la commande ps.

Page 52: Chapitre II : La gestion des processus - ESEN

05/02/18 OS I 52

Exemple Zombie

Page 53: Chapitre II : La gestion des processus - ESEN

05/02/18 OS I 53

Exemple Zombie

Page 54: Chapitre II : La gestion des processus - ESEN

05/02/18 OS I 54

Applications

Page 55: Chapitre II : La gestion des processus - ESEN

05/02/2018 55

Exercice #1

1)Répondre par OUI ou NON en justifiant vos réponses.1) Un processus est une enttt proouite après compilaton

2) Un processus est une enttt proouite après chargement o’un binaire en mtmoire

3) Le pseuoo-paralltlisme impose aux processus oe se connaître mutuellement

Page 56: Chapitre II : La gestion des processus - ESEN

05/02/2018 56

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écuton

● 2. Un processus est une entté produite après chargement d’un binaire en mémoire– Oui, car une fois termint le chargement o’un programme en mtmoire un processus

est crtt

● 3. Le pseudo-parallélisme impose aux processus de se connaître mutuellement– Non, car en pseuoo-paralltlisme les processus peroent la main au proft ou système

o’exploitaton qui allouera le CPU pour un processus tligible

Page 57: Chapitre II : La gestion des processus - ESEN

05/02/18 57

Exercice #2

● Préciser le nombre de processus créer par les programmes ci-dessous :Code1 Code 2 Code 3

int main() {fork();fork();fork();}

int main() {if (fork() > 0)fork();

}

int main() {int cpt=0;while (cpt < 3) {if (fork() > 0)cpt++;

elsecpt=3;

}

Page 58: Chapitre II : La gestion des processus - ESEN

05/02/18 58

Correction Exercice #2code 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.

– Les quatre processus continuent l’exécution a partir de la ligne incluse ;

– 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

P1

P2 P3

P4

P5

P6

P8

P7

Page 59: Chapitre II : La gestion des processus - ESEN

05/02/18 59

Correction Exercice #2code 2

● 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.

P1

P2 P3

Page 60: Chapitre II : La gestion des processus - ESEN

05/02/18 60

Correction Exercice #2code 3

● 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

P1

P2 P3 P4

Page 61: Chapitre II : La gestion des processus - ESEN

05/02/18 61

Exercice #3● Soit le code ci-dessous :

Page 62: Chapitre II : La gestion des processus - ESEN

05/02/18 62

Exercice #3

● 1- Lancer le programme ci-dessous avec les arguments 10 20. Que constatez-vous ? Donnez une explication.

● 2- Lancer le programme ci-dessous avec les arguments 10 0. Que constatez-vous ? Donnez une explication.

Page 63: Chapitre II : La gestion des processus - ESEN

05/02/18 63

Correction Exercice #3

● 1- Le père meurt avant son fils, le fils devient orphelin

● 2- Le fils meurt avant son père, le père est en sommeil, il ne lit pas le code de retour de son fils. Le fils devient zombie.