Vecteur d'interruption

Un vecteur d'interruption est moyen technique pour attacher une routine d'interruption à une requête d'interruption.

Il est réalisé par le stockage en mémoire de l'adresse mémoire[1], de la routine d'interruption (interrupt sub-routine, ISR) qui serait exécutée si la requête d'interruption (IRQ) associée à une interruption matérielle ou logicielle est acceptée. Cette adresse est stockée en mémoire dans un tableau dont toutes les lignes sont des adresses vers les routines d'interruption associées à chaque interruption [2]. Chaque ligne de cette "table des vecteurs d'interruptions" est associée à un identifiant d'interruption (n°INT ou IRQ, par exemple fourni par un gestionnaire d'interruption).

L'utilisation d'un stockage de cette table en mémoire vive modifiable permet une indirection du processus permettant d'accéder au code de la routine: le lien identifiant - routine n'est pas direct et figé. D'un point de vue sémantique le "vecteur" est l'intermédiaire qui permet de rediriger la requête vers la routine.

Exemple

Dans le système Linux, chaque interruption, qu’elle soit matérielle ou logicielle, est identifiée par un entier de 8 bits, dont la valeur varie de 0 à 255[3] :

  1. De 0 à 31 correspondent aux interruptions « non masquables » et aux exceptions.
  2. De 32 à 47 sont affectées aux interruptions « masquables » levées par les périphériques (IRQ).
  3. De 48 à 255 peuvent être utilisées pour identifier d’autres types de trappes que celles admises par le processeur (qui correspondent aux valeurs de 0 à 31).

Ce numéro permet d’adresser une table comportant 256 entrées, appelée « table des vecteurs d’interruptions » (idt_table), placée en mémoire centrale lors du démarrage de l’OS.

Notes et références

  1. Certains systèmes stockent dans le vecteur l'adresse de la routine, mais aussi des codes instruction pour optimiser le fonctionnement de leur pipeline.
  2. http://www.developpez.net/forums/d66214/autres-langages/assembleur/vecteur-dinterruption/
  3. http://desvigne.org/cours/NSY-103/NSY-103--notes_de_cours1.0b.doc
  • Portail de l’informatique
Cet article est issu de Wikipedia. Le texte est sous licence Creative Commons - Attribution - Partage dans les Mêmes. Des conditions supplémentaires peuvent s'appliquer aux fichiers multimédias.