1) ユーザー モード プロセスには、ユーザー モードの仮想アドレスを物理ページ フレームの一意のコレクションにマップする独自の「アドレス コンテキスト」があります。つまり、Windows XP スケジューラがスレッドを切り替えると、特定の仮想アドレスの意味が刻々と変化します。
「スレッドの切り替え」の作業の一部は、着信スレッドのプロセス コンテキストを参照するようにページ テーブルを変更することです。
_
2) Windows カーネル モード ドライバーは、「任意のスレッド コンテキスト」で実行されます。
ドライバーはシステム スレッドを作成し、そのコンテキストで動作する可能性があります...しかし、私はシステム スレッドを作成しない状況について話しています。
ドライバーは、"ExAllocatePoolWithTag" を使用して、ページ (揮発性ストレージ内のメモリ) を割り当てることができます。
_
3)では、ドライバーはコンテキストなしでページメモリにどのようにアクセスしますか?
ポイント1に見られるように、ページメモリは「コンテキスト固有」のページテーブルを介してアクセスされます。
ドライバが他のスレッド コンテキストで実行されている場合...つまり、ページ テーブル エントリはスレッドに関連する phy を指しています。mem、では、ドライバーはどのようにしてページングされたメモリにアクセスできますか?
PS: カーネルプログラミング初心者です。怒らないで。