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
Edgar Cesar Hernández
No hay comentarios:
Publicar un comentario