lunes, 29 de junio de 2009
Interrupciones
Una petición de interrupción IRQ ("Interrupt Request") es una señal que se origina en un dispositivo hardware (por ejemplo, un periférico), para indicar al procesador que algo requiere su atención inmediata; se solicita al procesador que suspenda lo que está haciendo para atender la petición. Hemos señalado ( H2) que las interrupciones juegan un papel fundamental, en especial en la operación de dispositivos de entrada/salida, ya que les permite enviar estas peticiones a
Interrupciones y excepciones:
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 el que necesita que se ejecute código del sistema operativo. En tales situaciones el hardware debe poder llamar al sistema, pudiendo deberse estas llamadas a dos condiciones:
Algún dispositivo de entrada/salida 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 entrada/salida a
Excepción: una situación de error detectada por
Importancia de las interrupciones
El mecanismo de tratamiento de las interrupciones permite al sistema operativo utilizar
Motivación:
La primera técnica que se empleó fue que el propio procesador se encargara de sondear (polling) el dispositivo cada cierto tiempo para averiguar si tenía pendiente alguna comunicación para él. Este método presentaba el inconveniente de ser muy ineficiente, ya que el procesador constantemente consumía tiempo en realizar todas las instrucciones de sondeo. El mecanismo de interrupciones fue la solución que permitió al procesador desentenderse de esta problemática, y delegar en el dispositivo la responsabilidad de comunicarse con el procesador cuando lo necesitaba. El procesador, en este caso, no sondea a ningún dispositivo, sino que queda a la espera de que estos le avisen (le "interrumpan") cuando tengan algo que comunicarle (ya sea un evento, una transferencia de información, una condición de error, etc.).
Funcionamiento del mecanismo de interrupciones:
Cada dispositivo que desea comunicarse con el procesador por interrupciones debe tener asignada una línea única capaz de avisar a éste de que le requiere para una operación. Esta línea es la llamada IRQ ("Interrupt ReQuest", petición de interrupción). Las IRQ son líneas que llegan al controlador de interrupciones, un componente hardware dedicado a la gestión de las interrupciones, y que puede estar integrado en el procesador principal o ser un circuito separado conectado al procesador principal. El controlador de interrupciones debe ser capaz de habilitar o inhibir líneas de interrupción (operación llamada comúnmente enmascarar por la utilización de una máscara), y establecer prioridades entre las distintas interrupciones habilitadas. Cuando varias líneas de petición de interrupción se activan a la vez, el controlador de interrupciones utilizará estas prioridades para escoger la interrupción sobre la que informará al procesador principal. Sin embargo hay interrupciones que no se pueden enmascarar o deshabilitar, las conocidas como interrupciones no enmascarables o NMI.
Un procesador principal (sin controlador de interrupciones integrado) suele tener una única línea de interrupción llamada habitualmente INT. Esta línea es activada por el controlador de interrupciones cuando tiene una interrupción que servir. Al activarse esta línea, el procesador consulta los registros del controlador de interrupciones para averiguar qué IRQ es la que ha de atender. A partir del número de IRQ busca en el vector de interrupciones qué rutina debe llamar para atender una petición del dispositivo asociado a dicha IRQ.
Las rutinas de interrupción generalmente toman un pequeño tiempo de ejecución y la mayoría no pueden ser interrumpidas cuando se están atendiendo, porque al entrar en ellas se almacena el estado de los registros en una pila y si se interrumpen muchas veces, la pila se puede desbordar.
Pasos para el procesamiento de una IRQ:
1) Terminar la ejecución de la instrucción máquina en curso.
2) Salva el valor de contador de programa, PC, en la pila, de manera que en
3)
4) Una vez que la rutina de la interrupción termina, el procesador restaura el estado que había guardado en la pila en el paso 2 y retorna al programa que se estaba usando anteriormente.
Mecanismo de interrupciones en un PC:
Un ordenador PC típico dispone en su placa base de un controlador de interrupciones 8259 de Intel o de un circuito integrado análogo. Este dispositivo electrónico dispone de hasta 16 líneas IRQ, numeradas desde el 00 hasta el 15. En las nuevas placas base este circuito está integrado junto con el resto del chipset y permite hasta 24 interrupciones.
Interrupciones por software:
También se denomina interrupción (o interrupción por software) a 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 Asembler, 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 auto interrumpido en espera.
La ejecución del programa se reanuda.
Interrupciones por excepción (Trap):
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.
Suscribirse a Comentarios [Atom]
Publicar un comentario