问题描述
页表中的有效位是否有任何理由会被关闭(设置为无效)?同样在处理脏位时,我知道只要有问题的页表条目上有写请求,就应该设置脏位。但是,为什么脏位有用?
解决方法
页表中的有效位是否有任何理由被关闭(设置为无效)?
- 当一个页表因为一个页表条目 (pte) 被创建而被初始化时,该页表中的其他 pte 需要被标记为无效,这样它们就不会被使用。
- 如果页面被从内存中踢出/换出,它的 pte 需要被标记为无效,以便操作系统可以在任何未来的读/写时拦截页面错误并将正确的内存换回。
此外,在处理脏位时,我知道脏位是 应该在页表上有写请求时设置 有问题的条目。但是,为什么脏位有用?
脏位允许您仅检测哪些页面已写入内存(尚未传播回磁盘)。如果操作系统想要驱逐脏页,它会看到脏位已设置,现在知道它应该在驱逐页之前将更改写回磁盘。如果没有脏位,1) 要么操作系统需要将页面的每一位与其支持的磁盘页面进行比较,以在驱逐它之前检查它是否脏,要么 2) 它必须采用繁重的“始终写入- back”策略,即使页面是一个干净的、未写的页面。