Les états des processus
Un système d'exploitation utilise la notion d'état de processus pour garder une trace de ce qu'un processus fait à tout moment.
Le noyau utilise des états de processus pour simplifier son propre fonctionnement, de sorte que le nombre d'états de processus et leurs noms peuvent varier selon les systèmes d'exploitation.
Les états de processus permettent au système d'exploitation de gérer efficacement les ressources et l'ordonnancement. Chaque processus passe par différents états tout au long de son cycle de vie, de sa création à sa terminaison.
Les quatre états fondamentaux
La plupart des systèmes d'exploitation utilisent les quatre états fondamentaux suivants :
En cours d'exécution (Running)
Un processeur exécute actuellement des instructions dans le code du processus.
Caractéristique : Dans un système monoprocesseur, un seul processus peut être dans cet état à un instant donné.
Bloqué (Blocked / Waiting)
Le processus doit attendre qu'une demande de ressource qu'il a faite soit accordée, ou il souhaite attendre qu'un événement spécifique se produise.
Exemples : Attente d'une opération d'E/S, d'un message, d'une ressource.
Prêt (Ready)
Le processus souhaite utiliser le CPU pour continuer son fonctionnement ; cependant, il n'a pas encore été expédié (dispatched).
Caractéristique : Tous les processus prêts sont placés dans la file d'attente prête.
Terminé (Terminated)
Le fonctionnement du processus s'est terminé normalement ou le système d'exploitation l'a interrompu.
Le processus ne sera plus jamais exécuté et ses ressources seront libérées.
Le noyau considère qu'un processus est dans l'état bloqué s'il a fait une demande de ressource et que la demande n'a pas encore été accordée, ou s'il attend qu'un événement se produise. Une CPU ne doit pas être allouée à un tel processus tant que son attente n'est pas terminée.
Le noyau changerait l'état du processus en prêt lorsque la demande est accordée ou que l'événement qu'il attend se produit. Un tel processus peut être envisagé pour l'ordonnancement.
Le noyau changerait l'état du processus en exécution lorsqu'il est distribué (servi). L'état serait changé en terminé lorsque l'exécution du processus se termine ou lorsqu'il est abandonné par le noyau pour une raison quelconque.
Un système informatique conventionnel ne contient qu'une seule unité centrale et, par conséquent, un seul processus au maximum peut être à l'état d'exécution. Il peut y avoir un nombre quelconque de processus dans les états bloqué, prêt et terminé.
Un système d'exploitation peut définir davantage d'états de processus pour simplifier son propre fonctionnement ou pour prendre en charge des fonctionnalités supplémentaires comme le swapping.
Diagramme des transitions d'état

