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

Posted 写了程序换酒钱

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用内存快照来加速嵌入式系统的启动相关的知识,希望对你有一定的参考价值。

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

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

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

以上是关于使用内存快照来加速嵌入式系统的启动的主要内容,如果未能解决你的问题,请参考以下文章

在嵌入式系统上以快照视图启动应用程序

嵌入式linux系统快速启动优化的方法

嵌入式linux系统快速启动优化的方法

Android 内存管理机制详解

DirectFB的架构介绍

存储快照-COW和ROW