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

TLSF動(dòng)態(tài)內(nèi)存分配算法的研究與應(yīng)用

2011-06-22 08:18:42李江梅靜靜王申良束頎
關(guān)鍵詞:分配定義結(jié)構(gòu)

李江,梅靜靜,王申良,束頎

(安徽理工大學(xué)研究生處,淮南232001)

引 言

由于動(dòng)態(tài)內(nèi)存分配存在著執(zhí)行時(shí)間不確定與內(nèi)存碎片過多等問題,嵌入式實(shí)時(shí)系統(tǒng)中很少使用。TLSF動(dòng)態(tài)內(nèi)存算法中內(nèi)存分配與釋放均為常數(shù),并且具有內(nèi)存自動(dòng)合并、靈活性強(qiáng)、內(nèi)存碎片少等特點(diǎn)[1]。實(shí)時(shí)操作系統(tǒng)μ C/OS-II中內(nèi)存分配使用的是一種靜態(tài)內(nèi)存分區(qū)方式,內(nèi)存分配與釋放的時(shí)間是確定的,缺乏靈活性,而且內(nèi)存的分配與釋放都需要指定正確的內(nèi)存分區(qū)[2],使用比較麻煩,容易出錯(cuò)。

本文把TLSF移植到μ C/OSII中,以提高內(nèi)存分配的靈活性與執(zhí)行的實(shí)時(shí)性,并通過軟件仿真測(cè)試TLSF在μ C/OS-II操作系統(tǒng)中的運(yùn)行效果。

1 對(duì)TLSF的簡介

TLSF是一種二級(jí)隔離適應(yīng)算法,使用位圖與鏈表相結(jié)合的方式對(duì)內(nèi)存池進(jìn)行管理。TLSF實(shí)現(xiàn)過程如下:定義一級(jí)索引最大值MAX_FLI(小于32)與二級(jí)索引最大值MAX_SLI,MAX_SLI等于2的 MAX_LOG2_SLI次方(MAX_LOG2_SLI為程序中計(jì)算方便定義的);申請(qǐng)一塊大的內(nèi)存池,通過定義全局變量作為內(nèi)存池,或者使用操作系統(tǒng)申請(qǐng)一塊比較大的內(nèi)存區(qū)(池)使用;使用tlsf_malloc函數(shù)申請(qǐng)內(nèi)存,使用tlsf_free函數(shù)釋放內(nèi)存,還包括realloc與calloc函數(shù)等函數(shù)[3]。

TLSF的數(shù)據(jù)結(jié)構(gòu)如圖1所示。

使用如同μ C/OS-II中管理任務(wù)就緒表的形式定義變量FL_bitmap與SL_bitmaps[],空閑鏈表中有空閑塊相應(yīng)位置1。使用一級(jí)索引fl與二級(jí)索引sl確定對(duì)應(yīng)空閑鏈表中空閑塊的大小值的范圍。fl確定了此一索引管理的內(nèi)存范圍是[2^fl,2^(fl+1))。二級(jí)索引值sl表示一級(jí)索引被平分為sl塊[4]。

圖1 TLSF數(shù)據(jù)結(jié)構(gòu)圖

2 TLSF中用到的變量與結(jié)構(gòu)體

2.1 tlsf_t結(jié)構(gòu)體

每個(gè)內(nèi)存區(qū)(池)都使用結(jié)構(gòu)體tlsf_t管理,此結(jié)構(gòu)存儲(chǔ)在內(nèi)存區(qū)的首部,其結(jié)構(gòu)如下:

此結(jié)構(gòu)體也記錄內(nèi)存區(qū)的基本信息,在 tlsf.c中定義全局變量“static char*mp=NULL;”管理所有的內(nèi)存區(qū)。在結(jié)構(gòu)體tlsf_t中還用到兩個(gè)結(jié)構(gòu)體:area_info_t與bhdr_t。

2.2 結(jié)構(gòu)體area_info_t

結(jié)構(gòu)體area_info_t用來鏈接各個(gè)不相鄰的內(nèi)存區(qū),其結(jié)構(gòu)如下:

2.3 結(jié)構(gòu)體bhdr_t

結(jié)構(gòu)體bhdr_t存儲(chǔ)各個(gè)空閑鏈表的表頭,如果此鏈表中無空閑內(nèi)存塊,則為null。結(jié)構(gòu)體如下所示:

而結(jié)構(gòu)體struct free_ptr_struct用來鏈接一鏈表中的各個(gè)空閑內(nèi)存塊,結(jié)構(gòu)如下:

3 TLSF中用到的函數(shù)

TLSF算法主要包括:內(nèi)存區(qū)的初始化函數(shù)init_memory_pool、內(nèi)存區(qū)銷毀函數(shù) destroy_memory_pool、增加內(nèi)存區(qū)函數(shù)add_new_area,以及內(nèi)存分配相關(guān)的函數(shù)tlsf_malloc、tlsf_free()、tlsf_realloc()、tlsf_calloc()等。

3.1 內(nèi)存初始化函數(shù)init_memory_pool

