0

免責事項:この質問は私のオペレーティングシステムのクラスに関連しています。ただし、特定の宿題の質問ではありません。私はただ理解しようとしています。

これが、これまでのデマンドページングについて私が知っていることだと思います。各プロセスには、独自のページングテーブルがあります。このテーブルには、論理アドレスのインデックス、対応する物理アドレス、およびページが現在メインメモリにロードされているかどうかを示す有効/無効ビットが含まれています。

ページにアクセスするときに、有効/無効ビットが有効に設定されている場合、テーブルの論理アドレスエントリを介してメインメモリでページにアクセスするだけです。ページが物理メモリに含まれていない場合、ページフォールトが生成されます。これにより、プログラムはページをメモリにロードしようとします。

システムは最初に、要求されたアドレスが有効かどうかをチェックします。そうでない場合、プロセスは終了します。アドレスが有効な場合、システムは空きフレームをチェックします。フリーフレームが見つかった場合、システムは要求されたデータをディスクからロードし、それをフリーフレームに配置します。ページングテーブルで有効/無効ビットが有効に設定され、論理アドレスが以前に解放されたフレームに設定され、プログラムは実行を継続できます。

空きフレームが存在しない場合、システムは現在使用されているフレームを交換し、要求されたデータをフレームに配置する必要があります。システムは、スワップアウトするページを決定するためのLRU、MRUなどのアルゴリズムです。システムは古いページをスワップアウトし、新しいページをロードしてから、プロセスに制御を戻します。

これが私の質問です:フレーム全体がスワップアウトされると、このフレームにアクセスするページングテーブルの有効/無効ビットはどのように設定されますか?つまり、システムは、プロセスのページングテーブルがスワップアウトされているフレームにアクセスしていることをどのように認識しますか?

これが例です。2つのプロセスがあり、それぞれにサイズ2のページングテーブルとサイズ2の物理メモリがあるとします。プロセスのページングテーブルを次のようにします。

仮想メモリを処理します。

Address  Contents
0        'A'
1        'B'

プロセスBの仮想メモリ:

Address  Contents
0        'C'
1        'D'

ページングテーブルを処理します。

Logical  Physical  Valid/Invalid
0        0         Valid
1        0         Invalid

プロセスBのページングテーブル:

Logical  Physical  Valid/Invalid
0        1         Valid
1        0         Invalid

メインメモリ:

Address  Contents
0        'A'
1        'C'

ここで、プロセスAが論理アドレスBにアクセスしようとしたとします。システムはメインメモリアドレス1の内容をスワップアウトし、「D」でスワップします。システムは、プロセスのBページングテーブルの論理アドレス0に対して有効/無効ビットを無効に設定することをどのように認識しますか?

4

1 に答える 1

1

マッピングがまったくない(割り当て/マッピングされていない、または解放/マッピング解除された)メモリ範囲とを指すメモリ範囲を区別するために、ページテーブル自体またはOSカーネルの他の場所にさらに多くの制御フィールドがあります。スワップアウトされたメモリ位置。どちらの場合も、範囲にアクセスできず、アクセスによってページフォールトが発生しますが、これらの場合、OSはこのページフォールトを異なる方法で処理します。前者では、プロセスを終了します。後者では、データをメモリに戻し、マッピングをデータにアクセスできる状態に復元しようとします。

OSは、物理メモリのページが使用されている場所を認識しています。ページテーブルをスキャンしてそれを見つけるか、維持している独自のデータ構造を調べます。OSがプロセスからページを盗む必要がある場合は、ページを保存し(変更されている場合)、マッピングを変更して、プロセスがOSの介入なしにこのページに直接アクセスできないようにし、このページを他の場所で再利用します。プロセスがデータにアクセスできるように、適切なデータを入力して適切にマッピングすることにより、異なるプロセス。

于 2012-04-15T08:47:02.180 に答える