Interrupciones de Hardware.
19.02.2013 21:16
Interrupciones de Hardware.
Definición:
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.
Interrupciones por hardware:
Son aquellas que son provocadas por dispositivos externos al procesador su característica principal es que no son programadas, esto es, pueden ocurrir en cualquier momento en el programa. Existen dos clases de interrupciones de este tipo:
-
Interrupciones por hardware enmascarables: Aquellas en las que el usuario decide si quiere o no ser interrumpido.
-
Interrupciones por hardware no enmascarables: Aquellas que siempre interrumpen al programa.
Las interrupciones hardware son producidas por varias fuentes, por ejemplo del teclado, cada vez que se presiona una tecla y se suelta se genera una interrupción. Otras interrupciones son originadas por el reloj, la impresora, el puerto serie, el disco, etcétera. Una interrupción de tipo hardware es una señal eléctrica producida por un dispositivo físico del ordenador. Esta señal informa a la CPU que el dispositivo requiere su atención. La CPU parará el proceso que está ejecutando para atender la interrupción. Cuando la interrupción termina, la CPU reanuda la ejecución en donde fue interrumpida, pudiendo ejecutar el proceso parado originalmente o bien otro proceso.
Existe un hardware específico, para que los dispositivos puedan interrumpir lo que está haciendo la CPU. La propia CPU, tiene entradas específicas para ser interrumpida INT, cuando se activa esta entrada INT, la CPU para lo que está haciendo y activa la salida para reconocer la interrupción INTA, y comienza a ejecutar el código especial que maneja la interrupción. Algunas CPU´s disponen de un conjunto especial de registros, que solo son utilizados en el modo de ejecución de interrupciones, lo que facilita el trabajo de tratar las interrupciones.
La placa base del computador utiliza un controlador para decodificar las interrupciones que no son mas que señales eléctricas producidas por los dispositivos, coloca en el bus de datos información de que dispositivo interrumpió y activa la entrada INT de interrupción de la CPU. Este chip controlador protege a la CPU y la aísla de los dispositivos que interrumpen, además de proporcionar flexibilidad al diseño del sistema. El controlador de interrupciones tiene un registrode estado para permitir o inhibir las interrupciones en el sistema.
En la figura, se muestra dos controladores de 8 entradas, cada uno de ellos tiene una máscara y un registro de estatus de interrupción, un PIC1 y un PIC2. Los registros de máscara están en los direccionamientos 0x21 y 0xA1 y los registros del estatus están en 0x20 y 0xA0.
Al escribir en un bit determinado del registro de máscara permite una interrupción, escribiendo un cero se invalida esta interrupción. Así pues, escribir un uno en la entrada 3 permite la interrupción 3, escribiendo cero se invalida. Los registros de máscara de interrupción son solamente de escritura, por lo tanto Linux debe guardar una copia local de lo que se ha escrito en los registros de máscara.
Cuando se produce una señal de interrupción, el código de manejo de la interrupción lee dos registros de estatus de interrupción (ISRs). Trata el ISR en 0x20 como los ocho bits inferiores, y el ISR en 0xA0 como los ocho bits superiores. Así pues, una interrupción en el dígito binario 1 del ISR en 0xA0 será tratada como la interrupción 9 del sistema. El segundo bit de PIC1 no es utilizado ya que sirve para encadenar las interrupciones del controlador PIC2, por lo tanto cualquier interrupción del controlador PIC2 se pasa al bit 2 del controlador PIC1.
El controlador de interrupción programable 8259 (PIC en la placa base) maneja todas las interrupciones hardware. Estos controladores toman las señales de los dispositivos y los convierten a las interrupciones específicas en el procesador.
Los IRQ o interrupt request (Pedido de Interrupción), son las notificaciones de las interrupciones enviadas desde los dispositivos hardware a la CPU, en respuesta a la IRQ, la CPU salta a una dirección – una rutina de servicio de interrupción (ISR), comúnmente llamada Interrupt handler (Manejador de interrupciones) - Que se encuentra como una función dentro del software manejador de ese dispositivo formando parte del núcleo. Así, una función manejadora de interrupciones es una función del núcleo que ejecuta el servicio de esa interrupción.
Los IRQ se encuentran numerados, y cada dispositivo hardware se encuentra asociado a un número IRQ. En la arquitectura IBM PC y compatibles, por ejemplo, IRQ 0 se encuentra asociado al reloj o temporizador, el cual genera 100 interrupciones por segundo, disquete el 6, los discos IDE la 14 y 15. Se puede compartir un IRQ entre varios dispositivos.
La siguiente figura, muestra las interrupciones hardware y su correspondiente puerto en el Controlador Programable de Interrupciones (PIC). No se deben confundir los números IRQ entradas al controlador con los números de la interrupción que son las entradas en la tabla de interrupciones. Los PIC se pueden programar para generar diversos números de interrupción para cada IRQ. Los Controladores también controlan la prioridad de las interrupciones. Por ejemplo, el reloj (en IRQ 0) tiene una prioridad más alta que el teclado (IRQ 1). Si el procesador está atendiendo una interrupción del reloj, el PIC no generará una interrupción para el teclado hasta que ISR del reloj reajusta el PIC. Por otra parte, el reloj puede interrumpir ISR del teclado. El PICs se puede programar para utilizar una variedad de esquemas de la prioridad, pero no se suele hacer esto. Se debe de tener en cuenta que el IRQ 2 del primer PIC, valida o invalida las entradas del Segundo PIC (8 a 15). Algunas interrupciones son fijadas por convenio en la configuración del PC, así es que los manejadores de los dispositivos solicitan simplemente la interrupción cuando se inicializan. Por ejemplo esto es lo que lo hace el manejador de disquete, solicita siempre la IRQ 6.
Interrupción IRQ Descripción
00H - división por cero o desbordamiento
02H - NMI (interrupción no-enmascarable)
04H - desbordamiento (EN)
08H 0 Temporizador del sistema
09H 1 Teclado
0AH 2 Interrupción del segundo PIC
0BH 3 COM2
0CH 4 COM1
0DH 5 LPT2
0EH 6 disquete
0FH 7 LPT1
70H 8 Reloj
71H 9 I/o general
72H 10 I/o general
73H 11 I/o general
74H 12 I/o general
75H 13 Coprocesador
76H 14 Disco duro
77H 15 I/o general
———
Volver