jueves, 17 de mayo de 2012

Interrupciones

Una interrupción es el rompimiento en la secuencia de un programa para ejecutar un programa especial llamando una rutina de servicio cuya característica principal es que al finalizar regresa al punto donde se interrumpió el programa.


Las interrupciones son un metodo del que disponen los dispositivos e incluso los procesos para hacer notar a la CPU la aparición de alguna circunstancia que requiera su intervención. De este modo, los dispositivos pueden provocar que la CPU deje por el momento la tarea que estaba realizando y atienda la interrupción. 


Una vez atendida, seguira con su labor anterior. Cuando no existían interrupciones, era el procesador el que tenía que estar continuamente comprobando el estado del dispositivo cuando lo necesitaba.


Existen dos tipos de interrupciones

  • Interrupciones por software:

Este tipo de interrupciones se programan por el usuario, éste decide el tiempo en el que se van a ejecutar.


Las interrupciones de software son eventos síncronos que son provocadas por el programa en ejecución usando una función especial del lenguaje, esto puede ocurrir al llamar a la instrucción INT, al realizar una división por 0 o realizar una petición de una interrupción externa.

Tienen como objetivo el que la CPU ejecute algún tipo de función. Al terminar de ejecutarse esta función, se seguirá ejecutando el programa que provocó la interrupción.

Este tipo de interrupciones es la forma más importante que tendrán los programas de ejecutar funciones especiales del DOS (Disk Operating System) o del BIOS (Basic Input Output System). Estas funciones tienen un número de interrupción software asociada.

Cuando un programa lanza una interrupción de este tipo, la CPU ejecuta su función de tratamiento asociada. Se guarda la máscara de interrupciones, se modifica la máscara a fin de habilitar selectivamente las interrupciones que permitiremos durante la ejecución de la rutina, se habilitan globalmente las interrupciones seteando el flag IF en 1 y se ejecuta la rutina de atención de la interrupción solicitada. 

  • Interrupciones por hardware:



Son las que se provocan por medio de los dispositivos externos al procesador. No son programadas. Entre las interrupciones de hardware existen dos tipos de interrupciones:

Interrupciones por hardware enmascarables: Son las que el usuario decide si quiere o no ser interrumpido.

Interrupciones por hardware no enmascarables (NMI): Son las que siempre interrumpen al programa. Estas interrupciones llegan a través de una línea directamente al procesador y cuando ésta se activa, el CPU provoca una interrupción por software.

Las interrupciones tienen distintas prioridades predefinidas que indican que interrupción tiene mayor prioridad y no puede se interrupida por una de menor prioridad, así el Registro de Interrupciones Activas (ISR) indica el número de la interrupción en concreto que se está realizando.

Si llega otra interrupción de hardware con menor o igual prioridad no se ejecutará, pues se asume que aún está en ejecución la anterior, mientras el ISR esté con su número. 
Los IRQ se encuentran numerados, y cada dispositivo hardware se encuentra asociado a un número IRQ. Por ejemplo, el reloj (en IRQ 0) tiene una prioridad más alta que el teclado (IRQ 1).


Bibliografía


1 comentario: