亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

嵌入式實(shí)時(shí)操作系統(tǒng)中非緩沖內(nèi)存動(dòng)態(tài)分配方法

文檔序號:6361873閱讀:770來源:國知局
專利名稱:嵌入式實(shí)時(shí)操作系統(tǒng)中非緩沖內(nèi)存動(dòng)態(tài)分配方法
技術(shù)領(lǐng)域
本發(fā)明涉及計(jì)算機(jī)領(lǐng)域,具體地說,涉及一種嵌入式實(shí)時(shí)多任務(wù)操作系統(tǒng)中的內(nèi)存動(dòng)態(tài)分配方法。
背景技術(shù)
嵌入式實(shí)時(shí)操作系統(tǒng)一般由任務(wù)調(diào)度管理、時(shí)間管理、任務(wù)同步和通信、內(nèi)存管理等幾部分組成。因?yàn)閷?shí)時(shí)操作系統(tǒng)對內(nèi)存的依賴性很強(qiáng),因此內(nèi)存管理作為操作系統(tǒng)的核心就顯得很重要。
現(xiàn)在常用的固定大小內(nèi)存分配算法是使用的UB(Unbuffer,非緩沖)塊分配算法其具體算法如下預(yù)先向操作系統(tǒng)申請一塊大的內(nèi)存區(qū),它預(yù)先把大塊自由空間定義為用戶保留空間,不能把全部空間都定義為用戶保留空間,因?yàn)椴僮飨到y(tǒng)本身以及一些協(xié)議棧運(yùn)行也需要一些空間。再將該內(nèi)存區(qū)劃分為若干內(nèi)存池,每個(gè)內(nèi)存池中內(nèi)存塊的大小固定,各種大小的內(nèi)存塊的數(shù)量可根據(jù)需要配置。為了能夠最大程度上令初始配置與實(shí)際使用UB數(shù)量吻合,在程序中可以增加各種UB峰值使用的統(tǒng)計(jì),以此數(shù)據(jù)調(diào)整各種UB的數(shù)量。
根據(jù)實(shí)際情況可以將緩沖池分為64,128,256,512,1024,2048,4096,8192八種大小,每種大小的緩沖池用循環(huán)隊(duì)列來進(jìn)行管理,提供申請內(nèi)存和釋放內(nèi)存的接口。內(nèi)存管理提供其調(diào)試信息和狀態(tài)統(tǒng)計(jì)信息。申請內(nèi)存時(shí)根據(jù)申請內(nèi)存的大小選擇管理隊(duì)列,從隊(duì)列的頭摘取一個(gè)緩沖區(qū)返回指針給申請者,釋放時(shí)將內(nèi)存追加到隊(duì)列的尾部。
每種大小的內(nèi)存塊都有一個(gè)內(nèi)存管理結(jié)構(gòu),記錄下該種內(nèi)存的使用情況(空閑內(nèi)存?zhèn)€數(shù)、最大利用個(gè)數(shù)和累計(jì)申請?jiān)摲N內(nèi)存的次數(shù))。內(nèi)存隊(duì)列使用一級索引,申請內(nèi)存的大小直接映射到隊(duì)列的編號。
內(nèi)存劃分和緩沖池結(jié)構(gòu)及內(nèi)存的操作維護(hù)算法圖1所示是內(nèi)存塊劃分的情況和緩沖池POOL的結(jié)構(gòu)圖。圖2所示是內(nèi)存的操作維護(hù)算法圖,內(nèi)存隊(duì)列是一個(gè)簡單的循環(huán)隊(duì)列,申請時(shí)從隊(duì)列頭取一空閑塊,歸還時(shí)放在列尾。由于內(nèi)存隊(duì)列是系統(tǒng)每個(gè)任務(wù)都會申請和歸還的,設(shè)置了一個(gè)信號量來互斥。為了提高效率,內(nèi)存隊(duì)列采用二級索引內(nèi)存塊的大小經(jīng)過簡單的移位得到一級索引值,一級索引值即為內(nèi)存隊(duì)列的編號。
申請和釋放內(nèi)存算法(1)申請內(nèi)存時(shí),根據(jù)所需內(nèi)存數(shù)值的移位,得到一級索引值,找到相應(yīng)的POOL及其對應(yīng)的內(nèi)存隊(duì)列,根據(jù)隊(duì)列的頭,將可用數(shù)據(jù)塊的指針值返回給調(diào)用者。如附圖3所示。
(2)歸還內(nèi)存時(shí),從HEAD找到相應(yīng)的緩沖池POOL及其對應(yīng)的內(nèi)存隊(duì)列,將要釋放的內(nèi)存的指針值放入相應(yīng)內(nèi)存隊(duì)列的尾指針。
內(nèi)存UB的配置表如下/*內(nèi)存UB的配置表*/T_UBCTg_aUBPoolConfigTable[]={/*尺寸 總計(jì) 保留*/{0,0, 0},{1,120, 40},{4,100, 30},{8,80, 20},{16, 50, 10},{32, 20, 5},{64, 10, 0},{0,0, 0}};綜上所述,UB塊分配算法由于實(shí)際運(yùn)用中首先需要根據(jù)平時(shí)使用量統(tǒng)計(jì)不同大小的固定大小內(nèi)存塊的使用數(shù)量進(jìn)行靜態(tài)配置,所以會出現(xiàn)面對新的上層應(yīng)用的時(shí)候需要重新配置靜態(tài)配置表,這樣就會需要一定的時(shí)間統(tǒng)計(jì)不同大小的內(nèi)存塊的使用量。而且可能由于對不同UB塊數(shù)量需求的變化而修改配置表。另外如果配置的UB塊數(shù)量不能滿足需求會出現(xiàn)內(nèi)存申請失敗的情況。

