0% ont trouvé ce document utile (0 vote)
7 vues29 pages

Chap 1

Le chapitre II traite de la gestion des processus dans les systèmes d'exploitation, définissant un processus comme un programme en cours d'exécution avec un identifiant unique (PID). Il décrit le cycle de vie d'un processus, le bloc de contrôle de processus (PCB), et l'appel système fork() qui permet la création de processus fils. Le document aborde également la gestion des processus sous Linux, y compris les processus orphelins et zombies.

Transféré par

ahm.gannoun
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
7 vues29 pages

Chap 1

Le chapitre II traite de la gestion des processus dans les systèmes d'exploitation, définissant un processus comme un programme en cours d'exécution avec un identifiant unique (PID). Il décrit le cycle de vie d'un processus, le bloc de contrôle de processus (PCB), et l'appel système fork() qui permet la création de processus fils. Le document aborde également la gestion des processus sous Linux, y compris les processus orphelins et zombies.

Transféré par

ahm.gannoun
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

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

Vous aimerez peut-être aussi