ユーザーがページテーブルにアクセスする方法

ユーザーがページテーブルにアクセスする方法

ユーザー モードでのアドレス変換はどのように行われますか? ユーザーが別のページ テーブルを持っている場合、これらはどこに保存されますか? さらに、ハードウェア ページ テーブル ウォーク メカニズムを備えたシステムでは、ユーザーはカーネル アドレス空間に保存されているページ テーブルにどのようにアクセスするのでしょうか?

答え1

カーネルは各プロセスのページ テーブルを設定します。仮想アドレスから物理アドレスへのマッピングは、ハードウェアのメモリ管理ユニット (MMU) によって行われます。これは、ユーザー モード コードに対して透過的に行われます。ユーザー モードではページ テーブルは変更されず、カーネルにのみ表示されます。

プロセスの仮想アドレス空間は、異なるプロパティを持つ領域に分割されています。一部の領域は読み取り専用、一部の領域は読み取り/書き込み可能で、通常、ほとんどの仮想アドレスにはマッピングがありません。アクセス違反はカーネルによって処理されます。たとえば、プロセスが物理メモリ フレームにマッピングされていないメモリ位置にアクセスすると、例外が発生します。この例外 (トラップ) はカーネル コードによって処理され、プロセスを強制終了したり、プロセスにシグナルを送信したり、カーネルが透過的にページのマッピングを作成したりできます。

ページがスワップ アウトされているため、透過的に (ユーザー モード コードに対して) ページのマッピングが行われることがあります。この場合、いわゆるページ フォールト ハンドラーが、ページを空き物理 RAM フレームにマッピングし、ページがスワップ領域から読み込まれるように手配します。ページが復元されると、プロセスは再度実行されるようにスケジュールされ、プロセスは何も起こらなかったかのように実行を継続できます。

関連情報