999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

一種基于休眠的嵌入式Linux快速啟動的方法*

2019-09-03 07:22:52張釋文陳莉君
計算機與數字工程 2019年8期
關鍵詞:頁面方法系統

張釋文 陳莉君

(西安郵電大學計算機學院 西安 710121)

1 引言

近年來,用戶在享受更智能嵌入式Linux設備帶來的方便與樂趣同時,又不得不面對系統服務日漸豐富、啟動時間越來越長等問題。緩慢的開機速度嚴重影響用戶體驗[1],因此加快啟動速度已經成為嵌入式領域待解決的重要問題之一。

目前嵌入式Linux快速啟動方法常見的有兩個方面:

1)優化開機流程。刪除了啟動中重復執行的初始化模塊和不常用的兼容性模塊來實現加速啟動。研究主要有:RC(RunlevelControl,運行級別控制)腳本優化,如并行服務啟動、使用busybox等[2]。然而對嵌入式系統來講,刪除了一些模塊之后系統可能不再具有兼容性。另一方面,啟動流程中能刪除的模塊有限,優化不明顯。

2)休眠技術。休眠快速啟動(Suspend in DisK,SDK)利用掛起/恢復(Suspend/Resume)技術[2]把操作系統和應用程序完成啟動的寄存器和內存信息制作成鏡像文件,SDK方法制作鏡像文件是主要的技術難點。索尼、松下等非營利行消費電子論壇CELF和Tripeaks公司已開發出一些基礎技術,目前安卓和Windows 8系統采用此快速啟動方法。

近幾年,對于基于休眠快速啟動的研究著眼兩個問題:減小休眠鏡像大小和縮短關機時間。隨著休眠鏡像尺寸增大,載入鏡像需要時間變長。經過測試當鏡像文件超過400M時,快速啟動反而增加了啟動時間[3]。文獻[4~5]提出減少鏡像存儲干凈頁面(NotRestore Clean page,NRC)的優化,產生鏡像時調用內核模塊大量分配頁面引發系統換出干凈頁面。和SDK方法相比,NRC方法能減少鏡像至60%左右,縮短了25%的啟動時間和40%的關機時間,該方法不侵入系統,然而延長了關機時間引入不安全因素;文獻[6]提出保存部分內存頁面(Only Restore Kernel,ORK)的優化,創建鏡像只保存內核空間內存頁面放棄用戶空間來縮減鏡像文件大小,ORK方法使鏡像縮小至60.5%,但是快速啟動結束之后一段時間內系統響應時間變長。文獻[3,5]提出鏡像文件一次產生多次同步(Image only Create Once,ICO)的優化來縮短關機時間,安裝系統時候創建鏡像,每次快速啟動都使用同一鏡像文件,啟動結束后掃描整個外存以同步系統狀態。ICO方法關機時間優化非常明顯,然而系統使用一段時間后和鏡像記錄狀態差別越來越大,掃描外存需要時間越來越長,導致啟動時間增加。

針對延長關機時間和鏡像加載時間過長題,本文分析研究了基于休眠的快速啟動方法,提出一種開機創建快照(Create Image After Boot,CIAB)的優化方法,以期縮短關機時間且減小鏡像尺寸。

2 相關理論

2.1 掛起/恢復技術

SDK快速啟動是利用Linux電源管理的掛起/恢復技術實現的,該技術分為兩部分:關機前通過掛起技術將系統當前的CPU、內存頁面、外部設備狀態等,按照一定格式制作成鏡像保存在外部Flash中;下次開機的時候利用恢復技術按照鏡像文件內容恢復到上次關機狀態。掛起和恢復函數執行流程如圖1所示。

圖1 恢復和掛起操作流程圖

內核加載器載入并解壓縮內核,內核執行完一些架構初始化操作之后,跳轉至快速啟動入口檢查鏡像文件是否存在,若不存在執行正常啟動流程。若存在則載入鏡像文件恢復系統,恢復過程是掛起過程的對偶操作。

