Interruption Descriptors Table

Interruption Descriptors Table

Interrupt Descriptor Table

L'IDT ou Interrupt Descriptor Table, est une table système d'interruptions sur les architectures x86.

Il s'agit d'un tableau stocké dans la mémoire vive (à l'adresse 0x0 par défaut) qui associe chaque vecteur d'interruption à un descripteur appelé porte.

Chaque descripteur correspond à une interruption. Les 32 premières sont réservées aux exceptions (erreurs) générées par le microprocesseur. Les interruption matérielles peuvent aussi être utilisées avec ce tableau. Toutes sont librement appelables par les programmes utilisateurs par le biais de l'instruction int[1] d'assembleur. Au total, il y a un maximum de 256 interruptions.

Sommaire

Descripteur et classification

Format d'un descripteur

Chaque descripteur a la structure suivante : (des bits les plus hauts vers les bits les plus bas)

  • 16 bits : les 16 bits les plus faibles de l'offset de la fonction (gestionnaire d'interruption ou d'exception ) associée à l'interruption
  • 16 bits : le sélecteur du segment de code
  • 1 bit : Drapeau IF ( sur "1" pour activer le masquage des interruptions masquables)
  • 2 bits : DPL, de 0 à 3 inclus, qui indique le niveau de privilèges requis pour appeler l'interruption (0 est le plus élevé)
  • 1 bit : doit être mis à 0
  • 4 bits : le type d'interruption ( Porte d'interruption, de trappe ou de tâche)
  • 8 bits : tout à 0
  • 16 bits : les 16 bits les plus hauts de l'offset de la fonction associée à l'interruption

Classification et terminologie Intel

Intel classe les différents types de porte comme cela :

  • Les portes de type interruption dont le drapeau IF est toujours baissé (désactivation des interruptions)
  • Les portes de type trappe semblables aux portes de type interruption mais le drapeau IF est levé
  • Les portes de type tâche contiennent le sélecteur du TSS du processus courant (très peu utilisées)

Classification et terminologie Linux

Linux classe différemment les différents types de portes (descripteur) qu'il intègre dans l'IDT :

  • Les portes d'interruption sont des portes intel de type interruption dont le DPL est égal à 0 (les programmes utilisateurs ne peuvent appeler ces vecteurs par l'interruption "int").
  • La porte d'interruption systèmes est une porte intel de type interruption dont le DPL est égal à 3. Il n'en existe qu'une seule : l'instruction "int3".
  • Les portes de trappe sont des portes de trappe intel dont le DPL est égal à 0.
  • Les portes systèmes sont des portes de trappe intel dont le DPL est égal à 3. Elles concernent les exceptions "into", "bound" et "int0x80" (appel système)
  • La porte de tâche est une porte de type tâche intel dont le DPL est égal à 0. Elle concerne uniquement l'exception "erreur double"

Initialisation de l'IDT

Pour créer une IDT, vous devez enregistrer dans la mémoire les différentes entrées, puis créer un descripteur de 48 bits (16 bits forts pour la taille en octets de l'IDT et 32 bits faibles pour l'offset en mémoire où est stockée la première entrée) et le passer au microprocesseur par l'intermédiaire de l'instruction d'assembleur lidt

IDT sur d'autres architectures de processeur

L'IDT de x86 et celle de AMD64 sont très semblables, le but étant d'assurer une bonne compatibilité de chaque noyau de système d'exploitation par rapport au processeur utilisé (Intel ou AMD).

Par contre, sur d'autres architectures de processeur, l'équivalent de l'IDT a un format bien différent.

Notes

Ce document provient de « Interrupt Descriptor Table ».

Wikimedia Foundation. 2010.

Contenu soumis à la licence CC-BY-SA. Source : Article Interruption Descriptors Table de Wikipédia en français (auteurs)

Игры ⚽ Нужно сделать НИР?

Regardez d'autres dictionnaires:

  • Wikipedia:Featured article candidates — Here, we determine which articles are to be featured articles (FAs). FAs exemplify Wikipedia s very best work and satisfy the FA criteria. All editors are welcome to review nominations; please see the review FAQ. Before nominating an article,… …   Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”