处理器如何知道页面未在主内存中映射但在后备存储中?
问题描述:
在X86体系结构中,处理器如何知道页面未在主内存中映射,但在后台存储中,它们是否是页表项中的一个标志,指示或仅在转换为物理地址之后处理器实现帧的位置? 根据我的理解,当页结构条目中的'P'标志被设置时,它表示逻辑地址的有效映射不存在,并且出现Page fault,当映射存在但页面在后备存储比页面错误发生并且页面被交换到内存中并且页表项被修改。处理器如何知道页面未在主内存中映射但在后备存储中?
答
我想你是指HARD页面错误VS SOFT页面错误。 如果硬页面错误将被解雇:
- P(重发)标志未设置/页表条目不存在
- 用户模式代码写只读存储器
- 用户模式代码访问内核内存
- 页条目保留位已损坏。
软页面错误将触发如果页面存在,但在内存其他洁具(也许在不同的工作组或离开工作集)
http://blogs.technet.com/b/askperf/archive/2008/06/10/the-basics-of-page-faults.aspx http://en.wikipedia.org/wiki/Page_fault(未成年人VS大)
希望对你有所帮助:)
感谢您的回复,我正在谈论重大页面错误(后台存储中的页面),但具体问题是硬件(处理器)如何区分主要页面错误和硬盘页面错误, ISR如何区分它们?在引发故障之前,硬件MMU必须在某个寄存器中留下提示,以帮助ISR进行区分,从而执行相应的步骤。 –
由于CPU不是管理页面调度和内存管理的CPU,CPU不知道它是软页面错误。由ISR决定它是软或硬页面错误。操作系统可以看到导致寄存器CR2故障的地址,并检查它是否被虚拟加载并移出内存 – 0xGiddi
可以做的一个诀窍是保持当前标志为0的PTE,并且PBA指向页面文件中的页面。当页面错误触发时,您可以从与PBA相对应的页面文件中加载数据并切换输入 – 0xGiddi