系列文章目录
Linux 内核设计与实现
深入理解 Linux 内核(一)
深入理解 Linux 内核(二)
Linux 设备驱动程序(一)
Linux 设备驱动程序(二)
Linux 设备驱动程序(三)
Linux设备驱动开发详解
深入理解Linux虚拟内存管理(一)
深入理解Linux虚拟内存管理(二)
深入理解Linux虚拟内存管理(三)
深入理解Linux虚拟内存管理(四)
深入理解Linux虚拟内存管理(五)
深入理解Linux虚拟内存管理(六)
文章目录
- 系列文章目录
- 一、页面帧回收
- 1、页面高速缓存操作
- 2、LRU 链表操作
- 3、重填充 inactive_list
- 4、 从 LRU 链表回收页面
- 5、收缩所有高速缓存
- (1)shrink_caches
- (2)try_to_free_pages
- (3)try_to_free_pages_zone
- 6、换出进程页面
- 7、页面交换守护程序
- 二、补充配置
- 1、空格
一、页面帧回收
1、页面高速缓存操作
2、LRU 链表操作
3、重填充 inactive_list
4、 从 LRU 链表回收页面
5、收缩所有高速缓存
(1)shrink_caches
(2)try_to_free_pages
(3)try_to_free_pages_zone
// mm/vmscan.c
int try_to_free_pages_zone(zone_t *classzone, unsigned int gfp_mask)
{
int priority = DEF_PRIORITY;
int nr_pages = SWAP_CLUSTER_MAX;
gfp_mask = pf_gfp_mask(gfp_mask);
do {
nr_pages = shrink_caches(classzone, priority, gfp_mask, nr_pages);
if (nr_pages <= 0)
return 1;
} while (--priority);
/*
* Hmm.. Cache shrink failed - time to kill something?
* Mhwahahhaha! This is the part I really like. Giggle.
*/
out_of_memory();
return 0;
}
6、换出进程页面
7、页面交换守护程序
二、补充配置
1、空格
  为“全角空格”
  为“全角空格”
为“不换行空格”
123