1

私はページングメモリ管理について勉強していましたが、ある時点で、ページテーブルの各エントリに関連するビットがあり、これに関連付けられているプロセスによってフレームが有効または無効なフレームにアクセスされるかどうかを示すことがわかりましたページテーブル。

私の質問は、プロセスに専用のページ テーブルがあり、その論理ページとメモリ内の物理フレームの間のマップに対応するエントリがある場合、フレームがエントリによって参照されているかどうかを示すために外部ビットを追加する必要があるのはなぜですか。プロセス自身のページテーブルにアクセスできるかどうか?

私自身の説明は、プロセスには、私にとっては未知の理由で、使用されないか、何らかの理由で無効になるエントリが独自のページテーブルにある可能性があるということです。

4

1 に答える 1

1

ページ テーブルのビットは、システムによって異なります。ただし、ページ テーブル エントリが対応しなければならない 3 つの状態があります。

  1. エントリは、有効な物理ページ フレーム (すべて準備完了) にマップされます。
  2. エントリは有効ですが、現在マップされている物理ページはありません (アクセスによりページ フォールトがトリガーされます)。
  3. エントリが無効です (つまり、ページがアドレス空間にマップされていません)。

これらの 3 つの状態を表すには、ページ テーブルにビット設定 (または null 値などの他の手段) が必要です。

状態 #3 を説明するために、リンカは、NULL ポインタへの参照をトラップするために、プログラムのロード時に最初のページをマップしないようにします。

于 2016-04-17T02:28:10.610 に答える