Domanda

Vorrei sapere che infila interrupt dispositivo processi. Cosa accade quando c'è un allarme quando un thread modalità utente esegue? Anche fare altri thread utente ha la possibilità di eseguire quando il sistema sta elaborando un interrupt?

Gentilmente mi suggerire qualche materiale di riferimento che descrive come gli interrupt vengono gestiti da Windows.

È stato utile?

Soluzione

Dispositivo interrompe stesse sono (di solito) processato dagli filo avuto la CPU che ha preso l'interrupt, ma in un anello 0 e ad un livello di protezione diverso. Questo limita alcune delle azioni di un gestore di interrupt può assumere, perché la maggior parte del tempo il thread corrente non sarà legato al thread in attesa per l'evento accada che l'interrupt sta indicando.

Il kernel stesso è closed source, e documentato solo attraverso la sua API interna. Tale API è esposto autori driver di periferica, e descritto nei kit di sviluppo dei driver.

Alcune risorse per ottenere iniziare:

  • Ogni edizione di Microsoft Windows Internals di Solomon e Russinovich. L'attuale sembra essere la 4 ° edizione, ma anche una vecchia edizione sarà di aiuto.

  • Windows DDK, ora ribattezzato il WDK . La sua documentazione è disponibili online troppo. Assicurarsi di leggere il Kernel Mode Design Guide ...

  • Sysinternals dispone di strumenti e articoli per sondare a e spiegare il comportamento del kernel. Questo usato per essere un sito indipendente fino a quando Microsoft si stancò di Mark Russinovich che sembra sapere di più su come il kernel ha funzionato quello che ha fatto. ; -)

Si noti che il codice sorgente di molti dei driver di periferica comuni sono inclusi nel DDK nei campioni. Anche se le versioni di produzione sono quasi certamente diversi, leggendo i driver di esempio può rispondere ad alcune domande, anche se non si desidera implementare un driver.

Altri suggerimenti

Come qualsiasi altro sistema operativo, Windows elabora gli interrupt in modalità kernel, con un livello di priorità elevata Interrupt (credo li chiamano IRPL di, ma non so quale sia la "R" sta per). Qualsiasi thread utente o di livello inferiore filo Kernel esecuzione sulla stessa macchina verrà interrotto mentre la richiesta di interruzione viene elaborata, e verrà ripreso quando l'elaborazione è completa ineterrupt.

Per saperne di più su dispositivo interrompe su Windows è necessario studiare sviluppo di device driver. Si tratta di un argomento di nicchia, non credo che si possono trovare molte risorse utili nel Web e si può avere a cercare un libro o di un corso di formazione.

In ogni caso, la maniglia di Windows interrompe con livelli di interrupt (IRQLs) e procedura differita chiama . Un interrupt viene gestito in modo Kernel, che viene eseguito in priorità maggiore rispetto modalità utente. Un gestore di interrupt corretta ha bisogno di reagire molto rapidamente. Si esegue solo le operazioni assolutamente necessarie e registra un Deferred Procedure Chiama per eseguire in futuro. Questo avverrà, quando il sistema è in un livello di interrupt.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top