Usos de los interrupciones

Se utilizan las interrupciones generalmente para dos motivos :
  • Para permitir una comunicacion no bloqueada con lso perificos externos.
  • Para conmutar las tares dentro de un planificador

Interrupciones hardware

Son interrupciones que se producen como resultado de, normalmente, una operación de E/S. No son producidas por ninguna instrucción sino que son señales que producen los dispositivos para indicarle al procesador que necesitan ser 'atendidos'. Las interrupciones hardware son interesantes en cuanto a que permiten mejorar la productividad del procesador ya que este último puede ordenar una operación de E/S y en lugar de tener que esperar a que el dispositivo acabe realizando una espera activa, es decir, sin hacer ningún trabajo útil, se puede dedicar a atender a otro proceso o aplicación y cuando el dispositivo este de nuevo disponible será el encargado de notificarle al procesador mediante la línea de interrupción ya que está preparado para continuar/terminar la operación de E/S.
  • Entradas/salidas:
Cuando un microprocesador verifica un periferico (disco duro , puerto de communicacion ..), occuren algunos detalles antes que los datos pueden ser obtenidos o bien transmitidos. La solucion mas simple es bloquear todo hasta recibir un dato o bien hasta que se efectua una transmicion (espera ocupado , ou polling) , pero esta solucion bloque todos los programas en ejecucion , y eso no puede funcionar bajo un sistema multitarea . En los sistemas modernos , se prefiere un funcionamiento con interrupciones :
El periferico señala mediante una interrupcion que ha acabado la transmicion de un dato , y una rutina trata esta interrupcion. Para que el periferico sea mas rapido , se combina con el acceso directo a memmoria(DMA), los bloques son leidos o bien escritos en memoria sin el intervencion de la CPU.

Trampas

Es un tipo de interrupción sincrónica típicamente causada por una condición de error, por ej. una división por 0 o un acceso inválido a memoria en un proceso de usuario. Normalmente genera un cambio de contexto a modo supervisor para que el sistema operativo atienda el error. De manera que podemos ver como las excepciones son un mecanismo de protección que permite garantizar la integridad de los datos tanto en el espacio de usuario como en el espacio kernel. El SO cuando detecta una excepción intenta solucionarla pero en caso de no poder simplemente notificará la condición de error a la aplicación y abortará la misma.

Interrupciones software o excepciones

En este apartado se consideran las llamadas al sistema operativo mediante una instrucción, normalmente de Entrada/Salida.
Una interrupción por software, se prevé en qué momento de la ejecución de un programa sucederá. En general actúa de la siguiente manera:
. Un programa que se venía ejecutando luego de su instrucción I5, llama al Sistema Operativo, por ejemplo para leer un archivo de disco.
. A tal efecto, luego de I5 existe en el programa, la instrucción de código de máquina CD21, simbolizada INT 21 en Assembler, que realiza el requerimiento del paso 1. Puesto que no puede seguir le ejecución de la instrucción I6 y siguientes del programa hasta que no se haya leído el disco y esté en memoria principal dicho archivo, virtualmente el programa se ha interrumpido, siendo, además, que luego de INT 21, las instrucciones que se ejecutarán no serán del programa, sino del Sistema Operativo.
. La ejecución de INT 21 permite hallar la subrutina del Sistema Operativo.
. Se ejecuta la subrutina del Sistema Operativo que prepara la lectura del disco.
. Luego de ejecutarse la subrutina del Sistema Operativo, y una vez que se haya leído el disco y verificado que la lectura es correcta, el Sistema Operativo ordenará reanudar la ejecución del programa autointerrumpido en espera.
. La ejecución del programa se reanuda.