Différence entre l'interruption et le piège

Différence entre l'interruption et le piège

Interruption vs trap

Dans n'importe quel ordinateur, lors de son exécution normale d'un programme, il pourrait y avoir des événements qui peuvent entraîner l'arrêt temporairement du CPU. Des événements comme ceux-ci sont appelés interruptions. Les interruptions peuvent être causées par des défauts logiciels ou matériels. Les interruptions matérielles sont appelées (simplement) interruptions, tandis que les interruptions logicielles sont appelées exceptions ou pièges. Une exception est une interruption logicielle générée automatiquement, tandis qu'un piège est une interruption de logiciels initiée par le programmeur. Une fois qu'une interruption (logiciel ou matériel) est augmentée, le contrôle est transféré vers un sous-programme spécial appelé ISR (routine de service d'interruption) qui peut gérer les conditions qui sont soulevées par l'interruption.

Qu'est-ce qu'une interruption?

Le terme interruption est généralement réservé aux interruptions matérielles. Ce sont des interruptions de contrôle du programme causées par des événements matériels externes. Ici, des moyens externes externes au CPU. Les interruptions matérielles proviennent généralement de nombreuses sources différentes telles que la puce de minuterie, les appareils périphériques (claviers, souris, etc.), Ports d'E / S (série, parallèle, etc.), entraînements de disque, horloge CMOS, cartes d'extension (carte son, 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 touche appuyant sur le clavier par l'utilisateur, ou une synchronisation interne de chronomètre peut soulever ce type d'interruption et peut informer le processeur qu'un certain appareil a besoin. Dans une situation comme celle-là, le processeur arrêtera tout ce qu'il faisait (je.e. Utilise le programme actuel), fournit le service requis par l'appareil et reviendra au programme normal. Lorsque des interruptions matérielles se produisent et que le CPU démarre l'ISR, d'autres interruptions matérielles sont désactivées (e.g. Dans 80 × 86 machines). Si vous avez besoin d'autres interruptions matérielles pour se produire pendant l'exécution de l'ISR, vous devez le faire explicitement en effacistant le drapeau d'interruption (avec sti instruction). Dans les machines 80 × 86, l'effacement de l'indicateur d'interruption n'affectera que les interruptions matérielles.

Qu'est-ce qu'un piège?

Un piège peut être identifié comme un transfert de contrôle, qui est initié par le programmeur. Le terme piège est utilisé de manière interchangeable avec le terme exception (qui est une interruption logicielle automatiquement qui se produit). Mais certains peuvent affirmer qu'un piège est simplement un appel spécial sous-programme. Ils tombent donc dans la catégorie des interruptions de logiciels. Par exemple, dans des machines 80 × 86, un programmeur peut utiliser le int instruction pour initier un piège. Parce qu'un piège est toujours inconditionnel, le contrôle sera toujours transféré au sous-programme associé au piège. L'instruction exacte, qui invoque la routine de gestion du piège, est facilement identifiée car une instruction explicite est utilisée pour spécifier un piège.

Quelle est la différence entre l'interruption et le piège?

Les interruptions sont des interruptions matérielles, tandis que les pièges sont des interruptions de logiciels. Les occurrences des interruptions matérielles désactivent généralement les autres interruptions matérielles, mais ce n'est pas vrai pour les pièges. Si vous devez interdire les interruptions matérielles jusqu'à ce qu'un piège soit servi, vous devez effacer explicitement le drapeau d'interruption. Et généralement l'interrupteur sur l'ordinateur affecte (matériel) les interruptions 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 devraient préserver l'état précédent du CPU.