kswapd进程就是专司定期将页面换出的守护神,它使用的是内核的地址空间
static int __init kswapd_init(void)
{
int nid;
swap_setup();//根据物理内存大小设置设定全局量page_cluster,磁盘读道是个费时操作,每次读一个页面过于浪费,每次多读几个,这个量就要根据实际物理内存大小来确定
/*UMA结构中,循环一次,创建内核线程kswapd,做页面换出*/
for_each_node_state(nid, N_MEMORY)
kswapd_run(nid);
/*这是和cpu热插拔选项相关的一个宏.主要是定义了一个结构体notifier_block变量,然后调用register_cpu_notifier()将给定的参数(一般是个函数))注册.相当于一个CPU插拔动作的回调函数.例如kswapd线程初始化前,就注册了cpu_swap_callback函数.2.6内核中,每个节点都有一个kswapd线程.该函数的意思是当某个节点的cpu被拔下来以后,要将该CPU在内核中的私有数组(pagevec)里面的pages加入LRU队列.*/
hotcpu_notifier(cpu_callback, 0);
return 0;
}