Interrupt: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
m Bot: Aggiungo: ar:مقاطعة (نظام تشغيل) |
→Gestione degli interrupt: Aggiunto "linee interrupt multiple" e priorità in polling |
||
Riga 18:
== 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
*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 purpouse.
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 [[Interrupt Service Routine|ISR]] relativa.▼
▲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 [[Interrupt Service Routine|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 | 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.
|