页表中的有效位和脏位
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)?
- 当页面 table 由于创建了一个页面 table 条目 (pte) 而被初始化时,该页面 table 中的其他 ptes 需要标记为无效,这样它们就不会不习惯。
- 如果页面 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) 它必须采用繁琐的“每次逐出页面时始终写回”策略,即使该页面是干净的、未写入的页面。
页面 table 中的有效位是否会被关闭(设置为无效)?此外,在处理脏位时,我知道只要有问题的页面 table 条目上有写请求,就应该设置脏位。但是,脏位为什么有用?
Is there any reason that the Valid-Bit in a page table would ever be turned off (set to invalid)?
- 当页面 table 由于创建了一个页面 table 条目 (pte) 而被初始化时,该页面 table 中的其他 ptes 需要标记为无效,这样它们就不会不习惯。
- 如果页面 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) 它必须采用繁琐的“每次逐出页面时始终写回”策略,即使该页面是干净的、未写入的页面。