1. Fichier, programme, processus
Un fichier est une donnée stockée sur un support (disque, SSD, clé USB…). Certains fichiers contiennent du code exécutable : ce sont des programmes.
Tant qu’un programme n’est pas lancé, il reste un fichier « inerte ». Lorsqu’il est chargé en mémoire et exécuté par le système d’exploitation, il devient un processus.
Exemple : /bin/ls est un programme sur le disque. Quand l'on tape
ls dans le terminal, le système crée un processus qui exécute ce programme.
Définition :
Un processus est un programme en cours d’exécution auquel le système d’exploitation associe un contexte processeur (compteur ordinal, registres, indicateurs d’état, pointeur de pile…) et un contexte mémoire (zone de code, zone de données, pile).
L’ensemble forme ce qu’on appelle le contexte du processus.
Chaque processus dispose d’un espace d’adressage propre, isolé des autres processus : il s’agit d’une plage mémoire dont il est le seul à pouvoir accéder. Ce mécanisme assure la protection et empêche un processus d’altérer la mémoire d’un autre.
Du point de vue conceptuel, chaque processus se comporte comme s’il possédait son propre processeur virtuel : le système sauvegarde et restaure son contexte à chaque commutation, donnant l’illusion d’une exécution continue.
2. Contexte et PCB (Process Control Block)
Pour pouvoir arrêter puis reprendre un processus, le système d’exploitation doit mémoriser son contexte.
- Contexte processeur : registre, compteur ordinal (adresse de la prochaine instruction), indicateurs…
- Contexte mémoire : zones de code, données, pile d’appels…
Toutes ces informations sont stockées dans une structure de données appelée PCB (Process Control Block).
Un PCB contient :
- un identifiant unique du processus (PID) ;
- l’état courant (prêt, élu, bloqué, terminé) ;
- le contexte processeur sauvegardé ;
- des informations mémoire (où se trouvent code, données, pile) ;
- des informations d’ordonnancement (priorité, file d’attente, etc.).
Lors d’un changement de processus (commutation de contexte), le système sauvegarde le contexte de l’ancien processus dans son PCB, puis restaure le contexte du nouveau processus élu.
3. États d’un processus
Un processus peut se trouver dans l’un des états suivants :
- Prêt : le processus attend qu’on lui attribue le processeur.
- Élu : le processus est en cours d’exécution sur le processeur.
- Bloqué : le processus attend une ressource autre que le processeur (entrée/sortie, fichier, etc.).
- Terminé : l’exécution du processus est achevée.
On associe quelques opérations importantes :
- Élection : passage de prêt à élu.
- Blocage : passage de élu à bloqué.
- Déblocage : passage de bloqué à prêt.
Remarques : un processus est généralement créé dans l’état prêt, et ne se termine qu’à partir de l’état élu (sauf anomalie).
4. Création et fin d’un processus
4.1. Création de processus
Quelques situations typiques où un nouveau processus est créé :
- à l’initialisation du système (processus système, démons) ;
- quand un processus appelle une primitive de création (processus père → processus fils) ;
- lorsqu’un utilisateur lance un programme (commande, double-clic) ;
- lors du lancement d’un traitement par lots.
4.2. Fin d’un processus
Un processus peut se terminer parce que :
- il a terminé normalement son exécution ;
- il a commis une erreur irréversible (exception fatale) ;
- un autre processus demande sa destruction (par exemple via
killsous Unix).
5. Ordonnancement des processus
À un instant donné, plusieurs processus peuvent être dans l’état prêt. Le rôle de l’ ordonnanceur (scheduler) est de choisir lequel sera élu pour utiliser le processeur, et pour quelle durée.
5.1. Préemptif ou non préemptif
- Ordonnancement non préemptif : le processus élu garde le processeur jusqu’à la fin de son exécution ou jusqu’à ce qu’il se bloque.
-
Ordonnancement préemptif : le système peut réquisitionner le processeur à un processus
élu (préemption) et le remettre dans la file des prêts.
Ordonnancement préemptif
5.2. Quelques politiques classiques
- Premier arrivé, premier servi : les processus sont servis dans l’ordre d’arrivée dans la file des prêts.
- Plus court d’abord : le processus de plus courte durée d’exécution estimée est choisi en premier.
- Par priorité : le processus prêt ayant la priorité la plus élevée est élu.
-
Tourniquet (Round Robin) :
chaque processus reçoit un quantum de temps.
Quand le quantum expire, le système d’exploitation retire le processeur au processus et le replace en fin de file des processus prêts.