假设以下内容。我有一个虚拟内存系统,一个杠杆分页,我有一个MMU,TLB的东西是由软件控制的。
好的..所以想象一下我是一个进程,我想在虚拟地址vaddr的RAM中读一个字。
因此,CPU给出MMU vaddr,MMU检查TLB是否存在具有(假设)vaddr的5个最高有效位的条目。如果它在那里......一切正常,它会计算物理地址,一切正常。
现在..假设它不在TLB中。在这种情况下,MMU发出中断(页面错误)。 好的..现在我处于页面错误的处理程序中。
在PBR(页面基址寄存器)中,我有页表开头的地址。 我的问题在这里。这个地址是实体的吗?我想是的,因为如果它是虚拟的,则意味着两件事: 1)必须以某种方式保留在进程的虚拟地址空间中(从未听说过类似的东西) 2)如果这个地址不在TLB中,那么会再次出现页面错误,我会有一个无限循环。
关于表格中的地址的相同问题。如果我有两级分页。第一级表(指向第二级表)中的条目中的地址是虚拟的还是物理的?
感谢。
答案 0 :(得分:3)
作业?
在任何情况下,CPU的架构手册中都详细描述了这些内容(你甚至没有写过你正在谈论的CPU - x86在TLB未命中时不会产生页面错误。)
答案 1 :(得分:0)
行为是由CPU实现定义的,因此这个问题本身是无法回答的。
一般要考虑的事项:
在PBR(页面基址寄存器)中,我有页面表起始地址。我的问题在这里。这个地址是物理地址吗?
1)必须以某种方式保留在流程的虚拟地址空间中
2)如果该地址不在TLB中,将再次导致页面错误,并且我将发生无限循环
如果我有两级分页。在第一级表(指向第二级表)中的条目中的地址是虚拟的还是物理的?
我有一个带有虚拟内存的系统,该内存具有一个杠杆分页...因此,CPU提供了MMU vaddr,MMU在TLB中检查是否有(假设)最多5个条目vaddr的有效位