嵌入式操作系統內存管理技術(shù)的分析與比較

發(fā)布時(shí)間:2010-1-26 15:52    發(fā)布者:李寬
關(guān)鍵詞: 操作系統 , 管理 , 技術(shù) , 內存
1 概 述

內存管理是操作系統的中心任務(wù)之一。內存管理模塊通常是操作系統內核的一部分,其主要任務(wù)是為操作系統內核和各執行程序組織內存,跟蹤當前內存使用狀況,在需要時(shí)為進(jìn)程分配內存,使用完畢后釋放并回收內存。智能手機操作系統作為嵌入式操作系統的一種,較之普通桌面型操作系統,其內存管理有著(zhù)獨特之處:受硬件成本、設備體積等因素制約,內存容量一般相當有限,需要高效地使用;電源管理尤為重要,一次充電要保證數小時(shí)以上的工作時(shí)間;手持設備內程序一般幾天甚至幾個(gè)月不停運行,系統穩定性要求高,需保證用戶(hù)數據的安全。此外,與傳統的嵌入式實(shí)時(shí)操作系統相比,如Vx-Works,μClinux等,智能手機嵌入式操作系統還是一個(gè)開(kāi)放性的操作系統,這意味著(zhù)幾乎所有的智能手機嵌入式操作系統都允許用戶(hù)安裝第三方程序。因此,在操作系統設計時(shí)還要綜合考慮編程的易用性及接口的模塊化,以適應終端用戶(hù)、制造商、操作系統軟件開(kāi)發(fā)者和第三方軟件開(kāi)發(fā)者的不同需求。

1.1 Symbian操作系統

Symbian操作系統是智能手機市場(chǎng)中的主要成員,其市場(chǎng)份額超過(guò)70%。該操作系統由英國Symbian公司負責研發(fā)和維護,目前該公司由 Nokia、SonyErisson、Panaso-nic、Samsung等公司共同所有。Symbian操作系統的前身是EPOC,這是一個(gè)多任務(wù)的 32位軟實(shí)時(shí)操作系統。Symbian在設計之初就是專(zhuān)門(mén)針對高度內存受限的系統的,因此其在內存使用和電源管理上具有很多優(yōu)勢。Symbian操作系統具有完善的軟件開(kāi)發(fā)包,供第三方應用程序開(kāi)發(fā)使用。目前最新版本的Symbian操作系統為Symbian OS 9.5。

1.2 WindOWS Mobile操作系統

Windows Mobile是微軟為手持設備推出的“移動(dòng)版Windows”。使用Windows Mobile操作系統的設備主要有手機、PDA、隨身音樂(lè )播放器等。該操作系統是基于Windows CE內核的一種嵌入式操作系統。由于與桌面Windows操作系統的兼容性,第三方開(kāi)發(fā)者可以很方便地為Windows CE開(kāi)發(fā)程序,但與桌面Windows開(kāi)發(fā)仍存在較大區別。目前常用版本為Windows Mobile 6.1,最新版本6.5,均基于Windows CE 5.2內核。為表述一致,下文中將Windows Mobile簡(jiǎn)稱(chēng)為WinCE。

2 內存管理技術(shù)分析與比較

2.1 整體架構

Symbian操作系統誕生之初,是針對掌上型資源高度受限設備開(kāi)發(fā)的。為了追求極致的性能和最小的資源消耗,它從操作系統內核到編程框架都進(jìn)行了嚴格的優(yōu)化,甚至對C++的不少基本機制也進(jìn)行了大刀闊斧的革新。因此軟件開(kāi)發(fā)者和廠(chǎng)商需要掌握新的Symlbian C++語(yǔ)法及新的編程接口。Symbian操作系統兼容性較差,一般只支持ARM系列處理器。

WinCE系統在設計之初就充分考慮到對桌面操作系統組件和編程接口的兼容性,這樣給程序開(kāi)發(fā)者帶來(lái)很大益處,并且方便廠(chǎng)商進(jìn)行設備升級及驅動(dòng)維護。WinCE支持多種CPU,如ARM、MIPS、SH4、x86等。因此其在內存管理模塊設計上的兼容性和接口的規范性更好。Symbian相對于 WinCE的優(yōu)勢在于其針對指定處理器設計的內存管理模塊更加高效,但是這也以犧牲兼容性為代價(jià)。出于對電源管理的考慮,Symbian系統的設備CPU 頻率普遍較WinCE要低,一般為100~300 MHz(WinCE是300~800 MHz)。

2.2 ROM與RAM

(1)RAM

