2008-12-12 144 views
0

我被困在這個問題上,我正在爲明天的考試而學習。 (我理解虛擬地址,物理地址,頁面幀,地址總線等的概念)虛擬地址大小計算

如果你使用128K RAM和32位地址總線的4K頁面,虛擬地址有多大?你有多少常規頁面框架?

編輯:我相信答案是2^32和2^20。我只是不知道如何計算這個。

回答

6

您的回答完全正確。

使用32位地址總線,您可以訪問2^32個唯一地址的虛擬空間。每個4K頁面使用2^12(物理)地址,因此您可以將(2^32)/(2^12)= 2^20個頁面放入空間。

祝您考試順利!


編輯以解決問題的意見:

你怎麼知道你不能訪問超過2^32個地址?

32位地址總線意味着有32條線連接到RAM上的地址引腳 - 每條線都由其中一個位表示。根據相應位是1還是0,每條導線保持在高電壓或低電壓,並且由32位值(例如0xFFFF0000)表示的1和0的每個特定組合選擇相應的存儲器位置。使用32根電線時,地址引腳上有2^32個獨特的電壓組合,這意味着您可以訪問2^32個位置。

那麼4K頁面大小呢?

如果系統頁面大小爲4K,則意味着每個頁面的RAM芯片有12個地址位(因爲2^12 = 4K)。如果你的假設系統有128K的RAM,你需要128K/4K = 32頁或者一組RAM芯片。因此,您可以使用12位來選擇每個芯片上的實際地址,方法是將相同的12條電線路由到每個RAM芯片上的12個地址引腳。然後再使用5根電線來選擇其中32個頁面中的哪一個包含您想要的地址。我們使用12 + 5 = 17個地址位來訪問2^17 = 128K的RAM。

讓我們走最後一步,想象一下128K的RAM駐留在存儲卡上。但是對於32位地址總線,您仍然有32-17 = 15個地址位!您可以使用那些位選擇2^15 = 32768個存儲卡中的一個,從而爲您提供2^32 = 4G RAM的總虛擬地址空間。

這是超越RAM和存儲卡有用嗎?

通常的做法是將大量位(如地址中的位)分成較小的子組,以使其更易於管理。有時由於物理原因而分開,如地址引腳和存儲卡;其他時候則是出於邏輯原因,例如IP地址和子網。其優點在於實現細節與最終用戶無關。如果你訪問地址爲0x48C7D3AB的存儲器,只要存在一個存儲單元,你就不關心它所在的RAM芯片,或者存儲器的排列方式。當你瀏覽到67。199.15.132,只要它接受你的upvotes,你就不在乎計算機是否在C類子網上。 :-)

+0

我以爲虛擬地址可能比物理地址大。你怎麼知道你不能訪問超過2^32個唯一地址? – titaniumdecoy 2008-12-12 04:18:16