Interrupciones en microprocesadores: definición, tipos y funcionamiento

Interrupciones en microprocesadores: qué son, tipos, cómo funcionan y su gestión (hardware y software). Ejemplos, temporizadores, teclados y manejo de eventos en tiempo real.

Autor: Leandro Alegsa

Una interrupción es cuando un microprocesador hace algo que no se le ha ordenado debido a cosas que suceden fuera de lo que se supone que debe hacer el programa. Las interrupciones suelen producirse porque el procesador recibe una señal del hardware, pero también pueden provenir del software que se ejecuta junto con el programa. Entre las muchas cosas que pueden causar interrupciones están la pulsación de teclas en un teclado, la activación del temporizador incorporado, la realización de una transferencia de datos o cualquier otro evento que necesite una acción del procesador de inmediato. Las interrupciones pueden ocurrir en cualquier momento mientras el procesador está ejecutando un programa, sin importar en qué parte del código fuente del programa se encuentre.

¿Qué es una interrupción? (definición ampliada)

En términos sencillos, una interrupción es un mecanismo por el cual un dispositivo o una condición solicita la atención inmediata de la CPU. En lugar de que el procesador continúe ejecutando instrucciones secuenciales, detiene temporalmente la ejecución normal, guarda su estado y ejecuta una rutina específica llamada Manejador de Interrupciones o ISR (Interrupt Service Routine). Cuando el ISR termina, la CPU restaura el estado guardado y retoma la ejecución del programa interrumpido.

Tipos principales de interrupciones

  • Interrupciones por hardware (asíncronas): Generadas por dispositivos externos (teclado, disco, tarjeta de red, temporizadores). Suelen llegar a través de controladores o controladores de interrupciones como PIC o APIC.
  • Interrupciones por software (síncronas): Provocadas por instrucciones que generan llamadas al sistema, traps o solicitudes explícitas del programa (por ejemplo, una llamada al sistema operativo).
  • Excepciones: Condiciones detectadas por la CPU durante la ejecución de instrucciones (por ejemplo, división por cero, fallo de página, instrucción ilegal). Aunque a veces se agrupan con las interrupciones, son eventos sincronizados con la ejecución de instrucciones.
  • Non-maskable Interrupt (NMI): Interrupciones de alta prioridad que no se pueden enmascarar (deshabilitar). Se usan para errores críticos de hardware que requieren atención inmediata.
  • Interrupciones enmascarables: Pueden ser habilitadas o deshabilitadas por el software (por ejemplo, con banderas de interrupción en la CPU).
  • Edge-triggered vs level-triggered: Dependiendo si se detecta el flanco de la señal (borde) o el nivel sostenido; esto afecta la forma en que el controlador valora y maneja la señal.

Cómo funciona el manejo de interrupciones (flujo básico)

  • Generación: Un dispositivo o el propio procesador genera la señal de interrupción.
  • Detección y aceptación: La CPU reconoce la interrupción (según prioridades y mascaras) y completa la instrucción en curso si es necesario.
  • Guardar contexto: La CPU guarda el contexto (registros, contador de programa, flags) en la pila o en áreas reservadas para poder reanudar después.
  • Vectorización: Se localiza la dirección de la ISR mediante una tabla de vectores o descriptor de interrupción.
  • Ejecutar ISR: La rutina de servicio se ejecuta para atender el evento (leer datos, limpiar banderas, iniciar DMA, etc.).
  • Restaurar contexto: Al terminar, la CPU restaura el contexto guardado.
  • Retomar ejecución: La CPU continúa con la instrucción o el hilo interrumpido.

Elementos clave y conceptos relacionados

  • ISR (Interrupt Service Routine): Código que atiende la interrupción. Debe ser breve y eficiente para minimizar la latencia.
  • Vector de interrupción: Identificador que apunta a la dirección del ISR correspondiente.
  • Controlador de interrupciones: Componente (hardware) que arbitra muchas señales de interrupción y las presenta ordenadas y priorizadas a la CPU (ej.: PIC, APIC).
  • Contexto: Conjunto de registros y estado que deben preservarse para reanudar correctamente la ejecución.
  • Latencia de interrupción: Tiempo desde que se genera la interrupción hasta que la ISR comienza a ejecutarse. Es crítico en sistemas en tiempo real.
  • Máscara de interrupciones: Mecanismo para deshabilitar temporalmente ciertas interrupciones mientras se realizan secciones críticas.
  • Interrupciones anidadas: Cuando una ISR puede a su vez ser interrumpida por otra de mayor prioridad; requiere manejo cuidadoso del contexto y prioridades.

