中文字幕 另类精品,亚洲欧美一区二区蜜桃,日本在线精品视频免费,孩交精品乱子片免费

<sup id="3hn2b"></sup>

    1. <sub id="3hn2b"><ol id="3hn2b"></ol></sub><legend id="3hn2b"></legend>

      1. <xmp id="3hn2b"></xmp>

      2. 新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 嵌入式操作系統(tǒng)內(nèi)存管理技術(shù)的分析與比較

        嵌入式操作系統(tǒng)內(nèi)存管理技術(shù)的分析與比較

        作者: 時(shí)間:2009-12-14 來源:網(wǎng)絡(luò) 收藏

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

        本文引用地址:http://www.antipu.com.cn/article/152235.htm

        在ARMv5中,最高層的頁表有4 096個(gè)條目,每個(gè)條目4字節(jié),因此整個(gè)目錄就有16 KB。由于WinCE支持多種不同的CPU,CPU設(shè)計(jì)結(jié)構(gòu)不同頁目錄也不同,但是計(jì)算方法與ARMv5類似。WinCE首先直接給每個(gè)進(jìn)程分配一個(gè)不同的頁表,在進(jìn)程切換中直接將不同進(jìn)程的頁表寫入MMU的基寄存器TTBR中來實(shí)現(xiàn)映射。而Sym-bian系統(tǒng)認(rèn)為每個(gè)進(jìn)程分配16 KB頁表會造成的浪費(fèi),因此采用了另一種地址映射的方法。
        該模型針對ARMv5結(jié)構(gòu)設(shè)計(jì),被稱為移動模型。其核心思想是對每個(gè)進(jìn)程都提供同樣的虛擬地址空間,但是被保護(hù)的內(nèi)存頁面卻不一樣。在頁面切換中,首先將原有進(jìn)程的內(nèi)存移出執(zhí)行地址空間,使其在用戶模式下不能訪問。接著將新進(jìn)程的數(shù)據(jù)移入執(zhí)行地址,并使其可以訪問。這一思想是在內(nèi)存模型上層通過Chunk實(shí)現(xiàn)的。通過ARMv5中提供的頁表訪問權(quán)限和域概念,通過改變MMU中寄存器指向的域,達(dá)到進(jìn)程間保護(hù)和內(nèi)存映射。這種設(shè)計(jì)方法帶來了內(nèi)核層的低內(nèi)存消耗,但是雖然在內(nèi)核層的安全性和內(nèi)存使用效率上有所改善,卻對其他進(jìn)程的運(yùn)行帶來一定影響。當(dāng)映射到不同的虛擬地址空間,所有被修改的數(shù)據(jù)都要重新從主存中載入,并且緩存中的數(shù)據(jù)因?yàn)橐呀?jīng)被丟棄,必須重新載入。因此,該模式下的進(jìn)程上下文中很大一部分時(shí)間消耗在緩存的刷新上,一般情況下其速度是線程切換(同進(jìn)程)的1/100左右。盡管采取了其他措施,但是沒有從根本上改變運(yùn)行時(shí)間。
        在最新的ARMv6中,Symbian引入了多重內(nèi)存模型。該模型兼容性更強(qiáng),并可在主流處理器Intel x86和Re-nesas SuperH上使用。該模型建立在與設(shè)備和無關(guān)的基礎(chǔ)上,利用ARMv6中的應(yīng)用空間辨識器(ASID),并通過物理標(biāo)記緩存保證了在虛擬地址和物理地址間多重映射的正確性,很好地解決了移動內(nèi)存模型中的緩存刷新問題。
        2.4 其他
        (1)按需頁面調(diào)度
        由于在系統(tǒng)中虛擬內(nèi)存遠(yuǎn)大于物理內(nèi)存,因此系統(tǒng)必須對內(nèi)存使用格外注意。一種節(jié)約物理內(nèi)存使用的方法是,只加載當(dāng)前運(yùn)行程序使用的虛擬內(nèi)存所對應(yīng)的物理內(nèi)存,這種方法稱為按需頁面調(diào)度。當(dāng)一個(gè)進(jìn)程試圖訪問一個(gè)不在當(dāng)前內(nèi)存中的虛擬內(nèi)存地址時(shí),系統(tǒng)這時(shí)會重新從磁盤上將該區(qū)域加載到內(nèi)存中去。桌面很久以來一直使用這一,來加快系統(tǒng)啟動速度和優(yōu)化程序運(yùn)行效率,WinCE也不例外。
        WinCE中,可以通過使用Config.bib對整個(gè)系統(tǒng)的按需頁面調(diào)度進(jìn)行設(shè)置,或通過LoadDriver等函數(shù)對單個(gè)DLL的按需頁面調(diào)度進(jìn)行設(shè)置。Symbian卻不支持這一技術(shù)。這主要是由于系統(tǒng)本身內(nèi)存太小,采用這一技術(shù)會帶來性能大幅下降。不過隨著手機(jī)硬件的發(fā)展,在Symbian OS v9.3以后,系統(tǒng)開始支持按需頁面調(diào)度。這一技術(shù)優(yōu)化了內(nèi)存使用,在需要時(shí)加載只讀代碼,從而實(shí)現(xiàn)了對RAM的更高使用效率。這讓用戶可以更快地安裝應(yīng)用程序,并同時(shí)保持多個(gè)應(yīng)用程序的開放狀態(tài)。
        (2)內(nèi)存碎片整理
        在一個(gè)實(shí)時(shí)系統(tǒng)中,連續(xù)的頁面請求可能會帶來性能的下降。這是由于在小對象(小于1 KB的數(shù)據(jù)類型)對內(nèi)存的頻繁的動態(tài)申請和釋放過程中,由于釋放后留下的空洞不夠新對象分配,導(dǎo)致不連續(xù)的內(nèi)存可用空間無法被應(yīng)用程序獲得,造成可用內(nèi)存迅速耗盡。這種內(nèi)存空洞也叫內(nèi)存碎片。操作系統(tǒng)可能會對這種情況作一定程度的優(yōu)化,但是由于將內(nèi)存可用空間壓縮而導(dǎo)致的效率負(fù)擔(dān),并不是所有的操作系統(tǒng)都會對此優(yōu)化。
        得益于Symbian操作系統(tǒng)本身優(yōu)化的內(nèi)存和高度受限的內(nèi)存使用原則,內(nèi)存碎片其實(shí)并不會對手機(jī)系統(tǒng)的性能和內(nèi)存使用率造成明顯影響,因此早期的Symbian版本并不支持內(nèi)存碎片整理,只提供簡單的手動內(nèi)存壓縮功能。Symbian 9.5之所以引入“自動”內(nèi)存碎片整理,一個(gè)重要的原因是:目前手機(jī)終端的內(nèi)存容量變得越來越大,內(nèi)存的能耗已經(jīng)不容忽視。在新版本中,借助內(nèi)存碎片整理,可以關(guān)閉連續(xù)的空閑物理內(nèi)存塊以節(jié)約能耗,當(dāng)然它同時(shí)也提供了其他在主流操作系統(tǒng)中體現(xiàn)的改進(jìn)一一更高效的內(nèi)存訪問和更大的空閑可用內(nèi)存。在WinCE中,雖然不存在自動內(nèi)存碎片處理,但是微軟推薦使用VirtualAlloc、LocalAlloc、HeapAlloc等函數(shù)直接操作虛擬內(nèi)存頁,本地堆和分離堆進(jìn)行內(nèi)存分配操作,而不是使用如malloc、new這類會導(dǎo)致內(nèi)存泄漏或異常的操作。


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

        linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)

        上一頁 1 2 下一頁

        評論


        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