Tabla de descriptores de interrupciones

El IDT (para English Interrupt Descriptor Table ) es una tabla de datos ubicada en la memoria de una computadora de arquitectura x86 y que permite al microprocesador administrar las interrupciones .

Se trata de una matriz que comprende un máximo de 256 descriptores de 8  bytes  cada uno , es decir, un descriptor por interrupción. Su ubicación de memoria se almacena dentro del registro IDTR del procesador. Cuando se activa una interrupción, el procesador lee la fila correspondiente en el IDT y realiza el procesamiento asociado con los valores leídos en esta fila.

El registro IDTR es un registro de 48 bits, los 16 bits inferiores representan el tamaño en bytes del IDT, mientras que los 32 bits superiores representan la dirección física del IDT en la memoria. Este registro solo es accesible a través de dos instrucciones de montaje: lidt (carga una ubicación de memoria en el IDTR) y sidt (coloca el contenido del IDTR en una ubicación de memoria).

Los primeros 32 interrupciones ( n o  0 a 31) están reservados para las excepciones (errores) generados por el microprocesador . El 6 de  interrupción de hardware están generalmente asociados con interrupciones n o  32 a 47. Sin embargo, todas las interrupciones son de libre exigible por los usuarios a través de programas de instrucción, siempre que el sistema operativo lo permite.

Descriptor y clasificación

Formato de un descriptor

Cada descriptor tiene la siguiente estructura: (desde los bits más altos hasta los bits más bajos)

Terminología y clasificación de Intel

Existen diferentes tipos de puerta:

Clasificación y terminología de Linux

Linux clasifica los diferentes tipos de puertas (descriptor) que incluye en el IDT de manera diferente:

Ubicación de la memoria IDT

Cuando el BIOS cede el control al sistema operativo , no existe IDT. De hecho, el IVT utilizado por el microprocesador en modo real no tiene el mismo formato que el IDT y, por lo tanto, no se puede utilizar en modo protegido . Sin embargo, esto no es un problema porque el indicador de interrupción (IF) se establece en 0 , lo que evita que se active cualquier interrupción enmascarable mientras sea necesario.

El sistema operativo se encarga de crear las distintas entradas del IDT y luego proporcionar su ubicación y longitud al microprocesador a través de las instrucciones del ensamblador de lidt . Esta ubicación generalmente se encuentra cerca del código del kernel . Sin embargo, debe tenerse en cuenta que el microprocesador aplica la paginación al leer el IDT, lo que permite al sistema operativo (aunque ninguno de los principales sistemas operativos lo impone) crear un IDT diferente para cada programa en ejecución.

IDT en otras arquitecturas de procesador

Hay equivalentes a IDT en muchas otras arquitecturas de procesador, pero tienen un formato muy diferente.

Notas y referencias

Apéndices

Artículos relacionados