在“低級編程:英特爾?64架構上的C,匯編和程序執行”一書中,我讀到:每個虛擬64位地址(例如,我們在程序中使用的地址)由幾個字段組成。地址本身實際上只有48位寬; 它被符號擴展為64位規范地址。它的特點是它的17個左位是相等的。如果不滿足條件,則在使用時立即拒絕該地址。然后借助特殊表將48位虛擬地址轉換為52位物理地址。為什么虛擬地址和物理地址之間的差異為4位?
4 回答

MMTTMM
TA貢獻1869條經驗 獲得超4個贊
您說:“只使用9位運行來索引每個級別的表”,然后再描述虛擬地址組件。但作者表示,對于每個表索引都使用12位(加起來為48位)而不是9位。我只是說如果有什么好的東西來自這個觀察。其他位是一個符號位,其他17位(加上64位)必須等于不丟棄的地址,如我的書中引用的那樣。作者將架構描述為“Intel 64架構:也稱為x86_64和AMD64”

拉丁的傳說
TA貢獻1789條經驗 獲得超8個贊
即使是2MB的頁面并不可怕; 漢斯甚至建議4M可能沒問題。(這是x86-32巨大的頁面大小。)而BTW,只有像數據庫這樣的高性能軟件才會將非易失性存儲DIMM映射到自己的虛擬地址空間,相當于直接IO。其他一切都將通過文件系統?;蛘呷绻銐蚩欤ɑ駾RAM有限/不存在),OS可以mmap(PROT_READ|PROT_EXEC)
通過將非易失性存儲直接映射到1G / 2M / 4k頁來滿足請求。將映射限制為2M的2M對齊倍數將是一個全面的勝利。
- 4 回答
- 0 關注
- 1635 瀏覽
添加回答
舉報
0/150
提交
取消