Chapitre :
Cette page en format PDF

Les interruptions

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

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.

Interruptions matérielles

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.)

Interruptions logicielles

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.