2014-12-04 114 views
0

我給出的以下信息:頁表尺寸

虛擬地址:32位

物理地址:30個比特

頁面大小:8 KB

頁表項:4字節

我想要計算頁表的大小。頁表大小是通過使用虛擬地址空間還是物理地址空間來計算的?

虛擬:
2^32/2^13 = 2^19頁* 2^2入口尺寸= 2^21頁表尺寸

物理:
2 ^二分之三十○^ 13 = 2^17頁* 2^2條目大小= 2^19頁表大小

由於地址大小的差異,我不確定物理內存地址空間是否會約束較大的虛擬地址空間。

鑑於問題提供的信息有限,我非常感謝任何一種方法的幫助。

+1

類似主題? [questions/4029838/determine-page-table-size-for-virtual-memory](https://stackoverflow.com/questions/4029838/determine-page-table-size-for-virtual-memory) – 2014-12-04 18:18:59

+1

問問自己什麼一個頁表被用於。提示:它既可以將虛擬頁面映射到物理頁面,也可以將物理頁面映射到虛擬頁面(但通常不是兩者)。如果你知道哪些是正確的,那麼應該告訴你需要多少個單獨的映射來覆蓋整個地址空間,並且從那裏你可以計算出整個頁面表佔用的內存量...... – twalberg 2014-12-04 18:41:52

+0

不幸的是,不知道哪些是正確的。我的猜測是,表的大小隻需要適應物理地址空間。 – FantasticSponge 2014-12-04 18:52:56

回答

1

無論誰給了你這個問題,給你一個沒有答案。人們不斷重複地問這個同樣的問題。我很想知道源代碼。

該問題反映了對頁表結構的基本理解不足。

如果沒有系統地址空間,就不可能實現頁表。這個問題沒有解釋地址空間是如何分解的,因爲用戶和系統。這使問題變得毫無意義。

如果頁面本身是可分頁的,則物理限制不會影響頁面大小。

虛擬限制只是限制。頁表不必(並且很少)跨越整個虛擬地址空間。虛擬地址空間只會爲大小設置高端。

我當然希望這個問題不在教科書中。

1

物理地址大小(30位)是一個紅色的鯡魚。

如果你有32位虛擬地址,每頁是8KB(2^13),那麼需要2 ^(32-13)頁來存儲每個虛擬地址。

頁表的大小是2 ^(32-13)=由每個條目的字節數mulitplied 2^19頁地址,因此:

頁表大小=(2^19)* 4 = 2 MB

2^19 * 1個字節爲1/2 MB

編輯: 要回答你的問題,你用的虛擬地址空間。