Entrada/salida mediante interrupciones

Usando la técnica de E/S por interrupciones la sincronización entre el periférico y el procesador es llevada a cabo por el módulo de E/S, de forma que se descarga al procesador de esta responsabilidad.

Para utilizar esta técnica de E/S en un computador, es necesario considerar tanto aspectos del software como del hardware.

Como parte del hardware, es necesario que el computador disponga de una línea especial que tiene que formar parte del conjunto de líneas de control del bus del sistema y que denominamos línea de petición de interrupción (INT). El módulo de E/S avisa al procesador mediante esta línea e indica que está preparado para hacer la transferencia. La señal INT la activa el módulo de E/S y la recibe el procesador. Es una señal activa a la baja. El procesador debe tener un punto de conexión de entrada por donde llegarán las interrupciones y el módulo de E/S debe tener un punto de conexión de salida por donde generará las interrupciones. Para hacer una operación de E/S utilizando esta técnica se siguen los mismos pasos que en la E/S programada: se programa la operación de E/S, se realiza la transferencia de datos y se finaliza la operación de E/S. La diferencia principal la tenemos durante la transferencia de datos, en la que en la fase de sincronización debemos hacer la gestión de las interrupciones y eso también afecta en cierta medida al intercambio de datos, como veremos más adelante.

Durante la fase de sincronización, una vez hecha la programación de la operación de E/S, el procesador ejecuta otro programa (según la política de gestión de procesos del sistema operativo) de manera que el procesador estará ocupado haciendo trabajo productivo hasta que el módulo de E/S esté preparado y active la señal de petición de interrupción (INT).

De entrada, el procesador no sabe en qué momento se producirá esta petición; por lo tanto, ha de comprobar periódicamente si el módulo de E/S pide la atención del procesador, sin que ello afecte a la dedicación que tiene. Esta comprobación el procesador la hace dentro del ciclo de ejecución de cada instrucción. Es una operación muy rápida que incluso se puede encabalgar con el comienzo de la lectura de la instrucción siguiente para que no afecte al rendimiento del procesador. Los procesadores que han de gestionar interrupciones deben tener en el ciclo de ejecución de instrucción una fase de comprobación de interrupciones.

En el momento en el que el procesador reconoce que ha llegado una petición de interrupción, empieza un ciclo de reconocimiento de interrupción para detener la ejecución del programa actual y transferir el control a la rutina de servicio de la interrupción (RSI), rutina que accede al módulo de E/S correspondiente para llevar a cabo la transferencia de datos y, una vez se acabe la ejecución de la RSI, continuar la ejecución del programa que habíamos detenido haciendo el retorno de interrupción.