是否可以中断进程并检查它以便稍后恢复?

可以说,你有一个应用程序,它消耗了所有的计算能力.现在你想做一些其他必要的工作.在Linux上是否有任何方法可以中断该应用程序并检查其状态,以便稍后可以从中断的状态恢复它?

特别是我对一种方法很感兴趣,可以在另一台机器上停止并重新启动应用程序.这也可能吗?

解决方法:

一般而言,检查点进程并非完全可能(因为进程不仅是一个地址空间,还有其他资源,如文件描述符和TCP / IP套接字……).

在实践中,您可以使用一些检查点库,如BLCR等.在某些限制条件下,您可以将检查点图像从一个系统迁移到另一个系统(非常类似于源系统:相同内核,相同版本的库和&编译器等).

也可以在virtual machine级别迁移图像.其中一些非常好.

您还可以使用自己的检查点设备设计和实施您的软件.然后,您应该考虑使用garbage collection技术和术语.另请参阅Emacs(或Xemacs)unexec.c文件(与机器有很大关系).

一些语言实现&运行时具有检查点基元. SBCL(免费的Common Lisp实现)能够save a core image并在以后重新启动它. SML / NJ能够export an image. Squeak(Smalltalk实现)也具备这样的能力.

作为检查点的另一个例子,GCC编译器实际上能够使用persistence techniques编译单个* .h头(进入预编译头文件,这是GCC堆的持久图像).

阅读更多关于orthogonal persistence.它也是一个研究课题. serialization也是相关的(您可能希望使用JSON,YAML,XML等文本格式).您也可以使用hibernation技术(在整个系统级别上).

上一篇:HDFS客户端读写流程及checkpoint


下一篇:如何分析及处理 Flink 反压?