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:
 
  1.  Interrupciones por hardware enmascarables: Aquellas en las que el usuario decide si quiere o no ser interrumpido.

  2.  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