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

一種基于機載嵌入式系統(tǒng)內存動態(tài)管理方式

2019-07-16 03:14:59薛楠李斌王曉華楊明偉杜建華
電腦知識與技術 2019年15期

薛楠 李斌 王曉華 楊明偉 杜建華

摘要:在嵌入式軟件開發(fā)和設計中,軟件的安全性和穩(wěn)定性是非常重要的,一個大型的嵌入式軟件是由各個不同功能的軟件子系統(tǒng)構成的[1]。在眾多不同功能的軟件子系統(tǒng)中,內存管理功能模塊是最重要的子功能模塊,也是其他子功能模塊的基礎[2]。該文提出了一種基于動態(tài)內存管理和分配的雙向鏈表管理方式,在動態(tài)給定存儲地址和空間大小基礎上,根據(jù)實際需要,將存儲空間作為內存池進行動態(tài)管理,實現(xiàn)功能包括動態(tài)的內存申請和釋放,以及給定地址內存塊的查詢,高效、動態(tài)地對內存空間進行操作。

關鍵詞:嵌入式系統(tǒng);內存管理;雙向鏈表

中圖分類號:TP309 ? ? ? ?文獻標識碼:A

文章編號:1009-3044(2019)15-0281-02

1 引言

在嵌入式系統(tǒng)軟件開發(fā)過程中,由于嵌入式系統(tǒng)的特殊性,系統(tǒng)擁有的資源是十分有限的,但是又要滿足各個子系統(tǒng)功能的使用要求,這就要求對嵌入式系統(tǒng)資源進行最高效、合理的使用[3]。內存管理是嵌入式系統(tǒng)軟件開發(fā)中非常重要的子功能,由于資源的限制,內存資源是否被合理利用并且高效利用已經(jīng)成為嵌入式軟件開發(fā)的核心[4]。

在一般的靜態(tài)內存管理中,嵌入式系統(tǒng)軟件可以使用操作系統(tǒng)封裝的內存分配和內存釋放接口,而其管理是經(jīng)過操作系統(tǒng)進行的,并且內存空間的首地址和大小一般也是固定的。開發(fā)者只可看到內存空間是否分配成功、是否釋放成功和是否引起內存泄露等[5]。動態(tài)分配是根據(jù)實時需要,將一段動態(tài)給定的地址空間作為一個內存池,根據(jù)內存池的首地址和長度對內存空間進行合理化的動態(tài)分段管理和使用。因此,內存動態(tài)管理方式相比內存靜態(tài)管理方式更加靈活,內存使用率也更高。本文提出一種機載嵌入式系統(tǒng)內存動態(tài)管理方式,使用雙向鏈表方式動態(tài)對內存空間進行管理和操控,在內存空間資源有限的前提下高效利用空間資源,并且極大程度減少內存泄露的發(fā)生[6]。

2 動態(tài)內存管理方案與設計

2.1 內存池初始化

一般情況下,動態(tài)內存管理的方式是在系統(tǒng)需要時,實時的根據(jù)給定的一段可用物理內存空間的首地址和內存空間長度,通過一定的方式將物理內存空間轉化成軟件可直接操控的空間,提供給軟件各個功能模塊使用[7]。本文提出的內存管理方式,首先根據(jù)提供的可用內存首地址和內存長度,根據(jù)字節(jié)對齊將這段內存空間分配為一個分段連續(xù)的內存池空間,可看作連續(xù)的內存塊組。根據(jù)多少字節(jié)對齊可以由需求動態(tài)決定,對齊的字節(jié)個數(shù)保持和每次需要申請空間的大小一致,或可將需要的內存空間大小整除,可將內存充分使用,避免內存碎片的產生。使用過程中也可以根據(jù)需要針對同一個內存空間,使用不同的對齊字節(jié)分配多個子內存池來滿足使用。

定義一個雙向鏈表結構體變量指針,作為第一個結構體變量,其中的內存空間變量指針指向內存池內存塊組的第一個內存塊,結構體變量中保存了直接前驅和直接后繼兩個結構體的指針(初始都為NULL),以及當前結構體變量指針所指內存塊和當前結構體的直接后繼結構體變量所指向內存塊之間的內存塊使用與否的標志變量(初始為未使用)以及內存塊個數(shù)(初始為所有內存塊) 。

2.2 給定大小內存空間申請

當需要申請內存空間時,首先找到當前結構體變量,并計算需申請的內存空間需要使用多少個內存塊。先判斷當前結構體變量指向的內存中剩余的內存塊個數(shù)是否大于需要申請的內存空間所使用的內存塊個數(shù)并且剩余內存塊組使用標志位是否為未使用,然后申請一個新的雙向鏈表結構體變量指針,新結構體變量指針的內存空間變量指針指向的地址空間為當前的結構體變量指向的內存塊地址向后偏移一段長度,此長度為需要申請的內存空間所使用的內存塊個數(shù),其直接前驅指針指向當前的結構體變量,直接后繼指針指向當前結構體變量的直接后繼結構體變量,其當前可用內存塊個數(shù)為當前結構體變量中保存的內存塊個數(shù)減去需要申請的內存空間所使用的內存塊個數(shù)后余下的內存塊個數(shù),并將當前結構體變量中的內存塊使用與否標記為使用,將新的結構體變量中的內存塊使用與否標記為未使用。最后將當前結構體變量指向的內存塊地址傳出給外部使用,并將新的結構體變量當作當前的結構體變量;若剛開始當前結構體變量指向的內存塊使用標志為已使用或可用內存塊個數(shù)不夠,則繼續(xù)尋找下一個結構體變量,若為空則當前結構體變量取值為指向第一個內存塊的結構體變量,實現(xiàn)內存空間的環(huán)形尋址使用。

作為舉例,根據(jù)系統(tǒng)需要對齊的字節(jié)長度為a。假設當前分配好的內存池大小為a*n,總共可分配n個內存塊。現(xiàn)在已申請3a大小內存塊基礎上需再申請2a大小的內存塊,具體流程圖如圖1所示,灰色內存塊標注已使用。

若后面需申請的內存空間大小所需內存塊個數(shù)超過n-5,當前結構體變量指針中標記的剩余內存塊個數(shù)不夠,且當前結構體變量指針的直接后繼指針為空,則將第一個結構體變量First標記為當前結構體變量指針,繼續(xù)之前操作。

2.3 釋放給定地址內存塊

當需要釋放內存空間時,首先根據(jù)內存地址尋找其在內存池中所對應的內存塊,并找到保存這個內存塊首地址的目標結構體變量。將目標結構體變量使用標志設為未使用,然后取目標結構體變量的直接前驅和直接后繼兩個結構體變量指針,若前后兩個結構體變量所指向的內存塊組均不為空,并且使用標志位和目標結構體指向的內存塊一致,則將此三個結構體變量合成為一個,并將其中的所有內存塊合并為一整個內存塊,指針指向此內存塊的結構體變量設置為當前結構體變量;若目標結構體變量的直接前驅或直接后繼結構體變量所指向內存塊組的使用標志位和目標結構體變量不一致,則不對使用標志位不一致的結構體變量以及對應的內存塊組進行合并。作為舉例,要釋放第二個結構體變量指針指向的內存塊組,內存塊組有兩個內存塊,如圖2所示:

首先將目標結構體變量標記的內存塊組使用標記設置為未使用,然后修改其直接前驅和直接后繼的頭尾指針,將目標結構體變量中包含的可用內存塊組個數(shù)疊加到其直接前驅結構體變量中,將目標結構體變量和其直接前驅結構體變量合稱為一個結構體變量,描述為當前結構體變量。最后用同樣方式,將當前結構體變量和直接后繼結構體變量合成為一個結構體變量,描述為當前結構體變量。具體流程圖如圖3所示:

釋放指定內存塊,就是將指向其地址的結構體變量和其直接前驅以及直接后繼三個結構體變量進行合成,疊加其可用內存塊個數(shù),并釋放其所指內存塊組。

3 結束語

