我目前正在研究如何通过分页将虚拟地址映射到物理地址,当物理地址的长度=虚拟地址的长度时,它是有意义的,例如:
如果我们有32位虚拟和物理地址,页面大小为4KB,那么我们的页面偏移量将是12位,而我们的PPN和VPN都是20位。
但是,如果我们的物理地址长度不同,那么假设物理地址为12位,虚拟地址为16位,128B页面大小。我们的偏移量为7位,留下5位PPN和9位VPN。
这是对的吗?如果是这样,那么你将如何做映射呢?您是否只需要获取VPN的前5位并将其索引到页表中并立即找到正确的页面,同时完全忽略剩余的4位?
答案 0 :(得分:0)
你这里搞砸了什么。页表条目由页面帧偏移和一些控制位组成。
如果您有一个32位的4KB页面,则您的逻辑地址是20位虚拟页面索引和12位字节偏移。
如果您的硬件使用12位作为控制位,则逻辑和物理地址的长度相同。如果您的硬件使用少于12位的偏移量,它可以使用额外的位来索引物理页面帧。在这种情况下,物理寻址大于逻辑寻址。