我一直在尝试弄清楚 Windows 操作系统中的分页机制。我找到了 Mark Russovich 在 1998 年发表的一篇关于此类内存管理的博客文章。他讨论了“最近最少使用”算法。
这篇文章有点令人困惑,因为他的解释与概述不太相符。例如,它的概述是:
LRU 首先替换进程最长时间未访问的页面
然而,解释指出,这纯粹是根据访问标志是否被设置来判断的:
在单处理器上,如果内存管理器发现某个页面的“访问”标志被设置,则内存管理器将清除该标志,并继续处理以下页面,选择下一个已清除“访问”标志的页面进行替换
当然,按照这个逻辑,没有日期可以比较,因此如果有多个页面没有访问标志,则 MMU 将选择它找到的第一个页面(不一定是“最少使用”的页面?
编辑:http://windowsitpro.com/systems-management/inside-memory-management-part-2
答案1
首先,那篇文章相当老了 - 它早于 Windows 2000。
其次,Mark 对“时钟”算法的描述并不完整。当 Mm 发现 PTE 中已设置访问位时,它会将其清除。到目前为止还不错。但如果它发现该位已经清除,它会在该页面的工作集列表条目 (WSLE) 中增加一个计数器。因此,计数器值越高,表示访问时间越早。
没有必要如此精确地记录时间戳。