RAM全稱(chēng)為隨機存取存儲器,通常作為操作系統或其他正在運行的程序的臨時(shí)存儲介質(zhì),速度較快,但是當電源關(guān)閉時(shí)存儲的數據會(huì )丟失。

WinCE中RAM被分成兩塊區域,對象存儲和程序區(系統堆)。對象存儲可以被看作類(lèi)似一個(gè)永久的虛擬RAM磁盤(pán)。在Pocket PC上,當顯示屏關(guān)閉后,系統并沒(méi)有真正斷電,而是進(jìn)入低功耗的睡眠狀態(tài)(由主電池來(lái)供電)。當按下Reset按鈕后,Windows CE內核在RAM中尋找最近一次創(chuàng )建的對象存儲,如果找到,就用這個(gè)對象存儲重新啟動(dòng)。

RAM的另一個(gè)區域是程序區。這個(gè)區域就像PC機的RAM一樣。它存放所運行程序的堆和棧的空間。對象存儲和程序區的界限是可移動(dòng)的。在低內存的情況下,系統會(huì )請求用戶(hù)把部分可用的存儲對象空間提供給運行程序使用,以滿(mǎn)足程序運行時(shí)對RAM的需要。在Symbian操作系統中,RAM不存在類(lèi)似于對象存儲的區域,其RAM全部用于運行程序的臨時(shí)執行和數據存儲器。因此一般Symbian操作系統上RAM大小為7~30 MB,小于winCE中的32~128 MB。

(2)ROM

ROM是只讀存儲器。在PC機上,ROM用來(lái)存儲BIOS,通常是64~128 KB。在WinCE系統中,ROM用來(lái)存儲整個(gè)操作系統以及和OS綁定的應用程序。Symbian系統中ROM功能類(lèi)似,也是用來(lái)存儲系統驅動(dòng)程序及系統 DLL和配置文件。對ROM進(jìn)行寫(xiě)入需要指定的設備,普通用戶(hù)無(wú)法對ROM中的數據進(jìn)行操作。由于ROM中的代碼都是經(jīng)過(guò)特殊編譯,去除了重定位代碼段,因此可以在ROM上直接執行(excute in place),不用加載到RAM中,從而提高了啟動(dòng)速度并節省了RAM資源。

2.3 MMU

作為現代操作系統的一種,智能手機操作系統具有強大而高效的MMU,在這一點(diǎn)不同于其他實(shí)時(shí)嵌入式操作系統,如μC/OS-II和 μClinux。通過(guò)MMU提供的內存映射和數據保護,可以提高操作系統的運行效率和安全性。MMU運行于CPU和系統總線(xiàn)之間,負責在虛擬地址和物理地址之間進(jìn)行轉換,在任一次內存訪(fǎng)問(wèn)中都會(huì )進(jìn)行MMU的地址查找。

(1)虛擬內存

Windows CE是32位操作系統,支持4 GB的虛擬地址空間。高2 GB是系統內存空間,用來(lái)存儲相應的系統數據。低2 GB是用戶(hù)空間。所有的應用程序均有2GB的虛擬地址,但是每個(gè)應用程序的內存空間都是受保護的,其他應用程序不能訪(fǎng)問(wèn)。從最低的虛擬地址空間開(kāi)始,分為 33個(gè)slot,每個(gè)slot為32 MB。每個(gè)slot被分配為當前運行的進(jìn)程。slot 0中存放當前激活的進(jìn)程。當WinCE在進(jìn)程間切換時(shí),它就重新映射地址空間,把原進(jìn)程移出,新進(jìn)程移進(jìn)slot 0。這個(gè)任務(wù)是通過(guò)操作微處理器的頁(yè)轉換表來(lái)迅速完成的。

WinCE定義了4種內存狀態(tài):normal、limited、low、critical。這些狀態(tài)的劃分主要取決于當前可用的內存大小。在 WinCE中,當出現內存不足的情況時(shí),線(xiàn)程首先被掛起。這時(shí)系統如果沒(méi)有可用的物理RAM,需要?臻g的線(xiàn)程就會(huì )被掛起。系統首先發(fā)送 WM_HIBERNATE消息,該消息會(huì )向所有的進(jìn)程請求。它們在不破壞各自?xún)仍跔顟B(tài)的情況下盡量釋放內存,比如釋放GDI對象、緩沖數據等,然后限制內存申請的請求。如果在給定的一小段時(shí)間內,這個(gè)內存需求不能得到響應,就會(huì )彈出系統異常。在低內存情況下不應該嘗試使用大量的?臻g。而在Symbian 操作系統中,系統能運行的程序數量是由實(shí)際內存大小決定的,而不限于32個(gè)。當內存不足時(shí),運行新程序將會(huì )收到內存不足的警告,并終止進(jìn)程。

