仮想アドレスがページテーブルに見つからない場合、カーネルは仮想アドレスをどのように変換しますか? ページはディスク上にありますが、カーネルはどこを正確に認識しているのでしょうか? (ディスク内の特定のアドレス)
ありがとう
仮想アドレスがページテーブルに見つからない場合、カーネルは仮想アドレスをどのように変換しますか? ページはディスク上にありますが、カーネルはどこを正確に認識しているのでしょうか? (ディスク内の特定のアドレス)
ありがとう
プログラムがアドレスにヒットし、それがページ テーブルに存在しない場合は常に、CPU 例外 14 (ページ フォールト) がカーネルに割り込みます。
制御は、ページ フォールト ハンドラーを呼び出すカーネル IDT ハンドラーに転送されます。
ページ フォールト CR2 レジスタをチェックし、必要かどうかを判断します。
Send PF to Program (Segmentation Fault) : プログラムがメモリ アドレスに不正なアクセスを行っている場合にのみ、ハンドラーはこれを選択します。
メモリの割り当て: これは通常、プログラムが (sbrk によって) 割り当てられたメモリ領域にアクセスするが、OS がページ フレームを割り当てなかった場合に発生します。
ページをディスクからメモリにスワップ: OS が検出した場合、このページは既に割り当てられており、ディスクにスワップされています (これはビット フラグで追跡できます)。ページ ファイル マネージャー (ディスク上) にコンテンツを取得するようにすばやく要求します。それが取得されると、OS はそれを新しいページ フレームにコピーし、ページ テーブルに適切なエントリを作成します。
注: 回答は x86/x86_64 プロセッサ専用です。