新聞中心

EEPW首頁(yè) > 模擬技術(shù) > 設(shè)計(jì)應(yīng)用 > R TOS動(dòng)態(tài)分區(qū)內(nèi)存管理機(jī)制的優(yōu)化設(shè)計(jì)

R TOS動(dòng)態(tài)分區(qū)內(nèi)存管理機(jī)制的優(yōu)化設(shè)計(jì)

作者: 時(shí)間:2009-10-13 來(lái)源:網(wǎng)絡(luò) 收藏
引 言
在嵌入式領(lǐng)域中,嵌入式實(shí)時(shí)操作系統(tǒng)(R)正得到越來(lái)越廣泛的應(yīng)用。采用嵌入式實(shí)時(shí)操作系統(tǒng)可以更合理、更有效地利用CPU的資源,簡(jiǎn)化應(yīng)用軟件的設(shè)計(jì),縮短系統(tǒng)開發(fā)時(shí)間,更好地保證系統(tǒng)的實(shí)時(shí)性和可靠性。內(nèi)存資源作為嵌入式系統(tǒng)中極為重要的資源之一,其管理機(jī)制歷來(lái)是嵌入式系統(tǒng)設(shè)計(jì)的重點(diǎn)和難點(diǎn)。機(jī)制的優(yōu)劣程度極大地影響著嵌入式系統(tǒng)的整體性能,因此在嵌入式R機(jī)制中必須滿足以下3個(gè)要求:
①實(shí)時(shí)性。在嵌入式R中不僅要求調(diào)度機(jī)制的實(shí)時(shí)性,資源的分配和回收的實(shí)時(shí)性也十分重要。
②可靠性。嵌入式系統(tǒng)的應(yīng)用領(lǐng)域決定了嵌入式RTOS必須具有高可靠性,而的可靠程度直接影響RTOS的可靠性,因此內(nèi)存管理的可靠性也必不可少。
③高效性。由于嵌入式系統(tǒng)資源的稀缺性,因而高效的資源管理機(jī)制也同等重要。

1 內(nèi)存管理機(jī)制
1.1 內(nèi)存管理概述

在許多小型嵌入式系統(tǒng)中并未實(shí)現(xiàn)虛擬內(nèi)存機(jī)制,內(nèi)存管理機(jī)制仍然是首選。分區(qū)存儲(chǔ)管理是滿足多道程序設(shè)計(jì)的最簡(jiǎn)單的存儲(chǔ)管理方法,它允許多個(gè)用戶程序同時(shí)存在系統(tǒng)內(nèi)存中,即共享內(nèi)存空間。早期的分區(qū)存儲(chǔ)管理采用固定分區(qū)的方法,把內(nèi)存空間分成若干個(gè)大小不等的區(qū)域,稱為分區(qū)。每個(gè)用戶程序(作業(yè)、進(jìn)程)調(diào)入內(nèi)存后,占用其中1個(gè)分區(qū),程序運(yùn)行完成后釋放該分區(qū)。這種存儲(chǔ)管理方法的主要問(wèn)題是內(nèi)存使用效率極低,很快就被淘汰了。取而代之的是動(dòng)態(tài)分區(qū)存儲(chǔ)管理技術(shù)。圖1顯示的是動(dòng)態(tài)內(nèi)存管理的數(shù)據(jù)結(jié)構(gòu)。

本文引用地址:http://m.butianyuan.cn/article/188571.htm

1.2 動(dòng)態(tài)分區(qū)內(nèi)存分收算法及其性能分析
在動(dòng)態(tài)內(nèi)存分配機(jī)制中一般采用兩種設(shè)計(jì)方案:最佳適應(yīng)算法和首次適應(yīng)算法。最佳適應(yīng)算法要求所有的空閑內(nèi)存塊按照內(nèi)存塊的大小,由小到大鏈接在一起。首次適應(yīng)算法中所有的空閑內(nèi)存塊都是按地址由小到大鏈接的。圖2顯示了這2種算法的流程(假設(shè)系統(tǒng)申請(qǐng)的內(nèi)存塊大小為n)。