發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問題是提供一種基于現(xiàn)在所用的UB內(nèi)存分配算法的動(dòng)態(tài)分配算法,解決以前算法中必須存在的統(tǒng)計(jì)操作和空間浪費(fèi)的缺點(diǎn),一定程度上提高了內(nèi)存的利用,而且具有伸縮性,可適應(yīng)不同規(guī)模的嵌入式系統(tǒng)。
本發(fā)明所述的非緩沖內(nèi)存動(dòng)態(tài)分配方法,包括(1)預(yù)先向操作系統(tǒng)申請一塊大的內(nèi)存區(qū);(2)將申請的內(nèi)存區(qū)設(shè)定為用戶保留區(qū);(3)設(shè)置64,128,256,512,1024,2048,4096,8192八種UB的描述數(shù)組;(4)當(dāng)程序需要內(nèi)存塊時(shí),根據(jù)所需的內(nèi)存塊大小首先在此大小UB的描述數(shù)組中查找有沒有已經(jīng)釋放空置出來的UB塊(標(biāo)識為沒有分配),如果有,則按順序分配給需要的程序;如果沒有,則從內(nèi)存區(qū)中按順序申請內(nèi)存塊,并根據(jù)申請內(nèi)存塊的大小在此大小的UB描述數(shù)組尾部添加,然后分配,同時(shí)修改描述數(shù)組中該塊內(nèi)存標(biāo)識為已經(jīng)分配;(5)當(dāng)釋放內(nèi)存塊的時(shí)候,根據(jù)內(nèi)存塊的大小在UB描述數(shù)組中查找該內(nèi)存塊的位置并釋放,同時(shí)修改描述數(shù)組中該塊內(nèi)存標(biāo)識為沒有分配。
采用本發(fā)明所述的UB的內(nèi)存動(dòng)態(tài)分配方法,與現(xiàn)有技術(shù)相比,解決了內(nèi)存模塊必須有的靜態(tài)配置問題,同時(shí)解決了當(dāng)靜態(tài)配置數(shù)目不正確而導(dǎo)致的內(nèi)存申請失敗的情況,從而達(dá)到了簡單性、可伸縮性的效果,節(jié)省了嵌入式系統(tǒng)的內(nèi)存管理所需的統(tǒng)計(jì)靜態(tài)配置數(shù)量的問題,降低了配置數(shù)目不正確的風(fēng)險(xiǎn)。


