爲了排除有效,髒和參考位,僅考慮從虛擬地址空間到物理地址空間的實際「映射」,爲什麼說頁表項的大小是由引用頁面所需的位數決定的從主內存(像這裏:https://stackoverflow.com/a/14770650/3684931)爲什麼只有主內存大小才能確定頁表項的大小?
我的論點是,因爲一個物理地址也可以在輔助存儲(這是使用虛擬內存的點),一個頁表項的大小應該簡單地相等到虛擬存儲器中所有頁面中引用任何頁面所需的位數。
舉個例子,如果虛擬地址空間是可尋址的由64位,主存儲器是可尋址的48位和頁大小是16KB(14個比特尋址),頁表應該映射(64 - 14) 50位地址到(64 - 14)50位地址,而不是(48 - 14)34位地址。
它可能如果頁面存在於主存儲器中則映射到34位地址,否則,上邊界應該是50位,這應當在計算頁表的大小時考慮。
我在這裏錯過了什麼嗎?
謝謝。那麼編寫的程序是否假設他們會自己使用'2^64'字節(虛擬內存)或'2^48'字節(主內存大小)?在前一種情況下,我不明白爲什麼頁表項不應該映射到輔助存儲(爲什麼要委託給單獨的散列表?)。在後一種情況下,當程序可能僅尋址'2^34'頁面時,爲什麼在頁面表中應該有'2^50'條目。 –
程序的編寫假定它們使用2^64字節(假設編譯器,操作系統和CPU都支持64位位地址)。您希望保持較小的PTE大小,以便PTE緩存(TLB)可以很小。在PTE中提供足夠的信息以便您可以在支持存儲中找到頁面,這可以使PTE更大,從而不會增加性能。 –
@SachinHosmani - 如果我的答案適合您,請批准它。如果沒有,請讓我知道爲什麼它不令人滿意。 –