我发现了这个问题,但我无法弄清楚如何解决它。
您正在为新处理器设计内存管理单元(MMU)。处理器有一个字 64位的大小和指针的大小也是64位。 设计的以下部分已经确定:
• MMU将支持32kB的页面大小 • 它将使用3级分层页表执行地址转换 • 与x86计算机一样,页表的任何级别的每个表都占用一个页面 物理记忆级别3是根表,包含保存物理广告的条目 2级桌子的连衣裙。级别2表条目类似地指向级别1表和级别1表 条目指向物理页面或框架 • 所有页表条目的大小均为64位 • 物理地址空间的大小限制为52位(4096太字节),这应该足够了 暂时。
这个问题的其余部分是关于这些设计决定的后果 问题:每个页面表页面中有多少条目?展示你的工作。
经过一些阅读后,我发现给定页面大小P=2^p
和虚拟地址大小n
,我们有一个p
位的虚拟页面偏移量(VPO)和虚拟页面(n-p)
位的数量。这样,1级页表中的PTE数量为:
2^n / 2^p = 2^(n-p)
在k
级别的页面表中,我需要将VPN拆分为k
个不同的VPN,根据我的理解,这些VPN的长度都是(n-p)/k
。这意味着每个页面表中的PTE数量为2^((n-p)/k)
。
现在,就我而言,我有P = 32kB = 2^15
。这给了我一个15位的VPO。我缺少的是虚拟地址大小n
我知道字和指针的大小是64位。我可以假设虚拟地址是64位宽吗?在这种情况下,我会获得49/3
位VPN,但49
不能被3
整除。