2013-11-24 74 views
0

我想回答這個問題:爲什麼頁面大小等於內存地址的偏移量?計算機如何確定在虛擬內存中寫入的位置?

是因爲計算機從頁表中確定頁碼,然後乘以偏移量以確定從哪裏開始寫入?我認爲這是唯一可能的合理解釋,但我不確定,因爲導師無法回答我。另外,如果你有一個64位可尋址存儲器,偏移需要14位,是不是浪費了14位?你可以分配你的數據到更多的內存位置沒有偏移量,我說得對嗎?

+1

您的導師_couldn't_ answer you?獲得更好的導師! – 2013-11-24 00:46:30

+0

是的,我甚至不知道爲什麼我付了錢。 – user28464

+1

這個問題並沒有意義。請在http://en.wikipedia.org/wiki/Virtual_memory查看Jimbo的大袋小事 –

回答

0

由於偏移量是未翻譯的虛擬地址的唯一部分(在此翻譯意味着該值發生變化)爲物理地址。粗略地說,虛擬地址由基地址和偏移量組成。基地址被翻譯成物理頁面開始的地址。必須調整這些頁面的大小,以便與原始虛擬地址的偏移位於該頁面內。這就是頁面大小-1等於最大偏移量的原因。

例如:在使用具有4MB頁的表的x86系統上(頁描述符的位7上的屬性PS爲1),基地址由10個最高有效位形成,其指向可能的1024個頁條目之一在Page目錄中。每個條目都是32位長(一個頁面描述符)。如果頁面描述符指向如圖所示的4MB頁面,則有一個字段將該4MB頁面的第一個物理地址存儲到物理內存中(通常稱爲頁面框架)。

在該頁框中,需要22個偏移量來尋址頁面中的所有和每個單個字節。該偏移量直接來自虛擬地址的22個較低有效位。