Linux中有关守护进程kswapd的思维导图,包括kswapd_balance()函数、try_to_free_pages()等
树图思维导图提供 守护进程kswapd思维导图 在线思维导图免费制作,点击“编辑”按钮,可对 守护进程kswapd思维导图 进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:ffe168bd0bef9401c56a5fcca8842b3b
守护进程kswapd思维导图思维导图模板大纲
kswapd 相当于一个进程,它有自己的进程控制块 task_struct 结构
内核将它按进程来调度,就可以让它在系统相对空闲的时候来运行
与普通进程相比,kswapd 有其特殊性
它没有自己独立的地址空间,所以在近代操作系统理论中把它称为“线程”以与进程相区别
内核空间就是它的地址空间
它与中断服务例程相似
它的代码是静态地链接在内核中的
可以直接调用内核中的各种子程序和函数
实现代码进行了模块化组织,可读性大大加强
kswapd 是内存管理中唯一的一个线程
在内核启动时由模块的初始化例程调用 kswapd_init
kswapd 成为内核的一个线程,其主循环是一个无限循环
如果调度标志为 1,就执行调度程序紧接着就又把它从等待队列删除,将其状态变为就绪
只要调度程序再次执行,它就会得到执行,如此周而复始进行下去
一个要求得平衡的函数
主要是对每个存储节点进行扫描
又调用kswapd_balance_pgdat()对每个管理区进行扫描
最主要的函数是 try_to_free_pages()
能否调用这个函数取决于平衡标志need_balance 是否为 1
看某个管理区的空闲页面数是否小于最高警戒线
其中的优先级表示对队列进行扫描的长度,缺省的优先级 DEF_PRIORITY 为 6
nr_pages 为要换出的页面数,其最大值 SWAP_CLUSTER_MAX 为 32