3. États, PCB et ordonnanceur
3.1 Cycle de vie
| État | Condition |
|---|---|
| Nouveau | Le noyau crée les structures et attribue les ressources initiales. |
| Prêt | Le processus peut progresser et n'attend que le CPU. |
| Actif | Le CPU exécute actuellement ses instructions. |
| Bloqué / en attente | Le processus attend un événement, une E/S, un délai ou une ressource. |
| Terminé | Le programme a fini; le noyau doit récupérer les ressources restantes. |
Transitions essentielles :
- nouveau → prêt après l'admission;
- prêt → actif lorsque l'ordonnanceur choisit le processus;
- actif → prêt lors d'une préemption;
- actif → bloqué lorsqu'une opération ne peut pas continuer immédiatement;
- bloqué → prêt lorsque l'événement attendu survient;
- actif → terminé à la fin de l'exécution.
Un processus bloqué ne doit pas passer directement à actif simplement parce que son événement survient. Il redevient prêt, puis l'ordonnanceur décidera quand lui attribuer le CPU. La différence prêt/bloqué est centrale : le premier attend uniquement un processeur; le second ne progresserait pas même si un processeur lui était immédiatement donné.
3.2 Bloc de contrôle de processus
Le PCB (Process Control Block) est la représentation du processus dans le noyau. Il contient notamment :
- PID et état;
- compteur ordinal, pointeur de pile, registres et indicateurs;
- informations de mémoire;
- priorité et données d'ordonnancement;
- ressources ouvertes et E/S;
- relations de parenté;
- statistiques d'utilisation.
Le PCB n'est ni le code du programme ni son espace d'adressage. C'est la structure administrative qui permet au noyau de suspendre l'exécution puis de la reprendre correctement. Sous Linux, task_struct joue concrètement ce rôle avec beaucoup plus de champs que le modèle pédagogique.
3.3 Changement de contexte
Pour passer de P0 à P1, le noyau :
- sauvegarde l'état CPU de
P0dans sa structure de contrôle; - met à jour son état et sa file;
- choisit
P1selon la politique d'ordonnancement; - restaure les registres et l'état de
P1; - reprend
P1à l'instruction désignée par son compteur ordinal.
Le changement de contexte est un mécanisme. La décision de choisir P1 relève d'une politique. La bascule consomme du temps sans faire progresser directement le code applicatif, mais elle rend possible le multitâche protégé.