《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 動態內存管理在面向嵌入式實時系統中的研究
動態內存管理在面向嵌入式實時系統中的研究
摘要: 動態內存管理在面向嵌入式實時系統中的研究,動態內存管理的基本任務就是有效地對動態內存進行分配、回收,并同時保證系統的快速性、可靠性和穩定性。當系統請求分配內存時,系統需要從所有空閑塊中找到一個合適的空閑塊進行分配;當用戶不再使用而將某塊內存釋
Abstract:
Key words :

動態內存管理的基本任務就是有效地對動態內存進行分配、回收,并同時保證系統的快速性、可靠性和穩定性。當系統請求分配內存時,系統需要從所有空閑塊中找到一個合適的空閑塊進行分配;當用戶不再使用而將某塊內存釋放時,系統需要回收這一內存塊,以備在新的請求產生時重新進行分配。為此,系統需要建立一個與內存當前使用情況相對應的內存描述,用來記錄所有與內存分配、回收相關的信息。而如何記錄這些信息并進行分配與回收,便成為各種算法的最根本區別。

  1  嵌入式系統中內存管理技術的特點

  實時系統分為硬實時系統和軟實時系統。硬實時系統是指系統中各任務不僅要執行無誤而且要做到準時;軟實時系統是指系統中各任務運行的越快越好,并不要求限定某一任務必須在多長時間內完成??梢钥闯鰟討B內存分配是絕對不能用于硬實時系統的,因為動態分配具有時間不確定性(分配時間與內存塊數量有關),而且動態分配可能產生分配不成功的情況。所以對于硬實時系統,只能采用靜態內存分配方式。靜態分配是指在編譯或鏈接時將程序所需的內存空間分配好,這樣不會出現分配失敗的情況。

  1.1 靜態分配與動態分配

  靜態分配為系統提供了最好的可靠性與實時性。對于那些對實時性和可靠性要求極高的需求,就只能采用靜態分配方式。但采用靜態分配就必然會使系統失去靈活性。因此必須在設計階段考慮所有可能的情況,并對所有的需求做出相應的空間分配。一旦出現沒有考慮到的情況,系統就無法處理。此外靜態分配方式也必然導致很大的浪費,因為必須按照最壞情況進行最大的配置,而在實際運行中可能只用到其中的一小部分。

  動態分配為系統提供了很大的靈活性,而且在內存的利用率和系統功能擴展等方面也都明顯地優于靜態分配。

  大多數系統采用靜態分配和動態分配相結合的方式。由于嵌入式系統本身各個任務的可靠性、實時性要求不盡相同,通常會有一部分任務對可靠性與實時性沒有特別嚴格的要求。這些任務對一定的延時與失敗是可以接受的。因此對于這樣的一部分任務,就可以采用動態分配方式來滿足它們部分或全部的內存需求。而對于那些有嚴格時限要求的任務,為了保證任務的可靠性和實時性,就應采用靜態分配方式。

  1.2 動態分配的技術要求

 ?。?)快速性:由于嵌入式系統對實時性要求較高,所以內存分配過程要盡可能地快。在嵌入式系統中,由于還不能采用通用操作系統中復雜而完善的內存分配策略,所以一般都采用簡單、快速的內存分配方案。

 ?。?)可靠性:由于嵌入式系統對可靠性的要求較高,所以內存分配過程也要具備高可靠性。但由于各個嵌入式系統之間對可靠性的要求不盡相同,對內存分配的可靠性要求也就各不相同。通常,可靠性要求極高的系統不采用動態分配。

 ?。?)高效性:由于在嵌入式系統中內存資源都相對有限,所以為了保證程序的正常運行,內存管理系統要盡可能高效地使用內存,減少不必要的浪費。

  2  伙伴系統

  2.1 伙伴系統原理

  伙伴(buddy)系統的基本原理就是按照2的冪次方大小對內存進行分配,以此得到很高的分配速度和回收速度。例如:對于10KB的空間請求,伙伴系統會分配16KB的空間來滿足。因為內存空閑塊大小均為2的冪次方,所以需要16KB,這是滿足10KB的最小空間;同樣對于70KB的空間請求,伙伴系統會分配128KB的空間來滿足。

  2.2 伙伴系統存在的問題

  伙伴系統比那些按大小而不按塊的整數倍地址分配的算法有更多的優點。其優點為當一個大小為2的K次冪的塊被釋放后,存儲管理只需要搜索2的K次冪字節大小的塊以判定是否需要合并。那些允許內存塊以任意形式分割的策略需要搜索所有的空閑塊表。相比之下,伙伴系統更快。

  但是對于內存利用率來說,伙伴系統是極其低效的。問題出自所有的內存請求都必須以2的冪次方大小的空間來滿足,一個35KB的請求需要分配64KB的空間,其余的29KB被浪費了。在極端情況下內存資源有近50%被浪費。

  3  連續的內存分配

  3.1 問題提出

  伙伴系統的內存管理方式對空間的使用存在極大的浪費。在某些情況下還會由于資源的浪費,導致后繼的內存請求得不到滿足,進而嚴重地影響程序的正常功能。

  試考慮:系統共有1MB內存空間可用,采用伙伴系統進行管理。有如下請求:請求A,300KB;請求B,300KB;請求C,50KB.結果如表1所示。

  由表1中可以看出:伙伴系統對空間的浪費是極其嚴重的,即使在物理內存充足(1MB)的情況下,也會產生請求(650KB)無法滿足的情況。

  由于在嵌入式系統中,一般都沒有虛擬內存的支持,所以當內存請求無法得到滿足時,將嚴重影響程序的正常功能。因此為了保證程序的正常功能,就要提高內存的利用率,盡可能地滿足程序的內存請求。所以在對伙伴系統進行分析的基礎上,提出了連續的內存分配方式。

