0

ハイパーバイザー レベルからプロセス ページング構造をウォークスルー (および印刷) しようとしています。私が実行しているゲストは、PAE (物理アドレス拡張) ページングを使用する 32 ビット OS (ubuntu 12.04) です。

Intel マニュアルの次の図は、PAE ページングを使用する場合のさまざまな構造の詳細を示しています。

PAE = 1

これらの情報の使用方法について混乱しています。

異なる PDPTE にアクセスするには、CR3 + i(無視されたビットを含めて) 使用するか、CR3 を 4 だけ右にシフトしてからオフセットを追加する必要があり(CR3 >> 4) + iますか?

同様に、PDPTE からのページ ディレクトリのアドレスについては、エントリとその 40 ビット (12:51) からフラグを除外する必要があることを理解しています。ただし、CR3 + iすべての PDPTE に対して 0ed PDE (使用したもの) しか得られません ... 以前kvm_read_guest(vcpu->kvm, cr3 + i, &pdpte, 8)は PDPTE をkvm_read_guest(vcpu->kvm, (pdpte >> 12) + i, &pde, 8)読み取り、PDPTE から PDE を読み取っていました。

誰かがこれについて何か説明があれば、私はとても感謝しています:)

4

0 に答える 0