Un programme est statique. Son exécution change l’état du processeur et de la mémoire. Après avoir appris comment écrire un programme, il s’agit de comprendre comment la machine organise son traitement alors que bien d’autres programmes sont aussi en cours d’exécution.
I. Notion de processus
Il faut distinguer un programme de son exécution : le lancement d’un programme entraîne des lecture/écriture de registres et d’une partie de la mémoire. D’ailleurs, un même programme peut être exécuté plusieurs fois sur une même machine au même moment en occupant des espaces mémoire différents.
Un processus représente une instance d’exécution d’un programme dans une machine donnée.
II. Les états d’un processus
Au cours de son existence dans la machine, un même processus peut se retrouver dans différents états qui sont résumés ci-dessous.
Un processus est créé et se trouve alors dans l’état prêt : il attend de pouvoir avoir accès au processeur.
Le processus obtient l’accès au processeur. Il passe alors dans l’état élu.
Alors qu’il est élu, le processus peut avoir besoin d’attendre une ressource quelconque comme, par exemple, une ressource en mémoire. Il doit alors quitter momentanément le processeur pour que celui-ci puisse être utilisé à d’autres tâches (le processeur ne doit pas attendre !). Le processus passe donc dans l’état bloqué.
Le processus a obtenu la ressource attendue mais s’est fait prendre sa place dans le processeur par un autre processus. Il se met donc en attente et repasse à l’état prêt.
Un processus ne pourra terminer que s’il est déjà dans l’état élu sauf anomalie.
Cycle des états d’un processus
III. Les commandes Linux de gestion des processus
1) La commande ps
La commande ps (penser à ProcessuS) est utilisée pour afficher des informations sur un processus. L’option u permet de préciser le propriétaire, l’option l permet un affichage avec plus d’attributs (long).
Par exemple, pour connaître les processus appartenant à l’utilisateur moi :
La colonne S indique l’état (state) du processus : S pour stopped, R pour running et Z pour zombie.
PID est le processus identifier : un identifiant sous forme d’entier donné par le système.
PPID est le parent processus identifier qui donne l’identifiant du parent qui a engendré le processus.
CMD est le nom de la commande.
2) La commande kill
Il n’est parfois pas possible de fermer un processus graphique en cliquant par exemple sur la croix prévue pourtant à cet effet. On peut utiliser la commande kill si on connaît le PID du processus à « tuer » qui peut être obtenu avec l’option C de ps :
On découvre une « généalogie » des processus. 3091 est le parent de tous les autres. C’est lui qu’il faut interrompre :