La différence entre les Appels de Porte, d'Interrompre la Porte, Trap Gate?
Je suis étudiant Intel en Mode Protégé. J'ai trouvé que l'Appel Porte, d'Interrompre la Porte, Trap Gate sont presque les mêmes. En effet, outre le fait que l'Appel Porte il y a le champs de paramètre compteur, et que ces 3 portes ont différents champs de type, ils sont identiques dans tous les autres domaines.
De leurs fonctions, ils sont tous utilisés pour le transfert de contrôle de code dans une procédure au sein de certaines segment de code.
Je me demande, depuis ces 3 portes contiennent toutes les informations nécessaires pour que l'appel au-delà du privilège de frontières. Pourquoi avons-nous besoin de 3 types d'eux? N'est-ce pas 1 juste assez bon?
Merci pour votre temps et votre réponse.
Mise à jour de 1
Une question connexe: Lors de l'utilisation de l'Interruption de la Porte ou de Piège à la Porte?
Mise à jour 2
Aujourd'hui je suis venu avec cette pensée:
But différent, différentes portes, et avec différents CPU détails sur le comportement effectuée. Comme SI l'indicateur de la manipulation.
Vous devez vous connecter pour publier un commentaire.
Une porte (appel, d'interrompre, de tâche ou de piège) est utilisé pour transférer le contrôle de l'exécution dans tous les segments. Le niveau de privilège vérification se fait différemment selon le type de destination et d'instruction.
Un appel de porte utilise l'APPEL et JMP instructions. Appel des portes de transfert de contrôle de moindre privilège code plus code privilège. La porte de chef de projet est utilisée afin de déterminer les niveaux de privilège d'avoir accès à la porte. Appelez portes sont (ou ont probablement été peu à peu abandonnée au profit de la SYSENTER/SYSEXIT mécanisme, qui est plus rapide.
Tâche portes sont utilisées pour le matériel de traitement multitâche de soutien. Une tâche pour le matériel commutateur peut se produire volontairement (APPEL/JMP à une tâche porte descripteur), ou par le biais d'une interruption ou d'un IRET lorsque le NT drapeau est réglé. Il fonctionne de la même façon avec les interrompre ou les piège portes. Tâche les portes ne sont pas utilisés, au meilleur de ma connaissance, que les noyaux généralement voulez plus de travail effectué lorsque les tâches de commutation.
Interruption & piège portes, avec la tâche de portes, sont connus comme la Table de Descripteur Interruption. Ils fonctionnent de la même que l'appel de portes, à l'exception du transfert de paramètres, d'un privilège de la pile à l'autre. Une différence est que l'interruption portes effacer le SI peu de EFLAGS, tandis que le piège portes ne sont pas. Cela les rend idéales pour servir les interruptions matérielles. Les pièges sont largement utilisés dans l'assistance matérielle à la virtualisation.
Pour plus d'informations, voir l'Architecture Intel Manuels sur les processeurs qui vous intéressent.
Mise à jour
Pour répondre au commentaire:
Il existe de nombreuses raisons pour distinguer les interruptions de pièges. L'une est la différence de champ d'application: interruption portes point de l'espace noyau (après tout, c'est le noyau qui gère le matériel), tandis que les pièges sont appelés dans l'espace utilisateur. Gestionnaires d'interruption sont appelés en réponse aux événements du matériel, bien que les pièges sont exécutées en réponse à un PROCESSEUR d'instruction.
Pour une simple (mais pas pratique) exemple pour mieux comprendre pourquoi l'interruption et le piège portes traiter EFLAGS différemment, envisager ce qui se passerait dans le cas où nous étions en train d'écrire un gestionnaire d'interruption de matériel pour événements sur un système monoprocesseur et on ne pouvait pas effacer le SI peu alors que nous étions au service de. Il serait possible pour une deuxième interruption d'arriver alors que nous étions occupés à servir le premier. Ensuite, notre gestionnaire d'interruption serait appelé par le processeur à un certain point au hasard lors de notre IH exécution. Cela pourrait entraîner la corruption des données, blocage, ou d'autres mauvais de la magie. Pratiquement, d'interrompre la désactivation est l'un des mécanismes pour s'assurer qu'une série de noyau d'états est traité comme une section critique.
L'exemple ci-dessus est en supposant que maskable interruptions, cependant. Vous ne voulez pas ignorer les laboratoires nationaux de métrologie, de toute façon.
C'est en grande partie hors de propos aujourd'hui, trop. Aujourd'hui, il n'y a pratiquement pas de distinction entre rapide et lente des gestionnaires d'interruption (de la recherche pour "Rapide et Lente Gestionnaires"), gestionnaires d'interruption peut exécuter dans imbriquée de la mode, de processeurs SMP rendre obligatoire le fait de quelques local interrompre la désactivation avec verrous de rotation, et ainsi de suite.
Maintenant, piège portes sont en effet utilisés pour le service des interruptions logicielles, les exceptions, etc. Une erreur de page ou la division par zéro exception dans votre processeur est probablement manipulé par le biais d'un piège de la porte. L'exemple le plus simple de l'utilisation de piège portes de contrôler l'exécution du programme est le 3 INT instruction, qui est utilisé pour mettre en œuvre des points d'arrêt dans les débogueurs. Quand on fait de la virtualisation, ce qui se passe, c'est que l'hyperviseur s'exécute dans le ring 0, et le noyau invité généralement dans l'anneau 1 - où privilégié code échouera avec le général exception de la faute. Witchel et Rosenblum développé binaire de traduction, qui est essentiellement la réécriture des instructions pour simuler leurs effets. Les instructions essentielles sont découverts et remplacés par des pièges. Puis, quand le piège s'exécute, le contrôle est donné à la VMM/hyperviseur, qui est responsable pour l'émulation de la critique des instructions dans le ring 0.
Avec l'assistance matérielle à la virtualisation, le piège-et-émuler technique a été quelque peu limitée dans son utilisation (car il est assez cher, surtout quand c'est dynamique), mais la pratique de la traduction binaire est encore largement utilisé.
Pour plus d'informations, je vous suggère de vérifier:
Espérons que cette aide!
D'Architecture et de Design
Du point de vue de la protection, de l'architecture x86 est basé sur hiérarchique des anneaux, selon laquelle l'ensemble de l'exécution de l'espace livrés par le processeur est divisé en quatre hiérarchique de la protection de domaines, dont chacune a son propre niveau de privilèges attribués. Cette conception suppose que la plupart du temps, le code sera exécuté au moins un domaine privilégié et parfois des services de la plus privilégiée de la sécurité de domaine vous sera demandé et c'services de préempter les moins privilégiés activités sur la pile, puis la restaurer d'une façon telle que l'ensemble de préemption sera invisible pour les moins privilégiés code.
La conception hiérarchique de la protection des domaines de l'etat que le contrôle ne peut pas être transmis arbitraire entre les différents domaines de sécurité.
Une porte est une caractéristique de l'architecture x86 pour le contrôle de transfert de moins privilégiés segments de code pour les plus privilégiés, mais pas vice-versa. En outre, le point en moins privilégiés à partir du segment où le contrôle sera passé peut être arbitraire, mais le point le plus privilégié segment où le contrôle sera passé est strictement spécifié. Descendante de la contrôle de passage pour les moins privilégiés segment est autorisé uniquement par le biais de
IRET
instruction. En ce qui concerne les Intel Logiciel manuel du développeur revendications:En d'autres termes, une porte est un domaine privilégié de point d'entrée avec les droits d'accès requis et une adresse de destination. De cette façon, toutes les portes sont similaire et utilisé pour presque les mêmes fins, et tout porte descripteurs de contenir chef de projet domaine, celui utilisé par le processeur de contrôle des droits d'accès. Mais attention, le processeur vérifie le chef de projet de la porte seulement si la source de l'appel a un logiciel
CALL
,JMP
, ouINT
instruction, et contourne cette case lorsque la source de l'appel est un matériel.Types de Portes
Malgré le fait que toutes les portes sont similaires, ils ont quelques différences parce qu'à l'origine Intel ingénieurs ont pensé que les différentes portes seraient utilisés à des fins différentes.
Tâche Porte
Une Tâche de Porte peuvent être stockés que dans IDT et de la GDT et appelé par un
INT
instruction. C'est très spécial type de porte qui diffère significativement de celle des autres.D'abord, Intel ingénieurs ont pensé qu'ils allaient révolutionner le multitâche en fournissant des CPU en fonction de la fonctionnalité pour les tâches de commutation. Ils ont introduit des TSS (Segment d'État de Tâche) qui détiennent des registres de l'état de la tâche et peut être utilisé pour le matériel de changement de tâche. Il y a deux façons pour le déclenchement de la tâche pour le matériel de commutation: en utilisant TSS lui-même et par l'aide de la Tâche de la Porte. Pour faire du matériel commutateur de tâche, vous pouvez utiliser le
CALL
ouJMP
instructions. Si j'ai correctement comprendre, la raison principale de la tâche porte d'introduction ont la possibilité de déclencher la tâche pour le matériel commutateurs en réponse à l'interruption de l'arrivée, car une tâche pour le matériel de l'interrupteur ne peut pas être déclenché par unJMP
pour le TSS sélecteur.En réalité, on ne l'utilise ni le matériel de commutation de contexte. Dans la pratique, cette fonctionnalité n'est pas optimal du point de vue des performances et il n'est pas pratique à utiliser. Par exemple, en prenant en considération que le SCT peut être stocké uniquement dans la GDT et de la longueur de GDT peuvent pas être plus de 8192, nous ne pouvons pas avoir plus de 8k tâches à partir du point de vue matériel.
Piège Porte
Un Piège de la Porte peuvent être stockés que dans IDT et appelé par un
INT
instruction. Il peut être considéré comme un type de base de la porte. Il vient passe le contrôle à l'adresse particulière spécifiée dans le piège de la porte de descripteur dans les plus privilégiés segment et rien de plus.Piège portes activement utilisé à des fins différentes, qui peuvent inclure:
INT 0x80
et Windows utiliserINT 0x2E
pour cet usage)Interrompre Porte
Une Interruption de Porte peuvent être stockés que dans IDT et appelé par un
INT
instruction. C'est le même que le piège de la porte, mais en plus interrompre la porte d'appel en outre interdit à l'avenir interrompre l'acceptation automatique de compensation de la SI l'indicateur dans le registre EFLAGS.Interrompre portes utilisé activement pour la gestion des interruptions de la mise en œuvre, en particulier sur le PIC en fonction des machines. La raison en est une exigence de contrôle de la pile de profondeur. Le PIC n'a pas l'interrompre sources priorités de la fonctionnalité. Pour cette raison par défaut, le PIC de désactiver uniquement l'interruption que déjà sur la manipulation du processeur. Mais un autre l'interrompt encore peut arriver dans le milieu et préempter la gestion des interruptions. Donc il y a peut être de 15 gestionnaires d'interruption de la pile du noyau dans le même moment. Comme résultat, les développeurs du noyau forcé d'augmenter sensiblement la taille de la pile du noyau qui mène à la mémoire de pénalité ou d'être prêt à face avec sporadiques débordement de pile du noyau. Interrompre la Porte peut fournir la garantie que seul un gestionnaire peut être de la pile du noyau dans le même temps.
Appel Porte
Un Appel de Porte peuvent être stockées dans la couche de diffusion et de la LDT et appelé par
CALL
etJMP
instructions. Similaire à piéger la porte, mais en plus, il peut passer le nombre de paramètres de l'utilisateur mode tâche de la pile en mode noyau de la tâche de la pile. Le nombre de paramètres transmis est spécifié dans l'appel porte descripteur.Appel de portes n'ont jamais été populaire. Il y a quelques raisons à cela:
À la fin des années 1990, Intel et AMD introduit des instructions supplémentaires pour les appels-système:
SYSENTER
/SYSEXIT
(Intel) etSYSCALL
/SYSRET
(AMD). En revanche à l'appel des portes, les nouvelles instructions fournir des avantages de performance et ont trouvé l'adoption.Résumé
Je suis en désaccord avec Michael Foukarakis. Désolé, mais il n'y a pas toutes les différences entre les interruptions et les pièges à l'exception touchant
IF
drapeau.En théorie, chaque type de porte peut servir comme interface de pointage à un segment avec n'importe quel niveau de privilèges. Sur la pratique moderne du système d'exploitation en cours d'utilisation ne interrompre et de piéger les portes, qui est utilisé dans IDT pour les appels-système, des interruptions et la gestion des exceptions et pour cette raison tout ce qu'ils servent de noyau point d'entrée.
N'importe quel type de porte (y compris l'interruption, et le piège de la tâche) peut être invoquée dans le logiciel à l'aide d'un
INT
instruction. La seule fonctionnalité qui peut interdire à l'utilisateur le mode d'accès du code de particulier porte est chef de projet. Par exemple, lorsque le système d'exploitation construit IDT, quel que soit le type de l'portes, la configuration du noyau chef de projet des portes qui sera utilisée pour le matériel de gestion des événements à 0 et la fonction de cet accès à cette gates sera autorisée qu'à partir de l'espace du noyau (qui fonctionne tout au plus un domaine privilégié), mais quand il en installation de porte de l'appel système, il DPL à 3 pour permettre l'accès à la porte de n'importe quel code. En conséquence, le mode utilisateur tâche est capable de faire un système d'appel à l'aide de porte avec DPL = 3, mais va attraper une défaillance de Protection Générale sur la tentative d'appel clavier gestionnaire d'interruption, par exemple.N'importe quel type de porte IDT peut être invoquée par le matériel. Les gens utilisent l'interruption portes pour ce matériel de traitement d'événements que dans les cas où ils veulent arriver à une synchronisation. Par exemple, pour être sûr que le noyau de débordement de pile est impossible. Par exemple, j'ai réussi l'expérience de piège portes de l'utilisation de matériel pour la gestion des interruptions sur l'APIC en fonction du système.
Manière similaire, la porte de n'importe quel type de IDT peut être appelé dans le logiciel. La raison de l'utilisation de piège portes pour le système d'appel et d'exceptions est simple. Pas toutes les raisons de désactiver les interruptions. Interrompre la désactivation est une mauvaise chose, car elle accroît la gestion des interruptions latences et à augmenter la probabilité d'interruption perdu. En raison de cela pas de ne pas les désactiver sans aucune raison sérieuse sur les mains.
Gestionnaire d'interruption généralement écrit dans le strict réentrant style. De cette façon, gestionnaires d'interruption partagent généralement pas de données et peut en toute transparence devancer les uns les autres. Même quand nous avons besoin de s'excluent l'accès simultané aux données dans le gestionnaire d'interruption, nous pouvons protéger l'accès aux données partagées par l'aide de la cli et des ist instructions. Aucune raison de considérer un ensemble de gestionnaire d'interruption comme une section critique. Aucune raison d'utiliser l'interruption des portes, à l'exception de désir pour éviter un éventuel débordement de pile du noyau sur les systèmes à base de PIC.
Le piège portes est une solution par défaut pour le noyau de l'interfaçage. Interrompre la porte peut être utilisé à la place du piège de la porte s'il existe une raison sérieuse pour que.
Une Interruption porte est spécial parce que SI le drapeau est automatiquement désactivée. Un Appel de porte est spécial car il n'est pas activé par l'intermédiaire d'un vecteur d'interruption. Une tâche porte est spécial parce qu'il enregistre automatiquement le processeur de l'état. Quatre des comportements distincts, ayant quatre noms pour eux, c'est pratique.