【发布时间】:2011-03-16 15:14:25
【问题描述】:
假设如下。我有一个带有虚拟内存和一个杠杆分页的系统,我有一个 MMU,TLB 是由软件控制的。
好吧..想象一下我是一个进程,我想在虚拟地址 vaddr 的 RAM 中读取一个字。
因此,CPU 提供了 MMU vaddr,MMU 检查 TLB 中是否存在(假设)5 个最高有效位 vaddr 的条目。如果它在那里...一切正常,它会计算物理地址,一切正常。
现在.. 假设它不在 TLB 中。在这种情况下,MMU 会产生中断(页面错误)。 好的..现在我在页面错误的处理程序中。
在 PBR(页基址寄存器)中,我有页表的起始地址。 我的问题在这里。这个地址是物理地址吗?我想是的,因为如果它是虚拟的,则意味着两件事: 1)必须以某种方式保留在进程的虚拟地址空间中(从未听说过类似的东西) 2)如果这个地址不在TLB中,会再次引起页面错误,我将有一个无限循环。
关于表格中地址的相同问题。如果我有两级分页。一级表中的条目中的地址(指向二级表)是虚拟的还是物理的?
谢谢。
【问题讨论】:
标签: operating-system paging memory-address tlb