假设您有一个应用程序,它消耗了所有的计算能力。现在你想做一些其他必要的工作。 Linux 上有没有办法中断该应用程序并检查其状态,以便稍后可以从中断的状态恢复?
我特别感兴趣的是一种可以在另一台机器上停止并重新启动应用程序的方法。这也可能吗?
一般来说,对进程设置检查点并不完全可能(因为进程不仅是地址空间,而且还具有其他资源,例如文件描述符和 TCP/IP 套接字...)。
在实践中,您可以使用一些检查点库,例如BLCR在某些限制条件下,您也许能够将检查点映像从一个系统迁移到另一个系统(与源系统非常相似:相同的内核、相同版本的库和编译器等)。
迁移图像也可以在虚拟机等级。其中一些在这方面非常擅长。
您还可以使用自己的检查点机制来设计和实现您的软件。然后,你应该考虑使用垃圾收集技术和术语。另请参阅 Emacs(或Xemacs) unexec.c文件(很大程度上依赖于机器)。
某些语言实现和运行时具有检查点原语。SBCL(一个免费的 Common Lisp 实现)能够保存核心图像并稍后重新启动。 SML/NJ 能够导出图像. Squeak(Smalltalk 的一个实现)也有这样的能力。
作为检查点的另一个例子,GCC 编译器实际上能够编译单个*.h
头(进入预编译头文件,它是 GCC 堆的持久映像)持久性技术.
阅读更多关于正交持久性。这也是一个研究课题。序列化也是相关的(您可能想使用 JSON、YAML、XML 等文本格式……)。您也可以使用冬眠技术(在整个系统级别)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)