Gestione differita degli interrupt
Il modello in cui il gestore di un interrupt svolge il minimo indispensabile e affida il resto a codice eseguito in seguito, con gli interrupt riabilitati.
Finché un gestore è in esecuzione, tutto ciò che ha priorità inferiore resta in attesa, e ogni microsecondo trascorso lì si somma alla latenza di interrupt del sistema. Il lavoro viene quindi diviso: il gestore conferma l'interrupt all'hardware, copia i dati in un posto sicuro — un buffer circolare è la scelta classica — e segnala che è accaduto qualcosa. L'analisi dei dati, la logica di protocollo e tutto ciò che potrebbe dover attendere un lock avvengono poi nel contesto normale.
Linux chiama le due metà top half e bottom half e per la seconda ha attraversato tre generazioni di meccanismi: softirq, tasklet e workqueue. Windows ha i DPC. In un RTOS come FreeRTOS, il gestore di norma risveglia un task dedicato tramite un semaforo o una task notification, e lo scheduler provvede al resto in base alle priorità. Chi chiama printf dall'interno di un interrupt tende a imparare questo schema a proprie spese.