Chapitre 2 : Les éléments de base


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.


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 :

Dans cette analogie : 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 :

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

Donc, chaque processus se caractérise par :

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 :