3

仮想アドレスがページテーブルに見つからない場合、カーネルは仮想アドレスをどのように変換しますか? ページはディスク上にありますが、カーネルはどこを正確に認識しているのでしょうか? (ディスク内の特定のアドレス)

ありがとう

4

1 に答える 1

5

プログラムがアドレスにヒットし、それがページ テーブルに存在しない場合は常に、CPU 例外 14 (ページ フォールト) がカーネルに割り込みます。
制御は、ページ フォールト ハンドラーを呼び出すカーネル IDT ハンドラーに転送されます。
ページ フォールト CR2 レジスタをチェックし、必要かどうかを判断します。

  1. PF をプログラムに送信 (セグメンテーション フォールト)
  2. メモリを割り当てる
  3. ディスクからメモリにページをスワップする

Send PF to Program (Segmentation Fault) : プログラムがメモリ アドレスに不正なアクセスを行っている場合にのみ、ハンドラーはこれを選択します。

メモリの割り当て: これは通常、プログラムが (sbrk によって) 割り当てられたメモリ領域にアクセスするが、OS がページ フレームを割り当てなかった場合に発生します。

ページをディスクからメモリにスワップ: OS が検出した場合、このページは既に割り当てられており、ディスクにスワップされています (これはビット フラグで追跡できます)。ページ ファイル マネージャー (ディスク上) にコンテンツを取得するようにすばやく要求します。それが取得されると、OS はそれを新しいページ フレームにコピーし、ページ テーブルに適切なエントリを作成します。

注: 回答は x86/x86_64 プロセッサ専用です。

于 2016-06-22T16:56:08.853 に答える