页表中的有效位和脏位

Valid Bit and Dirty Bit in page tables

页面 table 中的有效位是否会被关闭(设置为无效)?此外,在处理脏位时,我知道只要有问题的页面 table 条目上有写请求,就应该设置脏位。但是,脏位为什么有用?

Is there any reason that the Valid-Bit in a page table would ever be turned off (set to invalid)?

  1. 当页面 table 由于创建了一个页面 table 条目 (pte) 而被初始化时,该页面 table 中的其他 ptes 需要标记为无效,这样它们就不会不习惯。
  2. 如果页面 kicked/swapped 从内存中取出,它的 pte 需要被标记为无效以便 OS 可以在任何未来 read/writes 拦截页面错误并交换正确的内存恢复。

Also when working with the dirty bit, I know that the dirty bit is supposed to be set whenever there is a write request on the page table entry in question. However, why is the dirty bit useful?

脏位允许您检测哪些页面仅被写入内存(尚未传播回磁盘)。如果 OS 想要驱逐脏页,它会看到脏位已设置,现在知道应该在驱逐页面之前将更改写回磁盘。如果没有脏位,1) OS 要么需要将页面的每一位与其后备磁盘页面进行比较,以在驱逐它之前检查它是否脏,要么 2) 它必须采用繁琐的“每次逐出页面时始终写回”策略,即使该页面是干净的、未写入的页面。