免責事項:この質問は私のオペレーティングシステムのクラスに関連しています。ただし、特定の宿題の質問ではありません。私はただ理解しようとしています。
これが、これまでのデマンドページングについて私が知っていることだと思います。各プロセスには、独自のページングテーブルがあります。このテーブルには、論理アドレスのインデックス、対応する物理アドレス、およびページが現在メインメモリにロードされているかどうかを示す有効/無効ビットが含まれています。
ページにアクセスするときに、有効/無効ビットが有効に設定されている場合、テーブルの論理アドレスエントリを介してメインメモリでページにアクセスするだけです。ページが物理メモリに含まれていない場合、ページフォールトが生成されます。これにより、プログラムはページをメモリにロードしようとします。
システムは最初に、要求されたアドレスが有効かどうかをチェックします。そうでない場合、プロセスは終了します。アドレスが有効な場合、システムは空きフレームをチェックします。フリーフレームが見つかった場合、システムは要求されたデータをディスクからロードし、それをフリーフレームに配置します。ページングテーブルで有効/無効ビットが有効に設定され、論理アドレスが以前に解放されたフレームに設定され、プログラムは実行を継続できます。
空きフレームが存在しない場合、システムは現在使用されているフレームを交換し、要求されたデータをフレームに配置する必要があります。システムは、スワップアウトするページを決定するための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に対して有効/無効ビットを無効に設定することをどのように認識しますか?