完成準備工作,接下來是掛起/恢復流程中最重要的步驟——鏡像創建。

2.2 快速啟動鏡像文件

SDK快速啟動方法主要依賴掛起過程中產生的鏡像,在保存狀態階段需要將系統的運行狀態按照一定格式組織成鏡像文件,鏡像文件的格式如圖2所示。

圖2 鏡像組織結構

鏡像頭存儲了鏡像大小、版本號等等,用來管理整個鏡像文件的數據存儲在鏡像元數據中,包括:鏡像文件起始內存地址、鏡像文件起始塊號和位圖索引等等。詳細結構如圖3所示。

圖3 鏡像數據結構

swsusp_info是鏡像頭,鏡像文件中最重要的數據結構。swsusp_header表示整個鏡像文件的開始,其中最重要的結構式指向位圖索引的image。內核寫鏡像時,先初始化swsusp_info,swsusp_header,接著循環申請內存存儲鏡像內容、寫入外存、修改swap_map_page直到整個鏡像寫入完成,最后在swsusp_info中記錄大小和版本號等信息。

讀鏡像是根據用戶設置的位置,去外存上先讀出swsusp_info和swsusp_header得到索引位圖,根據位圖依次讀出鏡像塊,并恢復到內存。

3 SDK快速啟動方法問題描述

3.1 延長關機時間

SDK快速啟動修改了原本的Linux關機流程,在執行正常關機流程中添加了產生和保存鏡像操作。快速啟動關機流程和正常的關機流程對比如圖4所示。

圖4 關機流程對比圖

SDK快速啟動在正常關機流程上增加的邏輯有:掛起喚醒設備、讀寫磁盤等這些相對耗時的操作。通過研究SDK方法延長了40%的關機時間[4]。目前嵌入式設備常常出現電量耗盡關機的使用場景,此種情況下系統來不及保存鏡像指示快速啟動失敗。綜上,該問題亟待解決。

3.2 鏡像加載時間過長

基于休眠的快速啟動技術的啟動時間可形式化表示為如下:

其中tb表示內核加載器進行像CPU、時鐘等基本初始化的時間,是讀取休眠鏡像前的準備工作;td表示從外存讀取休眠鏡像的時間;tr表示執行恢復系統函數根據鏡像恢復系統的時間,主要包括恢復處理器、內存、外部設備狀態、進程狀態的時間。

由式(2)看出休眠鏡像讀取時間和休眠鏡像大小成正比,2.2節介紹了休眠鏡像的組織結構,內存數據分為內核空間和用戶空間。內核空間主要有內核代碼、內核數據結構、高速緩存、文件系統數據等組成。用戶空間保存了各個用戶進程的地址空間。保存了內存全部頁面,包括高速緩存和用戶進程數據等這些并不重要的頁面,致使休眠鏡像臃腫過大。

4 基于休眠的快速啟動優化方法

本文提出的快速啟動優化方法:快照在開機之后產生,系統運行過程中更新鏡像文件,在不延長關機或者開機時間前提下,任意時刻外存上存儲了一個和關機前系統狀態盡可能相同的鏡像文件。

CIAB方法產生的鏡像文件中存儲的并不是關機之前系統狀態,使用此鏡像文件恢復系統將導致快速啟動和正常啟動進入的系統的不一致問題。不一致問題有用戶掛載新文件系統導致的文件系統的不一致和用戶新修改了系統設置導致的設置不一致。

4.1 整體設計

CIAB方法不一致問題整體設計如圖5所示。

圖5 CIAB方法設計圖

系統設置數據和文件系統元數據都存儲在鏡像圖5所示位置中,對于系統設置,快速啟動成功后創建守護進程同步。對于文件系統元數據,系統運行過程中創建守護進程,定時同步鏡像保存文件系統元數據。

4.2 文件系統同步

