Interrupt
Un'interruzione è quando un microprocessore fa qualcosa che non gli viene detto di fare a causa di cose che accadono al di fuori di ciò che il programma dovrebbe fare. Le interruzioni avvengono più spesso perché il processore riceve un segnale dall'hardware, ma possono anche provenire dal software che è in esecuzione insieme al programma. Tra le molte cose che possono causare interruzioni ci sono la pressione di tasti su una tastiera, il timer incorporato che scatta, un trasferimento di dati che avviene, o qualsiasi altro evento che richiede un'azione immediata da parte del processore. Le interruzioni possono avvenire in qualsiasi momento mentre il processore sta eseguendo un programma, non importa in quale punto del codice sorgente del programma si trovi.
Questo grafico mostra cosa succede quando viene chiamato un interrupt
Come funzionano gli interrupt
Una chiamata hardware o software per un'interruzione (conosciuta come richiesta di interruzione, o IRQ) è presa in carico da un "gestore di interruzione" o "routine di servizio di interruzione" (ISR) nel processore. Mette ciò che sta facendo in quel momento in uno stack e poi segue certe istruzioni che fanno un dato compito per conto del sistema, che non deve essere parte del programma che fa. Una volta che ha finito di seguire le istruzioni, l'ISR riprende quello che ha messo in pila e continua con quello che stava facendo prima che avvenisse l'interruzione.
Molti controllori di interrupt dei processori di oggi usano un vettore di interrupt per ordinare gli interrupt in base alla loro provenienza, tra gli altri modi. Il vettore tipicamente contiene il codice che deve essere eseguito quando avviene l'interrupt. Gli ISR sono generalmente responsabili di gestire, o "servire", l'interrupt, insieme a mantenere se stessi in ordine.
Usi degli interrupt
- Attivazione di compiti a intervalli regolari
- Manutenzione di un dispositivo esterno che può avvenire in qualsiasi momento
- Rimuovere la necessità del polling sincrono
- Attivazione di un sistema operativo (OS) per intraprendere un'azione
Domande e risposte
D: Che cos'è un'interruzione?
R: Un'interruzione è un'azione intrapresa da un microprocessore che non fa parte del programma in esecuzione, a causa di eventi esterni.
D: Cosa fa sì che gli interrupt si verifichino più spesso in un processore?
R: Gli interrupt si verificano più spesso in un processore a causa della ricezione di segnali dall'hardware.
D: Gli interrupt possono essere causati dal software?
R: Sì, gli interrupt possono essere causati anche da un software che funziona parallelamente al programma in esecuzione.
D: Elenchi alcuni esempi di eventi che possono causare un'interruzione.
R: Esempi di eventi che possono causare un'interruzione sono la pressione dei tasti su una tastiera, l'attivazione di un timer e il trasferimento di dati.
D: Un interrupt dipende dal luogo di esecuzione del programma?
R: No, gli interrupt possono verificarsi in qualsiasi momento durante l'esecuzione del programma, indipendentemente dalla posizione del programma nel codice sorgente.
D: L'interrupt è un evento auspicabile per un microprocessore?
R: Gli interrupt sono generalmente eventi indesiderati per un microprocessore, poiché interrompono l'esecuzione del programma e richiedono un'attenzione immediata.
D: Come risponde un microprocessore a un interrupt?
R: Un microprocessore sospende temporaneamente il programma in esecuzione ed esegue una routine di servizio di interrupt (ISR) per gestire l'interrupt prima di tornare al programma in esecuzione.