Nous sommes régulièrement confrontés dans la vie
courante aux interruptions. Certaines peuvent parfois être ignorées
(le téléphone qui sonne), d'autres non ( un pneu qui crève).
En informatique comme dans la vie courante, l'interruption est généralement
prise en charge aussi vite que possible.
Une alternative au système des interruptions est le polling.
Chaque élément est testé périodiquement pour
vérifier s'il ne requière pas un service particulier.
Cette méthode n'est pas toujours réalisable. Imaginez
que votre téléphone soit dépourvu de sonnerie, vous
devrez régulièrement le décrocher pour voir s'il n'y a personne en ligne.
On appelle interruption l'événement qui fait qu'un processeur
arrête momentanément l'exécution d'une routine pour
en exécuter au plus vite une autre.
Les interruptions améliorent l'efficacité des systèmes
car elles permettent aux éléments externes de ne requérir
l'attention du processeur que lorsque c'est nécessaire. S'il n'y
avait pas d'interruption, le processeur devrait périodiquement
tester chaque élément périphérique pour vérifier
qu'aucun ne réclame ses services. Bon nombre d'entrées/sorties
du PC génèrent de telles interruptions pour signaler au
processeur qu'il doit prendre en charge les données reçues
en entrée ou pour réclamer des données à transmettre
vers une sortie.
Le vecteur d'interruption est une table qui contient les adresses des routines d'interruptions. Les interruptions sont numérotées et ces numéros ( allant de 0 à 255 dans un PC) servent d'index pour rechercher dans le vecteur d'interruption l'adresse de la routine à exécuter.
Les interruptions que nous avons envisagées jusqu'ici sont des interruptions matérielles " hardware interrupts " ; elles sont générées par des composants électroniques qui agissent directement sur une ligne du bus de contrôle : la ligne IRQ " Interrupt Request ". Cette ligne provient en fait d'un composant programmable : le contrôleur d'interruptions qui rassemble les signaux d'interruptions de divers éléments périphériques. Le contrôleur d'interruptions après avoir répercuté sur la ligne IRQ le signal provenant de l'une de ses entrées doit donner ensuite au processeur un numéro qui identifie l'origine du signal. C'est ce numéro qui servira à retrouver l'adresse de la routine adéquate dans le vecteur d'interruption.
Exemple :
L'unique contrôleur d'interruptions des PC/XT recevait huit signaux numérotés de 0 à 7. On ajoutait 8 à ce numéro pour connaître l'indice qui permet de retrouver dans le vecteur d'interruption l'adresse de la routine d'interruptions à appeler.
0 Horloge ( une interruption toutes les 55 ms)
1 Clavier
2 Réservé
3 Port série COM2 (ou COM4)
4 Port série COM1 (ou COM3)
5 Réservé
6 Lecteur de disques souples
7 le port parallèle LPT 1
Les contrôleurs d'interruptions peuvent être mis en cascade pour accroître le nombre de signaux d'interruptions. Cela a été nécessaire pour permettre des signaux d'interruptions supplémentaires en provenance des cartes d'extension ( audio, réseau, cartes SCSI etc.)
Les routines d'interruptions peuvent aussi être appelées
par des instructions spéciales du processeur. On parle alors d'interruptions
logicielles. Il s'agit d'instructions spéciales qui provoquent
l'équivalent d'une interruption hardware. Elles passent
au processeur un numéro qui lui permet de retrouver dans le vecteur
d'interruption la routine à appeler.
Cette technique est utilisée pour appeler les routines de service
du BIOS ou celles du système d'exploitation. On parle alors
d'appels système.
Le système d'exploitation, lorsqu'il s'installe dans
la mémoire vive inscrit dans le vecteur d'interruption les adresses
des routines que les applications peuvent appeler. Ainsi, même si
les routines d'interruptions changent de place d'un démarrage
à l'autre, ou d'une version à l'autre, il y
a toujours moyen de les retrouver grâce aux adresses référencées
dans le vecteur d'interruption.