Vous êtes sur la page 1sur 57

CHAPITRE1:

GESTION DES PROCESSUS

Enseignante de Cours: Siwar Mejri


E-mail: mej.siwar@gmail.com

Année universitaire: 2023-2024


Plan

I- Notion de processus

II- Le parallélisme et le pseudo-parallélisme


VII- Mécanisme de commutation
III- Hiérarchie des processus
VIII- Relations entre les processus
IV- Les processus sous Unix
IX- Les threads
V- Les états d’un processus

VI- Les modes d’exécution d’un processus


C’est quoi un système d’exploitation (SE) ?

C’est un ensemble de programmes qui fournit une interface entre le matériel d'un ordinateur et les
applications logicielles. Son rôle est de gérer les ressources matérielles, de fournir des services aux
programmes applicatifs et de permettre aux utilisateurs d'interagir avec l'ordinateur.

Parmi les fonctions principales d'un système d'exploitation, nous citons :


• Gestion des ressources
• Gestion des fichiers
• Communication et gestion des entrées/sorties
• Gestion des processus
• Gestion de la mémoire
• Etc.
3
I. Notion de processus
I. Notion de processus

C’est quoi la difference entre:

➢ Un programme

➢ Un processeur

➢ Un processus

5
I. Notion de processus

1. Définition
Un programme: c’est un ensemble d’instructions écrites dans un langage de programmation
destiné à être exécuté.

Un processeur: c’est une entité matérielle capable d’exécuter des instructions.

Un processus: est
• Une instance d’un programme en cours d’exécution par le processeur.
• Entité dynamique représentant l'exécution d'un programme sur un processeur.

Un programme est un Un processus représente


ensemble de lignes de code l’exécution du programme
(statique) (dynamique)
6
I. Notion de processus

1. Définition
Un processus a un début et une fin. Entre ces deux instants, il passe par des états (actif, ou en
attente)

7
I. Notion de processus

1. Définition
Exemple:
• Exécution d’un programme :
⚬ Le logiciel Ms Word est un programme installé dans l’ordinateur. Lorsqu’on le lance, on
crée un processus appelé winword. (à partir de gestionnaire des tâches).
⚬ Mozilla Firefox est un programme (navigateur web). En le lançant, on crée le processus
firefox.

• Copie d’un fichier sur disque.

• Envoi d’une séquence de données sur un réseau.

8
I. Notion de processus

2. Exemple (A. Tanenbaum)


Imaginons qu’un informaticien soit entrain de préparer un gâteau d’anniversaire pour sa soeur.
Il dispose d’une cuisine équipée et il a tous les ingrédients nécessaires. Il prend la recette du
gâteau où il y a la liste des ingédients et le mode de préparation, et la suit.

Dans cette métaphore, déterminer:


• Le programme
• Le processeur
• Le processus
• Les données d’entrée

9
I. Notion de processus

2. Exemple (A. Tanenbaum)


Imaginons qu’un informaticien soit entrain de préparer un gâteau d’anniversaire pour sa soeur.
Il dispose d’une cuisine équipé et il a tous les ingrédients nécessaires. Il prend la recette du
gâteau où il y a la liste des ingédients et le mode de préparation et la suit.

Dans cette métaphore, déterminer:


• Le programme: La recette <-Entité statique
• Le processeur: L’informaticien
• Le processus P1 : la préparation du gâteau (par l’informaticien en suivant les instructions de
la recette) <- Entité dynamique
• Les données d’entrée: Les ingrédients

10
I. Notion de processus

2. Exemple (A. Tanenbaum)


Imaginons maintenant qu’une guêpe pique l’informaticien. Ce dernier sauvegarde
dans sa tête la dernière instruction qu’il a faite dans la recette.

Une interruption -> Sauvegarde de l’état d’avancement du processus en cours et


commutation du contexte.
-> processus P1 En attente
Puis, il prend la brochure des premiers secours et commence à soigner sa piqure.
-> Création d’un nouveau processus

• Notre processeur bascule d’un processus P1 (confection du gâteau) à un autre


P2 (soin d’une piqûre) -> C’est la multiprogrammation.
• Chaque processus découle d’un programme différent.
11
I. Notion de processus

2. Exemple (A. Tanenbaum)


