CPU怎么找到真实地址

图例

在这里插入图片描述

确定页目录基址

每个CPU都有一个页目录基址寄存器,在x86上,这个寄存器是cr3

每次计算物理地址时,mmu都会从cr3寄存器中取出页目录所在的物理地址

定位页目录项(PDE)

一个32位的虚拟地址可以拆成10位,10位和12位3段,上一步找到页目录表基址加上高10位的值乘以4,就是页目录项的位置

一个页目录项正好是 4 字节,所以 1024 个页目录项共占据 4096 字节,刚好组成一页,而 1024 个页目录项需要 10 位进行编码

定位页表项(PTE)

页目录项记录着页表的位置,CPU通过页目录找到页表的位置以后,再用中间10位计算页表中的偏移,可以找到该虚拟地址锁对应的页表项

页表项也是 4 字节的,所以一页之内刚好也是 1024 项,用 10 位进行编码

所以计算公式与上一步相似,用页表基址加上中间 10 位乘以 4,可以得到页表项的地址

确定真实的物理地址

上一步 CPU 已经找到页表项了,这里存储着物理地址,这才真正找到该虚拟地址所对应的物理页

虚拟地址的低 12 位,刚好可以对一页内的所有字节进行编码,所以我们用低 12 位来代表页内偏移

计算的公式是物理页的地址直接加上低 12 位

  • 13
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
VMware是一种虚拟化软件,它允许用户在一台主机上同时运行多个虚拟计算机。在使用VMware时,有时候我们需要修改虚拟机的CPU ID。 在VMware中,虚拟机的CPU ID是由软件模拟的,而不是真实的物理CPU。修改CPU ID可以带来一些好处,比如欺骗某些软件程序认为虚拟机是不同的计算机,从而绕过一些限制或者提高性能。 要修改虚拟机的CPU ID,我们可以按照以下步骤进行: 1. 首先,打开VMware虚拟机管理器,在虚拟机列表中选择要进行修改的虚拟机。 2. 然后,在虚拟机的设置中,选择“处理器”选项卡。在“处理器信息”下方,找到“高级选项”按钮,并点击它。 3. 在弹出的对话框中,找到CPUID.mask”或者“cpuid.coresPerSocket”选项。这些选项允许我们修改CPU ID。 4. 如果找到了“CPUID.mask”选项,在它的值中输入16进制数,以修改CPU ID。例如,如果原始CPU ID是0000abcd,我们可以将其改为0000efgh,其中efgh是我们自己设定的新的ID。 5. 如果找到了“cpuid.coresPerSocket”选项,我们可以通过修改其值,来改变CPU ID。例如,如果原始值是1,我们可以将其改为2或其他数字。 6. 修改完毕后,点击“确定”保存设置,然后关闭虚拟机管理器。 注意,修改虚拟机的CPU ID可能会对虚拟机的性能和稳定性产生影响,所以在修改之前请谨慎考虑,并根据实际需求做出决定。此外,修改CPU ID可能会违反软件的许可协议,请确保合法使用虚拟机和相关软件。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值