正常啟動過程中的掛載文件系統,實際上是讀取外存設備上的文件系統元數據至內存,比如說超級塊、根索引節點等等,虛擬文件系統用這些數據創建file_system_type用以管理文件系統。內核用鏈表結構管理全部的file_system_type,表頭由file_systems變量指定,此鏈表是需要同步的數據。

CIAB方法創建休眠鏡像結束時,修改hibernate.c/hibernate函數正常退出模塊,再次調用內核函數swap_write_pages在鏡像文件之后記錄file systems,塊號記錄在fastboot_block變量中。修改之后鏡像結構如圖6所示。

圖6 修改之后的鏡像文件

創建守護進程定時讀取file_systems鏈表,詳細流程如圖7所示。

圖7 同步文件系統流程圖

休眠鏡像創建完成后,申請內存空間存儲file systems鏈表節點,調用函數把該頁寫入swap,此時鏡像內容修改完成。接下來修改鏡像頭存儲的鏡像大小、鏡像元數據記錄的位圖信息,設置鏡像不壓縮標志,最后文件系統同步進程完成全部工作進入睡眠。

只有在用戶掛載了新的文件系統的情況下,file systems鏈表才有變化,因此同步文件系統頻率不高。

4.3 系統設置同步

用戶在交互使用應用過程中會根據自己的需要調整應用的設置,這保證了不同的用戶能夠按照自己的需求定義不同的設置,快速啟動鏡像文件并未保存用戶的最新設置,因此帶來系統設置不一致問題。這些交互設置包括桌面設置、網絡設置等。

系統常用配置常存儲在/etc下,比如桌面壁紙和app icon設置存儲在/etc/desktop文件中,網絡設置位于/etc/networking等等。專用的嵌入式設備要求一些特殊配制,像智能車載電腦要求記錄用戶播放列表位置等。

CIAB方法解決系統設置不一致問題詳細流程如圖8所示。

Bootloader載入鏡像文件,內核執行完基本初始化操作,調用函數hibernate.c/load_image_and_restore按照鏡像文件恢復系統。讀取/etc/desktop/config、/etc/networking/config和/etc/fastboot_config.xm l,根據配置文件修改系統,同步完成后顯示用戶登錄界面,之后掛起系統創建下次啟動使用的鏡像文件。

圖8 同步系統設置流程圖

5 測試與分析

本文研究基于快照的嵌入式Linux的快速啟動,在ARM體系結構下,選用FriendlyARM mini2440硬件平臺、Ubuntu for ARM操作系統加上qq、小企鵝、紙牌游戲、照相機和瀏覽器等軟件。使用printk得到優化前后的啟動時間和關機時間,分別對SDK方法、CIAB方法、NRC方法、ORK方法和ICO方法進行對比。

圖9 快速啟動開關機時間對比圖

從圖9看出,各個快速啟動方法和正常開機時間相比節省都超過60%,其中ICO方法啟動結束之后需要掃描外存同步系統數據,和SDK等快速啟動方法相比,花費時間最長,隨著用戶的使用,掃描硬盤耗時必將越來越高。NRC方法不保存干凈內存頁面、ORK只保存內核空間內存頁面和本文提出的CIAB方法開機之后內存處于干凈狀態下創建鏡像,均優化了鏡像大小,相較于SDK方法啟動時間略有縮短。

關機時間對比圖中,SDK、NRC和ORK方法關機之前創建休眠文件,關機時間比正常關機延長了65%左右。SDK方法休眠鏡像保存全部內存頁面,花費的關機時間最長。NRC方法通過關機之前申請大量內存迫使內核回收干凈頁面來減少鏡像存儲內存頁面數量,而ORK方法通過虛擬地址選擇,ORK比NRC關機時間更短。CIAB和ICO方法并為修改原本的關機邏輯,關機時間和正常關機相同。

綜上,CIAB方法開機之后大量用戶進程運行之前創建鏡像,和各個基于休眠的快速啟動方案相比,在縮短關機時間和減小鏡像文件大小方面優化顯著。

