147 votes

Changement de contexte d'un fil ou d'un processus

Quelqu'un pourrait-il me dire ce qui est fait exactement dans les deux situations ? Quel est le coût principal de chacune d'elles ?

1 votes

Ceci peut peut-être vous aider linfo.org/context_switch.html

228voto

Abhay Buch Points 1748

La principale distinction entre un thread switch et un process switch est que pendant un thread switch, l'espace mémoire virtuel reste le même, alors qu'il ne l'est pas pendant un process switch. Dans les deux cas, le contrôle est transféré au noyau du système d'exploitation pour effectuer le changement de contexte. Le processus d'entrée et de sortie du noyau du système d'exploitation ainsi que le coût de la commutation des registres constituent le coût fixe le plus important de l'exécution d'un changement de contexte.

Un coût plus flou est qu'un changement de contexte perturbe les mécanismes de mise en cache du processeur. En gros, lorsque vous changez de contexte, toutes les adresses mémoire que le processeur "mémorise" dans son cache deviennent effectivement inutiles. La grande distinction ici est que lorsque vous changez d'espace mémoire virtuel, le Translation Lookaside Buffer (TLB) du processeur ou son équivalent est vidé, ce qui rend les accès à la mémoire beaucoup plus coûteux pendant un certain temps. Cela ne se produit pas lors d'un changement de thread.

11 votes

Tout cela en supposant que la TLB et le cache ne stockent pas le pid de chaque entrée.

2 votes

IMHO @dramzy a raison, le système d'exploitation peut prendre en charge le changement rapide de contexte qui est brièvement mentionné ici : youtu.be/3akTtCu_F_k?t=46m8s (regardez depuis le début pour en savoir plus sur la mémoire virtuelle, les tables de pages et la TLB).

0 votes

@piotrwest Est-ce que l'un des principaux systèmes d'exploitation prend en charge le changement rapide de contexte ?

18voto

aditya dogra Points 1

La commutation du contexte du processus implique la commutation de l'espace d'adressage de la mémoire. Cela inclut les adresses mémoire, les mappages, les tables de pages et les ressources du noyau - une opération relativement coûteuse. Sur certaines architectures, il faut même vider divers caches du processeur qui ne peuvent pas être partagés entre les espaces d'adressage. Par exemple, les x86 doivent vider la TLB et certains processeurs ARM doivent vider la totalité du cache L1 !

Le passage d'un thread à un autre dans le même processus (le passage d'un thread à un autre entre processus est simplement un passage de processus). Le passage de l'état du processeur (comme le compteur de programme et le contenu des registres) est généralement très efficace.

3voto

john Points 21
  • la commutation de processus : il s'agit d'une transition entre deux processus résidant en mémoire dans un environnement de multiprogrammation ;
  • le changement de contexte : il s'agit d'un changement de contexte, d'un programme en cours d'exécution à une routine de service d'interruption (ISR).

-1voto

CtrlDot Points 1236

En bref, le changement de contexte d'un thread n'attribue pas un tout nouvel ensemble de mémoire et de pid, il utilise les mêmes que le parent puisqu'il s'exécute dans le même processus. Un processus 1 génère un nouveau processus et assigne donc de nouvelles mémoires et de nouveaux pid.

Il y a beaucoup plus que ça. Ils ont écrit des livres sur le sujet.

En ce qui concerne le coût, un changement de contexte de processus >>>> thread car vous devez réinitialiser tous les compteurs de la pile, etc.

-1voto

raikrahul Points 44

Les fils de discussion seront changés de contexte. Les verrous (en particulier les verrous de niveau utilisateur) sont indépendants du planificateur. ( Notez que les threads s'exécutant dans le noyau avec des interruptions désactivées ne seront pas commutés en contexte. changement de contexte. )

copié de CS162 2005 problèmes

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X