...

Instituto Politécnico Nacional

Escuela Superior de Cómputo

Recurso Didáctico Digital

Unidad 1: Estructura de un sistema operativo
...
1.3.1 Interrupciones

Las interrupciones ocurren cuando el control se transfiere a la rutina de servicio, generalmente a través del vector de interrupción, que contiene las direcciones de todas las rutinas de servicio. Estas interrupciones entrantes son deshabilitadas mientras se procesa otra interrupción para evitar una pérdida de interrupción.

Por lo tanto, cuando un dispositivo de entrada y salida (E/S) termina el trabajo que se le asignó, genera una interrupción que es gestionada por un manejador de interrupciones. Este controlador despierta al proceso que solicita la entrada y salida y gestiona la interrupción, por lo que al salir (en caso de ser sincrónica) utiliza un vector de interrupción, que contiene las direcciones de todas las rutinas de servicio, para liberar los recursos ocupados por las operaciones de entrada y salida.

Un trap es una interrupción del software, ocurre debido a un error o un requerimiento del usuario.

Administración de interrupciones

El sistema operativo almacena los registros y el contador de programa para mantener el estado de la CPU e identificar qué tipo de interrupción ha ocurrido que puede ser:

  • Polling

    Las interrupciones surgen de la necesidad de que los dispositivos y periféricos envíen información al procesador de la computadora. Por lo tanto, la técnica de consultas establece que el procesador visualice los dispositivos y periféricos a intervalos regulares para verificar que las comunicaciones estén funcionando correctamente.

    Debido a que consume tiempo y recursos para estar revisando el funcionamiento correcto de las interrupciones, esta técnica de consultas presenta varios problemas.

  • Sistema de interrupción vectorizado

    Las interrupciones vectorizadas generan dos líneas de interrupción: una de petición y otra de reconocimiento por el dispositivo que produce la interrupción y que utiliza a todos los periféricos porque solicitan servicios por la misma línea. Cuando la CPU reconoce la interrupción, el periférico que ha interrumpido se identifica mediante la inserción del vector de interrupción (dirección) o una codificación de este (nivel) en el bus de datos, y alguno de ellos resuelve la resolución de prioridades, como se muestra en la siguiente imágen.

  • Fig 13. Sistema de interrupción vectorizado

  • Sistema que incluye una línea de petición de interrupción y una línea de reconocimiento encadenada

    También conocido como Daisy-chain. Son módulos de entrada y salida que se conectan al procesador con una línea de petición de interrupción (INT) en colector abierto y una línea de reconocimiento de interrupción.

    La llamada INTA, es una señal que emite el procesador para notificar al módulo de entrada y salida que está atendiendo la solicitud. Esta señal INTA se propaga a través de los módulos, lo que permite al sistema de conexión reducir el tiempo necesario para gestionar las prioridades si varios módulos de entrada han solicitado atención simultáneamente. Además, identifica qué periférico requiere atención sin necesidad de utilizar un programa de sondeo que acceda a todos los módulos de entrada y salida.

    Para implementar este sistema, se requieren cambios en el hardware. Estos cambios implican que el procesador necesita un punto de conexión que produzca una señal de reconocimiento de interrupción (INTA), y que los módulos de entrada y salida deben tener un circuito lógico para que se pueda permitir que los demás módulos se conecten para generar su vector de registro y almacenar el valor del registro, transmitiendo la señal INTA de este módulo al siguiente dispositivo de entrada y salida, por lo que el vector de interrupción y el procesador envía a través del bus del sistema. Cada registro tiene su propio valor porque el procesador lo utiliza como identificador del periférico.

    Como es único, la gestión de interrupciones es análoga porque el módulo de entrada y salida puede ajustar el ciclo de reconocimiento de interrupciones para gestionar sus prioridades. Por lo tanto, si el módulo necesita hacer una petición de entrada y salida, como obtener un identificador para tener en cuenta las interrupciones del sistema, tendrá que visualizar cada tipo de interrupción para su propio grupo de código el cual ayudará a decidir qué tipo de acción se debe tomar.

    Segmentos de código separados determinan que tipo de acción deberían llevarse a cabo para cada tipo de interrupción.