Changement de contexte

Table des matières
Le temps de l'unité centrale comme ressource partagée
Les systèmes d'exploitation modernes jonglent avec des dizaines ou des centaines de fils actifs.
Il n'existe que quelques cœurs d'unité centrale, de sorte que la plupart des threads attendent dans des files d'attente tandis qu'un petit sous-ensemble s'exécute.
A changement de contexte permet au planificateur de mettre en pause un thread en cours d'exécution et d'en reprendre un autre.
Cette commutation rapide crée l'illusion du parallélisme et façonne également ce que vous verrez plus tard dans les crash dumps.
Dans le contexte d'exécution d'un thread
Chaque fil transporte plus que du code et des données.
Il dispose également d'un contexte d'exécution complet que le noyau doit sauvegarder et restaurer correctement.
Ce contexte comprend
Registres et drapeaux à usage général de l'unité centrale
Pointeur d'instruction et pointeur de pile
Registres de segment et registres de contrôle, le cas échéant
Piles du noyau et de l'utilisateur, plus quelques métadonnées de l'ordonnanceur
Lorsque le noyau s'éloigne d'un thread, il doit enregistrer cet état.
Lorsque le planificateur revient à ce même thread, il rétablit tout, de sorte que l'exécution se poursuit comme si rien ne s'était arrêté.
Mesures prises par le noyau lors d'un changement de contexte
À un niveau inférieur, un changement de contexte suit une séquence prévisible.
Les détails changent d'une architecture à l'autre, mais les actions de base restent similaires.
Le thread en cours d'exécution atteint un point d'ordonnancement, tel qu'une interruption de minuterie ou un appel système bloquant.
Le noyau enregistre les registres de l'unité centrale, les pointeurs de pile et certaines informations de contrôle dans la pile du noyau ou le bloc de contrôle du thread.
L'ordonnanceur choisit le prochain thread exécutable en fonction de la priorité, de l'équité et de l'affinité avec le processeur.
Le noyau charge le contexte sauvegardé pour le prochain thread, y compris les registres et les pointeurs de pile.
Le contrôle revient au mode utilisateur ou au mode noyau dans le nouveau thread, qui continue à son pointeur d'instruction précédent.
Cette séquence se produit des millions de fois par seconde sur des systèmes très sollicités.
Toute erreur dans ces étapes peut entraîner une corruption des données, des blocages ou une panne produisant un fichier dump.
Déclencheurs de changement de contexte
Les changements de contexte ne se produisent pas de manière aléatoire.
Ils résultent d'événements bien définis au sein du système d'exploitation et du matériel.
Déclencheurs courants :
Le fil conducteur se bloque sur E/S, un verrou ou un objet d'attente
Une interruption de la minuterie matérielle indique que le thread a utilisé sa tranche de temps.
Un thread de priorité supérieure devient prêt à fonctionner
Le planificateur reçoit un signal pour rééquilibrer le travail entre les cœurs.
Les vidages de crashs capturent le thread qui s'est exécuté lorsqu'une condition fatale s'est produite ou lorsque le noyau a détecté une incohérence grave au cours de l'une de ces transitions.
Crash Dumps et Thread States
Lorsque Windows se heurte à une vérification de bogue, il gèle la programmation et enregistre un instantané de la mémoire sur le disque.
Cet instantané comprend généralement des détails sur plusieurs threads et sur les contextes qui ont causé ou détecté l'erreur.
Les crash dumps sont généralement enregistrés :
Fil de discussion actif sur chaque unité centrale au moment de la défaillance
Les piles du noyau qui montrent quelles fonctions ont été exécutées juste avant le crash.
Structures décrivant les files d'attente et les états d'attente
En examinant ces threads et leurs derniers événements de changement de contexte, les analystes déduisent quel pilote, appel système ou action de l'utilisateur a contribué à la défaillance.
Considérations relatives aux performances et à la fiabilité
La commutation de contexte permet le multitâche mais entraîne des frais généraux.
Le noyau doit passer d'un niveau de privilège à l'autre, vidanger ou recharger certains états de l'unité centrale et perturber le contenu de la mémoire cache.
Un trop grand nombre de changements de contexte peut le faire :
Augmenter le temps passé par l'unité centrale dans l'ordonnanceur
Hurt cache et TLB locality
Réduire le débit des applications à forte intensité d'E/S
Instable conducteurs ou des processus utilisateurs malveillants peuvent créer des schémas de commutation extrêmes, qui apparaissent parfois dans les fichiers de crash sous la forme de longues piles d'opérations d'attente et de réveil.
Dans les cas les plus graves, les bogues survenant au cours de ces transitions entraînent une corruption de la mémoire ou des blocages.
Utilisation pratique des informations contextuelles lors de l'analyse des vidanges

L'analyse d'un crash dump commence souvent par le fil de discussion en cours et son contexte.
Vous travaillez ensuite vers l'extérieur pour comprendre l'ordonnancement et le comportement des verrous.
Contrôles clés dans une vidange de Windows
Lorsque vous ouvrez un crash dump Windows dans un débogueur, vous pouvez.. :
Interroger le code de vérification des bogues et les paramètres
Inspecter le thread en cours et sa pile d'appels
Enumérer les autres threads dans le même processus et leurs états
Examiner les chaînes d'attente et les objets de synchronisation
Ces informations vous aident à déterminer si un pilote s'est planté lors d'un changement de contexte, lors de l'achèvement des E/S ou lors de la gestion d'un temporisateur ou d'une interruption.
Relation avec la récupération des données
Une panne qui interrompt les écritures actives peut rendre les systèmes de fichiers incohérents.
Même après avoir corrigé la cause première, il se peut que vous deviez récupérer des fichiers à partir de volumes endommagés.
Vous pouvez utiliser les crash dumps pour comprendre le timing et les composants responsables, puis vous fier aux Magic Data Recovery pour analyser les disques concernés et restaurer les données perdues ou partiellement écrites.
Cette combinaison permet de comprendre à la fois pourquoi le système est tombé en panne et comment reconstruire le contenu de l'utilisateur par la suite.
Prise en charge de Windows 7/8/10/11 et Windows Server
Conclusion
La commutation de contexte permet aux systèmes d'exploitation de partager les cœurs de l'unité centrale entre plusieurs threads.
Le planificateur sauvegarde et restaure constamment les contextes d'exécution, et toute erreur grave dans ce processus peut se traduire par un plantage.
Les crash dumps conservent les derniers états connus des threads, y compris leurs contextes et leurs relations d'ordonnancement.
En lisant ces fichiers et en les associant à des outils de récupération sûrs tels que Magic Data Recovery, vous pouvez à la fois diagnostiquer les défaillances et protéger les données des utilisateurs contre les effets secondaires des arrêts soudains du système.
FAQ
Comment fonctionne le changement de contexte ?
Qu'est-ce qui déclenche un changement de contexte ?
Qu'est-ce que le changement de contenu ?
Quels sont les exemples de changement de contexte ?
Est-ce que le changement de contexte est difficile pour les personnes souffrant de TDAH ?
Le changement de contexte est-il bon pour le cerveau ?
Comment fonctionne le changement de contenu ?
Le changement de contexte est-il bon ou mauvais ?
Que sont les commutateurs L1, L2 et L3 ?
Eddie est un spécialiste des technologies de l'information avec plus de 10 ans d'expérience dans plusieurs entreprises renommées de l'industrie informatique. Il apporte à chaque projet ses connaissances techniques approfondies et ses compétences pratiques en matière de résolution de problèmes.



