日期:2014-05-16  浏览次数:20808 次

【求助】linux进程映像的存储与恢复


毕设课题:基于Linux用户级进程检查点的设计与实现
本人彻彻底底的linux小白,刚入手linux,完全是做一点学一点。。


对于该课题我的简单思路是:
通过一个后台进程在进程正常运行过程中对进程的状态进行实时的监控
并将进程的正常状态保存到文件中
当检测到进程出现异常时(如被kill),通过最近保存的进程状态文件对进程进行恢复(但是这样还不能实现将进程恢复到出现问题的那准确的时刻的状态)

对进程状态的判断我是通过对/proc/<pid>/stat文件的解析实现的:http://blog.chinaunix.net/uid-29619320-id-4223465.html

保存进程的状态需要保存好几部分信息,我先实现进程映像的保存

纠结一个问题:
在/proc/<pid>/maps文件中保存着关于进程映像的信息,如下图


查阅了一些资料,我的理解是:对于我的centos系统,每个进程的maps文件都和该图片显示的进程映像一样,从上往下为内核空间和用户空间;然后用户空间中的代码段,数据段和其他类型的段 从上往下的顺序也都是一样的

对于存储进程映像我的思路和问题如下:
解析maps文件,从对应的地址空间中取出存储的内容(这我该怎么实现?系统调用吗?有必要取出内容来存储吗?只存地址可以吗?)
并同其他列的信息(如文件权限之类的)存入进程映像的数据结构,并保存如到文件中(该存储到什么类型的文件中)

暂时就这两个问题,希望能有好心人给我个思路。。
------解决方案--------------------
你可以google一下CRIU(checkpoint/restart in userspace)
这是个国外的开源项目。
希望能帮到你。