Imaginons maintenant qu’une guêpe pique l’informaticien. Ce dernier
La multiprogrammation est unesauvegarde
technique utilisée
dans les systèmes d'exploitation pour améliorer
dans sa tête la dernière instruction qu’il a faitl'utilisation
dans lades recette.
ressources d'un ordinateur. Elle permet
l'exécution simultanée de plusieurs programmes en
Une interruption -> Sauvegarde de l’état d’avancement
partageant le du processus
temps en cours
du processeur entreeteux.
Contrairement à la monoprogrammation où un seul
commutation du contexte. programme s'exécute à la fois, la multiprogrammation
-> processus P1 En attente permet à plusieurs programmes de coexister dans la
mémoire de l'ordinateur et d'être exécutés de manière
Puis, il prend la brochure des premiers secours et commence à soigner sa piqure.
concurrente.
-> Création d’un nouveau processus

• Notre processeur bascule d’un processus P1 (confection du gâteau) à un autre


P2 (soin d’une piqûre) -> C’est la multiprogrammation.
• Chaque processus découle d’un programme différent.
12
I. Notion de processus

2. Exemple (A. Tanenbaum)


Une fois le P2 est terminé, il revient à la cuisine pour continuer sa préparation du
gâteau au point où il l’avait laissé -> P1 est de nouveau actif.

• Un processus est une activité. Il inclut un programme, une entrée, une sortie et
un état.
• Un processeur peut être partagé par plusieurs processus et c’est l’ordonnanceur
qui gère les différents processus.

Q. Un processus correspond-il à un seul programme ?

-> Non, plusieurs processus peuvent être dérivés d’un même programme. Un
programme peut utiliser plusieurs processus, exemple : la commande cc exécute
plusieurs choses.
13
I. Notion de processus

3. Caractéristiques d’un processus

Le SE maintient une table appelée table de processus et contenant une entrée par processus.
Chaque entrée conserve le descripteur du processus, appelé Bloc de Contrôle de processus
BCP (Process Control Block ou PCB en anglais), qui fait référence à une structure de données
utilisée par les systèmes d'exploitation pour stocker des informations importantes sur un
processus en cours d'exécution. Chaque processus actif sur un système d'exploitation a son
propre BCP, qui contient des détails cruciaux sur son état, son contexte d'exécution et d'autres
informations associées.

-> Cette table permet au SE de localiser et gérer tous les processus.

14
I. Notion de processus

3. Caractéristiques d’un processus


Un processus est caractérisé par (le descripteur du processus)

• Un identifiant unique (PID): Les SE attribuent, d'une manière unique, à chaque processus chargé dans
la mémoire vive une valeur numérique. Cette valeur numérique est appelée Identifiant de processus
(PID, Process IDentifier en anglais).

• Un espace d’adressage : pile d’exécution + code du programme

• Un état principal : les valeurs des registres lors de la dernière suspension (CO: Compteur d'Ordre
(adresse de la prochaine instruction devant être exécutée par ce processus), PSW: Processor Status
Word (registre d’état indique si le dernier résultat est pair, nul, s’il y a retenu…), sommet de pile,..).

15
I. Notion de processus

3. Caractéristiques d’un processus

• Une priorité : haute ou basse

• Les ressources allouées : fichiers ouverts, périphériques utilisés, mémoire

• Autres Informations: propiétaire ( celui qui a demandé la création de ce


processus), processus pére, processus fils, heure de début du processus...

16
I. Notion de processus

3. Caractéristiques d’un processus

Q: Que peut faire un processus?


Un processus peut :
• Accéder à une ressource de manière exclusive si son degré d’accès est limité à 1
processus à la fois, contre exemple : 2 personnes et une seule imprimante.
• Partage des ressources (ex: fichier) avec d’autres processus: affichage et
impression utilisant le même fichier.
• Créer d’autres processus, ex : shell et une commande tapée.
Exemple :
Le programme confection du gâteau peut générer 2 processus; 1 pour la préparation
du gâteau (génoise) et 1 autre pour la préparation de la crème. Ce sont 2 processus
indépendants mais nécessaires pour le processus de la confection du gâteau
(Coopération entre processus) 17
I. Notion de processus

3. Caractéristiques d’un processus

Le SE assure toutes ces fonctions. Il doit gérer :

• La création/destruction (par des appels systèmes) des processus

• L’iinterruption des processus

• l’ordonnancement des processus (chapitre2)

• La synchronisation et la communication entre les processus (chapitre3)

• Le conflit d’accès à une ressource partagée


