为了账号安全,请及时绑定邮箱和手机立即绑定

为什么在64位虚拟地址与物理地址(52位长)相比,4位短(48位长)?

为什么在64位虚拟地址与物理地址(52位长)相比,4位短(48位长)?

MM们 2019-09-03 16:59:53
在“低级编程:英特尔®64架构上的C,汇编和程序执行”一书中,我读到:每个虚拟64位地址(例如,我们在程序中使用的地址)由几个字段组成。地址本身实际上只有48位宽; 它被符号扩展为64位规范地址。它的特点是它的17个左位是相等的。如果不满足条件,则在使用时立即拒绝该地址。然后借助特殊表将48位虚拟地址转换为52位物理地址。为什么虚拟地址和物理地址之间的差异为4位?
查看完整描述

4 回答

?
weixin_慕少0359847

TA贡献1条经验 获得超0个赞

因为虚拟地址地址空间是某个进程的地址空间。
虚拟地址和物理地址偏移量字段一样。但虚拟地址的页号长度小于物理地址,因为表示范围不同嘛。

查看完整回答
反对 回复 2019-12-10
?
MMTTMM

TA贡献1869条经验 获得超4个赞

您说:“只使用9位运行来索引每个级别的表”,然后再描述虚拟地址组件。但作者表示,对于每个表索引都使用12位(加起来为48位)而不是9位。我只是说如果有什么好的东西来自这个观察。其他位是一个符号位,其他17位(加上64位)必须等于不丢弃的地址,如我的书中引用的那样。作者将架构描述为“Intel 64架构:也称为x86_64和AMD64” 

查看完整回答
反对 回复 2019-09-03
?
拉丁的传说

TA贡献1789条经验 获得超8个赞

即使是2MB的页面并不可怕; 汉斯甚至建议4M可能没问题。(这是x86-32巨大的页面大小。)而BTW,只有像数据库这样的高性能软件才会将非易失性存储DIMM映射到自己的虚拟地址空间,相当于直接IO。其他一切都将通过文件系统。或者如果它足够快(或DRAM有限/不存在),OS可以mmap(PROT_READ|PROT_EXEC)通过将非易失性存储直接映射到1G / 2M / 4k页来满足请求。将映射限制为2M的2M对齐倍数将是一个全面的胜利。

查看完整回答
反对 回复 2019-09-03
  • 4 回答
  • 0 关注
  • 1541 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信