深入理解Linux虚拟内存管理(六)

在这里插入图片描述

系列文章目录


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

你可能感兴趣的:(Linux内核,linux,驱动开发,运维)