(2)虛擬地址映射

MMU一般將頁(yè)面分成4 KB大小的頁(yè)面。由于CPU不同,頁(yè)面大小也可以是1 KB或其他大小。內核使用MMU,將物理內存映射到塊的虛擬地址范圍內。WinCE與Symbian的虛擬地址映射圖如圖1所示,其中WinCE內核表現為NK.exe進(jìn)程。



在A(yíng)RMv5中,最高層的頁(yè)表有4 096個(gè)條目,每個(gè)條目4字節,因此整個(gè)目錄就有16 KB。由于WinCE支持多種不同的CPU,CPU設計結構不同頁(yè)目錄也不同,但是計算方法與ARMv5類(lèi)似。WinCE首先直接給每個(gè)進(jìn)程分配一個(gè)不同的頁(yè)表,在進(jìn)程切換中直接將不同進(jìn)程的頁(yè)表寫(xiě)入MMU的基寄存器TTBR中來(lái)實(shí)現映射。而Sym-bian系統認為每個(gè)進(jìn)程分配16 KB頁(yè)表會(huì )造成內存的浪費,因此采用了另一種管理地址映射的方法。

該模型針對ARMv5結構設計,被稱(chēng)為移動(dòng)內存模型。其核心思想是對每個(gè)進(jìn)程都提供同樣的虛擬地址空間,但是被保護的內存頁(yè)面卻不一樣。在頁(yè)面切換中,首先將原有進(jìn)程的內存移出執行地址空間,使其在用戶(hù)模式下不能訪(fǎng)問(wèn)。接著(zhù)將新進(jìn)程的數據移入執行地址,并使其可以訪(fǎng)問(wèn)。這一思想是在內存模型上層通過(guò)Chunk實(shí)現的。通過(guò)ARMv5中提供的頁(yè)表訪(fǎng)問(wèn)權限和域概念,通過(guò)改變MMU中寄存器指向的域,達到進(jìn)程間保護和內存映射。這種設計方法帶來(lái)了內核層的低內存消耗,但是雖然在內核層的安全性和內存使用效率上有所改善,卻對其他進(jìn)程的運行帶來(lái)一定影響。當映射到不同的虛擬地址空間,所有被修改的數據都要重新從主存中載入,并且緩存中的數據因為已經(jīng)被丟棄,必須重新載入。因此,該模式下的進(jìn)程上下文中很大一部分時(shí)間消耗在緩存的刷新上,一般情況下其速度是線(xiàn)程切換(同進(jìn)程)的1/100左右。盡管采取了其他措施,但是沒(méi)有從根本上改變運行時(shí)間。

在最新的ARMv6中,Symbian引入了多重內存模型。該模型兼容性更強,并可在主流處理器Intel x86和Re-nesas SuperH上使用。該模型建立在與設備和操作系統無(wú)關(guān)的基礎上,利用ARMv6中的應用空間辨識器(ASID),并通過(guò)物理標記緩存技術(shù)保證了在虛擬地址和物理地址間多重映射的正確性,很好地解決了移動(dòng)內存模型中的緩存刷新問(wèn)題。

2.4 其他技術(shù)

(1)按需頁(yè)面調度

由于在系統中虛擬內存遠大于物理內存,因此系統必須對內存使用格外注意。一種節約物理內存使用的方法是,只加載當前運行程序使用的虛擬內存所對應的物理內存,這種方法稱(chēng)為按需頁(yè)面調度。當一個(gè)進(jìn)程試圖訪(fǎng)問(wèn)一個(gè)不在當前內存中的虛擬內存地址時(shí),系統這時(shí)會(huì )重新從磁盤(pán)上將該區域加載到內存中去。桌面操作系統很久以來(lái)一直使用這一技術(shù),來(lái)加快系統啟動(dòng)速度和優(yōu)化程序運行效率,WinCE也不例外。

WinCE中,可以通過(guò)使用Config.bib對整個(gè)系統的按需頁(yè)面調度進(jìn)行設置,或通過(guò)LoadDriver等函數對單個(gè)DLL的按需頁(yè)面調度進(jìn)行設置。Symbian操作系統卻不支持這一技術(shù)。這主要是由于系統本身內存太小,采用這一技術(shù)會(huì )帶來(lái)性能大幅下降。不過(guò)隨著(zhù)手機硬件的發(fā)展,在 Symbian OS v9.3以后,系統開(kāi)始支持按需頁(yè)面調度。這一技術(shù)優(yōu)化了內存使用,在需要時(shí)加載只讀代碼,從而實(shí)現了對RAM的更高使用效率。這讓用戶(hù)可以更快地安裝應用程序,并同時(shí)保持多個(gè)應用程序的開(kāi)放狀態(tài)。

