但如果你去看 Linux 内核源码(mm/vmscan.c),会发现它根本没用任何教科书里写的那种 LRU。Linux 维护的不是一条 LRU 链表,而是两条——active list 和 inactive list,各自都是双向链表。新分配的页面先进 inactive list 的头部;被再次访问时通过设置 PG_referenced 位,晋升到 active list 的尾部。反过来,active list 尾部的页面在内存紧张时会被"降级"回 inactive list 的头部。而真正被换出的,是 inactive list 尾部的页面。