Quelle est la différence entre Trap et Interrupt?
Si la terminologie est différente pour différents systèmes, que signifient-ils sur x86?
Quelle est la différence entre Trap et Interrupt?
Si la terminologie est différente pour différents systèmes, que signifient-ils sur x86?
Un trap est une exception dans un processus utilisateur. Cela est dû à une division par zéro ou à un accès mémoire invalide. C'est aussi la manière habituelle d'appeler une routine du noyau (un appel système ) car celles-ci s'exécutent avec une priorité plus élevée que le code utilisateur. La gestion est synchrone (le code utilisateur est donc suspendu et se poursuit par la suite). Dans un sens, ils sont «actifs» - la plupart du temps, le code s'attend à ce que le piège se produise et s'appuie sur ce fait.
Une interruption est quelque chose généré par le matériel (périphériques comme le disque dur, la carte graphique, les ports d'E / S, etc.). Celles-ci sont asynchrones (c'est-à-dire qu'elles ne se produisent pas à des endroits prévisibles dans le code utilisateur) ou "passives" puisque le gestionnaire d'interruption doit attendre qu'elles se produisent finalement.
Vous pouvez également voir un trap comme une sorte d'interruption interne au processeur puisque le gestionnaire du gestionnaire d'interruption ressemble à un gestionnaire d'interruption (les registres et les pointeurs de pile sont enregistrés, il y a un changement de contexte, l'exécution peut reprendre dans certains cas là où elle s'était arrêtée) .
Les pièges et les interruptions sont étroitement liés. Les interruptions sont un type d' exception et les exceptions sont similaires aux interruptions.
Intel x86 définit deux catégories qui se chevauchent, les événements vectorisés ( interruptions vs exceptions ) et les classes d'exceptions ( erreurs vs interruptions vs abandons ).
Toutes les citations de cet article proviennent de la version d'avril 2016 du manuel du développeur de logiciels Intel . Pour la perspective x86 (définitive et complexe), je recommande de lire le chapitre du SDM sur la gestion des interruptions et des exceptions.
Événements vectorisés
Les événements vectorisés ( interruptions et exceptions ) font sauter le processeur dans un gestionnaire d'interruption après avoir enregistré une grande partie de l'état du processeur (suffisamment pour que l'exécution puisse continuer à partir de ce point plus tard).
Les exceptions et les interruptions ont un ID, appelé vecteur, qui détermine à quel gestionnaire d'interruption le processeur passe. Les gestionnaires d'interruption sont décrits dans le tableau des descripteurs d'interruption.
Les interruptions
Des exceptions
Classifications d'exception
Résumé: les interruptions incrémentent le pointeur d'instruction, les erreurs ne le font pas et abandonnent «explosent».
Prendre au piège
Faute
Exemple: une erreur de page est souvent récupérable. Une partie de l'espace d'adressage d'une application peut avoir été permutée sur le disque à partir de la RAM. L'application déclenche une erreur de page lorsqu'elle tente d'accéder à la mémoire qui a été permutée. Le noyau peut extraire cette mémoire du disque vers la mémoire vive et remettre le contrôle à l'application. L'application continuera là où elle s'était arrêtée (à l'instruction défaillante qui accédait à la mémoire échangée), mais cette fois, l'accès à la mémoire devrait réussir sans faute.
Avorter
Cas de bord
Les interruptions invoquées par le logiciel (déclenchées par l'instruction INT) se comportent comme des interruptions. L'instruction se termine avant que le processeur n'enregistre son état et passe au gestionnaire d'interruption.
la source
D'une manière générale, des termes comme des exceptions, des défauts, Abandonne, pièges et Interruptions tout cela veut dire la même chose et sont appelés « Interruptions ».
Venir à la différence entre Trap et Interrupt:
Tandis que
la source
Un piège est un type spécial d' interruption qui est communément appelé interruption logicielle . Une interruption est un terme plus général qui couvre à la fois les interruptions matérielles (interruptions des périphériques matériels) et les interruptions logicielles (les interruptions de logiciels, telles que les interruptions ).
la source
Un trap est appelé par le code comme des programmes et utilisé par exemple pour appeler des routines OS (c'est-à-dire normalement synchrones). Une interruption est appelée par des événements (souvent du matériel, comme la carte réseau ayant reçu des données, ou le minuteur du processeur), et - comme son nom l'indique - interrompt le flux de contrôle normal, car le processeur doit passer à la routine du pilote pour gérer l'événement.
la source
Une interruption est un changement de flux généré par le matériel dans le système. Un gestionnaire d'interruption est appelé pour traiter la cause de l'interruption; le contrôle est ensuite renvoyé au contexte et à l'instruction interrompus. Un piège est une interruption générée par le logiciel. Une interruption peut être utilisée pour signaler l'achèvement d'une E / S afin d'éviter la nécessité d'interroger le périphérique. Un trap peut être utilisé pour appeler les routines du système d'exploitation ou pour détecter les erreurs arithmétiques.
la source
Je pense que les pièges sont causés par l'exécution de l'instruction actuelle et sont donc appelés événements synchrones. où les interruptions sont causées par une instruction indépendante qui s'exécute dans le processeur et qui sont liées à des événements externes et sont donc appelées asynchrones.
la source
Les interruptions sont des interruptions matérielles, tandis que les interruptions sont des interruptions appelées par logiciel. Les occurrences d'interruptions matérielles désactivent généralement les autres interruptions matérielles, mais ce n'est pas le cas pour les interruptions. Si vous devez interdire les interruptions matérielles jusqu'à ce qu'une interruption soit servie, vous devez effacer explicitement l'indicateur d'interruption. Et généralement, l'indicateur d'interruption sur l'ordinateur affecte les interruptions (matérielles) par opposition aux interruptions. Cela signifie que la suppression de cet indicateur n'empêchera pas les interruptions. Contrairement aux interruptions, les interruptions doivent conserver l'état précédent du processeur.
la source
Un trap est une interruption logicielle.Si vous écrivez un programme dans lequel vous déclarez une variable ayant une valeur de division par zéro, il est alors traité comme un trap.Lorsque vous exécutez ce programme, il lancera la même erreur en même temps.L'appel système est un version spéciale de trap dans laquelle un programme demande à os son service requis. En cas d'interruption (un mot général pour les interruptions matérielles) comme une erreur d'E / S, le processeur est interrompu à un moment aléatoire et bien sûr ce n'est pas la faute de nos programmeurs, c'est le matériel qui les fait apparaître.
la source