最佳適應(yīng)算法和首次適應(yīng)算法在分配內(nèi)存的流程上是一致的,然而由于空閑內(nèi)存塊的組織形式不同,其分配的性能也不盡相同。最佳適應(yīng)算法由于每次分配都是首先分配與所要求的內(nèi)存塊大小最接近的空閑內(nèi)存塊,因而其內(nèi)存利用率相對(duì)較高。然而由于在內(nèi)存回收過(guò)程中需要合并那些地址相鄰的空閑塊,最佳適應(yīng)算法往往需要遍歷整個(gè)空閑區(qū)鏈表以尋找符合條件的內(nèi)存塊。而首次適應(yīng)算法由于是按照地址的順序相連,因而在內(nèi)存回收方面有著最佳適應(yīng)算法無(wú)法比擬的性能。
圖3顯示了在幾種不同情況下,動(dòng)態(tài)分區(qū)內(nèi)存回收機(jī)制所采取的策略。

在A中,釋放區(qū)回收后合并成新內(nèi)存塊f,其首地址為f1內(nèi)存塊的首地址,大小為f1和R內(nèi)存塊的大小之和。在B中,釋放區(qū)回收后合并成新內(nèi)存塊f,其首地址為R內(nèi)存塊的首地址,大小為f1和R內(nèi)存塊的大小之和。在C中,釋放區(qū)回收后合并成新內(nèi)存塊f,其首地址為f1內(nèi)存塊的首地址,大小為f1和R以及f2內(nèi)存塊的大小之和。在D中,釋放區(qū)回收后不進(jìn)行合并,直接插入空閑區(qū)鏈表并返回。
動(dòng)態(tài)分區(qū)內(nèi)存的分配機(jī)制有效地避免了內(nèi)存內(nèi)部碎片的存在,同時(shí)在內(nèi)存回收策略中使用合并算法也極大地減少了內(nèi)存外部碎片存在的可能性。然而,當(dāng)系統(tǒng)需要分配大量的小塊內(nèi)存時(shí),動(dòng)態(tài)分區(qū)內(nèi)存管理機(jī)制的性能卻并不令人滿意。其不足之處主要存在以下2個(gè)方面:
①當(dāng)系統(tǒng)分配大量的小塊內(nèi)存后,其空閑區(qū)表或空閑區(qū)隊(duì)列將會(huì)變得異常龐大。無(wú)論是首次適配算法還是最佳適應(yīng)算法都需要遍歷空閑區(qū)搜索合適的內(nèi)存塊,因此過(guò)于龐大的空閑區(qū)結(jié)構(gòu)使搜索算法變得低效。
②系統(tǒng)在某些特定的時(shí)刻往往會(huì)對(duì)大量的小塊內(nèi)存進(jìn)行頻繁分配和回收。頻繁地對(duì)小塊內(nèi)存進(jìn)行分割分配和合并回收,其實(shí)時(shí)性表現(xiàn)得并不令人滿意。
基于以上2點(diǎn),如何在動(dòng)態(tài)分區(qū)內(nèi)存管理機(jī)制的基礎(chǔ)上優(yōu)化小塊內(nèi)存的管理機(jī)制,成為提高動(dòng)態(tài)分區(qū)內(nèi)存管理性能的關(guān)鍵因素之一。

2 小塊內(nèi)存動(dòng)態(tài)緩存分配機(jī)制
大部分實(shí)時(shí)操作系統(tǒng)內(nèi)存分配機(jī)制并未對(duì)大塊內(nèi)存和小塊內(nèi)存的分配做出不同的算法設(shè)計(jì),然而在實(shí)際分配過(guò)程中,很難用一種分配算法兼顧大小內(nèi)存的高效分配。針對(duì)動(dòng)態(tài)分區(qū)內(nèi)存管理機(jī)制中對(duì)小塊內(nèi)存分配的局限性,提出了小塊內(nèi)存動(dòng)態(tài)緩存機(jī)制。該機(jī)制在繼承了動(dòng)態(tài)分區(qū)管理機(jī)制優(yōu)良性能的同時(shí),優(yōu)化了小塊內(nèi)存的管理,對(duì)內(nèi)存管理的實(shí)時(shí)性和高效性都有一定提高。系統(tǒng)中同時(shí)存在2種內(nèi)存數(shù)據(jù)結(jié)構(gòu),分別為小塊內(nèi)存和大塊內(nèi)存設(shè)計(jì)。大塊內(nèi)存依舊采取動(dòng)態(tài)分區(qū)內(nèi)存管理機(jī)制,而小塊內(nèi)存采取動(dòng)態(tài)緩存分配。小塊內(nèi)存數(shù)據(jù)結(jié)構(gòu)如圖4所示。


上一頁(yè) 1 2 下一頁(yè)

評(píng)論


相關(guān)推薦

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

關(guān)閉