xenpaging流程详解(1)

来源:互联网 发布:sql 异常 字符串截断 编辑:程序博客网 时间:2024/06/14 15:18

1) xenpaging初始化。
2) 交换文件初始化。
3) 信号处理初始化。
4) 创建page_in线程。
5) 将内存页page out到交换文件上。
 程序中,通过for循环调用evict_victim函数将数量为num_pages的页从虚拟机中page out出来。
 当找不到num_pages个满足page out条件的页时,尽可能多的将页page out出来,然后,跳出for循环。
6) 进入一个while大循环,完成整个xenpaging开启过程中的页交换动作。
 在5)之后,虚拟机中一部分页被交换到文件中,内存释放掉了。当虚拟机系统再次用到page out页时,会触发缺页中断。该中断被xen捕获,会进一步触发xenpaging的还页动作。此时,xen会重新分配一页,并从交换文件中读取该页信息进行填充,最终,重新映射回虚拟机内部。
 当balloon向下调整内存时,其释放的页若为page out的页,则将该页丢掉,在位图里标记为page in。
7) 接收到结束信号,进行page in动作。
 当xenpaging接收到SIGTERM(kill)或者SIGINT(ctrl+c)信号时,将执行page in的动作,在将所有交换出的内存页交换回虚拟机后,进行结束进程前的清理动作。
8) 清理动作xenpaging_teardown。