En una computadora , una solicitud de interrupción (o IRQ ) es una señal de hardware enviada al procesador que detiene temporalmente un programa en ejecución y permite que se ejecute en su lugar un programa especial, un controlador de interrupciones . Las interrupciones de hardware se utilizan para controlar eventos como la recepción de datos de un módem o una tarjeta de red , pulsaciones de teclas o movimientos del mouse.
Las líneas de interrupción suelen identificarse mediante un índice con el formato IRQ seguido de un número. Por ejemplo, en la familia de controladores de interrupción programables (PIC) Intel 8259 hay ocho entradas de interrupción comúnmente denominadas IRQ0 a IRQ7 . En los sistemas informáticos basados en x86 que utilizan dos de estos PIC , el conjunto combinado de líneas se denomina IRQ0 a IRQ15 . Técnicamente, estas líneas se denominan IR0 a IR7 , y las líneas en el bus ISA al que estaban conectadas históricamente se denominan IRQ0 a IRQ15 (aunque históricamente, a medida que aumentaba la cantidad de dispositivos de hardware, la cantidad total posible de interrupciones se incrementaba mediante solicitudes en cascada, al hacer que uno de los números de IRQ se conectara en cascada a otro conjunto o conjuntos de IRQ numerados, manejados por uno o más controladores posteriores).
Los sistemas x86 más nuevos integran un controlador de interrupciones programable avanzado (APIC) que cumple con la arquitectura APIC de Intel. Estos APIC admiten una interfaz de programación para hasta 255 líneas IRQ de hardware físico por APIC, y un sistema típico implementa compatibilidad con solo alrededor de 24 líneas de hardware en total.
Durante los primeros años de la informática personal, la gestión de IRQ era una preocupación frecuente para los usuarios. Con la introducción de los dispositivos plug and play , esto se ha aliviado mediante la configuración automática. [1]
Al trabajar con hardware de computadoras personales, instalando y desinstalando dispositivos, el sistema depende de solicitudes de interrupción. Existen configuraciones predeterminadas que se configuran en el BIOS del sistema y que el sistema operativo reconoce. Estas configuraciones predeterminadas pueden ser modificadas por usuarios avanzados. La tecnología plug and play moderna no solo ha reducido la necesidad de preocuparse por estas configuraciones, sino que también ha eliminado prácticamente la configuración manual.
Las primeras PC que utilizaban procesadores Intel 8086/8088 solo tenían un PIC y, por lo tanto, estaban limitadas a ocho interrupciones. Esto se amplió a dos PIC con la introducción de las PC basadas en 286.
Por lo general, en los sistemas que utilizan el PIC Intel 8259 , se utilizan 16 IRQ. Las IRQ 0 a 7 son administradas por un PIC Intel 8259, y las IRQ 8 a 15 por un segundo PIC Intel 8259. El primer PIC, el maestro, es el único que envía señales directamente a la CPU. El segundo PIC, el esclavo, envía señales al maestro en su línea IRQ 2, y el maestro pasa la señal a la CPU. Por lo tanto, solo hay 15 líneas de solicitud de interrupción disponibles para el hardware.
En los sistemas APIC con IOAPIC , normalmente hay 24 IRQ disponibles, y las 8 IRQ adicionales se utilizan para enrutar interrupciones PCI, evitando conflictos entre interrupciones PCI configuradas dinámicamente e interrupciones ISA configuradas estáticamente. En los primeros sistemas APIC con solo 16 IRQ o con solo controladores de interrupción Intel 8259, las líneas de interrupción PCI se enrutaban a las 16 IRQ utilizando una tabla PIR (enrutamiento de interrupción PCI) integrada en el BIOS. Los sistemas operativos como Windows 95 OSR2 pueden utilizar la tabla PIR para procesar el direccionamiento de IRQ PCI; [2] [3] más tarde, la tabla PIR ha sido reemplazada por ACPI . En los sistemas APIC con MSI , normalmente hay 224 interrupciones disponibles. [4]
La forma más sencilla de ver esta información en Windows es usar el Administrador de dispositivos o Información del sistema (msinfo32.exe). En Linux , las asignaciones de IRQ se pueden ver ejecutando cat /proc/interrupts
o usando la procinfo
utilidad.
En las primeras computadoras personales compatibles con IBM , un conflicto de IRQ era un error de hardware que alguna vez fue común y que se recibía cuando dos dispositivos intentaban usar la misma solicitud de interrupción (o IRQ) para enviar una señal de interrupción al Controlador de Interrupciones Programable (PIC). El PIC espera solicitudes de interrupción de un solo dispositivo por línea, por lo que más de un dispositivo que envíe señales IRQ a lo largo de la misma línea generalmente causará un conflicto de IRQ que puede congelar una computadora .
Por ejemplo, si se añade una tarjeta de expansión de módem a un sistema y se le asigna IRQ4, que tradicionalmente se asigna al puerto serie 1, es probable que se produzca un conflicto de IRQ. Inicialmente, IRQ 7 era una opción común para el uso de una tarjeta de sonido , pero más tarde se utilizó IRQ 5 cuando se descubrió que IRQ 7 interferiría con el puerto de impresora ( LPT1 ). Los puertos serie se desactivan con frecuencia para liberar una línea IRQ para otro dispositivo. IRQ 2/9 es la línea de interrupción tradicional para un puerto MIDI MPU-401, pero esto entra en conflicto con la interrupción de control del sistema ACPI (SCI está cableado a IRQ9 en los chipsets Intel); [5] esto significa que las tarjetas ISA MPU-401 con un IRQ 2/9 cableado y los controladores de dispositivos MPU-401 con un IRQ 2/9 codificado no se pueden utilizar en modo controlado por interrupciones en un sistema con ACPI habilitado.
En algunas condiciones, dos dispositivos ISA podrían compartir la misma IRQ siempre que no se utilicen simultáneamente. Para resolver este problema, el bus PCI posterior permite compartir IRQ. PCI Express no tiene líneas de interrupción físicas y utiliza interrupciones señalizadas por mensaje (MSI) para los sistemas operativos si están disponibles.