5. Traitement des interruptions
Le traitement d'une interruption se déroule généralement de la manière suivante :
- Réception par l'unité centrale d'une demande d'interruption interne ou externe
- Acceptation (ou rejet) de cette demande par l'unité centrale
- Fin du traitement de l'instruction en cours
- Sauvegarde de l'état du système, c'est-à-dire du contenu des divers registres (compteur ordinal, registre
d'état...), de manière à pouvoir reprendre l'exécution du programme interrompu en l'état où il se trouvait au
moment de l'interruption,
- Modification du contenu du compteur ordinal qui prend comme nouvelle valeur l'adresse de la première
instruction du sous-programme associé à cette interruption.
Le sous-programme d'interruption une fois terminé provoque la restauration de l'état dans lequel se trouvait le
système au moment de la prise en compte de l'interruption.
6. Application aux microprocesseurs INTEL I86
Les microprocesseurs de la gamme Intel i86 peuvent recevoir jusqu'à 256 interruptions différentes référencées
IRQn (Interruption ReQuest, par exemple IRQ1), repérées par un vecteur appelé type de l'interruption.
6.1. Les interruptions externes matérielles
Le microprocesseur possède deux broches susceptibles de recevoir les interruptions externes matérielles NMI et
INTR.
- NMI est une broche destinée aux interruptions externes non masquables, utilisable pour faire face à un
événement "catastrophique" (défaillance d'alimentation, sortir le microprocesseur de l’exécution d’une boucle
infinie).
- INTR est une entrée d'interruption externe, masquable, destinée à recevoir le signal généré par un contrôleur
d'interruption, lui-même connecté aux périphériques qui peuvent avoir besoin d'interrompre le processeur. Quand
INTR est actif, l'état d'un des indicateurs du registre d'état conditionne la réponse du processeur. L'interruption ne
sera toutefois prise en compte qu'à la fin de l'exécution complète de l'instruction en cours. Une interruption sur la
broche NMI a une priorité plus haute que INTR.
Quand un périphérique (carte réseau, carte graphique, clavier...) souhaite communiquer avec le processeur, il lui
envoie une demande d'interruption. Quand cette demande arrive, le processeur examine le niveau de priorité de
l'interruption et éventuellement termine et sauvegarde le travail en cours ainsi qu'un certain nombre d'informations
relatives à l'état du système. Les interruptions sont donc repérées par un numéro de 0 à 15 dans l'ordre des
priorités décroissantes. L'horloge système a ainsi l'IRQ de valeur 0 car c'est elle qui est prioritaire.
La gestion des IRQ est parfois assez délicate et, selon la machine ou le système d'exploitation, il n'est pas
toujours facile de trouver une valeur d'interruption disponible pour une carte, par exemple la carte réseau. Pour
une telle carte, on peut alors tenter d'utiliser l'IRQ 5 qui est en principe réservée au port physique LPT2
(imprimante parallèle en principe...) ou l'IRQ 7 qui correspond normalement au port physique LPT1 (imprimante
parallèle en principe...) car ces interruptions sont, en principe, partageables.
Pour connaître les IRQ utilisables ou les adresses d'E/S disponibles, il faut souvent passer par un utilitaire ( MSD
(MicroSoft Diagnostic) ou PCTools, Norton Utilities, QEMM Manifest, Checkit... ou le Panneau de Configuration
Système sous Windows 95 ou sous Windows NT).
Quel est l’ordre des priorités des interruptions ? 0,1, 8, 9, 10, 11, 12, 13, 14, 15, 3, 4, 5, 6, 7
Tableau des affectations habituelles des IRQ
Assignation habituellement constatée
Carte écran EGA, VGA, contrôleur d’interruptions,
Scanner, carte son, …
Port série COM2, COM4, modem-fax, cédérom, …
Port série, COM1, COM3, modem-fax, souris-bus, cédérom, …
Port parallèle LPT2, souris-bus, carte réseau, cédérom, carte son,
Contrôleur
d’interruption