使用内存快照来加速嵌入式系统的启动

来源:互联网 发布:64位sql安装提示错误 编辑:程序博客网 时间:2024/06/18 13:25

用过virtual box和vm的人都知道一个休眠功能,关机之后,从新开始使用时,还会加载到休眠时的状态,这个很方便人们的使用,可以你开启你的工作环境需要很多的时间。这其中就使用到了内存快照的技术,将当前运行的虚拟机的内存状态保存到一个文件中,在启动的时候加载这个文件,然后就可以恢复到当前的现场,从而缩短了启动到可用的时间。

在嵌入式系统的开发中,有很多场景对启动有很多要求,从上电到嵌入式应用显示需要在10秒内完成。
一般我们从内核开始优化(这里特指linux内核),一般根据设备将不需要的驱动,不需要使用的子系统全部阉割掉,从而减小内存镜像,减速内核加载和内核启动时间。然后是对应用的优化,启动时的小内存分配优化,冗余逻辑优化等等。
如果做了这些努力之后还是不能达到优化效果,那么可以使用内存快照来加速启动。
但是嵌入式系统不像我们使用的vm,我们每次关机时可以抓取当前状态的内存,而嵌入式不行,这类专用设备不可能在断电的时候,抓取镜像。

其实嵌入式系统像对用通用系统比较单一,我们这一将整个启动过程分为内存镜像加载和用户数据加载。这样我们就可以只抓取一次内存镜像就行。但是这样的话,我们就需要一个通知,告诉对外应用该加载用户数据。那么我们抓取内存镜像的时间点就该是内核启动到应用将开始加载用户数据的时候。这样在后续系统时,将抓取的内存镜像直接拷贝到内存中,然后加载用户数据,这样就恢复到上次启动的时候。直接拷贝肯定比启动快很多。

0 0