3.2 連續的內存分配原理

  從上例不難看出,只要采用連續的內存分配方式(即分配與請求大小相等的空間來滿足請求),便不難使請求C得到滿足,而且還會有很大的剩余空間繼續用來滿足其他的內存請求。結果如表2所示。

  連續的內存分配方式明顯不同于其他以塊為單位進行分配的內存管理方法。它采用連續分配的方式,按照請求空間的實際大小來進行空間分配。
3.3 連續的內存分配實現方法

 

  為了提高內存空間的利用率,采用按請求的實際大小來分配空間,而不是按塊的整數倍大小來分配空間。

  基本方法就是將所有獨立塊(空閑塊和使用塊)按物理地址的先后順序組織成一個雙鏈表,每個塊中存放塊本身的一些獨立信息。分配空間時,需要查找整個鏈表以找到最優適配的空閑塊,之后再將此空閑塊分裂成二塊,一塊用來滿足請求,另一塊則作為空閑塊插入鏈表??臻g釋放時,只需根據鏈表便可以方便地找到與其相鄰的物理塊,在空間合并處理完成之后再將新的塊插入鏈表。

  但事實上,由于在分配過程中只需要在空閑塊中查找最優適配塊,所以可以采用一個單獨的鏈表將所有的空閑塊鏈接起來,這樣可以極大地加快空間分配時空閑塊的查找速度。

  另外,從對伙伴系統的分析可知,將所有的內存空閑區保留在一個或多個按空閑區大小排序的鏈表中將使內存分配很快。所以借鑒伙伴系統的實現方式,可以將單個的空閑分區鏈組織成多個鏈表間有序的空閑分區鏈。在動態內存操作頻繁的情況下,這將會提高系統內存分配的效率。

  由于以上的方式容易產生許多小的不能繼續使用的空閑區,所以在進行空間分配時,如果分配所得的空閑區小于某一特定值,則不再進行空間分配,而是將整個空間作為請求結果返回。

  綜上所述,可以將內存塊組織成二個雙鏈表,即空閑塊鏈表和物理塊鏈表。

 ?。?)空閑塊鏈表:將所有的空閑塊按鏈表間有序的方式組織成多個獨立的空閑鏈表??臻g分配時,根據空間的大小選擇相應的鏈表進行查找。若查找成功,則在空間分配處理完成之后,將已分配空間返回給請求;若查找失敗,則在更大空間的鏈表中繼續查找;若直到全部鏈表查找完成仍未找到合適的空閑塊,則認為此次分配操作失敗。

 ?。?)物理塊鏈表:將所有獨立塊(空閑塊和使用塊)組織成一個雙鏈表,鏈表中各節點之間是按照物理地址的先后順序鏈接的,每個塊中存放塊本身的一些獨立信息??臻g釋放時,可以不需查找,而直接根據這一鏈表找到與釋放塊相鄰的塊。再根據相鄰塊中的相關信息就可以方便地進行內存塊的合并操作。

  具體實現時,可以將這二個鏈表的控制信息與用戶空間獨立存放,避免控制信息被意外地破壞。也可以利用物理塊本身來存放這些控制信息,得到更好的空間利用率和更好的靈活性。

  3.4 連續的內存分配工作方式

  首先假定空間不再進行分配的最小值為1KB,即當空間分裂時所得的空閑區小于1KB時,將不再進行空間分配。

  分別保留大小為1KB、2KB、4KB、8KB字節等直到大于內存總容量大小的鏈表。例如對于容量為1 024KB的內存,有從1KB字節到2 048KB字節的12個鏈表。初始時,所有內存都是空閑的,2 048KB的鏈表包含一個1 024KB的空閑區(每個鏈表存放所有小于鏈表本身字節數、大于等于前一鏈表的字節數的內存塊,2 048KB的鏈表存放所有小于2 048KB大于等于1 024KB的內存塊)。其他的鏈表均為空,內存最初的情況如圖1所示。為表示方便,圖中使用單鏈表來表示鏈接關系。實線表示物理塊鏈表指針,短劃線表示空閑塊鏈表指針,虛線表示空指針。對于物理塊鏈表,灰色塊表示已分配塊,白色塊表示空閑塊。

  當有一個300KB的內存請求(用A表示)產生時,系統找到512KB鏈表的表頭。因為這個鏈表中可能包含滿足請求所需的最小空間。之后按照最佳適配(best fit)算法,在鏈表中搜尋是否有夠用的最小空閑區。此時512KB的鏈表為空,1 024KB的鏈表也為空,所以最終在2 048KB的鏈表中找到1 024KB可用空間。將此空間分割成大小分別為300KB和700KB的塊,700KB的塊(大于最小塊1KB)插入到1 024KB的鏈表中,300KB的塊則返回給請求A.

  接著,又有一個300KB(用B表示)和一個50KB(用C表示)的內存請求。結果如圖2所示。

  現在塊B被釋放。此時,根據物理塊鏈表,可以方便地找到與B鄰接的物理塊A和物理塊C.由于塊A和塊C都未被釋放,所以不需要進行合并操作。因為塊B的大小介于256KB和512KB之間,所以將塊B插入到512KB的空閑鏈表中,結果如圖3所示。

  接著,塊C被釋放。此時根據物理塊鏈表可知與塊C鄰接的為塊B和塊F,并且二塊都為空閑狀態。將塊B和塊F從512KB空閑塊鏈表中刪除,再將三塊合并成一個700KB的塊(用F表示)插入到1 024KB的空閑鏈表中,結果如圖4所示。

  最后當塊A被釋放時,塊A與塊F合并成1 024KB的塊,回到最初只有1 024KB空閑區的情況。

  4  結  論

  動態內存管理一直是計算機領域的一項重要技術。動態內存管理給用戶提供了比較大的自由度,用戶可以從系統分區中申請內存塊,也可以從用戶內存區申請內存塊。這樣增加了系統的靈活性,同時也限制了大量碎片產生的可能(在不頻繁刪除建立系統內存分區的前提下)。也增加了部分c 代碼的可移植性。
 