18
II. Le parallélisme et
le pseudo-parallélisme
II. Le parallélisme et le pseudo-parallélisme

Soient 2 processus P1 et P2 en mémoire centrale. L’exécution de P1 et P2 peut être


séquentielle, paralléle ou pseudo parallèle.

1) Exécuter les processus l’un après l’autre :

2) S’il y a plusieurs processeurs, les processus sont distribués de façon équitable


sur ces processeurs.

-> Chaque processus a son processeur virtuel


20
II. Le parallélisme et le pseudo-parallélisme

3) En réalité, le processeur commute entre plusieurs processus (multiprogrammation)

-> À tout instant, un seul processus est en exécution sur un seul processeur. La,
commutation est si rapide qu’on a une illusion d’un traitement simultané.

21
III. Hiérarchie des processus
III. Hiérarchie des processus

Lors de l’amorçage du SE, il y a des processus de premier plan qui interagissent avec
l’utilisateur et accomplissent des tâches pour lui et des processus d’arrière plan
appelés démons.

Qu’est ce qu’un démon ?


Un processus démon est un processus qui s’exécute en permanence sur le système
afin d’être prêt lorsqu’un utilisateur sollicite le service auquel il est attaché, exemple :
httpd(serveur web Apache) s’active lors de l’arrivée d’un requête, syslogd
(journalisation des messages sur un système Linux).

Au-delà des processus créés lors de l’amorçage, de nouveaux processus peuvent être
créés.

23
III. Hiérarchie des processus

Le SE fournit un ensemble d’appels système qui permettent la création, la destruction,


la commutation et la synchronization des processus.
• Le processus qui lance l’appel système de création est appelé processus père ou
parent.
• Le processus créé est appelé fils ou enfant.

Un processus peut créer un ou plusieurs processus qui à leur tour peuvent en créer
d’autres.
Cette hiérarchie de processus a une racine. Il s’agit du processus init sous GNU/Linux
qui est lancé par le noyau à la fin de son initialisation et a le pid 1. ( à verifier à l’aide de
la commande ps)

➢ La commande ps permet d’obtenir des informations sur les processus exécutés par
le systéme. (ex: ps –e liste tous les processus) 24
III. Hiérarchie des processus

Exemple (UNIX): un processus appelé <<Bash>> ( interpréteur de commandes shell) lit les
commandes depuis un terminal. L’utilisateur tape la commande CC pour compiler un programme: le
bash doit alors faire un appel système pour créer un nouveau processus qui exécute le
compilateur.  on voit apparaître la hiérarchie des processus

25
III. Hiérarchie des processus

Quand ce processus termine la compilation, il exécute un appel système pour se terminer.


Un processus n’ a qu’un seul père (parent) et peut avoir 0 ou un ou plus d’enfants (fils).

Lors de la création d’un processus, il y a :


• Attribution d’un identifiant unique au processus : PID,
• Réservation d’une entrée dans la table des processus,
• Réservation de l’espace mémoire nécessaire,
• Initialisation du contexte du processus (la valeur du CO, PSW, les registres…),
• Insertion dans la file d’attente des processus prêts.

26
III. Hiérarchie des processus

Il y a 3 possibilités d’arrêt d’un processus :

• Volontaire ou normal: par lui-même (ayant terminé ses opérations),

• Involontaire autorisé : par son père.


➢ Le processus parent est le seul à pouvoir exécuter l’arrêt de ses enfants.
➢ SE est le père de tous les processus.

• Involontaire anormal : par le système :


➢ Temps d’exécution dépassé
➢ Mémoire demandée non disponible → bloqué ou terminé
➢ Instruction invalide

27
III. Hiérarchie des processus

28
IV. Les processus sous Unix
VI. Les processus sous Unix

1. La fonction fork()
La fonction fork( ) crée une copie exacte du processus appelant et renvoie :
• pid (entier > 0) du fils dans le processus père
• 0 dans le processus fils,
• -1 ou nb < 0 en cas d’erreur (cas où nb_max de création est atteint ou pas suffisamment
d’espace mémoire).

➢ La fonction getpid( ) renvoie le pid du processus appelant.


➢ La fonction getppid( ) renvoie le pid du processus père.

Observations : Après la création d’un processus fils :


- Le processus père s’exécute en concurrence avec son fils (exécution asynchrone)
➢ Concurrence entre fils et père.
- L’espace des données du processus père est recopié et non partagé par le fils.
30
VI. Les processus sous Unix

