是否可以在Linux中“hibernate”进程?就像笔记本电脑中的“hibernate”一样,我会将进程使用的所有内存写入磁盘,从而释放RAM。然后,以后,我可以“恢复进程”,即从内存中读取所有数据并将其放回RAM,然后我可以继续执行我的进程吗?
我曾经维护过CryoPID,这是一个完全可以满足您所谈论内容的程序。它将程序的地址空间,VDSO,文件描述符引用和状态的内容写入文件,以便以后进行重构。当Linux本身没有可用的钩子时,CryoPID开始运行,并且完全在用户空间中工作(实际上,它仍然可以工作,具体取决于发行版/内核/安全性设置)。
问题是(确实)套接字,待处理的RT信号,许多X11问题,glibc缓存getpid()实现等。伯纳德(Bernard)离开随机存取技术后,对我们中的少数人来说,随机存取(尤其是VDSO)是无法克服的。但是,它很有趣,并成为了几篇硕士论文的主题。
如果您只是在考虑一个可以保存其运行状态并直接重新启动进入该状态的程序,则可能更容易从程序本身内部保存该信息,甚至在维修信号时。