Gestore di interrupt: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Marius~itwiki (discussione | contributi)
nuova voce da en.wiki
 
fix
 
(33 versioni intermedie di 22 utenti non mostrate)
Riga 1:
{{F|sistema operativo|febbraio 2013}}
{{stub informatica}}
Un '''gestore di interrupt''' è l'evoluzione di una [[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 [[interrupt serviceFunzione (informatica)|routine]], cioèla unacui [[routineesecuzione (informatica)|esecuzione]] la cui 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]].
<!--
 
== Descrizione ==
The FLIH operates in the same way as the old ''[[interrupt routines]]'' did. In response to an interrupt there is a [[context switch]] and the code for the interrupt is loaded and executed. The job of the FLIH, however, is not to process the interrupt, but to [[schedule (computer science)|schedule]] the execution of the SLIH, while recording any critical information which is only available at the time of the 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:
* 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.
The SLIH sits on the [[run queue]] of the operating system until it can be executed to perform the processing for the interrupt when [[processor time]] is available.
 
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.
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.
 
== Voci correlate ==
-->
* [[Commutazione di contesto]]
* [[Scheduler]]
* [[en:Interrupt handler]]
 
{{stub Portale|informatica}}
[[Category:Programmazione]]
 
[[Categoria:kernel]]
[[de:Unterbrechungsroutine]]
[[en:Interrupt handler]]