页表中有效位的必要性

时间:2013-12-19 12:33:45

标签: memory-management operating-system

来自操作系统概念 -

  

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

     

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

     

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

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

2 个答案:

答案 0 :(得分:0)

这是因为页表是"稀疏" - 而不是拥有一个包含两列 {(虚拟)页码,(物理)帧号} 的表,这对于CPU难以搜索,页表本质上是一个简单的数组 page_table [PAGE_NUMBER] - GT; frame_number 。这样,CPU确切地知道搜索的位置,但是我们需要指出条目是否有效,因为我们现在还有无效页面的条目。

答案 1 :(得分:0)

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