Table des matières
Contexte CPU" >Contexte CPU
Types de changement de contexte CPU" >Types de changement de contexte CPU
Changement de contexte de processus" >Changement de contexte de processus
Changement de contexte de processus vs appel système" >Changement de contexte de processus vs appel système
Maison Tutoriel système Linux Explorer le changement de contexte sur les processeurs Linux

Explorer le changement de contexte sur les processeurs Linux

Feb 05, 2024 pm 01:06 PM
linux linux教程 linux系统 linux命令 shell脚本 overflow Linux embarqué bon permis Débuter avec Linux apprentissage Linux

Comme nous le savons tous, Linux est un système d'exploitation qui prend en charge le multitâche. Le nombre de tâches qu'il peut exécuter en même temps dépasse de loin le nombre de processeurs. Bien entendu, ces tâches ne s'exécutent pas réellement en même temps (pour un seul processeur), mais parce que le système alloue le processeur à ces tâches à tour de rôle pendant une courte période de temps, créant l'illusion de plusieurs tâches exécutées en même temps. .

Contexte CPU

Avant l'exécution de chaque tâche, le processeur doit savoir où charger et démarrer cette tâche. Cela signifie que le système doit configurer à l'avance les registres et le compteur de programme du processeur.

Les registres CPU sont des mémoires petites mais très rapides intégrées au CPU. Le compteur de programme est utilisé pour stocker l'emplacement de l'instruction en cours d'exécution par le CPU ou l'emplacement de la prochaine instruction à exécuter.

Ces deux éléments constituent l'environnement nécessaire au processeur avant qu'il puisse effectuer une tâche, c'est pourquoi on l'appelle "contexte CPU". Veuillez vous référer à l'image ci-dessous :

探讨 Linux CPU 的上下文切换

Maintenant que vous savez ce qu'est le contexte CPU, je pense qu'il vous sera facile de comprendre le Changement de contexte CPU. Le « changement de contexte CPU » fait référence à la sauvegarde du contexte CPU (registres CPU et compteur de programme) de la tâche précédente, puis au chargement du contexte de la nouvelle tâche dans ces registres et compteur de programme, et enfin au passage au compteur de programme.

Ces contextes enregistrés sont stockés dans le noyau du système et rechargés lorsque l'exécution de la tâche est reprogrammée. Cela garantit que l'état d'origine de la tâche n'est pas affecté et que la tâche semble s'exécuter en continu.

Types de changement de contexte CPU

Vous pourriez dire que la commutation de contexte du processeur n'est rien d'autre que la mise à jour des registres du processeur et des valeurs des compteurs de programme, et ces registres sont conçus pour exécuter des tâches rapidement, alors pourquoi cela affecte-t-il les performances du processeur ?

Avant de répondre à cette question, avez-vous déjà réfléchi à ce que sont ces « tâches » ? On pourrait dire qu'une tâche est un processus ou un thread. Oui, les processus et les threads sont les tâches les plus courantes, mais il existe d’autres types de tâches en plus.

N'oubliez pasL'interruption matérielle est également une tâche courante. Le signal de déclenchement matériel entraînera l'appel du gestionnaire d'interruption.

Par conséquent, il existe au moins trois types différents de commutateurs de contexte CPU :

  • Changement de contexte de processus
  • Changement de contexte du fil de discussion
  • Interruption du changement de contexte

Jetons un coup d’œil un par un.

Changement de contexte de processus

Linux divise l'espace d'exécution du processus en espace noyau et espace utilisateur en fonction du niveau de privilège, qui correspond au niveau de privilège CPU de Ring 0Ring 3 dans la figure ci-dessous.

  • Espace noyau(Ring 0) dispose des autorisations les plus élevées et peut accéder directement à toutes les ressources
  • L'espace utilisateur (Ring 3) ne peut accéder qu'à des ressources restreintes et ne peut pas accéder directement aux périphériques matériels tels que la mémoire. Il doit être piégédans le noyau via des appels systèmeafin d'accéder à ces ressources privilégiées.
探讨 Linux CPU 的上下文切换

En regardant les choses sous un autre angle, un processus peut s'exécuter à la fois dans l'espace utilisateur et dans l'espace noyau. Lorsqu'un processus s'exécute dans espace utilisateur, on l'appelle état utilisateur du processus. Lorsqu'il tombe dans espace noyau, on l'appelle état noyau du processus.

