Chapitre II : Gestion des Processus
Cours Système Exploitation II
1 LF info ISIMM
Dr. Sana BENZARTI
2023/2024
1
Contenu du cours
1- Qu’est ce qu’un processus ?
2- Cycle de vie d’un processus
3- Le PCB
4- Contexte d’exécution d’un processus
5- l’appel système fork()
2
Définition d’un Processus
Un processus est un programme en cours d’exécution ;
exemple :
Un programme Tout autre type de code
Un script
d’application exécutable
Système d’exploitation
Un processus Créé par
Un autre processus
existant 3
Définition d’un Processus
Chaque processus possède un identifiant unique appelé PID (Process ID),
qui permet de l’identifier et de le manipuler
Le système d’exploitation est responsable de la gestion des processus en les
exécutant, en les arrêtant, en les mettant en attente ou en les planifiant
pour l'exécution.
4
Différence entre programme et processus
- Un programme est une entité passive : un code écris en langage C qui
comporte une liste d’instructions.
- Un processus est une entité active avec un ensemble de ressources
associées.
- Donc un programme devient un processus lorsqu’un fichier exécutable
est charge en mémoire.
5
Cycle de vie d’un processus
[Link] : le processus vient juste d'être créé et attend d'être affecté à un processeur.
[Link]êt : le processus est prêt à s'exécuter et attend d'être affecté à un processeur disponible.
[Link] cours d'exécution : le processus est en train d'être exécuté sur un processeur.
[Link] attente (ou bloqué) : le processus est en attente d'un événement ou d'une ressource, comme une
entrée/sortie ou une réponse à une demande de service.
[Link]é : le processus a terminé son exécution et attend d'être supprimé de la liste des processus actifs.
6
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
7
Process Control Block PCB
8
Process Control Block PCB
9
Processus sous Linux
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.
10
Processus sous Linux
Le système d’exploitation fournit un ensemble d’appels système qui permettent la
création, la destruction, la communication et la synchronisation des processus
dynamiquement.
Le processus créateur est appelé processus père
Le processus créé est appelé processus fils
11
Processus sous Linux
Un processus peut créer un ou plusieurs processus fils qui, à leur tour, peuvent créer
des processus fils sous une forme de structure arborescente
P1 : Ancêtre
P1
P3: Père de P5 et P6 et fils de P1
P2 P3
P4 P5 P6 P5 et P6 : Fils de P3
12
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. Le processus fils est la
copie exacte du processus père, ils partagent le même code, le segment de
données variables).
Les deux processus s’exécutent d’une manière concurrente (en parallèle).
13
Appel système fork()
● 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.
● Les deux processus (le parent et l'enfant) poursuivent l'exécution à l'instruction
après le fork(), avec une différence:
– le code retour du fork() est égal à zéro chez le nouveau (enfant) processus,
– alors que le PID (non nulle) de l'enfant est retourné au processus père.
14
Appel système fork()
● 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)
15
L’appel système fork()
Processus père
L’exécution du processus père est suspendue jusqu’à
terminaison du processus fils
-> Exécution séquentielle , SE Monotâche fork()
Le père continue à s’exécuter en concurrence avec ses fils
-> Exécution asynchrone , SE MultiTâche
Processus père Processus fils
Continue à s’exécuter
16
L’appel système fork()
Définit un certain nombre de types de données de base utilisés dans
les autres en-têtes système.
pid_t : identificateur de processus
17
L’appel système fork()
Bibliothèque standard en C et en C++ qui fournit l'accès à un
ensemble de fonctions de bas niveau du système d'exploitation,
principalement pour les opérations d'entrée/sortie (E/S) et le contrôle
des processus.
fork(), getpid(), exec(), sleep() 18
L’appel système fork() : Exemple 1
19
L’appel système fork() : Exemple 2
20
L’appel système fork() : Exemple 3
21
L’appel système fork() : Exemple 4
22
L’appel système fork() : Exemple 5
23
L’appel système fork() : Exemple 6
24
Terminaison d’un processus
Un processus peut se terminer normalement ou anormalement.
Dans le premier cas, l’application est abandonnée a la demande de
l’utilisateur, où la tâche a 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.
25
Orphelin et Zombie
26
Orphelin et Zombie
27
Processus Zombie sous Linux
Les processus zombies ont un état "Z" dans la sortie de la commande ps aux. Le PID de ces
processus est également affiché, ainsi que le PPID qui est normalement celui du processus parent
qui a créé le processus zombie. Le nombre de processus zombies peut être obtenu en comptant
le nombre de lignes qui affichent l'état "Z".
28
Processus Zombie sous Windows
Sous Windows, on peut utiliser le
Gestionnaire des tâches pour identifier les
processus zombies.
Dans le Gestionnaire des tâches, con clique
sur l'onglet "Détails" pour afficher la liste des
processus en cours d'exécution.
Les processus zombies apparaîtront avec un
état "Suspendu" et un code de sortie de "-".
On peut trier la liste des processus par état en
cliquant sur l'en-tête de la colonne "État", ce
qui vous permettra de trouver facilement les
processus zombies.
29