假设如下。我有一个带有虚拟内存和一个杠杆分页的系统,我有一个 MMU,TLB 是由软件控制的。
好的..所以想象我是一个进程,我想在虚拟地址 vaddr 的 RAM 中读取一个单词。
因此,CPU 给出了 MMU vaddr,MMU 在 TLB 中检查是否存在(假设)5 个最高有效位 vaddr 的条目。如果它在那里......一切都很好,它会计算物理地址并且一切正常。
现在..假设它不在 TLB 中。在这种情况下,MMU 会产生中断(页面错误)。好的..现在我在页面错误的处理程序中。
在 PBR(页基址寄存器)中,我有页表的起始地址。我的问题在这里。这个地址是物理地址吗?我想是的,因为如果它是虚拟的,则意味着两件事:1)必须以某种方式保留在进程的虚拟地址空间中(从未听说过类似的东西)2)如果该地址不在 TLB 中,会导致再次页面错误,我将有一个无限循环。
关于表中地址的相同问题。如果我有两级分页。第一级表(指向第二级表)中的条目中的地址是虚拟的还是物理的?
谢谢。