嵌入式linux,应用程序状态冻结,重新启动

时间:2012-04-04 12:46:51

标签: c linux embedded arm embedded-linux

我们有一个嵌入式应用程序,现在需要保存和重新加载其状态。就像在PC游戏中一样,在你必须出去呼吸新鲜空气之前保存它。产品本质上是安静的进化,没有适当的设计,所以识别要保存的数据不是一种选择。

该软件采用C语言,因此所有数据都具有固定地址(.data段),也具有确定性,a和无动态内存分配。因此,理论上我会在文件中备份此数据段并重新启动应用程序,从文件中更新它。这种方法可能会比需要的方法节省更多的数据,但我很乐意。

如何在短暂的执行时间内完成此操作? 另外如何在运行时识别.data段的开始和结束?

1 个答案:

答案 0 :(得分:2)

您想要application checkpointing,因此Berkley Lab Checkpoint Restart库也许可以为您提供帮助。

如果您确定所有数据都有固定地址等,您也许可以使用mmap(2)系统调用...

要了解当前的内存段和映射,请从您的应用程序中读取/proc/self/maps文件。还有/proc/self/smaps等。了解proc(5)的更多信息,即/proc/

相关问题