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

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

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

ベストアンサー1

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

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

ページが置き換えられたため、透過的に(ユーザーモードコードに)ページマッピングが発生する可能性があります。この場合、いわゆるページエラーハンドラがページを使用可能な物理RAMフレームにマッピングし、ページがスワップ空間から読み出されるように準備する。ページが復元されると、プロセスが再度実行されるようにスケジュールされ、何も起こらなかったかのようにプロセスが実行され続けることがあります。

おすすめ記事