Le changement de contexte est une technique ou une méthode utilisée par le système d'exploitation pour faire passer un processus d'un état à un autre afin d'exécuter sa fonction à l'aide des processeurs du système. Lors du changement d'exécution dans le système, il stocke l'état de l'ancien processus en cours d'exécution sous forme de registres et attribue le processeur à un nouveau processus pour exécuter ses tâches. Pendant qu'un nouveau processus est en cours d'exécution dans le système, le processus précédent doit attendre dans une file d'attente prête. L'exécution de l'ancien processus commence à l'endroit où un autre processus l'a arrêté. Il définit les caractéristiques d'un système d'exploitation multitâche dans lequel plusieurs processus partageaient le même processeur pour effectuer plusieurs tâches sans avoir besoin de processeurs supplémentaires dans le système.
La nécessité d'un changement de contexte
Un changement de contexte permet de partager un seul processeur sur tous les processus pour terminer son exécution et stocker l'état des tâches du système. Lorsque le processus se recharge dans le système, l'exécution du processus commence au même point où il y a un conflit.
Voici les raisons qui décrivent la nécessité d'un changement de contexte dans le système d'exploitation.
- Le passage d’un processus à un autre ne s’effectue pas directement dans le système. Un changement de contexte aide le système d'exploitation qui bascule entre les multiples processus à utiliser la ressource du processeur pour accomplir ses tâches et stocker son contexte. Nous pourrons reprendre le service du procédé au même point ultérieurement. Si nous ne stockons pas les données ou le contexte du processus en cours d'exécution, les données stockées peuvent être perdues lors du passage d'un processus à l'autre.
- Si un processus hautement prioritaire tombe dans la file d'attente prête, le processus en cours d'exécution sera arrêté ou arrêté par un processus hautement prioritaire pour terminer ses tâches dans le système.
- Si un processus en cours d'exécution nécessite des ressources d'E/S dans le système, le processus en cours sera commuté par un autre processus pour utiliser les processeurs. Et lorsque les exigences d'E/S sont satisfaites, l'ancien processus passe dans un état prêt pour attendre son exécution dans le CPU. La commutation de contexte stocke l'état du processus pour reprendre ses tâches dans un système d'exploitation. Sinon, le processus doit redémarrer son exécution à partir du niveau initial.
- Si des interruptions se produisent lors de l'exécution d'un processus dans le système d'exploitation, l'état du processus est enregistré sous forme de registres à l'aide du changement de contexte. Après avoir résolu les interruptions, le processus passe d'un état d'attente à un état prêt pour reprendre son exécution plus tard au même point, où se produit l'interruption du système d'exploitation.
- Un changement de contexte permet à un seul processeur de gérer plusieurs requêtes de processus simultanément sans avoir besoin de processeurs supplémentaires.
Exemple de changement de contexte
Supposons que plusieurs processus soient stockés dans un bloc de contrôle de processus (PCB). Un processus est en cours d’exécution pour exécuter sa tâche à l’aide de processeurs. Pendant que le processus est en cours d'exécution, un autre processus arrive dans la file d'attente prête, qui a la priorité élevée d'accomplir sa tâche en utilisant le processeur. Ici, nous avons utilisé le changement de contexte qui fait basculer le processus en cours avec le nouveau processus nécessitant que le processeur termine ses tâches. Lors du changement de processus, un changement de contexte enregistre l'état de l'ancien processus dans les registres. Lorsque le processus se recharge dans le CPU, il démarre l'exécution du processus lorsque le nouveau processus arrête l'ancien processus. Si nous ne sauvegardons pas l’état du processus, nous devons commencer son exécution au niveau initial. De cette manière, le changement de contexte aide le système d'exploitation à basculer entre les processus, à stocker ou à recharger le processus lorsqu'il doit exécuter ses tâches.
Déclencheurs de changement de contexte
Voici les trois types de déclencheurs de changement de contexte.
- Interruptions
- Multitâche
- Commutateur noyau/utilisateur
Interruptions : Un processeur demande la lecture des données à partir d'un disque, et s'il y a des interruptions, le changement de contexte commute automatiquement une partie du matériel qui nécessite moins de temps pour gérer les interruptions.
Multitâche : Un changement de contexte est la caractéristique du multitâche qui permet de basculer le processus depuis le CPU afin qu'un autre processus puisse être exécuté. Lors du changement de processus, l'ancien état est sauvegardé pour reprendre l'exécution du processus au même point du système.
Commutateur noyau/utilisateur : Il est utilisé dans les systèmes d'exploitation lors du basculement entre le mode utilisateur et le mode noyau/utilisateur.
Qu'est-ce que le PCB ?
Un PCB (Process Control Block) est une structure de données utilisée dans le système d'exploitation pour stocker toutes les données liées au processus. Par exemple, lorsqu'un processus est créé dans le système d'exploitation, les informations mises à jour du processus, les informations de commutation du processus, le processus terminé dans le PCB.
Étapes pour le changement de contexte
Le changement de contexte des processus comporte plusieurs étapes. Le diagramme suivant représente la commutation de contexte de deux processus, P1 à P2, lorsqu'une interruption, un besoin d'E/S ou un processus basé sur la priorité se produit dans la file d'attente prête du PCB.
Comme nous pouvons le voir sur le diagramme, initialement, le processus P1 s'exécute sur le CPU pour exécuter sa tâche, et en même temps, un autre processus, P2, est à l'état prêt. Si une erreur ou une interruption s'est produite ou si le processus nécessite une entrée/sortie, le processus P1 passe de l'état d'exécution à l'état d'attente. Avant de changer l'état du processus P1, la commutation de contexte sauvegarde le contexte du processus P1 sous forme de registres et le compteur de programme dans le PCB1 . Après cela, il charge l'état du processus P2 à partir de l'état prêt du PCB2 à l'état de fonctionnement.
qu'est-ce que $home Linux
Les étapes suivantes sont suivies lors du passage du processus P1 au processus 2 :
- Premièrement, ce changement de contexte doit sauvegarder l'état du processus P1 sous la forme du compteur de programme et des registres sur le PCB (Program Counter Block), qui est à l'état d'exécution.
- Mettez maintenant à jour PCB1 pour traiter P1 et déplacez le processus vers la file d'attente appropriée, telle que la file d'attente prête, la file d'attente d'E/S et la file d'attente.
- Après cela, un autre processus passe à l'état d'exécution, ou nous pouvons sélectionner un nouveau processus dans l'état prêt, qui doit être exécuté, ou le processus a une priorité élevée pour exécuter sa tâche.
- Maintenant, nous devons mettre à jour le PCB (Process Control Block) pour le processus P2 sélectionné. Cela inclut le passage de l'état du processus de l'état prêt à l'état en cours d'exécution ou d'un autre état comme bloqué, sortie ou suspension.
- Si le CPU exécute déjà le processus P2, nous devons obtenir l'état du processus P2 pour reprendre son exécution au même moment où l'interruption système se produit.
De même, le processus P2 est déconnecté du CPU afin que le processus P1 puisse reprendre son exécution. Le processus P1 est rechargé de PCB1 à l'état d'exécution pour reprendre sa tâche au même point. Sinon, les informations sont perdues et lorsque le processus est à nouveau exécuté, il démarre l'exécution au niveau initial.