Assiste.com - Sécurité informatique - Vie privée sur le Web - Neutralité d'Internet Assiste.com - Sécurité informatique - Vie privée sur le Web - Neutralité d'Internet

Processus - Commutation de contexte - Context Switching

La notion de commutation de contexte (context switching) est indispensable à l'exploitation multitâche d'un ordinateur par un système d'exploitation

cr  01.04.2012      r+  21.08.2020      r-  20.04.2024      Pierre Pinard.         (Alertes et avis de sécurité au jour le jour)

En informatique, les processus prennent le contrôle du processeur (« processor ») à tour de rôle. Ils sont dans une file de processus et l'ordonnanceur leur alloue une tranche de temps à tour de rôle. On l'imagine comme un tourniquet sur lequel sont assis les processus et ils passent devant le processeur à tour de rôle, durant quelques millisecondes, pour pouvoir l'exploiter puis c'est le tour du suivant, etc. Il peut y avoir deux, quatre, huit... processeurs répartis autour de ce tourniquet et l'ordonnanceur gère tout cela.

Le « changement de contexte » (« context switching ») est l'opération de :

  1. Sauvegarde de l'état environnemental (le contexte d'exécution) du processus en cours d'exécution et qui va être suspendu par l'ordonnanceur.

  2. Restauration de l'état environnemental (le contexte d'exécution) du processus suivant afin que son exécution reprenne exactement au point où il en était lorsque l'ordonnanceur l'a suspendu précédemment.

Cela concerne, physiquement, entre autres, un ensemble de petites zones de mémoire (d'un bit à un octet [ou un mot, au sens de l'architecture 8 bits, 16 bits, 32 bits, 64 bits], rarement plus [calcul en virgule flottante, ...]), dans le processeur (le matériel lui-même), appelées « registres » (des pointeurs d'adresses mémoire, des indices de décalage, des états d'avancement de l'exécution d'une instruction par le processeur, etc.). Le « contexte » d'un processus est donc constitué du contenu de son « carnet d'adresses » et du contenu de son « carnet de notes », car un processus :

  1. Est associée à un environnement matériel (processeur, registres d'état « PSW » (« Program Status Word), registres d'entrées, registre de sortie, compteur ordinal (CO), registre d'adresse, registre de données, registre d'instruction, etc.) où sont notés tous ses états

  2. Est associée à une zone de mémoire RAM où sont les données sur lesquelles le processus travaille (une adresse de départ et une longueur)

Toutes ces sauvegardes sont groupées dans une seule zone de mémoire, structurée (une structure de données), appelée PCB (Process Control Block - Bloc de Contrôle de Processus) afin de minimiser leur temps de manipulation.

Cela permet à plusieurs processus de partager un processeur unique. C'est une caractéristique essentielle d'un système d'exploitation multitâche.

Par exemple, un processus peut demander une donnée qui se trouve sur disque. Ceci est une opération extrêmement lente au sens de la vitesse d'exécution des processeurs. Le processeur qui gère ce processus demande au système d'exploitation d'exécuter la requête et un drapeau (sémaphore) de suspension sur attente d'événement est positionné (à « vrai »). Le contexte d'exécution (tous les registres d'état - en réalité un seul espace mémoire dans le processeur afin de n'avoir qu'une seule instruction pour tout sauvegarder d'un coup) du processus suspendu est sauvegardé et l'« ordonnancement des processus » passe la main à un autre processus (pour l'exécution de quelques instructions d'une autre application utilisateur ou d'un composant système), en restaurant tout son contexte d'exécution lorsqu'il avait été suspendu.

Lorsque le drapeau de suspension sur événement (du processus qui a été suspendu) est enfin positionné à « faux » (l'attente d'événement est terminée), le processus retourne dans la file d'attente des processus gérés par l'« ordonnanceur des processus » et, lorsque ce sera son tour de posséder le processeur, son contexte (lorsqu'il a été suspendu) sera restauré.

Ces opérations de sauvegarde/restauration des contextes d'exécution des processus sont appelées « commutation de contexte » (« context switching »). Elles doivent s'exécuter, donc elles prennent (font perdre) un peu de temps appelé « overhead du context switching ».


On peut minimiser cet « overhead » (ce temps perdu, microscopique, qui se mesure en nanosecondes, mais peut peser s'il est sollicité très souvent - plusieurs milliers de fois par seconde), en déclarant une « affinité » entre un processus et un processeur (un seul, évidemment, et ne pas tomber dans la suprême imbécilité « Comment activer tous les cœurs des processeurs au démarrage »).

Note : la sollicitation de la mémoire virtuelle de Windows et les effets de swap-in/swap-out n'ont rien à voir avec la rotation des processus (Commutation de contexte - Context Switching) exercée par « le grand ordonnateur ». Cela peut intervenir de manière concomitante, mais pour d'autres raisons.