Académique Documents
Professionnel Documents
Culture Documents
I- Notion de processus
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.
➢ 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 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.
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.
8
I. Notion de processus
9
I. Notion de processus
10
I. Notion de processus
• 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.
-> 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
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.
14
I. Notion de 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 é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
16
I. Notion de processus
-> À 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.
Au-delà des processus créés lors de l’amorçage, de nouveaux processus peuvent être
créés.
23
III. Hiérarchie des processus
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
26
III. Hiérarchie des processus
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).
Exercice 1:
Donner le résultat de l’exécution du programme C suivant :
31
VI. Les processus sous Unix
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
35
VI. Les processus sous Unix
Exercice :
En exécutant ps:
36
VI. Les processus sous Unix
Exercice 4 :
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 :
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
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.
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
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.
49
V. Les é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:
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.
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