La conversion du mode utilisateur au mode noyau doit être effectuée via appel système. Par exemple, lorsque nous visualisons le contenu d'un fichier, nous avons besoin de l'appel système suivant :

  • open() : Ouvrir le dossier
  • read() : Lire le contenu du fichier
  • write() : Écrivez le contenu du fichier dans le fichier de sortie (y compris la sortie standard)
  • close() : Fermer le dossier

Alors, le changement de contexte du processeur se produira-t-il pendant l'appel système ci-dessus ? bien sûr.

Cela nécessite d'abord d'enregistrer l'emplacement de l'instruction du mode utilisateur d'origine dans le registre du processeur. Ensuite, afin d'exécuter du code en mode noyau, les registres du processeur doivent être mis à jour vers le nouvel emplacement des instructions en mode noyau. Enfin, passez à l'état du noyau pour exécuter la tâche du noyau.

Ensuite, une fois l'appel système terminé, les registres du processeur doivent restaurerl'état utilisateur enregistré d'origine, puis passer à l'espace utilisateur pour continuer à exécuter le processus.

Ainsi, lors d'un appel système, il y a en fait deux commutateurs de contexte CPU.

Mais il convient de souligner que le processus d'appel système n'impliquera pas de changement de processus, ni de changement de ressources système telles que la mémoire virtuelle. Ceci est différent de ce que nous appelons habituellement le « changement de contexte de processus ». Le changement de contexte de processus fait référence au passage d'un processus à un autre, alors que le même processus est toujours en cours d'exécution pendant l'appel système

Le processus d'appel système est souvent appelé commutateur de mode privilège, plutôt que commutateur de contexte. Mais en fait, pendant le processus d'appel système, le changement de contexte CPU est également inévitable.

Changement de contexte de processus vs appel système

Alors, quelle est la différence entre le changement de contexte de processus et les appels système ? Tout d'abord, les processus sont gérés par le noyau et la commutation de processus ne peut se produire qu'en mode noyau. Par conséquent, le contexte du processus inclut non seulement les ressources de l'espace utilisateur telles que la mémoire virtuelle, la pile et les variables globales, mais inclut également les états de l'espace du noyau tels que la pile du noyau et les registres.

Donc, le changement de contexte de processus comporte une étape de plus que l'appel système :

Avant de sauvegarder l'état du noyau et les registres du processeur du processus en cours, vous devez sauvegarder la mémoire virtuelle, la pile, etc. du processus et charger l'état du noyau du processus suivant ;

Selon le rapport de test de Tsuna, chaque changement de contexte nécessite des dizaines de nanosecondes à des microsecondes de temps CPU. Ce temps est considérable, en particulier dans le cas d'un grand nombre de changements de contexte de processus, ce qui peut facilement amener le processeur à consacrer beaucoup de temps à économiser et à restaurer des ressources telles que les registres, les piles de noyau et la mémoire virtuelle. C’est exactement ce dont nous avons parlé dans le dernier article, un facteur important qui fait augmenter la charge moyenne.

Alors, quand le processus sera-t-il planifié/commuté pour s'exécuter sur le CPU ? En fait, il existe de nombreux scénarios, laissez-moi vous les résumer ci-dessous :

  • Lorsque la tranche de temps CPU d'un processus est épuisée, elle est suspendue par le système et basculée vers d'autres processus en attente de l'exécution du CPU. Lorsque les ressources système sont insuffisantes (par exemple, mémoire insuffisante), le processus ne peut pas s'exécuter tant que les ressources ne sont pas suffisantes. À ce moment-là, le processus sera également
  • suspendu
  • et le système planifiera l'exécution d'autres processus. Lorsqu'un processus
  • se suspend automatiquement
  • via la fonction sleep, il sera naturellement reprogrammé. Lorsqu'un processus avec une priorité plus élevée est en cours d'exécution, afin d'assurer le fonctionnement du processus à haute priorité, le processus en cours sera suspendu par le processus à haute priorité
  • .
  • Lorsqu'une interruption matérielle se produit, le processus sur le processeur sera interruption-suspendu
  • et exécutera à la place la routine de service d'interruption dans le noyau.
  • Il est très nécessaire de comprendre ces scénarios, car ils tuent en coulisses lorsque des problèmes de performances surviennent avec le changement de contexte.

