Interrupt Descriptor Table

Interrupt Descriptor Table

L'IDT ou Interrupt Descriptor Table est un tableau de données situé dans la mémoire d'un ordinateur d'architecture x86, et permettant au microprocesseur de gérer les interruptions.

Il s'agit d'un tableau comportant au maximum 256 descripteurs de 8 octets chacun, soit un descripteur par interruption. Son emplacement en mémoire est enregistré à l'intérieur du registre IDTR du processeur. Lors du déclenchement d'une interruption, le processeur lit la ligne correspondante dans l'IDT et effectue un traitement différent en fonction des valeurs lues sur cette ligne.

Les 32 premières interruptions (numéro 0 à 31) sont réservées aux exceptions (erreurs) générées par le microprocesseur. Les 16 interruption matérielles sont généralement associées aux interruptions numéro 32 à 47. Néanmoins toutes les interruptions sont librement appelables par les programmes utilisateurs par le biais de l'instruction int[1] à condition que le système d'exploitation le lui autorise.

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 : réservé pour un futur usage (doit être à 0)
  • 16 bits : les 16 bits les plus hauts de l'offset de la fonction associée à l'interruption

Classification et terminologie Intel

Il existe différents types de porte :

  • 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"

Emplacement mémoire de l'IDT

Lorsque le BIOS s'arrête et passe la main au système d'exploitation, aucune IDT n'existe. En effet, l'IVT utilisée par le microprocesseur en mode réel ne possède pas le même format que l'IDT et n'est donc pas utilisable en mode protégé. Cela n'est cependant pas un problème car le drapeau d'interruption (IF) est à 0, empêchant le déclenchement de toute interruption masquable tant que cela est nécessaire.

Le système d'exploitation s'occupe alors de créer les différentes entrées de l'IDT puis de fournir son emplacement et sa longueur au microprocesseur par l'intermédiaire de l'instruction d'assembleur lidt. Cet emplacement est généralement situé près du code du noyau. Il est néanmoins à noter que le microprocesseur applique la pagination lors de la lecture de l'IDT, ce qui permet à l'O/S (bien que ce ne soit appliqué par aucun des principaux systèmes d'exploitations) de créer une IDT différente pour chaque programme en cours d'exécution.

IDT sur d'autres architectures de processeurs

Il existe des équivalents à l'IDT sur de nombreuses autres architectures de processeur, mais ceux-ci ont un format bien différent.

Notes


Wikimedia Foundation. 2010.

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

Игры ⚽ Поможем написать курсовую

Regardez d'autres dictionnaires:

  • Interrupt descriptor table — The Interrupt Descriptor Table (IDT) is a data structure used by the x86 architecture to implement an interrupt vector table. The IDT is used by the processor to determine the correct response to interrupts and exceptions.The details in the… …   Wikipedia

  • Global Descriptor Table — The Global Descriptor Table or GDT is a data structure used by Intel x86 family processors starting with the 80286 in order to define the characteristics of the various memory areas used during program execution, for example the base address, the …   Wikipedia

  • 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… …   Wikipédia en Français

  • BIOS interrupt call — BIOS Interrupt Calls are a facility that DOS programs, and some other software such as boot loaders, use to invoke the BIOS s facilities. Some operating systems also use the BIOS to probe and initialise hardware resources during their early… …   Wikipedia

  • IDT — • Interrupt Descriptor Table • Interdigital Transducer ( > IEEE Standard Dictionary ) • Isodensitracer ( > IEEE Standard Dictionary ) • Investigation Definition Team ( > NASA NGST Acronym List ) …   Acronyms

  • IDTRC — Interrupt Descriptor Table Register Cache …   Acronyms

  • IDTRC — Interrupt Descriptor Table Register Cache …   Acronyms von A bis Z

  • General protection fault — This article is about the x86 exception. For the webcomic, see General Protection Fault (webcomic). A general protection fault (GPF) in the Intel x86 and AMD x86 64 architectures, and other unrelated architectures, is a fault (a type of… …   Wikipedia

  • Context switch — For other uses, see Switch (disambiguation). A context switch is the computing process of storing and restoring the state (context) of a CPU so that execution can be resumed from the same point at a later time. This enables multiple processes to… …   Wikipedia

  • Task State Segment — The Task State Segment is a special x86 structure which holds information about a task. It is used by the operating system kernel for task management. Specifically, the following information is stored in the TSS:* Processor register state * I/O… …   Wikipedia

Share the article and excerpts

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