Interruption vs exception
Sur n'importe quel ordinateur, lors de l'exécution normale d'un programme, il peut arriver que des événements entraînent l'arrêt momentané de la CPU. Des événements comme celui-ci s'appellent des interruptions. Les interruptions peuvent être causées par des défauts logiciels ou matériels. Les interruptions matérielles sont appelées (simplement) des interruptions, alors que les interruptions logicielles sont appelées Exceptions. Une fois qu'une interruption (logicielle ou matérielle) est levée, le contrôle est transféré à un sous-programme spécial appelé ISR (Interrupt Service Routine) capable de gérer les conditions générées par l'interruption..
Qu'est-ce que l'interruption?
Le terme «interruption» est généralement réservé aux interruptions matérielles. Ce sont des interruptions de contrôle de programme causées par des événements matériels externes. Ici, des moyens externes à l'extérieur de la CPU. Les interruptions matérielles proviennent généralement d’un grand nombre de sources différentes telles que la minuterie, les périphériques (claviers, souris, etc.), les ports d’E / S (série, parallèle, etc.), les lecteurs de disque, l’horloge CMOS, les cartes d’extension (carte son, carte son). carte, etc). Cela signifie que les interruptions matérielles ne se produisent presque jamais en raison d'un événement lié au programme en cours d'exécution. Par exemple, un événement tel qu'une pression sur une touche du clavier par l'utilisateur, ou une temporisation matérielle interne peut déclencher ce type d'interruption et informer le CPU qu'un certain périphérique requiert une certaine attention. Dans une situation comme celle-là, la CPU arrêtera ce qu’elle a fait (c’est-à-dire met en pause le programme en cours), fournira le service requis par le périphérique et reviendra 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, dans 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, effacer l'indicateur d'interruption n'affectera que les interruptions matérielles.
Qu'est-ce que les exceptions?
L'exception est une interruption logicielle, qui peut être identifiée comme une routine de gestionnaire spéciale. L'exception peut être identifiée comme un piège se produisant automatiquement (un piège peut être identifié comme un transfert de contrôle initié par le programmeur). En règle générale, aucune instruction spécifique n'est associée aux exceptions (les interruptions sont générées à l'aide d'une instruction spécifique). Ainsi, une exception se produit en raison d'une condition «exceptionnelle» qui survient pendant l'exécution du programme. Par exemple, une division par zéro, l’exécution d’une erreur de code opération ou d’une erreur liée à la mémoire peut provoquer des exceptions. Chaque fois qu'une exception est déclenchée, la CPU suspend temporairement le programme qu'elle était en train d'exécuter et lance l'ISR. ISR contiendra quoi faire avec l'exception. Cela pourrait corriger le problème ou, s’il n’était pas possible, arrêter le programme en imprimant un message d’erreur approprié. Bien qu'une instruction spécifique ne provoque pas d'exception, une exception sera toujours provoquée par une instruction. Par exemple, l'erreur de division par zéro ne peut se produire que pendant l'exécution de l'instruction de division.
Quelle est la différence entre une interruption et une exception?
Les interruptions sont des interruptions matérielles, alors que les exceptions sont des interruptions logicielles. 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 exceptions. Si vous devez interdire les interruptions matérielles jusqu'à ce qu'une exception soit servie, vous devez désactiver explicitement l'indicateur d'interruption. Et généralement, l'indicateur d'interruption sur l'ordinateur affecte les interruptions (matérielles) par opposition aux exceptions. Cela signifie que la suppression de ce drapeau n'empêchera pas les exceptions.