Interrupt: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
m ha spostato Interrupt (informatica) a Interrupt tramite redirect: Disambigua non necessaria. |
Gestione degli interrupt. |
||
Riga 16:
*viene effettuato il [[debugging]] di un'applicazione. Durante la fase di sviluppo di un [[software|programma]] è frequente la necessità di testare il funzionamento di quanto creato per scoprire e risolvere l'origine dei malfunzionamenti. Il debugging consente di seguire l'evoluzione del programma istruzione per istruzione, dando la possibilità di interrompere il processo in qualunque momento per verificare il valore di ogni parametro. Per effettuare questo è necessario 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 è richiesto l'interruzione del processo.
== Gestione degli interrupt ==
Nel momento in cui il processore riceve un interrupt, vi è l'esigenza di determinare quale sia il dispositivo ad averlo generato. A questo scopo, si possono usare due metodi:
*scansione degli interrupt
*vettorizzazione degli interrupt
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 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 chiamata ''[[interrupt vector table]]'', precaricata ad una locazione predefinita in memoria. 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.
==Voci correlate==
Riga 27 ⟶ 36:
== Bibliografia ==
* ''Architettura dei Sistemi di Elaborazione, volume 1'' (F. Baiardi, A. Tomasi e [http://www.di.unipi.it/~vannesch/ Marco Vanneschi], [[1988]], [[Franco Angeli Edizioni]], ISBN 882042746X). Fondamenti, firmware, architetture parallele . [http://www.pangloss.it/libro.php?isbn=882042746X&id=4357&PHPSESSID=9da1895b18ed1cda115cf1c7ace9bdf0]
* ''Architettura dei Sistemi di Elaborazione, volume 2'' (F. Baiardi, A. Tomasi, Marco Vanneschi, [[1987]], Franco Angeli Edizioni, ISBN 882042746X) Sistemi operativi, multiprocessore e distribuiti.
[[Categoria:Microprocessore]]
[[Categoria:Gestione input/output]]
[[cs:Přerušení]]
|