页面回收是Linux内核内存管理中比较难理解的一部分,因此Linux 4.0内核的页面回收代码仍然基于zone的LRU扫描策略,和页面分配代码(page allocator)搭配产生了复杂的"化学反应"和很多诡异难懂的补丁。
Linux 内核页面回收如下图所示:
可以看到一个页面如何添加到LRU链表的,如何在活跃LRU链表和不活跃LRU链表中移动的,以及如何让一个页面真正回收并被释放的过程。
linux2.4.0 和linux4.0版本的比较
页面回收是Linux内核内存管理中比较难理解的一部分,因此Linux 4.0内核的页面回收代码仍然基于zone的LRU扫描策略,和页面分配代码(page allocator)搭配产生了复杂的"化学反应"和很多诡异难懂的补丁。
Linux 内核页面回收如下图所示:
可以看到一个页面如何添加到LRU链表的,如何在活跃LRU链表和不活跃LRU链表中移动的,以及如何让一个页面真正回收并被释放的过程。
linux2.4.0 和linux4.0版本的比较