Les processus
Il s'agit d'une notion introduite avec l'arrivée des systèmes multi-programmés et temps-partagés afin d'éclairer leur fonctionnement.
- Un processus se définit comme étant l'abstraction de l'activité du processeur.
Ou tout simplement
- Comme un programme en cours d'éxécution.
Remarque :
Un processus n'est pas un programme exécutable. Il faut savoir distinguer un programme de son exécution.
Processus != Programme exécutable
Un processus correspond à une suite d'actions (notion dynamique) réalisées lors d'une exécution. Alors qu'un programme est une suite d'instructions (notion statique).
|
Le même programme peut s'exécuter plusieurs fois donnant ainsi un processus différent pour chacune de ces exécutions.
Exemple :
Pour pouvoir comprendre la différence entre un processus et un programme exécutable, nous allons considérer l'exemple suivant :
Considérons le cas d'un Informaticien préparant un gâteau d'anniversaire pour sa fille :
- Il a une recette
- Il dispose de tous les ingrédients (farine, sucre, œufs, ..)
Dans cette analogie :
- La recette est assimilée à un programme (un algorithme traduit en une suite d'instructions)
- L'Informaticien joue le rôle du processeur (CPU)
- Les ingrédients remplacent les données
Comme nous le savons, disposer uniquement de la recette ne suffit pas pour avoir le gâteau. Il faut le préparer selon la recette retenue.
Le processus est l'activité de cet informaticien qui lit la recette, trouve les données et fait cuire le gâteau.
Le programme (suite d'instructions) est une description précise (mais statique) du comportement à avoir pour résoudre un problème particulier (ce qu'il faut faire et dans quel ordre faut-il les faire pour atteindre l'objectif fixé). Mais, il n'y a rien dans cette description statique qui permet de prévoir (à l'avance) le schéma de déroulement (conditions de déroulement) de l'exécution. Ce schéma peut changer d'une exécution à une autre.
Ainsi, dans l'exemple précédent :
- Le fils de l'informaticien peut arriver en pleurant car piqué par une abeille. L'informaticien marque l'endroit où il se trouve dans le reste (l'état du processus en cours est sauvegardé)
- Il cherche un livre sur les premiers soins et commence à soigner son fils.
Le processeur est passé d'un processus (la cuisine) à un autre (les soins médicaux).
Chacun de ces processus a un programme propre (livre de recettes, livre sur les premiers soins)
Quand la piqûre est soignée, notre informaticien va reprendre sa recette à l'endroit où il l'avait abandonnée
Le même programme peut s'exécuter plusieurs fois donnant ainsi un processus différent pour chacune de ces exécutions
- L'application de la recette peut être ainsi recommencée plusieurs fois, il s'agit à chaque fois d'une nouvelle activité se terminant par la réalisation d'un nouveau gâteau.
- De même, lors de la réalisation d'un deuxième gâteau tout à fait identique au premier (en déroulant la même recette) certains événements qui ont entravé la première réalisation peuvent ne pas se reproduire (le fils de l'informaticien n'est pas obligé de se faire piquer toujours et encore moins aux même moments de la préparation).
Donc, chaque processus se caractérise par :
- Son programme exécutable
- Ses données
- Sa pile d'exécution
- Son compteur ordinal
- Son pointeur de pile
- Les autres registres
- Toutes les autres informations nécessaires à l'exécution d'un programme
Dans un système temps partagé, périodiquement, le système d'exploitation décide d'interrompre un processus en cours et de lancer l'exécution d'un autre, par exemple, parce que le premier a épuisé son temps d'allocation du processeur.
Lorsqu'un processus est temporairement suspendu de cette manière, il faut qu'il puisse retrouver plus tard exactement l'état où il se trouvait au moment de sa suspension. Il faut que toutes les informations dont il a besoin soient explicitement sauvegardées quelque part pendant sa mise en attente :
Si un tel processus possède, par exemple, plusieurs fichiers ouverts, les positions exactes dans ses fichiers doivent être mémorisées pour qu'une lecture ultérieure qui suit la réactivation du processus lise les bonnes données.
La possibilité qu'a un processeur de commuter d'un programme à un autre en exécutant chaque programme quelques dizaines ou quelques centaines de millesecondes s'appelle pseudoparallélisme :
A un instant donné, le processeur exécute réellement qu'un seul programme. En revanche, pendant une seconde, il peut exécuter plusieurs programmes. Ceci procure aux utilisateurs l'impression de parallélisme.
Un processus est un programme qui s'exécute et qui possède son propre compteur ordinal, ses registres et ses variables. Conceptuellement, chaque processus a son propre processeur virtuel :
En vérité, le vrai processeur commute entre plusieurs processus :