Manejo diferido de interrupciones
El patrón en el que la rutina de interrupción hace solo lo imprescindible y deja el resto a código que se ejecuta después, con las interrupciones habilitadas.
Mientras corre una rutina de interrupción, todo lo de menor prioridad espera, y cada microsegundo que pasa ahí se suma a la latencia de interrupción del sistema. Por eso el trabajo se reparte: la rutina reconoce el hardware, pone los datos a salvo —un búfer circular es lo clásico— y avisa de que algo ha ocurrido. El análisis, la lógica de protocolo y cualquier cosa que pueda tener que esperar un cerrojo se hacen después en contexto normal.
Linux llama a las dos mitades top half y bottom half, y ha pasado por tres generaciones de mecanismos para la segunda: softirqs, tasklets y workqueues. Windows tiene las DPC. En un RTOS como FreeRTOS, la rutina suele despertar una tarea dedicada con un semáforo o una notificación de tarea, y el planificador decide el resto según la prioridad. Quien llama a printf dentro de una interrupción suele aprender este patrón por las malas.