Guía sobre las Peticiones de Interrupción (IRQ): El Sistema Nervioso del Ordenador
Qué son las Peticiones de Interrupción IRQ y por qué son el sistema nervioso del ordenador. En el mundo de la informática, a menudo nos centramos en las especificaciones visibles: la velocidad del procesador, la cantidad de memoria RAM o la capacidad del disco duro. Sin embargo, existe un mecanismo fundamental, invisible para el usuario promedio, que permite que todos estos componentes trabajen en armonía sin colapsar el sistema.
Este mecanismo se conoce como Petición de Interrupción, o por sus siglas en inglés, IRQ. Sin las IRQ, tu ordenador sería increíblemente ineficiente.
Para entender su importancia, imagine un jefe de oficina (la CPU) que tiene que revisar constantemente si un empleado (el teclado) ha escrito una letra, si otro (el disco duro) ha terminado de guardar un archivo, o si el teléfono (la tarjeta de red) está sonando. Si el jefe tuviera que preguntar ¿has terminado? cada milisegundo a cada empleado, no podría hacer su propio trabajo de cálculo. Las IRQ solucionan esto: permiten que los dispositivos levanten la mano y avisen al jefe solo cuando necesitan atención.
Técnicamente, una IRQ es una señal de hardware o software enviada al procesador para indicar que ha ocurrido un evento que requiere atención inmediata. Cuando la CPU recibe esta señal, suspende temporalmente las tareas que está ejecutando en ese momento, guarda el estado actual de su trabajo (un proceso llamado cambio de contexto), y ejecuta un pequeño programa especializado llamado Rutina de Servicio de Interrupción.
Una vez que la ISR ha gestionado la solicitud (por ejemplo, leer la tecla pulsada), la CPU restaura el estado anterior y continúa con lo que estaba haciendo como si nada hubiera pasado. Este proceso ocurre miles de veces por segundo y es la base de la multitarea moderna. Sin interrupciones, el sistema operativo tendría que utilizar un método llamado polling (sondeo), donde la CPU pregunta constantemente a cada dispositivo si tiene datos, consumiendo casi el 100% de los ciclos del procesador.
¿Quieres entender cómo ha evolucionado este mecanismo desde el infierno de los conflictos hasta la fluidez actual? A continuación te lo explicamos en detalle.
Qué necesitas saber antes de adentrarte en las IRQ
Antes de analizar cómo ver las IRQ en tu sistema, es fundamental comprender que no todas las interrupciones son iguales. Para gestionarlas correctamente, se clasifican en varias categorías. Las interrupciones de hardware son las IRQ clásicas, provenientes de dispositivos físicos conectados a la placa base como el controlador del disco duro, la tarjeta de sonido, el ratón o los puertos USB. Estas señales viajan a través de líneas físicas o mensajes digitales hasta el controlador de interrupciones.
Por otro lado, existen las interrupciones de software, generadas por el propio código o el sistema operativo para llamar a funciones del kernel o manejar errores de ejecución (como dividir por cero). Además, las interrupciones se dividen en enmascarables, que la CPU puede elegir ignorar temporalmente si está realizando una tarea crítica, y no enmascarables, que son de alta prioridad y no pueden ser ignoradas. Las NMI se reservan para errores críticos de hardware, como un fallo de memoria RAM o un sobrecalentamiento grave del procesador, y suelen detener el sistema inmediatamente para evitar daños o corrupción de datos.
Para comprender la evolución de las IRQ, debemos viajar a la era de los ordenadores de los años 80 y principios de los 90, específicamente a la arquitectura ISA. En aquellos días, las IRQ eran recursos físicos limitados. El controlador principal, el chip Intel 8259A, solo gestionaba 8 líneas de interrupción (IRQ 0 a IRQ 7). Más tarde, se añadieron más controladores para llegar a 16 líneas.
El problema surgía porque cada dispositivo necesitaba una línea única. Si instalabas una tarjeta de sonido y una tarjeta de red, y ambas intentaban usar la IRQ 5, se producía un conflicto de IRQ. El resultado era que ninguno de los dispositivos funcionaba, el sistema se congelaba o aparecían las temidas Pantallas Azules de la Muerte. Configurar esto era una pesadilla manual con jumpers e interruptores DIP. A esta época se la conoce cariñosamente como el Infierno de las IRQ.
La llegada del bus PCI y la tecnología Plug and Play a mediados de los 90 cambiaron el juego. El sistema operativo y la BIOS comenzaron a negociar automáticamente la asignación de recursos al arrancar. Además, la arquitectura PCI permitía que varios dispositivos compartieran la misma línea de IRQ, algo que era imposible en ISA, siempre y cuando los controladores estuvieran diseñados para manejar ese compartir.
En los ordenadores actuales, el antiguo controlador PIC ha sido sustituido por el APIC, mucho más sofisticado y diseñado para procesadores multinúcleo. El APIC puede dirigir una interrupción específica a un núcleo concreto, mejorando el rendimiento. Aún más avanzado es el sistema MSI y MSI-X, utilizado en el bus PCIe, donde el dispositivo envía un mensaje de datos a través del propio bus de datos en lugar de usar una línea eléctrica dedicada. Esto permite una escalabilidad masiva, elimina la escasez de líneas físicas y reduce la latencia.
Cómo ver y gestionar las IRQ en tu sistema
En Windows
- Para consultar la asignación de IRQ en Windows, presiona las teclas Windows + R para abrir el cuadro de diálogo Ejecutar. Escribe
msinfo32y pulsa Enter. - En la ventana de Información del sistema, despliega la carpeta Recursos de hardware en el panel izquierdo y haz clic en IRQ. En el panel derecho verás una lista de todos los números de IRQ y los dispositivos que los utilizan.
- Alternativamente, puedes abrir el Administrador de dispositivos (clic derecho en el botón Inicio). En el menú superior, haz clic en Ver y selecciona Recursos por tipo. Despliega la opción Interrupción (IRQ) para ver la misma información de forma visual.
En Linux
- Linux expone esta información de forma muy transparente a través del sistema de archivos virtual
/proc. Abre una ventana de Terminal. - Escribe el comando
cat /proc/interruptsy pulsa Enter. - Verás una lista detallada que muestra el número de la interrupción (columna izquierda), cuántas veces ha sido llamada por cada núcleo de CPU (columnas CPU0, CPU1, etc.) y el nombre del dispositivo o controlador asociado (ej.
eth0para red,i8042para teclado,nvmepara discos SSD modernos). - Si observas que un solo núcleo de CPU está acumulando millones de interrupciones mientras los demás están casi a cero, podrías tener un cuello de botella de rendimiento y necesitarías ajustar la afinidad de la IRQ, un proceso avanzado que se realiza con el comando
echosobre el sistema de archivos/proc/irq/.
En macOS
- macOS, al estar basado en un núcleo Unix, también proporciona acceso a esta información, aunque de forma menos directa que Linux. Abre la aplicación Terminal desde Aplicaciones > Utilidades.
- El comando más útil para ver la actividad de interrupciones es
sudo dmesg | grep -i interrupt. Esto filtrará los mensajes del buffer del kernel relacionados con interrupciones durante el arranque. - Para una monitorización en tiempo real de las interrupciones, puedes usar el comando
sudo fs_usage -w -f filesys. Aunque no es una lista de IRQ, muestra las llamadas al sistema y la actividad de interrupción de disco en tiempo real. La información detallada de IRQ en macOS está más destinada a desarrolladores de drivers a través del framework I/O Kit.
Para verificar que has accedido correctamente a la información, en Windows deberías ver la lista en el panel de Información del sistema. En Linux, el comando cat /proc/interrupts mostrará una tabla con datos. Si ves números de interrupción y nombres de dispositivos, has tenido éxito. Un indicador de buena salud es que las interrupciones de dispositivos de alto volumen (como la tarjeta de red o el controlador NVMe) estén distribuidas entre varios núcleos de la CPU.
Problemas frecuentes y cómo resolverlos
Latencia de audio (crujidos, glitches) en Windows
Este es uno de los problemas modernos más comunes relacionados con las IRQ, conocido como DPC Latency. Ocurre cuando un controlador de dispositivo (a menudo de red o de almacenamiento) monopoliza la CPU durante demasiado tiempo mientras ejecuta su Rutina de Servicio de Interrupción, impidiendo que la tarjeta de sonido sea atendida a tiempo. La solución pasa por actualizar los controladores de la placa base, la tarjeta de red y la tarjeta gráfica. En casos graves, se puede desactivar temporalmente el adaptador de red inalámbrico o Ethernet para aislar al culpable.
Un solo núcleo de la CPU se satura mientras los demás están inactivos en Linux
Si al ejecutar cat /proc/interrupts ves que un dispositivo (por ejemplo, la tarjeta de red eth0) está enviando millones de interrupciones a un solo núcleo (ej. CPU0), puedes estar sufriendo un cuello de botella. La solución es redistribuir manualmente la afinidad de las interrupciones. Para ello, debes encontrar el número de IRQ del dispositivo y escribir una máscara de afinidad en el archivo correspondiente. Por ejemplo, para una IRQ número 23, el comando echo 2 > /proc/irq/23/smp_affinity la asignaría al segundo núcleo (CPU1). Este es un ajuste avanzado que requiere conocimientos de máscaras de bits.
Conflictos de IRQ en hardware antiguo o sistemas heredados
Aunque es raro en equipos modernos, si estás montando un PC retro con Windows 98 y tarjetas ISA, los conflictos de IRQ son una realidad. Si una tarjeta de sonido y una de red no funcionan, probablemente compartan la misma IRQ. La solución es entrar en la BIOS (generalmente pulsando Supr o F2 durante el arranque), navegar a la sección PNP/PCI Configurations y asignar manualmente una IRQ diferente a una de las ranuras ISA. En Windows, también puedes forzar la configuración en el Administrador de dispositivos, en la pestaña Recursos de la tarjeta problemática.
Consejos para sacar más partido a la comprensión de las IRQ
En la informática general, un pequeño retraso en una interrupción es imperceptible. Sin embargo, en sistemas de Tiempo Real (como el control de un brazo robótico o los frenos de un coche) o en la producción de audio profesional, la latencia de las IRQ es crítica. Por esto, los usuarios avanzados a veces desactivan dispositivos innecesarios en la BIOS (como puertos serie paralelos o controladores FireWire antiguos) para liberar recursos y reducir el ruido de interrupciones en el sistema, asegurando un flujo de audio más estable.
Para diagnosticar problemas de rendimiento en Windows relacionados con interrupciones, la herramienta LatencyMon es el estándar de la industria. Esta utilidad gratuita analiza en tiempo real qué controladores están causando la mayor latencia de DPC e interrupciones, señalando directamente al archivo .sys culpable. Es una herramienta indispensable para cualquier técnico de sonido o usuario que sufra problemas de audio.
En Linux, la herramienta irqbalance es un servicio que se ejecuta en segundo plano y distribuye automáticamente las interrupciones de hardware entre los núcleos de la CPU para equilibrar la carga. En la mayoría de las distribuciones modernas está habilitado por defecto y funciona razonablemente bien. Sin embargo, para cargas de trabajo muy específicas, los administradores de sistemas suelen desactivarlo y gestionar la afinidad manualmente como se describió anteriormente.
Compatibilidad con diferentes versiones y arquitecturas
El concepto de IRQ es universal y existe en cualquier sistema operativo moderno. En Windows, la gestión ha evolucionado desde el infierno manual de Windows 9x hasta la sofisticada asignación dinámica de Windows 11 a través del APIC y MSI-X. El comando msinfo32 y el Administrador de dispositivos funcionan en todas las versiones NT (Windows 11, 10, 8, 7).
En Linux, el sistema de archivos /proc/interrupts es un estándar que se mantiene desde hace décadas en todos los kernels 2.6 y posteriores. En macOS, aunque la capa de usuario oculta la complejidad, el kernel XNU gestiona las interrupciones de manera muy similar a otros sistemas Unix, y los desarrolladores pueden interactuar con ellas a través del framework I/O Kit. En sistemas Android, al estar basado en el kernel de Linux, el subsistema de interrupciones es idéntico, y los desarrolladores pueden consultarlo a través de adb shell cat /proc/interrupts.
Preguntas frecuentes
¿Qué es exactamente una IRQ en palabras sencillas?
Imagina una clase llena de alumnos (los dispositivos) y un profesor (la CPU). En lugar de que el profesor pregunte a cada alumno cada segundo si ha terminado su ejercicio, los alumnos levantan la mano (envían una IRQ) solo cuando han terminado. Así, el profesor puede dedicar su tiempo a enseñar en lugar de a preguntar. La IRQ es la mano levantada.
¿Necesito configurar las IRQ manualmente en mi ordenador moderno?
No, en el 99.9% de los casos no es necesario ni recomendable. Los sistemas operativos modernos (Windows 10/11, macOS, Linux) junto con la tecnología Plug and Play y el bus PCIe gestionan la asignación de interrupciones de forma automática y eficiente. La configuración manual solo se reserva para solucionar problemas muy específicos de rendimiento o para hardware retro.
¿Qué es un conflicto de IRQ y por qué era tan temido?
Un conflicto de IRQ ocurría en hardware antiguo (principalmente ISA) cuando dos dispositivos intentaban usar la misma línea física de interrupción. Como el controlador no podía distinguir quién había enviado la señal, ambos dispositivos fallaban o el sistema se bloqueaba. Era un problema muy frustrante de diagnosticar y solucionar manualmente.
¿Cómo afecta la latencia de interrupción al audio de mi ordenador?
La latencia de interrupción es el tiempo que tarda la CPU en atender la IRQ de un dispositivo. Si un controlador (a menudo de red o de gráficos) tarda demasiado en ejecutar su código, la CPU no puede atender a tiempo a la tarjeta de sonido. Esto provoca que el buffer de audio se vacíe, resultando en crujidos, clics o saltos en la reproducción de sonido. Es un problema común en estaciones de trabajo de audio digital (DAW).
¿Las IRQ existen en los procesadores ARM de los móviles?
Sí, el concepto de interrupción es fundamental en cualquier arquitectura de procesador, incluyendo ARM. Los teléfonos móviles y tablets utilizan un controlador de interrupciones genérico (GIC) que cumple la misma función que el APIC en los PCs. La gestión de interrupciones es crucial para la duración de la batería, ya que permite que la CPU entre en estados de bajo consumo y solo se despierte cuando un dispositivo (como la pantalla táctil o el módem) lo solicita.
