私はメモリ チップを設計しています。関連するシステム ソフトウェアの質問をするのに最適な場所だと思われるので...
最新の x86 プロセッサでは、システム レベルのコード (保護リング 0) は物理メモリ アドレスで実行されますか? 64ビット仕様でも同じですか?
(システムコードのアドレスが仮想/セグメントメモリサブシステムを通過するかどうかを知る必要があります。)
私はメモリ チップを設計しています。関連するシステム ソフトウェアの質問をするのに最適な場所だと思われるので...
最新の x86 プロセッサでは、システム レベルのコード (保護リング 0) は物理メモリ アドレスで実行されますか? 64ビット仕様でも同じですか?
(システムコードのアドレスが仮想/セグメントメモリサブシステムを通過するかどうかを知る必要があります。)
それらは他のコードと同じように実行されます。リング 0 と他のリングの唯一の違いは、リング 0 が特権命令を実行できることであり、メモリ アドレス空間と構造を変更します。ただし、この特権は、Ring 0 が他のコードと同様に仮想メモリを使用できないという意味ではありません。リング 0 ですべてのプロセスを実行し、同じ仮想メモリの動作を維持することは、プロセスがそれを変更しようとしないことを前提として、技術的に可能です。仮想メモリ アドレス空間を使用せずに、特権の少ないリング プロセスを実行することもできます。
いいえ、まだフラットな仮想メモリ モデルです。ページをロックするための特別な対策が講じられていない限り、ドライバ コードとデータは通常どおりページ アウトできます。一般的なブルー スクリーン停止コードは、たとえば KERNEL_DATA_INPAGE_ERROR です。
物理メモリをマップする典型的な呼び出しは、MmAllocatePagesForMdl() です。