Interrupciones

El sistema operativo ocupa una posición intermedia entre los programas de aplicación y el hardware. No se limita a utilizar el hardware a petición de las aplicaciones ya que hay situaciones en las que es el hardware es el que necesita que se ejecute código del sistema operativo. En este caso el hardware debe poder llamar al sistema y existen dos condiciones:
Algún dispositivo de E/S necesita atención.

Se ha producido una situación de error al intentar ejecutar una instrucción del programa (normalmente de la aplicación).

En ambos casos, la acción realizada no está ordenada por el programa de aplicación, es decir, no figura en el programa.
Según los dos casos anteriores tenemos las interrupciones y las excepciones:

Interrupción: señal que envía un dispositivo de E/S a la unidad central de proceso (CPU) para indicar que la operación de la que se estaba ocupando, ya ha terminado.

Excepción: una situación de error detectada por la unidad central de proceso (CPU) mientras ejecutaba una instrucción, que requiere tratamiento por parte del sistema operativo.

A nivel físico, una interrupción se solicita activando una señal que llega a la unidad de control. El generador de la interrupción, debe de activar la señal cuando necesite que se le atienda (que se ejecute un programa que lo atienda). Ante la solicitud de una interrupción, siempre y cuando este habilitado este tipo de interrupción, la unidad de control realiza un ciclo de aceptación de interrupción. Este ciclo se lleva a cabo en cuanto termina la ejecución de la instrucción máquina que se esté ejecutando y consiste en las siguientes operaciones:

Salva algunos registros del procesador (estado y contador de programa). Eleva el nivel de ejecución del procesador, pasándolo al núcleo.

Carga un nuevo valor en el contador de programa, por lo que pasa a ejecutar otro programa.

Las interrupciones se pueden generar por las siguientes causas:

Excepciones de programa. Hay determinadas causas que hacen que un programa presente un problema en su ejecución, por lo que deberá generarse una interrupción, para que el sistema operativo trate esta causa. Por ejemplo: el desbordamiento en las operaciones aritméticas, la división por cero, el intento de ejecutar una operación con código de operación incorrecto o de direccionar una posición de memoria prohibida.

Interrupciones de reloj

Interrupciones de entrada/salida (E/S).Los controladores de de los dispositivos de E/S necesitan interrumpir para indicar que han terminado una operación o conjunto de ellas.

Excepciones del hardware. La detección de un error de paridad en la memoria o un corte de corriente se avisan mediante la correspondiente interrupción.

Instrucciones de TRAP. Estas instrucciones permiten que un programa genere una interrupción.

El término reloj se aplica a las computadoras con tres significados diferentes y que están relacionas entre sí:

Señal que gobierna el ritmo de ejecución de las instrucciones de máquina.

Generador de interrupciones periódicas Contador de fecha y hora.

El oscilador que gobierna las fases de ejecución de las instrucciones máquina se denomina reloj. Cuando se dice que un microprocesador es de 600 MHz, lo que se está especificando es que el oscilador que gobierna el ritmo de su funcionamiento interno produce una onda cuadrada con una frecuencia de 600 MHz.

La señal producida por el oscilador se divide mediante un divisor de frecuencia para generar una interrupción cada cierto intervalo de tiempo. Estas interrupciones que se producen constantemente se denominan interrupciones de reloj o tics, dando lugar al segundo concepto de reloj.

El objetivo de estas interrupciones es hacer que el sistema operativo entre a ejecutar de forma sistemática cada cierto intervalo de tiempo y evita que un programa monopolice el uso de la computadora y puede hacer que entren a ejecutarse programas en determinados instantes de tiempo. El tercer significado de reloj se aplica a un contador que permite conocer la fecha y la hora.

Este contador se va incrementando con cada interrupción de reloj de forma que, tomando como referencia un determinado instante, se puede calcular la fecha y hora en que estamos.

Fuente: Apuntes de la materia Sistemas Operativos Multiusuario de la FCA – UNAM