Vecteur d'interruption

Sur les autres projets Wikimedia :

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 modifier

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.

Articles connexes modifier

Notes et références modifier

  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. « Vecteur d'interruption - Assembleur », sur developpez.net (consulté le ).
  3. http://desvigne.org/cours/NSY-103/NSY-103--notes_de_cours1.0b.doc