使用內存快照來加速嵌入式系統的啓動

用過virtual box和vm的人都知道一個休眠功能,關機之後,從新開始使用時,還會加載到休眠時的狀態,這個很方便人們的使用,可以你開啓你的工作環境需要很多的時間。這其中就使用到了內存快照的技術,將當前運行的虛擬機的內存狀態保存到一個文件中,在啓動的時候加載這個文件,然後就可以恢復到當前的現場,從而縮短了啓動到可用的時間。

在嵌入式系統的開發中,有很多場景對啓動有很多要求,從上電到嵌入式應用顯示需要在10秒內完成。
一般我們從內核開始優化(這裏特指linux內核),一般根據設備將不需要的驅動,不需要使用的子系統全部閹割掉,從而減小內存鏡像,減速內核加載和內核啓動時間。然後是對應用的優化,啓動時的小內存分配優化,冗餘邏輯優化等等。
如果做了這些努力之後還是不能達到優化效果,那麼可以使用內存快照來加速啓動。
但是嵌入式系統不像我們使用的vm,我們每次關機時可以抓取當前狀態的內存,而嵌入式不行,這類專用設備不可能在斷電的時候,抓取鏡像。

其實嵌入式系統像對用通用系統比較單一,我們這一將整個啓動過程分爲內存鏡像加載和用戶數據加載。這樣我們就可以只抓取一次內存鏡像就行。但是這樣的話,我們就需要一個通知,告訴對外應用該加載用戶數據。那麼我們抓取內存鏡像的時間點就該是內核啓動到應用將開始加載用戶數據的時候。這樣在後續系統時,將抓取的內存鏡像直接拷貝到內存中,然後加載用戶數據,這樣就恢復到上次啓動的時候。直接拷貝肯定比啓動快很多。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章