Discussion:Interrupt Descriptor Table

Le contenu de la page n’est pas pris en charge dans d’autres langues.
Une page de Wikipédia, l'encyclopédie libre.
Autres discussions [liste]
  • Admissibilité
  • Neutralité
  • Droit d'auteur
  • Article de qualité
  • Bon article
  • Lumière sur
  • À faire
  • Archives
  • Commons
  Il me semble qu'une erreur s'est glissée dans l'article ...

Il est en effet spécifié :

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

   * 16 bits : les 16 bits les plus hauts 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 faibles de l'offset de la fonction associée à l'interruption

Si l'on se réfère au Tanenbaum (Operating System : design and implementation, 3rd Edition), on pourra trouver dans le fichier kernel/protect.c la structure suivante :

08317	struct gatedesc_s {
08318	  u16_t offset_low;
08319	  u16_t selector;
08320	  u8_t pad;                     /* |000|XXXXX| ig & trpg, |XXXXXXXX| task g */
08321	  u8_t p_dpl_type;              /* |P|DL|0|TYPE| */
08322	  u16_t offset_high;
08323	};
08357	PRIVATE struct gatedesc_s idt[IDT_SIZE];        /* zero-init so none present */

Les numéros de lignes font référence au fichier "listing.pdf" (page 98) présentant les principaux fichiers contenant le code du noyaux du système d'exploitation Minix 3.

Le document peut être trouvé ici : http://www.minix3.org/doc/AppendixB.html

Les 16 premiers bits du descripteur sont nommés "offset_low" alors que l'article de wikipedia parle des "16 bits les plus hauts de l'offset de la fonction".

Quelqu'un aurait-il un avis pertinent sur la question ?

Minix 3 étant protégé par la license BSD, il m'est donc permis d'effectuer ce copier/coller, sauf erreur inintentionnelle de ma part.