Interrupt
In informatica, un interrupt o interruzione è un segnale asincrono che indica il "bisogno di attenzione" da parte di una periferica finalizzata ad una particolare richiesta di servizio, un evento sincrono che consente l'interruzione di un processo qualora si verifichino determinate condizioni (gestione dei processi) oppure più in generale una particolare richiesta al sistema operativo da parte di un processo in esecuzione.
Tipi di interrupt
Ci sono due tipi di interrupt:
- Interrupt hardware generati da dispositivi esterni alla CPU (periferiche), che hanno il compito di comunicare il verificarsi di eventi esterni, di solito dispositivi di Input/Output. Un interrupt hardware costringe il processore a memorizzare il suo stato di esecuzione fino all'arrivo dell'interrupt e ad iniziare l'esecuzione della subroutine (sottoprogramma) (commutazione di contesto) che esegue il compito richiesto dall'interrupt, terminato il quale il processore riprende l'esecuzione delle operazioni che stava precedentemente elaborando. Nella pratica, si nota un rallentamento del sistema ed un aumento dell'uso della CPU, che può arrivare ad essere impegnata al 100% e per lunghi periodi.
- Interrupt software: sono delle istruzioni assembly, tipo INT xx o SYSCALL, che possono essere assimilate alle chiamate di sottoprogrammi, ma che sfruttano il meccanismo delle interruzioni per passare il controllo dal programma chiamante a quello chiamato, e viceversa; vengono utilizzati per accedere direttamente alle risorse del sistema operativo.
== UsoMERDao che il codice sorgente sia compilato in maniera apposita, in questo caso se il programma viene eseguito sotto il controllo di un apposito programma, il debugger, ad ogni istruzione viene eseguito un interrupt che consente di verificare se in tale punto è richiesta l'interruzione del processo.
Gestione degli interrupt
Nel momento in cui il processore riceve una richiesta di interrupt, vi è l'esigenza di determinare quale sia il dispositivo ad averla generata. Vi sono tre sistemi principali per farlo:
- Linee di interrupt multiple.
- Scansione degli interrupt (polling).
- Vettorizzazione degli interrupt.
Nelle linee di interrupt multiple ad ogni dispositivo è associato un proprio piedino per la gestione degli interrupt. Questo sistema è impraticabile per la gestione degli interrupt di numerosi dispositivi, ma può essere utilizzato in tecnologie special purpose.
La scansione degli interrupt consiste nell'effettuare una scansione dei dispositivi, interrogando ognuno per un'eventuale conferma della richiesta di interrupt inviata. Quando il dispositivo che ha generato l'interrupt viene interrogato, invierà una conferma al processore e quest'ultimo avvierà la ISR relativa. Impostando la sequenza della scansione è possibile impostare la priorità.
La vettorizzazione fa uso di un circuito integrato detto Programmable Interrupt Controller che ha in ingresso un certo numero di linee di interrupt request (IRQ), usate dai dispositivi per richiedere un'interruzione. Quando riceve una richiesta, il PIC si occupa di inviare a sua volta una richiesta di interrupt al processore e, dopo che quest'ultimo ha confermato la richiesta (cosa che potrebbe non avvenire se gli interrupt fossero disabilitati), deposita nel bus dati l'indice del vettore di interrupt relativo alla ISR che gestisce l'interazione con il dispositivo. I vettori sono contenuti in una tabella situata ad una determinata locazione in memoria, predefinita o meno, e chiamata interrupt vector table (Interrupt Descriptor Table per 8086 e IA-32). Ogni vettore contiene i dati che permettono al processore di determinare l'indirizzo in memoria della ISR relativa al dispositivo che ha generato l'interrupt, e di gestire quindi l'operazione di I/O richiesta.
Bibliografia
- Andrew Stuart Tanenbaum, Interrupt, in Architettura dei calcolatori. Un approccio strutturale, Milano, Pearson Education, 2006, pp. 393-396, ISBN 978-88-7192-271-3.
- William Stallings, Architettura e organizzazione dei calcolatori. Progetto e prestazioni, Milano, Pearson Education, 2010, pp. 75-84, ISBN 978-88-7192-597-4.
Voci correlate
Collegamenti esterni
- Gestione degli interrupt, su itis.mn.it.
Controllo di autorità | LCCN (EN) sh94000530 · GND (DE) 4625501-1 · BNF (FR) cb12457456k (data) · J9U (EN, HE) 987007558878605171 |
---|