lunes, 10 de diciembre de 2012

8.1.3. Niveles de interrupción (IRQ´S)


IRQ: Interrupt Request (Pedido de Interrupción)

En los PCs, un IRQ es una señal de un dispositivo de hardware (por ej. el teclado o tarjeta de sonido) indicando que el dispositivo necesita que la CPU haga algo. La señal del pedido de interrupción va a través de las líneas IRQ a un controlador que asigna prioridades a los pedidos IRQ y se los entrega a la CPU. Ya que el controlador de IRQ espera señales de solo un dispositivo por línea IRQ, si tienen más que un dispositivo por línea terminan con un conflicto de IRQ que puede congelar su máquina. Esto es por qué asignar IRQs a dispositivos nuevos al instalarlos es tan importante - y por qué puede ser tan frustrante cuando no se hace bien.
Recurso que emplean los componentes para comunicarle al sistema operativo que están trabajando y desobedecer la acción que se les propone. es lo que hace, por ejemplo, una placa de video que, está realizando una tarea cuando recibe una orden incompatible en su momento.
Son 16 IRQ’S que van del 0 al 15 los q mencionemos a continuación

Líneas INT/IRQ independientes en la CPU 

En este caso el propio CPU tiene múltiples entradas INT (numeradas, por ej: INT0, INT1,  INT2, etc) y la idea es conectar un controlador de  E/S a cada una de ellas. La identificación es entonces por hardware y directa: el controlador que está pidiendo la interrupción es el que está conectado a la entrada INTn donde se detecta la solicitud. En este caso hay una dirección de la rutina de servicio a la interrupción por cada línea de pedido disponible. 
En algunos casos, como en el ejemplo de la arquitectura SPARC, las entradas de solicitud de interrupción están codificadas. Esto quiere decir que el SPARC en vez de tener 16 entradas de solicitud independientes, tiene 4 entradas en las cuáles se presenta el código binario del pedido de interrupción. Esto exige la inclusión de un hardware de codificación externo a la CPU
Existe  diverso  hardware  para  implementar  un  controlador  de  interrupciones,  los computadores  IBM  PC  o  compatibles,  utilizan  el  controlador  de  interrupciones programable de Intel 82C59A-2 Cmos o sus chips compatibles.  Este controlador ha sido utilizado desde los comienzos del IBM PC, y es bien conocido el espacio de direccionamiento de sus  registros en la arquitectura ISA.  Incluso  en chips más modernos se ha mantenido la misma  localización.



Interrupciones Hardware. 

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. Interrupciones Hardware 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 Interrupciones Hardware
73H  11  I/o general
74H  12  I/o general
75H  13  Coprocesador
76H  14  Disco duro
77H  15  I/o general

                                                                                                                               Edgar Cesar Hernández

No hay comentarios:

Publicar un comentario