Ejemplos prácticos

  • Pulsar una tecla en un teclado — el controlador envía una interrupción para que el sistema operativo lea la tecla y la procese.
  • Temporizador interno — genera interrupciones periódicas para planificar tareas (scheduling) o para mantener la hora del sistema (temporizador incorporado).
  • Controladores de disco o red — notifican al procesador que una operación de E/S ha terminado para procesar los datos (datos).
  • Instrucción ilegal o división por cero — la CPU genera una excepción para que el sistema pueda manejar el error o terminar el proceso.
  • Llamadas al sistema (system calls) — instrucciones de software que provocan una transición controlada al kernel para ejecutar servicios privilegiados.

Interrupciones vs sondeo (polling)

En lugar de usar interrupciones, algunos sistemas consultan periódicamente (polling) a los dispositivos para saber si necesitan atención. Comparación rápida:

  • Interrupciones: Más eficientes en CPU y reactivas; permiten que la CPU haga otras tareas hasta que ocurra el evento.
  • Polling: Sencillo de implementar pero consume CPU y puede introducir latencia si los sondeos son poco frecuentes.

Buenas prácticas y consideraciones

  • Hacer las ISRs lo más cortas posible: delegar trabajo pesado a hilos o procesos en el contexto de usuario o a tareas diferidas (bottom halves, workqueues).
  • Gestionar adecuadamente las prioridades para evitar inanición de interrupciones críticas.
  • Proteger secciones críticas con mascaras o mecanismos de sincronización para evitar inconsistencias al guardar/restaurar contexto.
  • Medir y optimizar la latencia en sistemas en tiempo real.
  • En sistemas multiprocesador, usar controladores y arquitecturas (APIC) que soporten distribución y afinidad de interrupciones.

Resumen

Las interrupciones son un mecanismo fundamental que permite a los microprocesadores reaccionar rápidamente a eventos internos y externos sin desperdiciar ciclos de CPU en espera activa. Conocer los tipos de interrupciones, cómo se manejan y las implicaciones de diseño (latencia, prioridades, contextos) es esencial para diseñar sistemas operativos, controladores y aplicaciones eficientes y fiables.

Este gráfico muestra lo que ocurre cuando se llama a una interrupciónZoom
Este gráfico muestra lo que ocurre cuando se llama a una interrupción

Cómo funcionan las interrupciones

Una llamada de interrupción por hardware o software (conocida como solicitud de interrupción, o IRQ) es atendida por un "gestor de interrupciones" o "rutina de servicio de interrupción" (ISR) en el procesador. Pone lo que está haciendo en ese momento en una pila y luego sigue ciertas instrucciones que hacen una tarea determinada en nombre del sistema, que no tiene que ser parte del programa que hace. Una vez que ha terminado de seguir las instrucciones, el ISR recupera lo que puso en la pila y continúa con lo que estaba haciendo antes de la interrupción.

Muchos controladores de interrupción de los procesadores actuales utilizan un vector de interrupción para clasificar las interrupciones en función de su procedencia, entre otras cosas. El vector suele contener el código que debe ejecutarse cuando se produce la interrupción. Los ISRs son generalmente responsables de lidiar con, o "dar servicio", a la interrupción, además de mantenerse en funcionamiento.

Usos de las interrupciones

  • Activación de tareas a intervalos regulares
  • Servicio de un dispositivo externo que puede ocurrir en cualquier momento
  • Eliminar la necesidad de un sondeo sincrónico
  • Activar un sistema operativo (SO) para que actúe

Preguntas y respuestas

P: ¿Qué es una interrupción?


R: Una interrupción es una acción realizada por un microprocesador que no forma parte del programa que se está ejecutando debido a acontecimientos externos.

P: ¿Cuál es la causa más frecuente de interrupciones en un procesador?


R: Las interrupciones se producen con mayor frecuencia en un procesador debido a la recepción de señales del hardware.

P: ¿Las interrupciones pueden ser causadas por software?


R: Sí, las interrupciones también pueden ser causadas por software que se ejecuta en paralelo al programa que se está ejecutando.

P: Enumere algunos ejemplos de eventos que podrían causar una interrupción.
R: Algunos ejemplos de eventos que podrían causar una interrupción son la pulsación de teclas en un teclado, la activación de un temporizador y la transferencia de datos.

P: ¿Una interrupción depende del lugar donde se esté ejecutando el programa?


R: No, las interrupciones pueden producirse en cualquier momento durante la ejecución del programa, independientemente de en qué parte del código fuente se encuentre el programa.

P: ¿Es una interrupción un evento deseable para un microprocesador?


R: Las interrupciones suelen ser eventos indeseables para un microprocesador, ya que interrumpen la ejecución del programa y requieren atención inmediata.

P: ¿Cómo responde un microprocesador a una interrupción?


R: Un microprocesador suspende temporalmente el programa en ejecución y ejecuta una rutina de servicio de interrupción (ISR) para gestionar la interrupción antes de volver al programa en ejecución.


Buscar dentro de la enciclopedia
AlegsaOnline.com - 2020 / 2025 - License CC3