圖1所示是內(nèi)存塊劃分的情況和緩沖池POOL的結(jié)構(gòu)圖;圖2所示是內(nèi)存的操作維護(hù)算法圖;圖3所示是申請內(nèi)存的算法圖;圖4是申請的內(nèi)存區(qū)以及不同大小的UB描述數(shù)組示意圖;圖5是內(nèi)存申請的示意圖;圖6是內(nèi)存釋放的示意圖;圖7是本發(fā)明所述內(nèi)存申請的流程圖。
具體實(shí)施例方式
下面結(jié)合附圖,對本發(fā)明的具體實(shí)施作進(jìn)一步的詳細(xì)描述。
圖4顯示了預(yù)先向操作系統(tǒng)申請一塊大的內(nèi)存區(qū)1,如圖中灰色所示,并設(shè)置了64,128,256,512,1024,2048,4096,8192八種UB的描述數(shù)組。
當(dāng)需要操作系統(tǒng)分配一塊64字節(jié)的內(nèi)存時(shí),根據(jù)所需的內(nèi)存塊大小首先在此64字節(jié)UB的描述數(shù)組中查找有沒有已經(jīng)釋放空置出來的UB塊(標(biāo)識為沒有分配),在圖5,申請的內(nèi)存區(qū)b和c中以小點(diǎn)4和斜杠3表示,在64字節(jié)的描述數(shù)組中以小點(diǎn)4表示,如果有,則按順序分配;如果沒有,則從內(nèi)存區(qū)中按順序申請內(nèi)存塊,圖5申請的內(nèi)存區(qū)d中小點(diǎn)4表示,并根據(jù)申請內(nèi)存塊的大小在此大小的UB描述數(shù)組尾部添加,圖5中64字節(jié)的描述數(shù)組中以豎杠5表示,然后分配,同時(shí)修改描述數(shù)組中該塊內(nèi)存標(biāo)識為已經(jīng)分配。
由圖6所知釋放64字節(jié)內(nèi)存的時(shí)候,在64字節(jié)UB描述數(shù)組中查找該內(nèi)存塊的位置并釋放,同時(shí)修改描述數(shù)組中該塊內(nèi)存標(biāo)識為沒有分配,圖6中用斜杠6來描述釋放后的內(nèi)存塊。
圖7是內(nèi)存申請的流程圖。根據(jù)需要分配的內(nèi)存塊大小到相應(yīng)的描述數(shù)組中查找是否有可分配的內(nèi)存塊,有,就按順序分配內(nèi)存塊;沒有,就在內(nèi)存區(qū)中申請相同大小的一塊內(nèi)存,如果申請不成功,即沒有可給予的內(nèi)存空間,則分配內(nèi)存失?。蝗绻暾埑晒t在此大小的UB描述數(shù)組尾部添加然后分配該內(nèi)存塊。
綜上所述,本發(fā)明采用UB內(nèi)存動(dòng)態(tài)分配算法較以前的UB算法節(jié)省了嵌入式系統(tǒng)的內(nèi)存管理所需的統(tǒng)計(jì)靜態(tài)配置數(shù)量的問題,降低了配置數(shù)目不正確的風(fēng)險(xiǎn)。
權(quán)利要求
1.一種嵌入式實(shí)時(shí)操作系統(tǒng)中非緩沖內(nèi)存動(dòng)態(tài)分配方法,包括如下步驟(1)預(yù)先向所述嵌入式實(shí)時(shí)操作系統(tǒng)申請一塊大的內(nèi)存區(qū);(2)將申請的內(nèi)存區(qū)設(shè)定為用戶保留區(qū);其特征在于,還包括(3)在用戶保留區(qū)中設(shè)置不同內(nèi)存大小的UB描述數(shù)組;(4)需要內(nèi)存塊時(shí),根據(jù)所需內(nèi)存大小,在相應(yīng)大小的所述UB描述數(shù)組中查找已經(jīng)釋放空置出來、標(biāo)識為沒有分配的非緩沖塊,按順序分配給需要的程序,同時(shí)修改所述非緩沖描述數(shù)組中該塊內(nèi)存標(biāo)識為已經(jīng)分配;(5)釋放內(nèi)存塊時(shí),根據(jù)內(nèi)存塊的大小,在相應(yīng)大小的所述非緩沖描述數(shù)組中查找該內(nèi)存塊的位置并釋放,同時(shí)修改描述數(shù)組中該內(nèi)存塊標(biāo)識為沒有分配。
2.如權(quán)利要求1所述的嵌入式實(shí)時(shí)操作系統(tǒng)中非緩沖內(nèi)存動(dòng)態(tài)分配方法,其特征在于,步驟(3)所述不同內(nèi)存大小的非緩沖描述數(shù)組可為64,128,256,512,1024,2048,4096,8192八種。
3.如權(quán)利要求1所述的嵌入式實(shí)時(shí)操作系統(tǒng)中非緩沖內(nèi)存動(dòng)態(tài)分配方法,其特征在于,步驟(4)還包括,如果沒有已經(jīng)釋放空置出來的非緩沖塊,則從內(nèi)存區(qū)中按順序申請內(nèi)存塊,并根據(jù)申請內(nèi)存塊的大小在相應(yīng)大小的所述非緩沖描述數(shù)組尾部添加,然后分配,同時(shí)修改所述非緩沖描述數(shù)組中該塊內(nèi)存標(biāo)識為已經(jīng)分配。
4.如權(quán)利要求3所述的嵌入式實(shí)時(shí)操作系統(tǒng)中非緩沖內(nèi)存動(dòng)態(tài)分配方法,其特征在于,內(nèi)存區(qū)中沒有可給予的內(nèi)存空間,分配內(nèi)存失敗。
全文摘要
一種嵌入式實(shí)時(shí)操作系統(tǒng)中非緩沖內(nèi)存動(dòng)態(tài)分配方法,包括如下步驟,預(yù)先向操作系統(tǒng)申請一塊大的內(nèi)存區(qū);將申請的內(nèi)存區(qū)設(shè)定為用戶保留區(qū);設(shè)置非緩沖描述數(shù)組;在所述非緩沖描述數(shù)組中查找已經(jīng)釋放空置出來、標(biāo)識為沒有分配的非緩沖塊,按順序分配給需要的程序,同時(shí)修改所述非緩沖描述數(shù)組中該塊內(nèi)存標(biāo)識為已經(jīng)分配;在非緩沖描述數(shù)組中查找該內(nèi)存塊的位置并釋放,同時(shí)修改描述數(shù)組中該內(nèi)存塊標(biāo)識為沒有分配。本發(fā)明解決以前算法中必須存在的統(tǒng)計(jì)操作和空間浪費(fèi)的缺點(diǎn),一定程度上提高了內(nèi)存的利用,而且具有伸縮性,可適應(yīng)不同規(guī)模的嵌入式系統(tǒng)。
文檔編號G06F12/06GK1570883SQ0313207
公開日2005年1月26日 申請日期2003年7月15日 優(yōu)先權(quán)日2003年7月15日
發(fā)明者魯旭, 繆敬, 黃燁明, 蘆東昕 申請人:中興通訊股份有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1