本文提出了一種基于嵌入式系統(tǒng)的動態(tài)內存管理方式,該方法可以實現(xiàn)內存的動態(tài)管理,和內存高效、高速申請和釋放,通過實時傳入的空間地址、空間大小以及實時需要,動態(tài)申請分配內存池,并且使用雙向鏈表結構體指針來動態(tài)管理內存池,保證了內存空間使用的合理性以及連續(xù)性,很大程度上避免了內存碎片的產生,并且保證了內存管理功能模塊的穩(wěn)定性和整個嵌入式軟件的安全性。經(jīng)過測試本文提出的動態(tài)內存管理方式是一種高效、綜合性能好內存管理方式,可作為一種內存管理方案滿足嵌入式系統(tǒng)軟件使用要求。

參考文獻:

[1] 田令平.嵌入式操作系統(tǒng)內存管理研究[J].電腦知識與技術, 2006(4):169-171.

[2] 符麗枚,陳世航.嵌入式軟件運行內存余量測試方法[J].自動化應用,2014(11):6-8.

[3] 陸小雙,帥建梅,吳慶響.一種新的面向對象程序的內存管理器[J].計算機工程,2012,38(9):21-23.

[4] 吳文峰.嵌入式實時系統(tǒng)動態(tài)內存分配管理器的設計與實現(xiàn)[D].重慶:重慶大學,2013.

[5] 楊磊,汪仁煌,劉洪江,黃穎怡.使用Visual Leak Detector檢測C/C++程序內存泄漏[J].電腦與電信,2008(07).

[6] 陳力軍,魏永軍,迮超.一種內存管理系統(tǒng)及其分配方法[P].中國專利號:01139150.2,2001.

[7] 魏海濤,姜昱明,李建武等.內存管理機制的高效實現(xiàn)研究[J].計算機工程與設計,2009,30(16):3708-3712.

【通聯(lián)編輯:代影】

主站蜘蛛池模板: 992tv国产人成在线观看| 欧美.成人.综合在线| 日本高清免费不卡视频| 亚洲AV免费一区二区三区| 国产精品爽爽va在线无码观看| 亚洲色图欧美激情| 亚洲无码精彩视频在线观看| 亚洲色欲色欲www网| 情侣午夜国产在线一区无码| 日本91视频| 女人18毛片一级毛片在线 | 国产丝袜无码一区二区视频| 激情综合网址| 亚洲精品无码抽插日韩| 在线无码私拍| 全免费a级毛片免费看不卡| 婷婷六月综合网| 午夜视频免费一区二区在线看| 亚洲一区二区在线无码| 精品国产成人a在线观看| 成人精品视频一区二区在线| 福利小视频在线播放| 91久久偷偷做嫩草影院免费看| 色成人亚洲| 久久精品人妻中文视频| 国产综合在线观看视频| 中文字幕在线免费看| 亚洲免费黄色网| 欧美综合区自拍亚洲综合绿色 | 日韩欧美亚洲国产成人综合| 成人中文在线| 亚洲国产中文欧美在线人成大黄瓜| 亚洲精品成人片在线播放| 四虎成人在线视频| 亚洲精品无码人妻无码| 久久这里只有精品66| 欧美日韩精品在线播放| 在线看片中文字幕| 中文字幕一区二区视频| 亚洲欧美一区二区三区图片| 欧美综合在线观看| 欧美a级完整在线观看| 久久久久夜色精品波多野结衣| 亚州AV秘 一区二区三区| 国产精品一区在线观看你懂的| 国产男人的天堂| 成人一级免费视频| 国产精欧美一区二区三区| 99资源在线| 制服丝袜国产精品| jizz国产在线| 一级爆乳无码av| 婷婷伊人久久| 无码中文字幕乱码免费2| 三级国产在线观看| 色男人的天堂久久综合| 中文字幕久久波多野结衣| 亚洲人成人无码www| 青青青亚洲精品国产| 欧美精品一区在线看| 永久免费精品视频| 嫩草国产在线| 青草91视频免费观看| 青青草欧美| 自拍偷拍一区| av午夜福利一片免费看| 一本大道无码高清| a毛片基地免费大全| 国产精品短篇二区| 亚洲无码91视频| 国产在线观看91精品| 亚洲成人福利网站| 黄色网在线| 久久国产亚洲欧美日韩精品| 特级毛片免费视频| 99视频在线精品免费观看6| 伊人久热这里只有精品视频99| 国产成人1024精品下载| 精品人妻无码区在线视频| 99久久99视频| 少妇精品在线| 网友自拍视频精品区|