質問

どのスレッドがデバイス割り込みを処理するかを知りたいです。ユーザー モード スレッドの実行中に割り込みが発生するとどうなりますか?また、システムが割り込みを処理しているときに、他のユーザースレッドが実行される機会はありますか?

Windows による割り込みの処理方法について説明した参考資料を教えてください。

役に立ちましたか?

解決

デバイスの割り込み自体は (通常は) 割り込みを受け取った CPU を持つスレッドによって処理されますが、リング 0 内で、異なる保護レベルで処理されます。これにより、割り込みハンドラーが実行できるアクションの一部が制限されます。これは、ほとんどの場合、現在のスレッドは、割り込みが示すイベントの発生を待っているスレッドに関連しないためです。

カーネル自体はクローズド ソースであり、内部 API を通じてのみ文書化されています。この API はデバイス ドライバーの作成者に公開されており、ドライバー開発キットに記述されています。

開始するためのリソース:

  • のどのエディションでも、 Microsoft Windows の内部構造 ソロモンとルシノビッチ著。現在は第4版のようですが、古い版でも十分役に立ちます。

  • Windows DDK の名前が変更されました。 WDK. 。そのドキュメントは オンラインで利用可能 あまりにも。必ずお読みください カーネルモード設計ガイド...

  • シスインターナル には、カーネルの動作を調査して説明するためのツールと記事が含まれています。これは、Mark Russinovich が自分たちよりもカーネルの仕組みについてよく知っているように見えることに Microsoft が飽きるまで、独立したサイトでした。;-)

多くの一般的なデバイス ドライバーのソース コードがサンプルの DDK に含まれていることに注意してください。製品バージョンはほぼ確実に異なりますが、自分でドライバーを実装したくない場合でも、サンプル ドライバーを読むことでいくつかの質問に答えることができます。

他のヒント

他のオペレーティングシステムと同様、Windowsが上昇割り込み優先レベル(私は彼らがIRPL年代それらを呼び出すと思いますが、私は「R」が何の略かわかりません)で、カーネルモードで割り込みを処理します。割り込み要求が処理され、ineterrupt処理が完了すると再開される一方、同じマシン上で実行されている任意のユーザスレッドまたは下位カーネルスレッドは中断されます。

デバイスについての詳細を学ぶために、Windows上で中断し、デバイスドライバの開発を検討する必要があります。これは、ニッチな話題である、私はあなたがウェブで多くの有用な情報を見つけることができないと思うと、あなたが本やトレーニングコースを探す必要があります。

とにかく、Windowsハンドルは、割り込み要求レベル(IRQLs)で中断し、繰延手順はこちらを呼び出します。割り込みはユーザーモードより高い優先度で実行されるカーネルモードで処理されます。適切な割り込みハンドラは非常に迅速に反応する必要があります。それは絶対に必要な操作を実行し、将来的に実行するための遅延プロシージャコールを登録するだけ。これは、システムが割り込み要求レベルにあるとき、発生します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top