Exercice 1:
Donner le résultat de l’exécution du programme C suivant :

31
VI. Les processus sous Unix

➢ Père et fils exécutent le même code.

Pour faire la différence entre père et fils, on regarde la valeur de retour de fork( ).

32
VI. Les processus sous Unix

Exercice 2:
Ecrire un programme C qui permet de créer un processus fils puis afficher :
- « je suis le père pid X » par le père, avec pid X est le pid du père,
- « je suis le fils pid Y» par le fils, avec pid Y est le pid du fils,
- « erreur » en cas d’erreur de création

33
VI. Les processus sous Unix

Exercice 3:
Ecrire un programme C qui permet de créer un processus fils et tel que:
- Le fils affiche son pid et le pid de son père,
- le père affiche son pid et le pid de son fils.

34
VI. Les processus sous Unix

Exercice : Pour montrer que le bash est le père du processus process_fork.

➢ Je suis 8249 et mon père est 8248


➢ Je suis 8248 et mon père est 3731

35
VI. Les processus sous Unix

Exercice :

En exécutant ps:

36
VI. Les processus sous Unix

Exercice 4 :

Après l’exécution du programme suivant, combien de fois le message « Bonjour »


s’affichera-t-il ? Dessiner l’arbre généalogique des processus créés

37
VI. Les processus sous Unix

Exercice 4 :

Pour démontrer ça, afficher à chaque fois le pid du processus en cours et le pid de son
père.

38
VI. Les processus sous Unix

Exercice 5 :

Combien de fois le message « Bonjour » s’affichera-t-il ? Dessiner l’arbre généalogique des


processus créés.

39
VI. Les processus sous Unix

Exercice 6 :
1. Ecrire un programme C qui génère exactement 3 processus.

40
VI. Les processus sous Unix

Exercice 6 :
2. Si on modifie le code de la façon suivante, combien de fois le message « bonjour » sera
affiché ?

41
VI. Les processus sous Unix

Exercice 7 :
Ecrire un programme C qui génère exactement 3 processus fils.

42
V- Les états d’un processus
V. Les états d’un processus

Rappel

Une ressource est toute entité nécessaire à l’exécution d’un processus, exemples :
processeur physique, mémoire centrale, périphérique, donnée, bus, réseau, compilateur,
fichier, message d’un autre processus, etc…

➔ Si 1 seul point d’accès -> ressource critique -> processus en exclusion mutuelle (ex:
processeur)
➔ Sinon -> processus se partagent la ressource, ex : mémoire centrale.

44
V. Les états d’un processus

1. Les états d’un processus


Lors de sa vie, un processus peut passer par différents états suivants qu'il dispose de toute
ou d’une partie des ressources dont il a besoin pour s'exécuter.

45
V. Les états d’un processus

A- Etat nouveau
Le SE crée le processus :
✓ Attribue un identificateur pour le processus
✓ Réserve une entrée dans le tableau des processus
Mais, il ne l’a pas encore admis (il ne s’est pas encore engagé pour l’exécuter)
➢ Il ne lui a pas encore alloué des ressources
➢ Le processus est mis dans la file d’attente des nouveaux travaux, souvent appelée
spoule de travaux (job spooler).
Exemple de cause de mise en attente d’admission : la mémoire est insuffisante pour
charger d’autres processus.

B- Etat prêt (exécutable) :


Le processus pourrait être en train de s'exécuter, mais il doit attendre que
l’ordonnanceur lui attribue son tour.
46
V. Les états d’un processus

C- Etat actif (élu/ en cours d’exécution):


Un processus est actif quand il possède le processeur (et toutes les autres ressources
nécessaires) et est en train de réaliser ses opérations.

D- Etat bloqué :
Un processus est bloqué lorsqu’il attend une donnée ou la libération d’une ressource.
Exemple :
cat file1 file2 file3 | grep mot
Le 1er processus exécute cat qui concatène les fichiers file1, file2 et file 3. Le 2ème
processus créé par grep sélectionne les lignes contenant « mot ». Selon les vitesses
relatives des 2 processus, il se peut que grep soit prêt à s’exécuter mais qu’il n’y ait pas
de données pour l’alimenter → Il est donc bloqué en attente d’une donnée qui n’est pas
disponible.

47
V. Les états d’un processus

E- Etat terminé :
✓ Le processus a terminé les tâches à réaliser.
✓ Le SE a libéré les ressources qui lui étaient allouées.

