【问题标题】:What is meant by invalid page table entry?无效页表条目是什么意思?
【发布时间】:2015-01-06 09:02:03
【问题描述】:

来自维基百科:

页表查找失败可能有两个原因。第一种是虚拟地址没有可用的转换,这意味着虚拟地址是无效的。

此外,如果每个进程都有自己的页表,这意味着页表中的条目都会有一些从虚拟地址到物理地址的转换。那么页表条目无效是什么意思呢?如果条目存在,则表示翻译存在,因为条目只是从虚拟地址到物理地址的映射。

【问题讨论】:

  • 您在章节en.wikipedia.org/wiki/Page_table#Translation_failures 中的引用被剪掉了。文章谈到虚拟地址无效。与页表条目无效无关。此外,进程拥有自己的页表这一事实并不意味着页表覆盖了整个(可能非常非常大)虚拟内存。 wiki.osdev.org/Page_table#Page_Faults 还说“..当进程试图访问未映射到任何物理内存的虚拟内存区域时,会导致页面错误异常..
  • PTE 格式通常有一个有效位指示翻译是有效的(可以使用其他机制,例如拒绝所有权限;单个有效位更简单,并允许操作系统使用 PTE 的其余部分用于存储信息)。 PTE 的存在并不意味着翻译是有效的。
  • 这个问题有可能,但我不知道它的措辞是否正确。

标签: operating-system cpu-architecture virtual-memory tlb


【解决方案1】:

恕我直言,维基百科条目并未处理所有情况。对于给定的虚拟地址,转换的第一步是找到相应的页表条目。

问题1:页表项可能根本不存在。操作系统可能会限制页表大小,使其不覆盖整个虚拟地址范围,并且指定的地址超出该范围。这也可能发生在未填写所有级别的多级页表中。

问题2:页表项存在,但该页尚未映射到虚拟地址空间。

{前两个最有可能被归类为无效页表项)

问题3:页面不在物理内存中[页面错误]。

问题 4:请求的访问类型在当前处理器模式下是不允许的。 例如,用户模式写入只允许用户模式读取的页面; 内核模式执行到只允许读写的页面。

【讨论】:

  • 如果一个页面有一个页表条目,那不是给它一个虚拟地址吗? (问题2)
  • 问题是有一个页表项是什么意思?是否只有页表条目的可用插槽或表已填充?如果是前者,您可能有一个逻辑页的页表条目,但没有对应的虚拟页。
  • 实际情况如何
  • 假设操作系统有一个线性页表。假设系统参数/进程配额让操作系统最初创建一个包含 10,000 个条目的页表。所以现在您有 10,000 个条目,但没有映射到它们。当进程向操作系统请求页面时,操作系统将填写这些条目。
  • 我同意你的观点,但我们的假设是他们如何实施的现实
猜你喜欢
  • 1970-01-01
  • 2015-07-17
  • 2013-09-29
  • 2012-08-15
  • 1970-01-01
  • 1970-01-01
  • 2019-11-20
  • 1970-01-01
  • 2020-04-01
相关资源
最近更新 更多