40 votes

Pourquoi Linux n'utilise-t-il pas le changement de contexte matériel via le TSS?

J'ai lu la déclaration suivante:

L'architecture x86 comprend un spécifique du type de segment appelé la Tâche Segment d'état (TSS), pour stocker du matériel les contextes. Bien que Linux n'utilise pas matériel changements de contexte, il est néanmoins obligée d'installer un TSS pour chaque PROCESSEUR dans le système.

Je me demandais:

  • Pourquoi ne pas Linux utiliser le matériel de soutien pour le changement de contexte?
  • N'est-ce pas le matériel approche beaucoup plus rapide que l'approche du logiciel?
  • Est-il un OS qui ne se tirer parti du matériel de changement de contexte? Windows utiliser?

Enfin et comme toujours, merci pour votre patience et de votre réponse.

-----------Ajouté--------------

http://wiki.osdev.org/Context_Switching obtenu quelques explications.

Les gens aussi confus que moi pourrait prendre un coup d'oeil. 8^)

42voto

Earlz Points 19355

Le x86 SST est très lent pour le matériel de multitâche et offre presque pas d'avantages par rapport aux logiciels les tâches de commutation. (En fait, je pense que de le faire manuellement bat le TSS un grand nombre de fois)

Le TSS est connu aussi pour être ennuyeux et fastidieux de travailler avec et il n'est pas portable, même pour x86-64. Linux a pour but de travailler sur plusieurs architectures de sorte qu'ils ont probablement choisi d'utiliser le logiciel de changement de tâche, car il peut être écrit dans une machine indépendante. Aussi, les Logiciels les tâches de commutation fournit beaucoup plus de pouvoir sur ce qui peut être fait et est généralement plus facile à mettre en place que la SST est.

Je crois que Windows 3.1 utilisé le TSS, mais au moins le NT >5 noyau n'a pas. Je ne sais pas du tout les systèmes Unix qui utilise le TSS.

Notez que le TSS est obligatoire. La chose que les logiciels libres est de créer un seul TSS entrée(par processeur) et à chaque fois ils ont besoin pour passer des tâches, ils ont juste changer cette unique TSS. Et les champs utilisés dans le TSS par logiciel les tâches de commutation est - ESP0 et SS0. Ce est utilisé pour arriver à 0 anneau de l'anneau 3 code pour les interruptions. Sans TSS, il n'y aurait pas connu l'Anneau 0 pile, ce qui serait bien sûr conduire à une erreur de protection générale et, éventuellement, triple faute.

17voto

Andy Grover Points 383

Linux utilisé pour l'utiliser sur le MATÉRIEL de base de la commutation, de la pré-1.3 calendrier de l'iirc. Je crois sw basée sur la commutation de contexte s'est avéré être plus rapide, et il est plus souple.

Une autre raison peut avoir la réduction de l'arc-code spécifique. Le premier port de Linux à un non-x86 l'architecture était l'Alpha. Alpha n'a pas TSS, donc plus de code pourrait être partagée si tous les arcs utilisés SW de commutation. (Juste une supposition.) Malheureusement, le noyau changelogs pour l'1.2-1.3 noyau de la période ne sont pas bien conservés, donc je ne peux pas être plus précis.

7voto

Andrew McGregor Points 7641

Linux n'utilise pas de segmentation de la mémoire de modèle, de sorte que cette segmentation spécifique fonctionnalité n'est pas utilisée.

les Processeurs x86 ont beaucoup de différents types de matériel de soutien pour la commutation de contexte, de sorte que la distinction n'est pas matériel vs logiciel, mais plus de comment fonctionne un OS utiliser les différentes fonctionnalités du matériel disponible. Il n'est pas nécessaire de les utiliser tous.

Linux est donc l'efficacité ciblée que vous pouvez parier que quelqu'un a profilé de chaque option est possible, et que les options utilisées actuellement sont les meilleurs compromis.

3voto

Pedro Points 31

@Andy - Le dernier noyau avec commutation de tâches matérielles était 2.1.108.

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