2016-11-20 85 views
0

我有几个关于页表的问题,特别是当发生页面错误时。页表:页面错误

我知道当CPU需要一个页面时会发生页面错误,但它不存在于RAM中,并且必须从交换空间中获取。页表使用虚拟地址的高位进行索引,并且还包含指示页面是否在内存中的无效位。

这是我不明白。页表是否包含那些也设置了无效位的页面的物理地址?我的意思是,他们不存在于物理记忆中。所以,我的理解是那些设置了无效位的页面,相应的物理地址应该是空白的。我错过了什么吗?

另一个问题是为什么我们不能只为那些存在于内存中的页面输入条目。这样,可以使页表的大小更小。

还有一个问题是,当操作系统将页面错误后的页面交换到RAM中时,将页面分配到的帧的物理地址转换为用于更新页面表的虚拟地址?

有人可以澄清这些疑惑吗?谢谢!

回答

2

我明白当CPU需要一个页面时,页面错误发生,但它不存在于RAM中,并且必须从交换空间获取。

触发页面错误通常是一个或两个步骤的过程。该故障由页表状态触发。

页表使用虚拟地址的高位进行索引,并且还包含一个无效位,指示该页是否在内存中。

位的位置和用法完全取决于系统。有两种无效等级。 (1)页面不能映射到逻辑地址空间;和(2)页面可以被映射,但没有对应于物理页面帧(页面输出)的对应映射。这两项检查可以在页面表中指出,或与操作系统维护的映射数据一起使用。

页表是否包含那些也设置了无效位的页面的物理地址?

如果页表项指示逻辑页面与物理页面框架之间存在有效映射,则页面表项包含该映射。

我的意思是,它们不存在于物理内存中。所以,我的理解是那些设置了无效位的页面,相应的物理地址应该是空白的。

这通常不是这种情况。如果页表项通过其控制位指示没有映射到物理页面帧,则处理器通常忽略实际的映射位。这允许操作系统使用这些位来标识页面存储在磁盘上的位置。

另一个问题是为什么我们不能只有那些存在于内存中的页面才有条目。这样,可以使页表的大小更小。

您正在描述一个INVERTED PAGE TABLE。有些系统以这种方式实现页面表。但是,大多数系统不会,它们会对操作系统增加额外的开销。

还有一个问题是,当操作系统将页面错误后的一个页面交换到RAM中时,该页面被分配到的帧的物理地址被转换为用于更新页面表的虚拟地址?

页面错误处理程序需要(1)分配一个物理页面框架; (2)将来自二次故事的数据加载到页面框架中; (3)更新页表以指示逻辑页面到物理页面帧的映射; (4)重新启动导致故障的指令。