Changement de contexte de fil de discussion

La plus grande différence entre les threads et les processus est que les threads sont l'unité de base de la planification des tâches

, tandis que les processus sont l'unité de base de

l'acquisition des ressources. Pour parler franchement, la soi-disant planification des tâches dans le noyau planifie en fait les threads ; et les processus ne fournissent que des ressources telles que la mémoire virtuelle et les variables globales pour les threads. Ainsi, pour les threads et les processus, nous pouvons le comprendre de cette façon :

Lorsqu'un processus n'a qu'un seul thread, on peut considérer qu'un processus est égal à un thread

  • Lorsqu'un processus comporte plusieurs threads, ces threads partagent les mêmes ressources, telles que la mémoire virtuelle et les variables globales.
  • De plus, les threads disposent également de leurs propres données privées, telles que des piles et des registres, qui doivent également être enregistrées lors des changements de contexte.
  • De cette façon, le changement de contexte de fil de discussion peut en fait être divisé en deux situations :

Tout d’abord, les deux threads avant et après appartiennent à des processus différents. À l'heure actuelle, puisque les ressources ne sont pas partagées, le processus de commutation est le même que le changement de contexte de processus.

  • Deuxièmement, les deux threads avant et après appartiennent au même processus. À ce stade, puisque la mémoire virtuelle est partagée, les ressources de mémoire virtuelle restent inchangées pendant la commutation, et seules les données privées, registres et autres données non partagées du thread doivent être commutées.
  • Évidemment, le changement de thread au sein d'un même processus consomme moins de ressources que le changement de plusieurs processus. C'est aussi l'avantage du multi-threading au lieu du multi-processus.

Changement de contexte d'interruption

En plus des deux changements de contexte précédents, il existe un autre scénario qui génère également un changement de contexte CPU, à savoir interruption

.

Afin de répondre rapidement aux événements, les interruptions matérielles interrompront le processus normal de planification et d'exécution, puis appelleront le gestionnaire d'interruption

.

Lors de l'interruption d'autres processus, l'état actuel du processus doit être enregistré afin que le processus puisse toujours être restauré à partir de son état d'origine après l'interruption.

Contrairement au contexte de processus, le changement de contexte d'interruption n'implique pas l'état utilisateur du processus. Par conséquent, même si le processus d'interruption interrompt le processus en mode utilisateur, il n'est pas nécessaire de sauvegarder et de restaurer les ressources du mode utilisateur telles que la mémoire virtuelle et les variables globales du processus.

De plus, comme la commutation de contexte de processus, la commutation de contexte d'interruption consomme également du CPU. Des temps de commutation excessifs consommeront beaucoup de ressources CPU et réduiront même considérablement les performances globales du système. Par conséquent, lorsque vous constatez qu'il y a trop d'interruptions, vous devez faire attention à vérifier si cela entraînera de graves problèmes de performances pour votre système.

Conclusion

En résumé, quel que soit le scénario qui conduit à un changement de contexte, vous devez savoir :

La commutation de contexte CPU est l'une des fonctions essentielles pour assurer le fonctionnement normal du système Linux et ne nécessite généralement pas notre attention particulière.

Cependant, un changement de contexte excessif consommera du temps CPU pour sauvegarder et restaurer des données telles que les registres, les piles de noyau, la mémoire virtuelle, etc., raccourcissant ainsi le temps d'exécution réel du processus et entraînant une diminution significative des performances globales du système.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Entrée de la version Web Deepseek Entrée du site officiel Deepseek Entrée de la version Web Deepseek Entrée du site officiel Deepseek Feb 19, 2025 pm 04:54 PM

Deepseek est un puissant outil de recherche et d'analyse intelligent qui fournit deux méthodes d'accès: la version Web et le site officiel. La version Web est pratique et efficace et peut être utilisée sans installation; Que ce soit des individus ou des utilisateurs d'entreprise, ils peuvent facilement obtenir et analyser des données massives via Deepseek pour améliorer l'efficacité du travail, aider la prise de décision et promouvoir l'innovation.

