私は Windows システム プログラミングを行っていて、ソース コード レベルでプロセスのページ テーブルにアクセスできるかどうか疑問に思いました。
仮想メモリに関連するページテーブルについて私が知っていることは次のとおりです。
ユーザーが Windows OS (32 ビット) で「A」プロセスと呼ばれるプロセスを実行したとします。
まず、OS は A プロセス用に 4GB の仮想アドレス空間を作成して維持します。
(そのうちの 2GB はカーネル アドレス空間で、残りの 2GB はユーザー アドレス空間です。
ユーザー アドレス空間のコードは、カーネル アドレス空間に直接アクセスできません。)
次に、OS は物理メモリ内に A プロセス用のページ テーブルを作成して維持し、仮想メモリ アドレスを物理メモリ アドレスにマップします。
これが私の質問です。
OS が A プロセスのページ テーブルを作成した後、ユーザーがソース コードから間接的にページ テーブルにアクセスできるように、このページ テーブルは A のカーネル アドレス空間にマップされますか?
または、ページ テーブルは A の仮想アドレス空間のいずれにもマップされず、物理メモリにのみ存在するため、ユーザーはページ テーブルにアクセスできませんか?