2013-09-22 1 views
0

Pourquoi ContextSwitch doit-il être atomique et comment y parvenir en pratique?Pourquoi ContextSwitch doit-il être atomique et comment y parvenir dans la pratique?

Je pense qu'il doit être atomique car s'il ne sauvegarde pas complètement l'état des processus précédents, il peut causer des problèmes pour les futurs contextSwitches.Incuracy, et des données erronées.

Et pour ce faire, pouvons-nous utiliser des verrous? Est-ce que cela a du sens ou est-ce que je simplifie trop les choses?

+0

La plupart des processeurs offrent un moyen de le faire en une seule instruction. Comme le contexte concerne un seul processeur, vous pouvez verrouiller les interruptions sur ce processeur et effectuer plusieurs instructions. Le mécanisme * lock * dépend du CPU et du système d'exploitation. –

Répondre

1

probablement la même affectation que vous. Comme l'opération de sauvegarde nécessite plusieurs étapes pour sauvegarder la valeur des registres de la CPU, l'état du processus, les informations de gestion de la mémoire, etc. Il est en effet nécessaire de rendre le commutateur de contexte atomique pour assurer la cohérence. Pour cela, il est possible de "synchroniser" la méthode de sauvegarde et probablement la méthode de chargement, afin que leurs étapes respectives s'exécutent en un seul bloc.

+0

Le commutateur de contexte est ambigu. Souvent, le commutateur MMU est une phase distincte des registres CPU. L'état * du processus * est maintenu par le noyau, c'est donc souvent le dernier état à mettre à jour. Le commutateur aurait normalement lieu dans un système d'exploitation. Souvent, les mappages du noyau MMU sont les mêmes, donc son ordre n'a pas d'importance tant qu'il est fait avant de retourner à l'espace utilisateur. –