Comment installer Deepseek Comment installer Deepseek Feb 19, 2025 pm 05:48 PM

Il existe de nombreuses façons d'installer Deepseek, notamment: Compiler à partir de Source (pour les développeurs expérimentés) en utilisant des packages précompilés (pour les utilisateurs de Windows) à l'aide de conteneurs Docker (pour le plus pratique, pas besoin de s'inquiéter de la compatibilité), quelle que soit la méthode que vous choisissez, veuillez lire Les documents officiels documentent soigneusement et les préparent pleinement à éviter des problèmes inutiles.

Le package d'installation OUYI OKX est directement inclus Le package d'installation OUYI OKX est directement inclus Feb 21, 2025 pm 08:00 PM

OUYI OKX, le premier échange mondial d'actifs numériques, a maintenant lancé un package d'installation officiel pour offrir une expérience de trading sûre et pratique. Le package d'installation OKX de OUYI n'a pas besoin d'être accessible via un navigateur. Le processus d'installation est simple et facile à comprendre.

Obtenez le package d'installation Gate.io gratuitement Obtenez le package d'installation Gate.io gratuitement Feb 21, 2025 pm 08:21 PM

Gate.io est un échange de crypto-monnaie populaire que les utilisateurs peuvent utiliser en téléchargeant son package d'installation et en l'installant sur leurs appareils. Les étapes pour obtenir le package d'installation sont les suivantes: Visitez le site officiel de Gate.io, cliquez sur "Télécharger", sélectionnez le système d'exploitation correspondant (Windows, Mac ou Linux) et téléchargez le package d'installation sur votre ordinateur. Il est recommandé de désactiver temporairement les logiciels antivirus ou le pare-feu pendant l'installation pour assurer une installation fluide. Une fois terminé, l'utilisateur doit créer un compte Gate.io pour commencer à l'utiliser.

Installation officielle du site officiel de Bitget (Guide du débutant 2025) Installation officielle du site officiel de Bitget (Guide du débutant 2025) Feb 21, 2025 pm 08:42 PM

Bitget est un échange de crypto-monnaie qui fournit une variété de services de trading, notamment le trading au comptant, le trading de contrats et les dérivés. Fondée en 2018, l'échange est basée à Singapour et s'engage à fournir aux utilisateurs une plate-forme de trading sûre et fiable. Bitget propose une variété de paires de trading, notamment BTC / USDT, ETH / USDT et XRP / USDT. De plus, l'échange a une réputation de sécurité et de liquidité et offre une variété de fonctionnalités telles que les types de commandes premium, le trading à effet de levier et le support client 24/7.

Comment résoudre le problème des autorisations rencontré lors de la visualisation de la version Python dans le terminal Linux? Comment résoudre le problème des autorisations rencontré lors de la visualisation de la version Python dans le terminal Linux? Apr 01, 2025 pm 05:09 PM

Solution aux problèmes d'autorisation Lors de la visualisation de la version Python dans Linux Terminal Lorsque vous essayez d'afficher la version Python dans Linux Terminal, entrez Python ...

OUYI Exchange Télécharger le portail officiel OUYI Exchange Télécharger le portail officiel Feb 21, 2025 pm 07:51 PM

Ouyi, également connu sous le nom d'OKX, est une plate-forme de trading de crypto-monnaie de pointe. L'article fournit un portail de téléchargement pour le package d'installation officiel d'Ouyi, qui facilite les utilisateurs pour installer le client Ouyi sur différents appareils. Ce package d'installation prend en charge les systèmes Windows, Mac, Android et iOS. Une fois l'installation terminée, les utilisateurs peuvent s'inscrire ou se connecter au compte OUYI, commencer à négocier des crypto-monnaies et profiter d'autres services fournis par la plate-forme.

Comment définir automatiquement les autorisations d'UnixSocket après le redémarrage du système? Comment définir automatiquement les autorisations d'UnixSocket après le redémarrage du système? Mar 31, 2025 pm 11:54 PM

Comment définir automatiquement les autorisations d'UnixSocket après le redémarrage du système. Chaque fois que le système redémarre, nous devons exécuter la commande suivante pour modifier les autorisations d'UnixSocket: sudo ...

See all articles