【问题标题】:Necessity of valid bit in page tables页表中有效位的必要性
【发布时间】:2014-01-08 00:49:45
【问题描述】:

从操作系统概念 -

附加到页表中每个条目的有效-无效位:

“有效”表示关联页面在进程的逻辑 地址空间,因此是合法页面

“invalid”表示页面不在进程的逻辑中 地址空间

但是,如果每个进程都有自己的页表,根据定义,这不是意味着页表中的每个条目都是有效的吗?只有与该进程相关联的页面被输入到它的页表中,那么为什么我们需要在每个条目上附加一个有效/无效位呢?

【问题讨论】:

    标签: memory-management operating-system


    【解决方案1】:

    这是因为页表是“稀疏的”——而不是一个有两列的表{(虚拟)页码,(物理)帧号},这对于 CPU通过搜索,页表本质上是一个简单的数组page_table[page_number]->frame_number。这样,CPU 就可以准确地知道要搜索的位置,但我们需要指出条目是否有效,因为我们现在也有无效页面的条目。

    【讨论】:

      【解决方案2】:

      我认为如果进程的逻辑地址空间中的某些页面尚未被动态分配,它们可能会被标记为无效。在these slides 的第 6 页上,有一个逻辑地址空间的示例,它有 8 个页面,其中两个被标记为无效。幻灯片指出,更多 malloc() 调用将耗尽地址空间中的无效页面。我也搜索了这个问题的答案,这是我找到的唯一来源,所以如果我错了,请纠正我。

      【讨论】:

      • 那个链接现在失效了。
      猜你喜欢
      • 1970-01-01
      • 2021-07-02
      • 2021-12-04
      • 2013-02-24
      • 2016-01-05
      • 1970-01-01
      • 1970-01-01
      • 2021-11-11
      • 2020-06-27
      相关资源
      最近更新 更多