tipos software sistema significado rutinas quién primeras por niveles las interrupciones interrupcion establece ensamblador enmascaramiento enmascarables enmascarable ejemplos control computadoras cinco arquitectura c unix

software - ¿Qué sucede en una rutina de servicio de interrupción?



tipos de interrupciones (4)

¿Puede alguien explicarme qué sucede dentro de una rutina de servicio de interrupción (aunque depende de una rutina específica, basta con una explicación general)? Esto siempre fue una caja negra para mí.


Hay una buena página de wikipedia sobre los manejadores de interrupciones .

"Un controlador de interrupción, también conocido como una rutina de servicio de interrupción (ISR), es una subrutina de devolución de llamada en un sistema operativo o controlador de dispositivo cuya ejecución se activa con la recepción de una interrupción. Los controladores de interrupción tienen una multitud de funciones, que varían en función de la razón por la que se generó la interrupción y la velocidad a la que el controlador de interrupciones completa su tarea ".

Básicamente, cuando una pieza de hardware (una interrupción de hardware) o alguna tarea del sistema operativo (interrupción de software) necesita ejecutarse, se activa una interrupción. Si estas interrupciones no están enmascaradas (ignoradas), el sistema operativo detendrá lo que está haciendo y llamará a un código especial para manejar este nuevo evento.

Un buen ejemplo es la lectura de un disco duro. La unidad es lenta y no desea que su sistema operativo espere a que vuelvan los datos; quieres que el sistema operativo vaya y haga otras cosas Así que configura el sistema de modo que cuando el disco tiene los datos solicitados, se produce una interrupción. En la rutina de servicio de interrupción para el disco, la CPU tomará los datos que ahora están listos y los devolverá al solicitante.

Los ISR a menudo tienen que suceder rápidamente, ya que el hardware puede tener un búfer limitado, que se sobrescribirá con los nuevos datos si ahora se extraen lo suficientemente rápido. También es importante que su ISR se complete rápidamente, mientras que mientras la CPU atiende a un ISR, otras interrupciones se enmascararán, lo que significa que si la CPU no puede acceder a ellas lo suficientemente rápido, se pueden perder datos.


Mientras el 8086 está ejecutando un programa, una interrupción rompe la secuencia normal de ejecución de la instrucción, desvíe su ejecución a algún otro programa llamado Rutina de servicio de interrupción (ISR). Después de ejecutar, el control devuelve la espalda al programa principal.


Se utiliza una interrupción para provocar una detención temporal en la ejecución del programa. El microprocesador responde a la rutina de servicio de interrupción, que es un programa corto o subrutina que le indica al microprocesador cómo manejar la interrupción.


Ejemplo mínimo de 16 bits.

La mejor manera de entender es hacer algunos ejemplos mínimos usted mismo.

Primero, aprenda cómo crear un sistema operativo de cargador de arranque mínimo y ejecútelo en QEMU y en el hardware real, como he explicado aquí: https://.com/a/32483545/895245

Ahora puedes correr en modo real de 16 bits:

movw $handler0, 0x00 mov %cs, 0x02 movw $handler1, 0x04 mov %cs, 0x06 int $0 int $1 hlt handler0: /* Do 0. */ iret handler1: /* Do 1. */ iret

Esto haría en orden:

  • Do 0.
  • Do 1.
  • hlt : dejar de ejecutar

Observe cómo el procesador busca el primer controlador en la dirección 0 y el segundo en 4 : es una tabla de controladores llamada IVT , y cada entrada tiene 4 bytes.

Ejemplo mínimo que hace algún IO para hacer visibles los manejadores.

Modo protegido

Los sistemas operativos modernos se ejecutan en el llamado modo protegido.

El manejo tiene más opciones en este modo, por lo que es más complejo, pero el espíritu es el mismo.

Ejemplo minimo

Ver también

Pregunta relacionada: ¿Qué significa "int 0x80" en el código de ensamblaje?