【问题标题】: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() 调用将耗尽地址空间中的无效页面。我也搜索了这个问题的答案,这是我找到的唯一来源,所以如果我错了,请纠正我。