我想知道:我是否可以使用系统调用,库,内核模块或命令行工具来存储磁盘上正在运行的程序的完整状态?
那就是:我想将进程当前正在使用的内存,页面布局,堆栈,寄存器,线程和文件描述符完全转储到硬盘驱动器上的文件中,并能够以后无缝地恢复它,就像一个模拟器“savestate”或虚拟机“快照”。
如果可能的话,我还想拥有程序状态的多个“备份副本”,因此如果程序因某种原因而死,我可以恢复到之前的执行点。
这可能吗?
答案 0 :(得分:3)
像this之类的东西?您还可以查看checkpointing page on wikipedia。
答案 1 :(得分:2)
你应该看看伯克利实验室的BLCR project。 这被多个MPI实现广泛使用来提供 并行应用程序的检查点/重新启动功能。
答案 2 :(得分:1)
core dump基本上就是这个,所以是的,必须有可能得到。
您真正想要的是重新将该转储存储为正在运行的程序的方法。这可能会更困难。