48
V. Les états d’un processus

2. Les transitions entre états d’un processus

t1 : actif → bloqué
Le processus a besoin qu’un évènement se réalise pour pouvoir continuer son exécution
(une E/S, ex : lecture sur disque, attente de la saisie d’un caractère). Il laisse donc la
ressource processeur aux processus prêts.

Quand l’ordonnanceur choisit un autre processus pour l’exécuter -> transition 2 ou 3.


t2 : actif → Prêt
Il enlève la ressource processeur au processus courant dans 2 cas :
• Le processus a eu suffisamment de temps d’exécution et il est temps qu’un autre
bénéficie du temps processeur.
• Lorsqu’il y a une interruption -> exécution d’un processus plus prioritaire.

49
V. Les états d’un processus

2. Les transitions entre états d’un processus

t3 : Prêt → actif
L’ordonnanceur accorde la ressource processeur au processus (il l’élit).

t4 : bloqué → Prêt
L’évènement que le processus attendait est réalisé (l’arrivée d’une donnée quelconque), il
redevient candidat au processeur.
Si aucun autre processus n’est en cours d’exécution, la transition 3 peut se déclencher.
Sinon, le processus doit rester dans la file d’attente des processus prêts attendant son tour.

50
V. Les états d’un processus

3. Activité
Terminer les phrases par le mot qui convient:

➢ Lorsqu'un processus a toutes ses ressources à l'exception du processeur, il est dans


l'état …………...
➢ Lorsqu'un processus a toutes ses ressources, y compris le processeur, il est dans
l'état..……….
➢ Lorsque l’ordonnanceur désire allouer le processeur à un autre processus Le
processus……… perd le processeur et repasse dans l'état ……….. (transition …..).
➢ Lorsqu'un processus ……….. demande une ressource qui n'est pas disponible, il passe
dans l'état ………, et le processeur lui est retiré (transition …..).

51
V. Les états d’un processus

Remarque:
Sous le systéme Linux, il y a 2 autres états de processus :

➢ Zombie : un processus se termine avant son père. Il a terminé son exécution mais son
père n'a pas été informé de ceci (tout processus doit prendre connaissance de la fin de
ceux qu'il a lancés (ses fils)). Ainsi, il existe encore dans la table des processus.

→ C’est vrai qu’il consomme seulement quelques octets mais il retient encore un PID. Et le
nombre de processus est limité par le nombre de pid. Donc, un très grand nombre de
zombie peut empêcher le SE de créer de nouveaux processus et impossible de les tuer car
ils sont déjà morts.

52
V. Les états d’un processus

➔ Une solution est d’envoyer SIGKILL au processus père (arrêt brutal du prog). Les
processus fils seront rattachés automatiquement au processus init qui se charge (au lieu
du père) d’appeler wait sur ces derniers.

➢ Orphelin : Le processus père se termine avant son fils. Ainsi, le fils devient orphelin.

53
V. Les états d’un processus

4. Application

A. Fonctions à utiliser

• Exit (etat): termine un processus, etat est un octet (les valeurs possibles : 0 à 255)
renvoyé dans une variable du type int au processus père. La fonction exit fait passer le
processus à l’état zombi.

• Wait ( & code_etat) : met le processus en attente de la fin de l'un de ses processus fils.

• Execlp (nom_fichier, arguments) : exécute le fichier nom_fichier sans créer un nouveau


processus. Le segment code est remplacé par celui du nouveau programme.

• Sleep (n) : met le processus en attente pendant n secondes.


54
V. Les états d’un processus

4. Application

B. Application 1
Ecrire un programme qui engendre un processus fils et se termine. Le processus fils, dès
qu’il devient orphelin, affichera à l’écran un message permettant à l’utilisateur de se
convaincre que ce processus est orphelin.

55
V. Les états d’un processus

4. Application

C. Application 2:
Ecrire un programme qui engendre un processus fils zombi.

56
V. Les états d’un processus

4. Application

D. Application 3:
Exercice 1.
1- Ecrire un programme C qui crée exactement trois processus fils.
2- Après cette phase, chaque fils affiche son pid ainsi que celui du père, puis se termine en
appelant exit. Le père doit attendre la mort de chaque fils et afficher un message du style
"le processus fils x est mort en renvoyant y" ou x est le pid du fils et y la valeur du exit du
fils.

57

Vous aimerez peut-être aussi