Entre interruption et interruption
Interruptions / Traps
Lors de l'exécution normale d'un programme, des événements peuvent provoquer l'arrêt temporaire du processeur. Les événements comme ceux-ci sont appelés interruptions. Les interruptions peuvent être causées par des pannes logicielles ou matérielles. Les interruptions matérielles sont appelées (simplement) Interruptions, tandis que les interruptions logicielles sont appelées Exceptions ou Traps. Une exception est une interruption logicielle générée automatiquement, tandis qu'une interruption est une interruption invoquée par le logiciel initiée par le programmeur. Une fois qu'une interruption (logiciel ou matériel) est déclenchée, le contrôle est transféré à un sous-programme spécial appelé ISR (Interrupt Service Routine) qui peut gérer les conditions soulevées par l'interruption.
Qu'est-ce qu'une interruption?
Le terme Interruption est généralement réservé aux interruptions matérielles . Il s'agit d'interruptions de contrôle de programme provoquées par des événements matériels externes. Ici, des moyens externes externes à la CPU . Les interruptions matérielles proviennent généralement de différentes sources telles que puce de minuterie, périphériques (claviers, souris, etc.), ports E / S (série, parallèle, etc.), disques durs, horloge CMOS, cartes d'extension carte, carte vidéo, etc.). Cela signifie que les interruptions matérielles ne se produisent presque jamais en raison d'un événement lié au programme d'exécution. Par exemple, un événement comme une pression sur le clavier par l'utilisateur ou un temporisateur interne de temporisation peut déclencher ce type d'interruption et peut informer le processeur qu'un certain périphérique a besoin d'attention. Dans une situation comme celle-ci, le CPU arrête tout ce qu'il faisait (c'est-à-dire interrompt le programme en cours), fournit le service requis par l'appareil et revient au programme normal. Lorsque des interruptions matérielles se produisent et que la CPU démarre l'ISR, d'autres interruptions matérielles sont désactivées (par exemple, sur des machines 80 × 86). Si vous avez besoin d'autres interruptions matérielles pendant l'exécution de l'ISR, vous devez le faire explicitement en effaçant l'indicateur d'interruption (avec l'instruction sti). Dans les machines 80 × 86, l'effacement du drapeau d'interruption n'affecte que les interruptions matérielles.
Qu'est-ce qu'un piège?
Un piège peut être identifié comme un transfert de contrôle, initié par le programmeur. Le terme Trap est utilisé de manière interchangeable avec le terme Exception (qui est une interruption logicielle automatique). Mais certains peuvent prétendre qu'un piège est simplement un appel de sous-programme spécial. Ils entrent donc dans la catégorie des interruptions invoquées par le logiciel. Par exemple, dans les machines 80 × 86, un programmeur peut utiliser l'instruction int pour lancer un piège. Comme un piège est toujours inconditionnel, le contrôle sera toujours transféré au sous-programme associé au piège. L'instruction exacte, qui appelle la routine de gestion du piège, est facilement identifiable car une instruction explicite est utilisée pour spécifier un piège.
Quelle est la différence entre Interrupt et Trap?
Les interruptions sont des interruptions matérielles, alors que les interruptions sont des interruptions invoquées par le logiciel. Les occurrences d'interruptions matérielles désactivent généralement d'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'un piège soit servi, vous devez explicitement désactiver le drapeau d'interruption. Et généralement, le drapeau d'interruption sur l'ordinateur affecte les interruptions (matérielles) par opposition aux pièges. Cela signifie que l'effacement de ce drapeau n'empêchera pas les pièges. Contrairement aux pièges, les interruptions doivent préserver l'état précédent du CPU.