Interrupciones
Enviado por cristian76 • 13 de Noviembre de 2012 • 3.314 Palabras (14 Páginas) • 731 Visitas
INTERRUPCIONES
Una interrupción es una señal recibida por el procesador de un computador, indicando que debe "suspender" el curso de ejecución actual y pasar a ejecutar código específico para tratar esta situación.
Una interrupción es una suspensión temporal de la ejecución de un proceso, para pasar a ejecutar una subrutina de servicio de interrupción, la cual, por lo general, no forma parte del programa (generalmente perteneciente al sistema operativo, o al BIOS). Luego de finalizada dicha subrutina, se reanuda la ejecución del programa.
Las interrupciones surgen de las necesidades que tienen los dispositivos periféricos de enviar información al procesador principal de un sistema de computación. La primera técnica que se empleó fue que el propio procesador se encargara de sondear (polling) los dispositivos 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 necesitara. 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.).
Principio de funcionamiento de interrupciones
Cada dispositivo que desea comunicarse con el procesador por medio de interrupciones debe tener asignada una línea única capaz de avisar al CPU 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 de 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. También puede darse el caso de que una rutina de tratamiento de interrupción sea interrumpida para realizar otra rutina de tratamiento de una interrupción de mayor prioridad a la que se estaba ejecutando. Sin embargo hay interrupciones que no se pueden enmascarar o deshabilitar, las conocidas como interrupciones no enmascarables o NMI.
Un procesador principal que no tenga un 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 cual IRQ hay que atender. A partir del número del IRQ busca en la tabla de vectores de interrupción la dirección de la rutina que 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.
Pasos para el procesamiento de una IRQ:
1. Terminar la ejecución de la instrucción de máquina en curso.
2. Salva el valor de contador de programa, IP, en la pila, de manera que en la CPU, al terminar el proceso, pueda seguir ejecutando el programa a partir de la última instrucción.
3. La CPU salta a la dirección donde está almacenada la rutina de servicio de interrupción (Interrupt Service Routine (ISR)) y ejecuta esa rutina que tiene como objetivo atender al dispositivo que generó la interrupción.
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.
Líneas de petición de interrupción
El bus de control dispone de líneas específicas para el sistema de interrupciones.
En el IBM PC y XT existían 8 líneas de petición de interrupción manejadas por el controlador de interrupciones Intel 8259. Estas líneas están numeradas del 0 al 7, las dos primeras estaban asignadas al timer tick del temporizador Intel 8253, y al teclado. Solo quedaban 6 líneas para otros dispositivos, que aparecían como tales en el bus de control (IRQ2 - IRQ7).
A partir del modelo AT se añadieron otras 8 líneas, numeradas del 8 al 15, mediante un segundo controlador de interrupciones (PIC), aunque la tecnología empleada exigió colgarlo de la línea IRQ2 del primero, de forma que esta línea se dedica a atender las interrupciones del segundo controlador a través de la línea 9 de este último, y la línea 8 se dedicaba al reloj de tiempo real, un dispositivo que no existía en los modelos XT.
Aunque internamente se manejan 16 líneas, no todas tienen contacto en los zócalos del bus externo (son las marcadas con asterisco en la tabla que sigue). La razón de esta ausencia en los zócalos de conexión es que son de asignación fija, y solo son usadas por ciertos dispositivos instalados en la propia motherboard. En concreto la línea NMI está asignada al mecanismo de control de paridad de la memoria, la línea 0 está asignada al cronómetro del sistema y la línea 1 al chip que controla el teclado (dispositivos que pueden requerir atención urgente por parte del procesador). Es costumbre denominar IRQx a las que tienen prolongación en el bus.
Teóricamente las restantes líneas podrían ser asignadas a cualquier nuevo dispositivo, pero en la práctica algunas están reservadas a dispositivos estándar. Por ejemplo, IRQ3 está casi siempre asignado al puerto serie COM2 y el IRQ4 al COM1; IRQ6 al controlador estándar de disquetes y IRQ7 al puerto de impresora LPT1. La tabla 1 muestra las asignaciones clásicas para el XT y el AT
En sistemas más modernos utilizan la arquitectura APIC de Intel con 24 líneas y 8 extra para enrutar las interrupciones PCI.
Nombre Int (hex) XT: Descripción AT: Descripción
NMI --- Paridad* Paridad*
0 08 Temporizador* Temporizador*
1 09 Teclado* Teclado*
IRQ2 0A Reservado Interrupciones 8 a 15 (PIC#2)
IRQ3 0B Puertos serie COM2/COM4 Puerto serie COM2/COM4
IRQ4 0C Puertos serie COM1/COM3 Puertos serie
...