此函數(shù)用來初始化一塊大的內(nèi)存區(qū),為結(jié)構(gòu)體tlsf賦值(內(nèi)存區(qū)首地址的N個(gè)字節(jié)),并通過調(diào)用函數(shù)process_area對(duì)剩下的內(nèi)存區(qū)進(jìn)行處理,處理后的內(nèi)存如圖 2所示。之后,把內(nèi)存塊b釋放掉,得到初始內(nèi)存塊b,這也是整個(gè)內(nèi)存區(qū)所管理的動(dòng)態(tài)內(nèi)存大小。

3.2 內(nèi)存分配函數(shù)tlsf_malloc

此函數(shù)實(shí)現(xiàn)內(nèi)存的分配,參數(shù)為內(nèi)存大小,返回為內(nèi)存首地址。其偽函數(shù)如下所示:

圖2 內(nèi)存區(qū)處理后的結(jié)構(gòu)圖

此函數(shù)中,主要是通過內(nèi)部內(nèi)存分配函數(shù)malloc_ex來實(shí)現(xiàn)的,其流程如圖3所示。

圖3 malloc_ex()流程

3.3 釋放內(nèi)存函數(shù)tlsf_realloc

內(nèi)存釋放的主要工作在函數(shù)free_ex中實(shí)現(xiàn),主要是判斷釋放內(nèi)存塊的前后內(nèi)存塊是否也是空閑的,如果是空閑內(nèi)存塊,兩塊內(nèi)存塊合并為一個(gè)大的內(nèi)存塊,并根據(jù)內(nèi)存大小加入相應(yīng)的空閑鏈表中,并調(diào)整bit位。其偽代碼如下:

與內(nèi)存分配相關(guān)的函數(shù)還包括tlsf_realloc、tlsf_calloc等,其實(shí)現(xiàn)過程與tlsf_malloc函數(shù)類似。

4 TLSF移植到 μ C/OS-ⅠⅠ

對(duì)TLSF的移植十分簡單,需要與TLSF鎖相關(guān)函數(shù),包括鎖的創(chuàng)建、申請(qǐng)、釋放、消耗等功能,使用互斥量來實(shí)現(xiàn)TLSF鎖功能[5]。相應(yīng)的函數(shù)如下:

猜你喜歡
分配定義結(jié)構(gòu)
《形而上學(xué)》△卷的結(jié)構(gòu)和位置
應(yīng)答器THR和TFFR分配及SIL等級(jí)探討
論結(jié)構(gòu)
中華詩詞(2019年7期)2019-11-25 01:43:04
遺產(chǎn)的分配
一種分配十分不均的財(cái)富
績效考核分配的實(shí)踐與思考
論《日出》的結(jié)構(gòu)
成功的定義
山東青年(2016年1期)2016-02-28 14:25:25
創(chuàng)新治理結(jié)構(gòu)促進(jìn)中小企業(yè)持續(xù)成長
修辭學(xué)的重大定義
主站蜘蛛池模板: 久久久久免费看成人影片| 欧美一级大片在线观看| 欧美午夜视频| 人人艹人人爽| 99在线视频网站| 国产成人永久免费视频| 亚洲视频在线青青| 国产成人综合日韩精品无码首页| 国产精品香蕉| 国产亚洲一区二区三区在线| 久久久久人妻一区精品色奶水| 91久久国产综合精品女同我| 欧洲成人在线观看| 美女免费黄网站| 深爱婷婷激情网| 国产亚洲视频在线观看| 成人韩免费网站| 97青青青国产在线播放| 毛片视频网址| 亚洲va在线∨a天堂va欧美va| 国产美女主播一级成人毛片| 亚洲性网站| 国产特级毛片| 四虎在线观看视频高清无码| 国产91精品调教在线播放| 都市激情亚洲综合久久| 亚洲视频无码| 国产毛片高清一级国语 | 亚洲伦理一区二区| 亚洲人成影院午夜网站| 最新日韩AV网址在线观看| 亚洲一区精品视频在线| 国产一在线观看| 尤物亚洲最大AV无码网站| 最新国产在线| 综合色在线| 国产内射一区亚洲| 91麻豆国产在线| 久久香蕉国产线看精品| 亚洲高清无在码在线无弹窗| 亚洲人在线| 亚洲中文字幕久久精品无码一区| 欧美成人a∨视频免费观看| 性69交片免费看| 2020精品极品国产色在线观看| 午夜日b视频| 日韩欧美中文字幕在线韩免费| 中文字幕无码制服中字| 久久综合久久鬼| 国产精品自在在线午夜区app| 91精品人妻一区二区| 青青草原国产一区二区| 露脸一二三区国语对白| 亚洲香蕉伊综合在人在线| 久久熟女AV| 特级aaaaaaaaa毛片免费视频| 最新亚洲人成无码网站欣赏网| 日韩乱码免费一区二区三区| 极品私人尤物在线精品首页| 亚洲欧美综合精品久久成人网| 免费观看欧美性一级| 欧美在线三级| 欧美色伊人| 国产丝袜无码一区二区视频| 毛片免费试看| a色毛片免费视频| 国产网站免费看| 免费女人18毛片a级毛片视频| 国产91视频观看| 天天摸天天操免费播放小视频| 国产一区成人| 爱爱影院18禁免费| 国产女主播一区| 久爱午夜精品免费视频| 国产激爽爽爽大片在线观看| 四虎亚洲精品| 亚洲男人的天堂久久香蕉| 午夜精品区| 久久99这里精品8国产| av手机版在线播放| 国产成人精品在线| 人妻一本久道久久综合久久鬼色|