Gestore di interrupt: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Aquatech (discussione | contributi)
eliminato collegamento errato
fix
 
(16 versioni intermedie di 13 utenti non mostrate)
Riga 1:
{{F|sistema operativo|febbraio 2013}}
Un '''gestore di interrupt''' è l'evoluzione di una [[Interrupt Service Routine|interrupt service routine]], cioè una routine la cui esecuzione è innescata dal verificarsi di un [[interrupt]].
 
UnIn [[informatica]] un '''gestore di interrupt''' è l'evoluzione di una [[InterruptFunzione Service Routine(informatica)|interrupt service routine]], cioè una routine la cui [[esecuzione (informatica)|esecuzione]] è innescata dal verificarsi di un [[interrupt]].
Nei moderni sistemi i gestori di interrupt sono divisi in due parti:
*gestori di primo livello (''FLIH, First-Level Interrupt Handler'')
*gestori di secondo livello (''SLIH, Second-Level Interrupt Handlers'')
 
È l'evoluzione di una ''Interrupt Service Routine'' (ISR), una [[Funzione (informatica)|funzione]] informatica, di tipo [[callback]], che viene avviata dal [[sistema operativo]] in risposta a un [[Interrupt]].
I gestori di primo livello (FLIH) funzionano nello stesso modo delle vecchie routine di interrupt. In risposta ad un interrupt avviene una [[Context switch|commutazione di contesto]] e il codice per gestire l'interrupt viene caricato in memoria ed eseguito. Il compito del FLIH, comunque, non è quello di gestire l'interrupt, bensì quello di [[Scheduler|schedulare]] la successiva esecuzione del gestore di secondo livello (SLIH), nonché quello di tenere traccia e di memorizzare tutte le eventuali informazioni importanti che fossero disponibili soltanto nel momento in cui si verifica l'interrupt.
 
== Descrizione ==
Il gestore SLIH rimane nella [[coda pronti]] del sistema operativo finché, quando si rende disponibile tempo macchina del [[CPU|processore,]] arriva il suo turno di esecuzione, e può essere eseguito il codice per gestire l'evento che ha innescato l'interrupt.
Quando arriva un interrupt, la [[CPU]] deve mandare in esecuzione l'ISR predisposta ad hoc dal programmatore per quel particolare interrupt.
Affinché il meccanismo dell'interruzione funzioni correttamente, è necessario che tutte le azioni svolte dall'ISR siano trasparenti rispetto al programma interrotto, cioè che al termine venga ripristinato tutto come era prima dell'interrupt, in altre parole, che la ISR sia perfettamente [[Codice rientrante|rientrante]] (attraverso l'istruzione ''Return''). Per fare ciò bisogna che la CPU, prima di mandare in esecuzione l'ISR, faccia una [[commutazione di contesto]], ovvero salvi tutto quello che stava facendo (cioè il suo ''contesto attuale''), ed alla fine dell'ISR lo ripristini com'era.
 
L'interrupt va gestito rapidamente, e quindi non va perso tempo per salvare tutto il contesto attuale (variabili, stato del programma, l'immagine sullo schermo ecc..) ma solo quello che effettivamente verrà modificato dall'ISR. D'altra parte la CPU non sa esattamente che cosa modificherà l'ISR e quindi non può conoscere a priori cosa salvare.
<!--
 
Quindi quando si verifica un'interruzione l'hardware deve provvedere ad effettuare la commutazione di almeno la seguente porzione del contesto:
It is worth noting that in many systems the FLIH and SLIH are referred to as ''upper halves'' and ''lower halves'', or a derivation of those names.
* Il registro PC ([[Program counter]])
* Il registro che definisce lo stato dell'interrompibilità del processore
 
Nei moderni sistemi i gestori di interrupt sono divisi in due parti:
* gestori di primo livello (''FLIH, First-Level Interrupt Handler'')
* gestori di secondo livello (''SLIH, Second-Level Interrupt Handlers'')
 
I gestori di primo livello (FLIH) funzionano nello stesso modo delle vecchie routine di interrupt. In risposta ad un interrupt avviene una [[Context switch|commutazione di contesto]] e il codice per gestire l'interrupt viene caricato in memoria ed eseguito. Il compito del FLIH, comunque, non è quello di gestire l'interrupt, bensì quello di [[Scheduler|schedulare]] la successiva esecuzione del gestore di secondo livello (SLIH), nonché quello di tenere traccia e di memorizzare tutte le eventuali informazioni importanti che fossero disponibili soltanto nel momento in cui si verifica l'interrupt.
 
Il gestore SLIH rimane nella [[coda pronti]] del sistema operativo finché, quando si rende disponibile tempo macchina del [[CPU|processore,]], arriva il suo turno di esecuzione, e può essere eseguito il codice per gestire l'evento che ha innescato l'interrupt.
-->
 
== Voci correlate ==
* [[Commutazione di contesto]]
*[[Context switch]]
* [[Scheduler]]
* [[Interrupt]]
 
{{Portale|informatica}}
[[Category:kernel]]
 
[[CategoryCategoria:kernel]]
[[ar:روتين المقاطعة (نظام تشغيل)]]
[[de:Unterbrechungsroutine]]
[[en:Interrupt handler]]
[[he:שגרת טיפול בפסיקה]]
[[ja:割り込みハンドラ]]
[[ru:Обработчик прерывания]]
[[tr:Kesme kotarıcı]]