(2)內存碎片整理

在一個(gè)實(shí)時(shí)系統中,連續的頁(yè)面請求可能會(huì )帶來(lái)性能的下降。這是由于在小對象(小于1 KB的數據類(lèi)型)對內存的頻繁的動(dòng)態(tài)申請和釋放過(guò)程中,由于釋放后留下的空洞不夠新對象分配,導致不連續的內存可用空間無(wú)法被應用程序獲得,造成可用內存迅速耗盡。這種內存空洞也叫內存碎片。操作系統可能會(huì )對這種情況作一定程度的優(yōu)化,但是由于將內存可用空間壓縮而導致的效率負擔,并不是所有的操作系統都會(huì )對此優(yōu)化。

得益于Symbian操作系統本身優(yōu)化的內存管理和高度受限的內存使用原則,內存碎片其實(shí)并不會(huì )對手機系統的性能和內存使用率造成明顯影響,因此早期的Symbian版本并不支持內存碎片整理,只提供簡(jiǎn)單的手動(dòng)內存壓縮功能。Symbian 9.5之所以引入“自動(dòng)”內存碎片整理,一個(gè)重要的原因是:目前手機終端的內存容量變得越來(lái)越大,內存的能耗已經(jīng)不容忽視。在新版本中,借助內存碎片整理,可以關(guān)閉連續的空閑物理內存塊以節約能耗,當然它同時(shí)也提供了其他在主流操作系統中體現的改進(jìn)一一更高效的內存訪(fǎng)問(wèn)和更大的空閑可用內存。在 WinCE中,雖然不存在自動(dòng)內存碎片處理,但是微軟推薦使用VirtualAlloc、LocalAlloc、HeapAlloc等函數直接操作虛擬內存頁(yè),本地堆和分離堆進(jìn)行內存分配操作,而不是使用如malloc、new這類(lèi)會(huì )導致內存泄漏或異常的操作。

3 小結

Symbian與WinCE在內存管理模塊的設計上各有優(yōu)劣,這主要是由于兩個(gè)操作系統在設計之初的理念不同。Symbian設計之初是以高度受限的內存為原則進(jìn)行設計,在硬件發(fā)展較為落后的時(shí)期取得了巨大的成功,但這也給第三方軟件開(kāi)發(fā)者帶來(lái)很多困難。WinCE設計之初既要保持與 Windows其他系統在編程接口上的兼容,又要盡可能地提高內存使用效率,這樣不免對性能帶來(lái)一定程度的影響。隨著(zhù)硬件的發(fā)展,智能手機的處理器速度和內存大小都有了很大提高,WinCE由于對第三方開(kāi)發(fā)者的友好性,其發(fā)展仍然不可限量。

參考文獻

1. Babin Steve.Developing Software for Symbian OS[M].北京:人民郵電出版社,2006.
2. Boling Douglas.Programming Microsoft Windows CE.NET[M].3rd ed.NY:Microsoft Press,2003.
3. Microsoft Co.,Ltd.Windows Mobile version 5.0 Help Documentation[OL].[2009-06].http://msdn.microsoft.com/zh?cn/library /bb158532(en?us).aspx.幾種實(shí)用的低電壓冗余電源方案設計
4. 孫益輝,陳凱,白英彩.嵌入式操作系統內存管理機制分析和改進(jìn)[J].計算機應用與軟件,2006,23(3):98-115.
5. 李娜,方彥軍.嵌入式系統內存規劃方法的研究[J].微型機與應用,2005(11):74-76.
6. 黃賢英,王越.嵌入式實(shí)時(shí)系統內存管理策略[J].計算機工程與設計,2004,25(10):1808-1810.

      
作者:國防科技大學(xué) 唐朝京 田林林  張權 來(lái)源:《單片機與嵌入式系統應用》 2009(11)
本文地址:http://selenalain.com/thread-8017-1-1.html     【打印本頁(yè)】

本站部分文章為轉載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀(guān)點(diǎn)和對其真實(shí)性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問(wèn)題,我們將根據著(zhù)作權人的要求,第一時(shí)間更正或刪除。
您需要登錄后才可以發(fā)表評論 登錄 | 立即注冊

相關(guān)視頻

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復 返回頂部 返回列表
午夜高清国产拍精品福利|亚洲色精品88色婷婷七月丁香|91久久精品无码一区|99久久国语露脸精品|动漫卡通亚洲综合专区48页