此內容為AET網站原創,未經授權禁止轉載。
热re99久久精品国产66热_欧美小视频在线观看_日韩成人激情影院_庆余年2免费日韩剧观看大牛_91久久久久久国产精品_国产原创欧美精品_美女999久久久精品视频_欧美大成色www永久网站婷_国产色婷婷国产综合在线理论片a_国产精品电影在线观看_日韩精品视频在线观看网址_97在线观看免费_性欧美亚洲xxxx乳在线观看_久久精品美女视频网站_777国产偷窥盗摄精品视频_在线日韩第一页
  • <strike id="ygamy"></strike>
  • 
    
      • <del id="ygamy"></del>
        <tfoot id="ygamy"></tfoot>
          <strike id="ygamy"></strike>
          中文欧美日韩| 欧美专区日韩视频| 亚洲一区二区视频在线观看| 国产精品久久久久久福利一牛影视| 午夜久久久久久| 欧美日韩国产在线观看| 亚洲小说春色综合另类电影| 亚洲精品中文字幕在线| 久久综合狠狠综合久久激情| 亚洲国产裸拍裸体视频在线观看乱了| 国产一区视频观看| 亚洲高清中文字幕| 欧美日韩另类丝袜其他| 老司机精品视频一区二区三区| 国产日韩成人精品| 亚洲一区二区三区高清不卡| 午夜亚洲激情| 欧美日韩一区二区精品| 欧美一区二区| 日韩视频一区二区三区在线播放| 精品动漫3d一区二区三区| 亚洲成人中文| 午夜激情久久久| 亚洲精品影视在线观看| 在线天堂一区av电影| 国产在线播放一区二区三区| 国产裸体写真av一区二区| 午夜精品美女自拍福到在线| 亚洲精选国产| 亚洲欧美三级伦理| 日韩一级免费| 国产精品视频男人的天堂| 国产精品网站在线| 韩日欧美一区二区三区| 开元免费观看欧美电视剧网站| 亚洲精品国产欧美| 久久精品官网| 国产精品久久久久久久第一福利| 亚洲午夜久久久久久久久电影网| 久久久久久久激情视频| 99综合电影在线视频| 亚洲国产婷婷香蕉久久久久久| 国产精品视频免费| 欧美日韩高清不卡| 欧美男人的天堂| 国产深夜精品福利| 国产亚洲欧美一区在线观看| 欧美电影美腿模特1979在线看| 欧美激情aaaa| 欧美电影免费观看大全| 久久久综合免费视频| 久久这里有精品15一区二区三区| 欧美一区二区三区免费视频| 亚洲欧洲视频在线| 久久综合狠狠综合久久综合88| 亚洲国产高清一区二区三区| 久久精品中文字幕一区二区三区| 国产午夜精品视频| 欧美日韩国产综合久久| 国产精品嫩草99a| 欧美大片在线影院| 亚洲国产精品久久久久秋霞影院| 久久综合九色| 99精品国产在热久久婷婷| 在线精品国产成人综合| 欧美精品一区在线发布| 亚洲电影免费在线观看| 激情视频一区| 亚洲乱码日产精品bd| 老色批av在线精品| 久久精品电影| 香蕉国产精品偷在线观看不卡| 老牛影视一区二区三区| 久久av老司机精品网站导航| 永久91嫩草亚洲精品人人| 欧美精品日本| 欧美日产国产成人免费图片| 亚洲成人直播| 亚洲免费在线观看| 欧美专区亚洲专区| 韩国精品主播一区二区在线观看| 亚洲图片在区色| 欧美国产精品久久| 国产日韩欧美在线观看| 亚洲国产精品999| 亚洲大胆女人| 韩国成人理伦片免费播放| 亚洲精品在线看| 久久黄色小说| 韩国欧美国产1区| 亚洲精品视频在线观看免费| 国产亚洲二区| 亚洲日本va午夜在线电影| 性xx色xx综合久久久xx| 激情久久五月天| 一区久久精品| 国产免费成人| 亚洲精品视频在线| 欧美日韩视频在线一区二区观看视频| 亚洲国产国产亚洲一二三| 欧美国产日产韩国视频| 一区二区三区四区五区在线| 亚洲欧洲日韩女同| 欧美专区在线观看| 欧美阿v一级看视频| 99国产欧美久久久精品| 在线精品视频一区二区| 国产九九视频一区二区三区| 久久在线91| 欧美一区二区在线| 欧美一区二区日韩| 欧美福利视频网站| 一区二区在线观看视频| 欧美激情中文不卡| 久久―日本道色综合久久| 精品福利电影| 国产精品99久久久久久久vr| 99国产精品99久久久久久| 国产真实久久| 亚洲一区二区三区四区视频| 欧美日韩在线观看视频| 久久久精品2019中文字幕神马| 久久久无码精品亚洲日韩按摩| 亚洲一区久久| 91久久嫩草影院一区二区| 国产伦精品一区二区三区高清| 国产亚洲一区精品| 欧美一区二区观看视频| 欧美一区二区三区视频在线| 欧美一区二区三区免费观看| 亚洲免费观看视频| 性高湖久久久久久久久| 国产一区视频观看| 亚洲免费一区二区| 国产麻豆日韩欧美久久| 国产麻豆精品视频| 亚洲免费婷婷| 欧美日韩国产123区| 国产欧美日韩精品a在线观看| 在线日韩视频| 亚洲精品一区久久久久久| 久久久久久久尹人综合网亚洲| 欧美日韩中国免费专区在线看| 久久香蕉国产线看观看网| 亚洲成色www8888| 99国产精品国产精品毛片| 欧美精品在线视频| 一本色道久久综合亚洲二区三区| 尤物精品国产第一福利三区| 午夜精品视频在线观看| 欧美日韩一区二区三区| 国产精品丝袜久久久久久app| 精品96久久久久久中文字幕无| 欧美日韩精品综合在线| 欧美日韩一区二区三区四区在线观看| 国产精品久久久久毛片大屁完整版| 亚洲影院色无极综合| 亚洲精品一区二区三区av| 一区二区三区欧美亚洲| 乱码第一页成人| 亚洲人成7777| 国产精品久久久999| 欧美精品三级日韩久久| 亚洲国产精品va在看黑人| 亚洲国产精品视频一区| 精品99视频| 久久成人久久爱| 国产日韩在线亚洲字幕中文| 久久久一区二区| 激情91久久| 亚洲精品影视| 国产精品国产a级| 亚洲国产一二三| 欧美日本韩国在线| 国产精品一区二区在线观看不卡| 国产一区美女| 国产日韩视频| 亚洲一区二区三区在线看| 国产精品日韩欧美一区二区| 国产精品嫩草久久久久| 欧美日韩在线综合| 久久精品亚洲热| 欧美日本精品在线| 亚洲影院免费观看| 亚洲天堂免费观看| 欧美精品一区二区三区蜜桃| 久久精品av麻豆的观看方式| 亚洲第一伊人| 国产午夜精品久久久| 欧美一区综合| 一区二区电影免费观看| 国产情侣一区| 亚洲午夜一二三区视频| 国产揄拍国内精品对白| 91久久精品国产91久久性色| 欧美三级午夜理伦三级中视频| 欧美激情一区二区三区四区| 黄色成人在线网址| 国产女人水真多18毛片18精品视频| 亚洲影院免费观看| 国产主播精品在线| 欧美亚洲动漫精品| 欧美日韩国产二区| 亚洲一区精彩视频| 欧美在线免费播放| 国产农村妇女精品一二区| 老司机成人在线视频| 久久综合给合久久狠狠狠97色69| 亚洲欧洲在线免费| 欧美激情精品久久久| 亚洲影音一区| 亚洲精品乱码久久久久久久久| 亚洲社区在线观看| 国产欧美综合一区二区三区| 亚洲一区欧美| 在线成人黄色| 久久久久久亚洲综合影院红桃| 国产亚洲综合在线| 国产欧美一区二区白浆黑人| 欧美日韩一区二区三区在线| 国产婷婷一区二区| 欧美激情一区二区三区在线| 亚洲一区免费网站| 亚洲国产一区二区a毛片| 国产精品久久久999| 影音先锋在线一区| 午夜精品美女自拍福到在线| 亚洲人www| 99在线精品视频| 亚洲日韩欧美视频一区| 欧美亚州韩日在线看免费版国语版| 欧美日韩在线一区二区三区| 国产精品乱码一区二区三区| 欧美日韩精品不卡| 日韩视频在线免费观看| 国产美女精品| 亚洲一区在线观看视频| 久久久久99| 久久久久久久久久久久久女国产乱| 亚洲精品日韩在线| 亚洲性感激情| 国产日韩欧美麻豆| 国产精品亚洲美女av网站| 欧美日韩另类一区| 欧美伊人久久久久久午夜久久久久| 欧美成人免费视频| 亚洲国产精品久久久久婷婷884| 免费一区二区三区| 久久一区二区三区国产精品| 亚洲精品黄网在线观看| 亚洲人体影院| 国产一区成人| 亚洲电影激情视频网站| 免费美女久久99| 夜夜躁日日躁狠狠久久88av| 精品96久久久久久中文字幕无| 亚洲国产精品久久| 性欧美在线看片a免费观看| 在线不卡中文字幕播放| 中文国产一区| 一本色道久久综合亚洲精品小说| 激情久久久久久久| 亚洲高清一区二| 在线观看视频一区| 久久男人资源视频| 欧美区在线观看| 久久aⅴ国产紧身牛仔裤| 国产伦精品一区二区三区高清| 亚洲国产精品精华液2区45| 在线观看国产欧美| 国产精品日韩| 亚洲欧美久久| 欧美日韩伊人| 9国产精品视频| 一区二区亚洲欧洲国产日韩| 欧美日本在线观看| 欧美激情一区二区三区成人| 99视频一区二区三区| 欧美日韩免费精品| 欧美小视频在线观看| 欧美国产一区二区| 欧美精品乱码久久久久久按摩| 欧美色欧美亚洲另类七区| 国产一区二区久久精品| 国产精品久久久久久久久搜平片| 激情亚洲成人| 欧美日本韩国在线| 亚洲午夜一区二区| 欧美高清在线视频观看不卡| 欧美1区免费| 亚洲高清毛片| 国产午夜精品全部视频播放| 亚洲激情影院| 久久天天躁狠狠躁夜夜爽蜜月| 欧美日韩八区| 欧美精品九九| 国产精品99一区| 国产精品二区在线| 一区二区在线观看av| 亚洲高清精品中出| 欧美精品一区二区在线播放| 一区在线电影| 亚洲精品中文字幕在线| 国产精品盗摄一区二区三区| 欧美—级高清免费播放| 最新中文字幕亚洲| 羞羞视频在线观看欧美| 久久综合导航| 亚洲桃色在线一区| 欧美成人国产一区二区| 国产精品久久久久久久久久久久久| 欧美视频在线观看一区二区| 久久久久久**毛片大全| 亚洲专区一区二区三区| 狼人天天伊人久久| 性欧美在线看片a免费观看| 免费日韩精品中文字幕视频在线| 免费国产一区二区| 亚洲大片精品永久免费| 狂野欧美激情性xxxx| 国产精品亚洲产品| 国产精品一区久久久| 亚洲乱亚洲高清| 国产一区91| 日韩午夜在线视频| 亚洲中午字幕| 久久久午夜电影| 一区二区三区免费在线观看|