La Commutation de contexte
la commutation de contexte
La commutation de contexte
La commutation de contexte est un mécanisme permettant à un système de remplacer le processus en exécution par un autre processus se trouvant dans un état prêt. Le passage d’un processus à un autre se réalise par la sauvegarde de l’état de l’ancien processus, puis par le chargement de l’état du nouveau processus.
Un processus est caractérisé par son contexte. Le contexte est composé de :
- code du programme exécuté
- données statiques et dynamiques
- informations dont le système a besoin pour gérer le processus
Tout processus à un cycle de vie. Chaque étape de ce cycle de vie est caractérisée par un état. Un processus peut être nouveau, prêt, bloqué, en exécution (actif), ou terminé. Le passage d’un état à un autre se fait de la manière suivante :
- un processus nouveau à sa création passe de l’état nouveau à l’état prêt.
- Puis, lorsqu’il est élu il passe à l’état actif
- De l’état actif, il passe à l’état bloqué lorsqu’il attend les informations en provenance des entrées/sorties, à l’état terminé en cas de fin d’exécution ou à l’état prêt lorsqu’il est préempté.
- Lorsque les informations en provenance des entrées/sorties sont disponibles, il passe de l’état bloqué à l’état prêt. Ceci marque la fin de l’attente.
La commutation de contexte n’est possible que dans des systèmes exploitations préemptifs. Le temps de commutation de contexte est une perte pour le système car ce dernier ne travaille pas pendant qu’il commute ; ce temps dépend également du support matériel. Le choix du processus élu est dépendant de la méthode d’ordonnancement utilisée. Les états principalement concernés par la commutation de contexte sont : prêt, actif et bloqué. Le système d’exploitation gère généralement trois queues à travers lesquelles il fait migrer les processus ; il s’agit de :
- File des prêts (Ready queue)
- File des bloqués sur E/S (Device queues)
- File des bloqués sur conditions de synchronisation (Blocked queue)
En supposant que nous avons deux processus (Pl et P2) et que chaque processus a un quantum de temps d'exécution fixe q, l’algorithme de commutation de contexte peut être simplifié de la manière suivante
Début
Si état P1 = actif et état P2 = prêt alors
Si P1 est en attente alors
- Arrête P1 ;
- sauvegarder le contexte de P1 ;
- Etat de P1 ← bloqué ;
- Ajout de P1 dans la File des bloqués ;
- Activer P2 ;
- Charger le contexte de P2 ;
- Etat P2 ← actif ;
- Lancer le chronomètre ;
Sinonsi quantum P1 est terminé alors
- Arrête P1 ;
- Sauvegarder le contexte de p1 ;
- Etat de P1 ← prêt ;
- Ajout de P1dans File des prêts ;
- Activer P2 ;
- Charger le contexte de P2 ;
- Etat P2 ← actif ;
- Lancer le chronomètre ;
Fin si
Fin si
Fin