Un changement de contexte est le processus de stockage et de récupération de l'état d'un processus ou d'un fil d'exécution afin qu'il puisse être repris à partir de son état précédent à un moment ultérieur. Cela permet à plusieurs processus ou threads de partager un seul processeur ou une autre ressource sans interférer les uns avec les autres.
Un changement de contexte peut être initié par le noyau du système d'exploitation, par une interruption matérielle ou par un signal logiciel. Lorsqu'un changement de contexte se produit, le noyau sauvegarde l'état du processus ou du fil d'exécution qui est sorti et restaure l'état du processus ou du fil d'exécution qui est entré. Le processus ou le fil d'exécution en cours de commutation est appelé "context-switched in", tandis que le processus ou le fil d'exécution en cours de commutation est appelé "context-switched out".
Qu'est-ce que le deadlock OS ?
Une impasse est un état dans lequel un processus ou un groupe de processus est incapable de continuer parce que chacun attend un événement qui ne peut être généré que par un autre processus du groupe.
Un exemple classique d'une impasse est lorsque deux processus ont chacun un verrou sur une ressource différente, et que chaque processus attend que l'autre processus libère son verrou sur la ressource avant de pouvoir continuer. Si aucun des deux processus ne libère son verrou, les deux processus se bloquent.
Les blocages peuvent se produire dans tout système qui permet à plusieurs processus d'accéder à des ressources partagées. Cependant, ils sont plus susceptibles de se produire dans les systèmes qui permettent aux processus d'attendre des ressources qui sont actuellement utilisées par d'autres processus.
Quatre conditions doivent être remplies pour qu'une impasse se produise :
1) Exclusion mutuelle : Il doit y avoir des ressources qui ne peuvent être utilisées que par un seul processus à la fois.
2) Hold and wait : Un processus doit détenir une ressource tout en attendant d'acquérir une autre ressource qui est actuellement détenue par un autre processus.
3) Pas de préemption : Un processus ne peut libérer une ressource qu'il détient que s'il a d'abord acquis toutes les ressources dont il a besoin.
4) Attente circulaire : Il doit y avoir une chaîne de processus, chacun détenant une ressource et attendant d'acquérir une ressource détenue par le processus suivant dans la chaîne. Qui est responsable de la commutation de contexte ? La commutation de contexte est le processus de stockage et de restauration de l'état d'un CPU afin que plusieurs processus puissent partager un seul CPU. Le système d'exploitation est responsable de la gestion du processus de changement de contexte.
Que se passe-t-il lors d'une commutation de contexte ?
En informatique, un changement de contexte est le processus de stockage et de restauration de l'état d'un CPU afin que plusieurs processus puissent partager un seul CPU. Cela permet à plusieurs processus de partager un seul CPU sans interférer les uns avec les autres.
Un changement de contexte est généralement déclenché par une interruption matérielle ou logicielle. Lorsqu'une interruption se produit, l'unité centrale stocke l'état actuel du processus en mémoire, puis charge l'état du nouveau processus depuis la mémoire. Ce processus est connu sous le nom de commutation de contexte.
Les commutations de contexte sont généralement très rapides et permettent à l'UC de partager efficacement son temps entre plusieurs processus. Cependant, les commutations de contexte peuvent introduire une certaine surcharge, car le CPU doit stocker et restaurer l'état du processus.
Comment éviter le changement de contexte ?
Il existe plusieurs façons d'éviter le changement de contexte :
1. utiliser un système d'exploitation en temps réel (RTOS)
2. Utiliser un modèle de programmation événementiel
3. Utiliser un modèle de programmation multitâche coopératif
4. Utiliser un modèle de programmation monofil
1. Utiliser un système d'exploitation en temps réel (RTOS)
Un système d'exploitation en temps réel (RTOS) est conçu pour éviter la commutation de contexte en fournissant des fonctionnalités telles que l'ordonnancement préemptif et les interruptions en temps réel. L'ordonnancement préemptif garantit que les tâches critiques en termes de temps sont toujours prioritaires et ne sont jamais retardées par des tâches non critiques. Les interruptions en temps réel permettent aux tâches critiques d'être interrompues et exécutées immédiatement, sans attendre la prochaine tranche de temps programmée.
2. Utiliser un modèle de programmation événementiel
Un modèle de programmation événementiel évite le changement de contexte en exécutant le code uniquement en réponse à des événements. Cela signifie que le code n'est exécuté que lorsqu'il est nécessaire, et que les périodes d'inactivité sont utilisées pour attendre les événements. Cela peut conduire à un code plus efficace, ainsi qu'à un code plus simple, puisqu'il n'est pas nécessaire de maintenir des informations d'état entre les événements.
3. utiliser un modèle de programmation multitâche coopératif
Un modèle de programmation multitâche coopératif évite le changement de contexte en désignant une tâche comme tâche "active" à un moment donné. Cette tâche reçoit le contrôle total de l'unité centrale et est chargée de céder le contrôle à d'autres tâches lorsqu'elle n'est pas nécessaire. Cela peut conduire à une plus grande efficacité