Fiche système exploitation
On appelle processus un programme en cours d’exécution. A un instant donné, un processus peut être dans l’un des états suivants : * actif : le processus s’exécute sur un processeur (il n’y a donc qu’un seul processus actif en même temps sur une machine monoprocesseur) ; * prêt : le processus peut devenir actif dès que le processeur lui sera attribué par le système ; * bloqué : le processus a besoin d’une ressource pour continuer (attente d’entrée/-sortie par exemple). Le blocage ne peut avoir lieu qu’à la suite d’un appel système. Un processus bloqué ne consomme pas de temps processeur.
A savoir * -------------------------------------------------
Lorsqu’on entre une commande dans un shell, le shell lance un processus pour l’exécuter. Le shell attend ensuite la fin de ce processus, puis demande la commande suivante. * -------------------------------------------------
Chaque processus a ainsi un processus père, qui est celui qui l’a lancé. Le numéro du processus père est noté PPID. Un processus n’a bien sûr qu’un seul père, mais peut lancer l’exécution de plusieurs autres processus, nommés processus fils. On a donc affaire à une arborescence de processus. * -------------------------------------------------
Lors de l’initialisation du système UNIX, un premier processus, nommé init, est créé avec un PID=1. init est l’ancêtre de tous les processus. * -------------------------------------------------
A bas niveau, il n’y a qu’une seule façon de donner naissance à un nouveau processus, la duplication. Un processus peut demander au système sa duplication en utilisant la primitive fork(). Le système crée alors une copie complète du processus, avec un PID différent. L’un des deux processus est fils de l’autre. * -------------------------------------------------
Il n’est évidemment guère utile d’avoir deux copies du même programme s’exécutant dans le système. Après duplication, le fils va “changer de programme” en