6 結語

本文通過分析Linux掛起/恢復技術,利用現有的SDK快速啟動方法,提出一種CIAB快速啟動優化方法,這種方法在縮短SDK關機時間方面優化顯著。這對研究嵌入式Linux啟動過程和加快嵌入式Linux啟動速度方面有重要的研究和借鑒意義。然而由于鏡像文件中僅僅保存了內存中的基本系統數據,下一步工作將著力于解決CIAB方法會導致啟動結束后系統的響應時間變長問題。

猜你喜歡
頁面方法系統
大狗熊在睡覺
Smartflower POP 一體式光伏系統
工業設計(2022年8期)2022-09-09 07:43:20
刷新生活的頁面
保健醫苑(2022年1期)2022-08-30 08:39:14
WJ-700無人機系統
ZC系列無人機遙感系統
北京測繪(2020年12期)2020-12-29 01:33:58
連通與提升系統的最后一塊拼圖 Audiolab 傲立 M-DAC mini
用對方法才能瘦
Coco薇(2016年2期)2016-03-22 02:42:52
四大方法 教你不再“坐以待病”!
Coco薇(2015年1期)2015-08-13 02:47:34
捕魚
同一Word文檔 縱橫頁面并存
主站蜘蛛池模板: 国产欧美亚洲精品第3页在线| 制服丝袜在线视频香蕉| 国产乱人激情H在线观看| 国产在线高清一级毛片| 亚洲视频欧美不卡| 国产成人综合在线观看| 一本无码在线观看| 国产95在线 | 亚洲欧美日韩高清综合678| 久久精品66| 伊人网址在线| 国产精品欧美在线观看| 久久婷婷五月综合色一区二区| 国产免费精彩视频| 91青青草视频在线观看的| 国产精欧美一区二区三区| 久久国产av麻豆| 午夜国产理论| 国产精品污视频| 一级毛片中文字幕| 免费AV在线播放观看18禁强制| 久无码久无码av无码| 中国精品自拍| 91久久精品国产| 国产成在线观看免费视频| 久久久亚洲色| 亚洲色图在线观看| 国产午夜人做人免费视频| 精品国产三级在线观看| 她的性爱视频| 中文字幕 欧美日韩| 国产一区二区三区在线观看视频| 伊人久久福利中文字幕| 97se亚洲综合在线韩国专区福利| 日韩高清一区 | 免费A级毛片无码免费视频| 亚洲无码一区在线观看| 亚洲欧美一级一级a| 日本黄色不卡视频| 久久黄色免费电影| 巨熟乳波霸若妻中文观看免费| 国产精品亚洲天堂| 99久久性生片| 视频二区亚洲精品| 原味小视频在线www国产| 99视频在线免费| 伊人成色综合网| 亚洲AⅤ无码国产精品| 欧美一区二区自偷自拍视频| 国产18页| 日韩黄色精品| 亚洲无卡视频| 无码综合天天久久综合网| 日本国产一区在线观看| 在线观看免费AV网| 亚洲日韩日本中文在线| 91精品国产一区自在线拍| 日韩美女福利视频| 国产精品一区不卡| 在线国产综合一区二区三区| 精品伊人久久久大香线蕉欧美| 亚洲an第二区国产精品| 国产欧美日韩资源在线观看| 国产玖玖玖精品视频| 国产精品无码一区二区桃花视频| 久久国语对白| 日韩精品高清自在线| 久久黄色一级片| 日韩国产黄色网站| 国产精品99久久久久久董美香 | 92精品国产自产在线观看| 亚欧美国产综合| 欧美日本二区| 免费久久一级欧美特大黄| 在线观看精品国产入口| 亚洲欧美不卡视频| 亚洲首页在线观看| 在线观看精品国产入口| 四虎影视库国产精品一区| 中文字幕乱码二三区免费| 久草视频福利在线观看| 白浆视频在线观看|