虛擬記憶體
分頁表項(page-table entry)
如果分頁表是管理員的主目錄,那麼分頁表項(page-table entry,PTE)就是其中一列——一筆描述一個虛擬分頁的記錄。每一列把硬體要轉換該頁、並管控對它的存取所需知道的一切都打包在一起。理解 PTE 裡住著哪些位元,就是以縮影理解整份虛擬記憶體契約。
具體來說,分頁表項通常存著一個實體頁框號(這頁若在記憶體中,住在哪裡)加上一組狀態與控制位元。最重要的是有效位元(或稱存在位元):若它是 0,這頁不在記憶體中,任何存取都會引發錯誤。保護位元說明這頁可否讀、寫、執行(以及使用者模式程式到底能不能碰它)。髒位元(dirty bit)記錄這頁自載入後有沒有被修改(讓作業系統知道逐出前必須先寫回儲存裝置)。參考位元(或稱存取位元)記錄這頁最近有沒有被用到,供替換決策參考。某些位元也控制該頁的快取行為。
為何重要:PTE 是虛擬記憶體的原子——每一次保護檢查、每一次錯誤、每一次替換決策,都在讀或寫某個 PTE 裡的位元。它也是硬體與作業系統交會最緊密之處:硬體在每次存取時自動讀頁框號、檢查有效與保護位元,而作業系統設定所有位元並週期性地清除參考位元以追蹤使用狀況。一個微妙但重要的點:硬體在更新髒位元與參考位元時必須小心,好讓作業系統看到一致的視角。
一個 PTE 可能寫著:頁框 = 0x1F7、有效 = 1、可寫 = 0、使用者 = 1、髒 = 0、已存取 = 1——意思是「這頁存在於頁框 0x1F7,使用者程式可讀,唯讀,未被寫過,最近用過」。
一個 PTE 把頁框號與有效、保護、髒、參考位元捆在一起。
當有效位元為 0 時,項目的其餘部分可由作業系統自由挪用——例如儲存該頁目前所在的磁碟位置,好讓分頁錯誤確切知道要從哪裡取回。
又称
另见