Figure : Diagramme des états et transitions d'un processus
Les transitions d'état
Une transition d'état pour un processus Pi est un changement dans son état. Une transition d'état est provoquée par l'occurrence d'un événement tel que le début ou la fin d'une opération d'entrée/sortie.
Lorsque l'événement se produit, le noyau détermine son influence sur les activités des processus et modifie en conséquence l'état d'un processus affecté.
Les cinq transitions principales
Prêt → En cours d'exécution
Le processus est distribué (servi). Le CPU commence ou reprend l'exécution de ses instructions.
Acteur : Cette transition est effectuée par le dispatcher (répartiteur).
Événement déclencheur : Décision de l'ordonnanceur de sélectionner ce processus.
Bloqué → Prêt
Une demande faite par le processus est accordée ou un événement qu'il attendait se produit.
Exemples :
- Fin d'une opération d'E/S
- Réception d'un message attendu
- Obtention d'une ressource demandée
- Expiration d'un délai d'attente
En cours d'exécution → Prêt
Le processus est préempté parce que le noyau décide de planifier un autre processus.
Causes possibles :
- Un processus plus prioritaire devient prêt (préemption par priorité)
- La tranche de temps (quantum) du processus s'écoule (temps partagé)
- Une interruption matérielle se produit
En cours d'exécution → Bloqué
Le processus en cours d'exécution effectue un appel système pour indiquer qu'il souhaite attendre qu'une certaine demande de ressource soit accordée, ou qu'un événement spécifique se produise.
Les cinq principales causes de blocage :
- Le processus demande une opération d'E/S
- Le processus demande une ressource
- Le processus souhaite attendre pendant un intervalle de temps spécifié
- Le processus attend un message d'un autre processus
- Le processus attend une action d'un autre processus
En cours d'exécution → Terminé
L'exécution du programme est terminée.
Les cinq principales raisons de l'arrêt d'un processus :
1. Auto-terminaison
Le processus en cours d'exécution achève sa tâche ou se rend compte qu'il ne peut pas fonctionner de manière significative et lance un appel système "terminate me". Des exemples de cette dernière condition sont des données incorrectes ou incohérentes, ou l'incapacité d'accéder aux données de la manière souhaitée, par exemple, des privilèges d'accès aux fichiers incorrects.
2. Arrêt par un parent
Un processus effectue un appel système "terminate Pi" pour mettre fin à un processus enfant Pi, lorsqu'il estime que l'exécution du processus enfant n'est plus nécessaire ou utile.
3. Dépassement de l'utilisation des ressources
Un système d'exploitation peut limiter les ressources qu'un processus peut consommer. Un processus dépassant une limite de ressources sera interrompu par le noyau.
4. Conditions anormales pendant le fonctionnement
Le noyau interrompt un processus si une condition anormale survient en raison de l'instruction en cours d'exécution, par exemple :
- Exécution d'une instruction invalide
- Exécution d'une instruction privilégiée
- Conditions arithmétiques comme le dépassement de capacité
- Violation de la protection de la mémoire
5. Interaction incorrecte avec d'autres processus
Le noyau peut interrompre un processus s'il est impliqué dans une impasse (deadlock).
Résumé du cycle de vie d'un processus
Un nouveau processus est mis à l'état prêt après que les ressources dont il a besoin ont été allouées. Il peut entrer dans les états en cours, bloqué et prêt un certain nombre de fois à la suite des événements décrits ci-dessus. Finalement, il entre dans l'état terminé.
Nouveau
│
▼
┌──────┐ ┌──────────┐
│ Prêt │◄────►│ Exécution│
└──────┘ └────┬─────┘
▲ │
│ ▼
┌──────┐ ┌──────────┐
│Bloqué│ │ Terminé │
└──────┘ └──────────┘
Tableau récapitulatif des transitions
| Transition | Description | Cause typique |
|---|---|---|
| Prêt → Exécution | Le processus est élu par l'ordonnanceur | Décision du dispatcher |
| Exécution → Prêt | Le processus est préempté | Fin de quantum, arrivée d'un processus prioritaire |
| Exécution → Bloqué | Le processus demande une ressource ou une E/S | Appel système d'attente |
| Bloqué → Prêt | La ressource attendue est disponible | Fin d'E/S, réception d'un message |
| Exécution → Terminé | Le processus se termine | Fin normale, erreur, interruption par parent |
Analyse des transitions d'état
On considère le scénario suivant avec trois processus P1, P2 et P3 dans un système monoprocesseur :
- P1 est en cours d'exécution et demande une opération de lecture sur le disque.
- P2 est dans la file d'attente prête.
- P3 est en attente de la fin d'une opération d'écriture sur l'imprimante.
- L'opération de lecture de P1 se termine.
- P2 commence son exécution mais son quantum de temps s'écoule après 10 ms.
Questions :
- Quel est l'état initial de chaque processus ?
- Quelles transitions d'état se produisent à l'étape 1 ?
- Quelles transitions se produisent à l'étape 4 ?
- Quelles transitions se produisent à l'étape 5 ?
- Dessinez le diagramme des transitions en indiquant les états des processus après chaque étape.
- État initial :
- P1 : En cours d'exécution (Running)
- P2 : Prêt (Ready)
- P3 : Bloqué (Blocked) - en attente d'écriture sur imprimante
- Étape 1 (P1 demande lecture disque) :
P1 effectue une transition Exécution → Bloqué (transition 4).
L'ordonnanceur sélectionne alors un processus prêt. P2 est choisi et effectue la transition Prêt → Exécution (transition 1).
Nouveaux états :
- P1 : Bloqué (attente disque)
- P2 : En cours d'exécution
- P3 : Bloqué (imprimante)
- Étape 4 (Fin de lecture de P1) :
P1 effectue la transition Bloqué → Prêt (transition 2).
P2 est toujours en cours d'exécution (pas encore terminé).
Nouveaux états :
- P1 : Prêt
- P2 : En cours d'exécution
- P3 : Bloqué (imprimante)
- Étape 5 (Quantum de P2 écoulé) :
P2 effectue la transition Exécution → Prêt (transition 3 - préemption).
L'ordonnanceur doit sélectionner un nouveau processus parmi les prêts (P1 et P2).
Si la politique est FIFO, P1 (le plus ancien dans la file prête) est choisi et effectue Prêt → Exécution.
Nouveaux états :
- P1 : En cours d'exécution
- P2 : Prêt
- P3 : Bloqué (imprimante)
- Diagramme récapitulatif :
État initial : P1: Running P2: Ready P3: Blocked Après étape 1 : P1: Blocked ←┐ P2: Running P3: Blocked (E/S disque)│ │ Après étape 4 : P1: Ready ←──────────┘ P2: Running P3: Blocked (fin E/S) Après étape 5 : P1: Running P2: Ready P3: Blocked (quantum expiré)
- Les processus passent par différents états tout au long de leur cycle de vie.
- Les quatre états fondamentaux sont : prêt, en cours d'exécution, bloqué, terminé.
- Dans un système monoprocesseur, un seul processus peut être en cours d'exécution à la fois.
- Les transitions d'état sont déclenchées par des événements (demandes de ressources, fin d'E/S, préemption, etc.).
- Un processus bloqué ne doit pas recevoir de CPU tant que l'événement qu'il attend ne s'est pas produit.
- La transition prêt → exécution est gérée par l'ordonnanceur et le dispatcher.
- La transition exécution → prêt correspond à la préemption (fin de quantum ou priorité).
- La transition exécution → bloqué se produit lorsqu'un processus demande une ressource ou une E/S.
- La transition bloqué → prêt se produit lorsque la ressource attendue devient disponible.
- Un processus peut se terminer normalement ou être interrompu par le système ou son parent.
Discussion (0)
Soyez le premier à laisser un commentaire !
Laisser un commentaire
Votre commentaire sera visible après modération.