D'après ce que j'ai compris, un changement de contexte se produit pour qu'un système d'exploitation puisse exécuter plus d'un processus "simultanément", en sauvegardant l'état actuel des registres, du PC, etc. afin de pouvoir reprendre là où il s'est arrêté.
Ok, vous semblez connaître le concept de base.
Mais où est cette "état actuel" (du processeur) va être sauvé ?
La réponse est "en mémoire" .
BTW le " PC " (compteur de programme) est également un registre.
Par votre utilisation de "registres" vous semblez vouloir dire les registres d'usage général.
Les tampons d'E/S sont-ils stockés pendant un changement de contexte ?
Où sont les tampons d'E/S ?
La réponse est " en mémoire" .
Est-ce que cela a un sens de "sauver" (c'est-à-dire les tampons d'E/S) qui sont déjà en mémoire (et ne font pas partie du processeur ou de l'état du processeur) dans un autre emplacement de la mémoire ?
La réponse est pas de .
Si non, pourquoi ?
(C'est un indice évident que la réponse correcte est "non").
L'état du processeur est sauvegardé afin de pouvoir être restauré ultérieurement, pendant que le processeur est utilisé pour une autre tâche.
Qu'est-ce qui va remplacer le tampon d'entrée/sortie ?
La réponse devrait être rien .
Par exemple, si un processus reçoit des données d'un réseau par le biais de tampons d'E/S et qu'un changement de contexte se produit, ces tampons sont-ils stockés avec l'état du programme ?
L'utilisation du commutateur de contexte ne signifie pas nécessairement qu'un système d'exploitation est actif.
Par exemple, un commutateur de contexte peut également être utilisé pour traiter une interruption.
Cependant, dans la situation que vous décrivez, un système d'exploitation (utilisant ses pilotes de périphériques) gérera toutes les opérations d'E/S (à l'exception des E/S de l'espace utilisateur).
Cela signifie que les tampons d'E/S appartiennent au système d'exploitation, et non à un quelconque processus.
Les données entrantes sont stockées dans des tampons système sous le contrôle du système d'exploitation (en utilisant soit l'entrée/sortie de programme, ou PIO, soit l'accès direct à la mémoire, ou DMA).
Les données peuvent être reçues par un appareil indépendamment du processus exécuté par l'unité centrale.
"Ces tampons" ne font pas partie d'un quelconque (espace utilisateur) "programme" et donc pas "stocké" avec n'importe quel "état du programme" en toutes circonstances.
Mais je ne sais pas exactement comment cela devrait gérer les flux de données à travers les tampons : parce qu'il n'a pas encore traité les données dans ces tampons, mais d'autres données seront arrivées au moment où le processus reprendra... il semble que vous perdiez des données dans les deux cas ?
Lorsqu'un processus fait un appel système "lecture" au système d'exploitation, il va en fait chercher des données dans un tampon système intermédiaire, plutôt que d'effectuer (directement) des entrées/sorties.
Selon le dispositif et le type de données, les données reçues peuvent être copiées plusieurs fois d'un tampon à un autre (par exemple, la pile de protocoles réseau) avant qu'un processus puisse les "lire".
Comme le système d'exploitation gère toutes les entrées/sorties pour le compte de tous les processus, il s'efforce de ne perdre aucune donnée.
Les tampons d'E/S appartiennent au système, et ne font pas partie du contexte d'un processus.
Chaque pilote de périphérique maintient l'état de son périphérique (en utilisant des structures de données en mémoire) et gère les entrées/sorties que le périphérique effectue.
Quoi qu'il en soit, les données qui se trouvent déjà en mémoire ne font pas partie de "l'état du processeur" et ne sont pas sauvegardées ou "stocké" pendant un changement de contexte.