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



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

软件是用C语言编写的,所以所有数据都有固定的地址(.data段),它也是确定性的,没有动态内存分配。所以理论上,我会在一个文件中备份这个数据段,并在重新启动应用程序时将其从文件中更新回来。这种方法可能会节省比所需更多的数据,但我可以接受

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

您想要应用程序检查点,因此Berkley Lab Checkpoint Restart库可能会对您有所帮助。

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

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

最新更新