Page Fault

Definition

valid-invalid bit 是 invalid 時,我們稱此情況為 page fault,此時有兩種情況:

  1. frame ID ≠ 0:該 page 目前在 backing store 裡(page fault)
  2. frame ID = 0:此 page ID 根本不合法
  • 如果是情況一,就 trap in kernel 將對應的 page swap in(page fault handling
  • 如果是情況二,就報錯

Major & Minor Page Fault

Major Page Fault

Page 被存取,但根本不在實體記憶體裡(在 disk 上)

Minor Page Fault

Page table 裡沒有這個 mapping,但 page 其實已經在記憶體裡了。不需要 disk I/O,這個狀況有兩種可能性

  1. process 第一次使用到 shared library (e.g., #include <pdf.h>)
  2. 使用 page-buffering algorithm 時被釋放的 frame 不會立即被刪除,當我們剛好要取用該 frame 時,如果那個 frame 還沒被覆寫,直接重新 map 回去就好