假设如下所示。我有一个带有虚拟内存和一个杠杆分页的系统,我有一个MMU,TLB是由软件控制的。
好的..。假设我是一个进程,我想读取虚拟地址为vaddr的RAM中的一个字。
因此,CPU给MMU vaddr,MMU在TLB中检查是否存在具有(假设) vaddr的5个最高有效位的条目。如果它在那里。一切都很好,它会计算物理地址,一切都很顺利。
现在.。假设它不在TLB中。在这种情况下,MMU会产生中断(页面错误)。好的..。现在我负责处理页面错误。
在PBR (页基址寄存器)中,我有页表起始地址。我的问题在这里。这个地址是物理地址吗?我想是的,因为如果它是虚拟的,意味着两件事: 1)必须以某种方式保留在进程的虚拟地址空间中(从来没有听说过这样的事情) 2)如果这个地址不在TLB中,将再次引起一个页面缺省,我将有一个无限循环。
表中的地址也有同样的问题。如果我有两级寻呼的话。第一级表(指向第二级表)中条目中的地址是虚拟的还是物理的?
谢谢。
发布于 2010-07-16 04:22:13
家庭作业?
在任何情况下,这类事情在CPU的体系结构手册中都有详细的描述(您甚至还没有编写您正在讨论的CPU- x86不会在TLB未命中时生成页面错误)。
发布于 2020-01-02 14:07:19
正如@zvrba指出的那样,行为是由CPU实现定义的,所以这个问题本身是无法回答的。
不过,需要考虑的一般问题是:
在PBR (页基址寄存器)中,我有页表起始地址。我的问题在这里。这个地址是物理地址吗?
1)必须以某种方式保留在进程的虚拟地址空间中
2)如果这个地址不在TLB中,将再次导致一个页面缺省,并且我将有一个无限循环
顺便说一下,TLB表通常映射到虚拟地址空间中,这就是操作系统为应用程序映射/取消映射内存页的方式。
如果我使用两级分页,则为
。第一级表(指向第二级表)中条目中的地址是虚拟的还是物理的?
无论有多少层,
我有一个带有虚拟内存的系统,带有one杠杆分页...因此,CPU给MMU vaddr,MMU在TLB中检查是否存在具有(假设) vaddr的5个最高有效位的条目
https://stackoverflow.com/questions/3259619
复制相似问题