私はWindowsシステムプログラミングを行っていて、ソースコードレベルでプロセスのページテーブルにアクセスできるかどうか疑問に思っていました。プロセスのページテーブルがカーネルアドレス空間にマップされていますか?
ここで私は仮想メモリに関連するページテーブルについて知っています。
ユーザーがWindows OS(32ビット)で 'A'プロセスと呼ばれるプロセスを実行しているとします。
まず、OSは、プロセス用に4GBの仮想アドレス空間を作成し、維持します。
(それは2GBのカーネルアドレス空間であり、他の2ギガバイトのユーザアドレス空間である。
ユーザアドレス空間内の任意のコードが直接カーネルアドレス空間にアクセスすることはできません。)
そして、OSが作成および維持します仮想メモリアドレスを物理メモリアドレスにマッピングするための、物理メモリ内のAプロセス用のページテーブル。
ここは私の質問です。
OSがAプロセスのページテーブルを作成した後、このページテーブルはAのカーネルアドレス空間にマップされているため、ユーザーはソースコードから間接的にページテーブルにアクセスできますか?
ページテーブルがAの仮想アドレススペースのいずれにもマッピングされていませんが、物理メモリ内にのみ存在するため、ユーザーはページテーブルにアクセスできません。
私は、Windowsに関するメモリ実装に関する質問であり、直接的なプログラミング関連ではないので、この質問を議論の対象外としています。 –
@ DanielA.White申し訳ありませんが、プログラミング中にページテーブルにアクセスする方法を見つけようとしていました。私はその投稿を編集して追加しました。 – Joon
この文脈では、「ソースコードレベル」という語句は意味をなさない。あなたが何を求めているのか分かりません。 –