1

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

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

我怎样才能在很短的执行时间内做到这一点?
另外,如何在运行时识别 .data 段的开始和结束?

4

1 回答 1

2

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

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

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

于 2012-04-04T20:06:12.340 回答