オペレーティングシステムが特定のプロセスのページテーブルをいつメインメモリにロードするかを知りたいです。コースが整理される時ですか?オペレーティングシステムはプロセスページテーブルをメインメモリに直接ロードできますか?
プロセッサがページに対応するページエラーを生成しない限り、何もメインメモリに入ることができないという考えがあります。ページテーブルにも同様に適用されますか?または私の概念は間違っています。
PS:Linuxベースのシステムに答えてくれてありがとう。
答え1
特定のオペレーティングシステムとプロセッサについて言及していないので、この質問に理論的に答えます。これはほとんどのUNIXシリーズシステムに適用されますが、微妙な違いがある可能性があります。
プロセスのメモリにページがある場合、ページテーブルは(カーネル)メモリに存在する必要があります。プロセスを実行するにはページテーブルを使用できる必要があり、プロセスを実行することを選択したときに有効にする必要があります。一部のシステムでは、実行中のプロセスの全ページテーブルが実際にプロセスアクティベーションの一部としてハードウェアにロードされます。他のシステムでは、ページテーブルがメモリに残り、それへのポインタがハードウェアレジスタにロードされます。
ただし、プロセスが完全に置き換えられ、もはや物理メモリが割り当てられていない場合、ページテーブルは実際にはまったく必要ありません。プログラムを実行するためにページが初めてロードされると、関連ページ表が再作成される可能性があります。一部のシステムはこの最適化を実行せず、代わりにカーネル空間の各プロセスに対してアクティブページテーブルを保持します。
しかし、上記は一般化されており、具体的な詳細は非常に多様です。詳しくはRTSLをご覧ください。
答え2
UNIXでは、MMU記述子エラーが発生した後、MMUのページテーブルエントリが「ページエラー」からロードされます。
特に言及した「ページテーブル」は通常存在しません。カーネルにはアドレス空間記述があり、MMU記述子エラーのため、通常はページテーブルエントリ(PTE)が生成され、カーネル空間から関連するRAMが割り当てられます。
MMUのPTEが限られたリソースであるという事実により、自動ローディングMMUが生成された。このようなMMUの場合、PTEより前のバックアップリポジトリは「ページテーブル」のように見えます。