Cos'è un Interrupt Handler (ISR)?
Definizione
Un Interrupt Service Routine (ISR) o interrupt handler è una funzione speciale eseguita dalla CPU quando si verifica un'interruzione hardware o software. Gestisce eventi critici nel tempo (I/O, timer, errori) che non possono attendere il normale flusso del programma.
Come Funziona
- Arriva segnale di interruzione (es. pressione tasto, disco pronto, pacchetto di rete).
- CPU sospende il compito corrente, salva il contesto (PC, flag, registri).
- CPU salta all'indirizzo ISR dalla tabella vettori di interruzione.
- L'ISR esegue: legge dispositivo, elabora dati, acquisisce l'interruzione.
- L'ISR restituisce tramite
IRET(x86) /RETI(8085) — la CPU ripristina il contesto e riprende.
Tipiche Attività ISR
- Leggi input tastiera/mouse/touch
- Gestisci dati seriale/USB/rete
- Gestisci tick del timer (scheduler)
- Gestisci errori hardware (parità, page fault)
- Segnala task RTOS o semafori
Regole di Progettazione Critiche
- Mantieni gli ISR brevi e veloci — differisci i lavori pesanti a thread/task.
- Disabilita le interruzioni minimamente; usa livelli di priorità.
- Mai bloccare (nessuna attesa, sleep, mutex).
- Ri-entrata sicura se si accede a dati condivisi.
Esempio: ISR Tastiera
Pressione tasto → interruzione → ISR legge scan code dal controller tastiera → converte in ASCII → inserisce nel buffer di input → segnala task di input → restituisce.
Gli ISR sono fondamentali per la reattività in tempo reale nei kernel OS, firmware embedded e driver di dispositivo.