fbpx IRQs en Linux: Cómo funcionan las interrupciones de hardware | Certificação Linux

Gestión de IRQs en Linux: Todo lo que necesitas saber

📅 06/03/2019 ⏱ 6 min ✍️ Uira Ribeiro
Linuxcómo-hacer
Gestión de IRQs en Linux: Todo lo que necesitas saber
Exam Pass App — mais de 7.000 questões LPI, offline, em 5 idiomas, disponível no Android e na App Store
Disponible en
Google Play
Disponible en
App Store

Las Solicitudes de Interrupción (IRQ) son llamadas que los dispositivos pueden hacer para solicitar atención especial del procesador.

La mayoría de las computadoras ofrece solo 16 interrupciones de hardware. Puede parecer poco para las configuraciones modernas con los más diversos dispositivos. Afortunadamente los IRQs pueden ser compartidos.

El mecanismo de manejo de las interrupciones hace que la CPU esté atenta a los eventos externos a la secuencia de instrucciones que está ejecutando, para cuando sea necesaria una interrupción del procesamiento normal para atender a otra solicitud.

En grandes sistemas multiusuario, una constante ráfaga de interrupciones se dirige al procesador.

Respuestas rápidas a estas interrupciones son esenciales para mantener los recursos del sistema bien utilizados, y para proporcionar tiempos de respuesta aceptables para los usuarios.

Es importante saber que estos recursos son limitados y necesitan ser administrados para que los conflictos entre los dispositivos sean evitados.

De esta forma, los sistemas operativos reaccionan a eventos que representan las solicitudes de servicios.

Por ejemplo, si una aplicación necesita la lectura de un archivo, realiza la solicitud a una función ejecutada por el sistema operativo.

Este accederá al controlador del periférico y solicitará la transferencia de los datos hacia la dirección de memoria informada en la solicitud del servicio.

El controlador del periférico al terminar avisa al procesador a través de una solicitud de interrupción que hará que el sistema operativo ejecute una rutina para su manejo.

Las interrupciones pueden ser generadas por los siguientes eventos:

  • Generadas por programa que son implementadas con el uso de instrucciones especiales;
  • Por error, como en la división por cero, referencia a la memoria fuera del espacio permitido, etc.;
  • Por tiempo, como en la planificación;
  • Falla de hardware;
  • Por eventos de entrada y salida de datos señalando el final de operación o condición de error.
  • Entonces, los eventos generados por las interrupciones provocan la ejecución de la rutina de manejo correspondiente a la fuente de la interrupción en el sistema operativo.

Al hacer el manejo de las interrupciones de hardware, el dispositivo solicitante interrumpe el procesador.

Este termina la ejecución de la instrucción actual, verifica la existencia de interrupción y guarda el estado actual del proceso que perderá el control del procesador en la memoria.

El procesador carga el contador de programa con la dirección de la rutina de manejo de la interrupción y transfiere su control a la rutina de manejo de la interrupción.

La rutina de manejo de la interrupción se ejecuta y, al finalizar, restaura el estado anterior para retornar a la ejecución de la rutina interrumpida.

Un núcleo simple deshabilita el manejo de interrupciones mientras responde a una interrupción. Estas son nuevamente habilitadas después de que el procesamiento esté completo.

Si hay un flujo permanente de interrupciones, como en los sistemas multiusuario, este esquema puede causar interrupciones deshabilitadas por un gran tiempo y respuestas insatisfactorias.

Para evitar esto, el Kernel debe estar atento al tiempo máximo de procesamiento permitido para cada interrupción. Si esa porción de tiempo se excede, pasa el resto del procesamiento de la interrupción a otro proceso apropiado del sistema que terminará de manejarlas, mientras el núcleo continúa apto para recibir nuevas interrupciones.

Esto significa que pueden mantenerse habilitadas durante mucho tiempo, y el sistema se vuelve más eficiente en responder a las solicitudes de las aplicaciones de los usuarios.

La lista de IRQs del sistema se puede ver en el archivo

# cat /proc/interrupts 

           CPU0       

  0:         78   IO-APIC   2-edge      timer

  1:          9  xen-pirq   1-ioapic-edge  i8042

  4:       3409  xen-pirq   4-ioapic-edge

  8:          2  xen-pirq   8-ioapic-edge  rtc0

  9:          0  xen-pirq   9-ioapic-level  acpi

 12:          3  xen-pirq  12-ioapic-edge  i8042

 14:          0   IO-APIC  14-edge      ata_piix

 15:          0   IO-APIC  15-edge      ata_piix

 48:   14474493  xen-percpu-virq      timer0

 49:          0  xen-percpu-ipi       resched0

 50:          0  xen-percpu-ipi       callfunc0

 51:          0  xen-percpu-virq      debug0

 52:          0  xen-percpu-ipi       callfuncsingle0

 53:          0  xen-percpu-ipi       spinlock0

 54:        211   xen-dyn-event     xenbus

 55:     755401   xen-dyn-event     blkif

 56:     887240   xen-dyn-event     eth0

NMI:          0   Non-maskable interrupts

LOC:          0   Local timer interrupts

SPU:          0   Spurious interrupts

PMI:          0   Performance monitoring interrupts

IWI:          0   IRQ work interrupts

RTR:          0   APIC ICR read retries

RES:          0   Rescheduling interrupts

CAL:          0   Function call interrupts

TLB:          0   TLB shootdowns

TRM:          0   Thermal event interrupts

THR:          0   Threshold APIC interrupts

DFR:          0   Deferred Error APIC interrupts

MCE:          0   Machine check exceptions

MCP:       1216   Machine check polls

HYP:   16105716   Hypervisor callback interrupts

ERR:          0

MIS:          0

PIN:          0   Posted-interrupt notification event

PIW:          0   Posted-interrupt wakeup event

¿Quieres aprender más sobre Linux? Conoce nuestro curso para el examen LPI

Aprende mucho más sobre Linux en nuestro curso en línea. Puedes hacer la inscripción aquí con trial de 7 días gratis. Si ya tienes una cuenta, puedes acceder aquí.

¿Te gustó? ¡Compártelo :-)

Uira Ribeiro

Prof. Uirá Ribeiro

Chair do Board do Linux Professional Institute

Después de años viendo profesionales perder horas en tareas simples por no conocer las herramientas correctas de Linux, decidí enseñar.
Hoy soy autor de la mayoría de los Materiales de Aprendizaje oficiales de la LPI y mentor de más de 14,000 alumnos certificados.

Conoce mi historia completa →

Eso fue solo una pieza. El curso enseña el camino completo — desde tu primer comando hasta el día del examen.

Certificação Linux — a plataforma líder em certificações Linux no Brasil
WhatsApp