Page Fault
Definition
當 valid-invalid bit 是 invalid 時,我們稱此情況為 page fault,此時有兩種情況:
- frame ID ≠ 0:該 page 目前在 backing store 裡(page fault)
- 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,這個狀況有兩種可能性
- process 第一次使用到 shared library (e.g.,
#include <pdf.h>) - 使用 page-buffering algorithm 時被釋放的 frame 不會立即被刪除,當我們剛好要取用該 frame 時,如果那個 frame 還沒被覆寫,直接重新 map 回去就好