国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      嵌入式系統(tǒng)內(nèi)存管理的方法

      文檔序號(hào):6610270閱讀:251來(lái)源:國(guó)知局

      專利名稱::嵌入式系統(tǒng)內(nèi)存管理的方法
      技術(shù)領(lǐng)域
      :本發(fā)明涉及嵌入式系統(tǒng)
      技術(shù)領(lǐng)域
      ,尤其涉及一種嵌入式系統(tǒng)內(nèi)存管理的方法。
      背景技術(shù)
      :嵌入式操作系統(tǒng)的內(nèi)存管理,需要滿足實(shí)時(shí)性和高效性的要求。從實(shí)時(shí)性的角度出發(fā),要求內(nèi)存分配過(guò)程盡可能快,在嵌入式系統(tǒng)中一般沒(méi)有段頁(yè)式的虛存管理機(jī)制,因此,不可能采用通用操作系統(tǒng)的一些復(fù)雜而完善的內(nèi)存分配策略,而是采用簡(jiǎn)單、快速的內(nèi)存分配方案。高效性是指內(nèi)存分配要盡可能減少浪費(fèi),一方面,嵌入式系統(tǒng)對(duì)成本的要求使得內(nèi)存是一種很有限的資源,另一方面,系統(tǒng)硬件環(huán)境有限的空間和有限的板卡面積也決定了可配置的內(nèi)存容積是^艮有限的。嵌入式系統(tǒng)中最基本的內(nèi)存管理機(jī)制有兩種,靜態(tài)分配和動(dòng)態(tài)分配。靜態(tài)分配是指在編譯或鏈接時(shí)將程序所需的內(nèi)存空間分配好,采用這種分配方案的程序l殳,其大小一般在編譯時(shí)就能確定,實(shí)時(shí)性好。而動(dòng)態(tài)分配是指系統(tǒng)運(yùn)行時(shí)根據(jù)需要?jiǎng)討B(tài)地分配內(nèi)存,可有效減少浪費(fèi)。其中,固定分區(qū)法是一種比較常用的動(dòng)態(tài)分配方法,它是將內(nèi)存固定劃分為若干個(gè)大小不等的區(qū)域,分區(qū)一旦劃分結(jié)束,在整個(gè)執(zhí)行過(guò)程中每個(gè)分區(qū)的長(zhǎng)度和內(nèi)存的總分區(qū)個(gè)數(shù)將保持不變。固定分區(qū)法具有較高的實(shí)時(shí)性,實(shí)現(xiàn)比壽支簡(jiǎn)單,但是高效性不強(qiáng)。在固定分區(qū)法的^5出上,出現(xiàn)了一種基于內(nèi)存池的固定分區(qū)法。內(nèi)存池是一段連續(xù)的內(nèi)存區(qū)域,每個(gè)內(nèi)存池可以且僅可以分配8種尺寸的內(nèi)存塊,從小到大分別為SIZE0-SIZE7。一開(kāi)始創(chuàng)建的內(nèi)存池,是一塊連續(xù)區(qū)域,未進(jìn)行任何劃分,在系統(tǒng)運(yùn)行過(guò)程中,根據(jù)需求不斷從連續(xù)區(qū)域分割出內(nèi)存塊。內(nèi)存塊被釋放后不進(jìn)行相鄰內(nèi)存塊的聚合,而是直接掛接在一個(gè)鏈表中,此鏈表被稱為自由鏈。參見(jiàn)圖1,為基于內(nèi)存池的固定分區(qū)法的示意圖。基于內(nèi)存池的固定分區(qū)法是基于"一次分配、多次使用"策略,改進(jìn)了固定分區(qū)法,分配時(shí)首先查看自由鏈?zhǔn)欠裼袑?duì)應(yīng)SIZE的內(nèi)存塊,若有直接從自由鏈上摘除,若自由鏈沒(méi)有合適的內(nèi)存塊,才從空閑區(qū)分配,為了減少分配失敗概率,在空閑區(qū)無(wú)法分配時(shí),允許使用自由鏈上尺寸大的自由內(nèi)存塊。這種方法減少了空閑區(qū)分配內(nèi)存塊的次數(shù),既節(jié)省了時(shí)間,又減緩了內(nèi)存區(qū)分割的速度,類似于動(dòng)態(tài)分配,只不過(guò)是可用于動(dòng)態(tài)分配的內(nèi)存在不斷縮小。然而,基于內(nèi)存池的固定分區(qū)法,在使用過(guò)程中對(duì)內(nèi)存進(jìn)行了不可逆分割,當(dāng)空閑區(qū)耗盡后,各個(gè)尺寸內(nèi)存塊的個(gè)數(shù)不能動(dòng)態(tài)改變,從而限制了系統(tǒng)對(duì)各種內(nèi)存塊并發(fā)使用的數(shù)目,當(dāng)內(nèi)存塊統(tǒng)計(jì)特性改變時(shí)將導(dǎo)致內(nèi)存分配失敗。例如,開(kāi)始階段系統(tǒng)使用了很多小尺寸的內(nèi)存塊,釋放后掛到自由鏈上,某個(gè)時(shí)刻需要分配尺寸較大的內(nèi)存塊時(shí),卻無(wú)法從自由鏈上找到合適的內(nèi)存塊,導(dǎo)致分配失敗。另外,若開(kāi)始階^a將內(nèi)存分割成N塊SIZE7大小的內(nèi)存塊,空閑區(qū)可能僅剩一點(diǎn)內(nèi)存,接下來(lái)某個(gè)時(shí)刻,需要分配N+1或更多的SIZE3的內(nèi)存塊,因?yàn)橄到y(tǒng)中沒(méi)有SIZE3大小的內(nèi)存塊,空閑區(qū)也不足夠,只能使用SIZE7內(nèi)存塊來(lái)頂替一個(gè)小塊使用,造成浪費(fèi),而且也只能分配N塊,無(wú)法滿足分配N+1或更多小尺寸內(nèi)存塊的需求。現(xiàn)有公開(kāi)的涉及嵌入式系統(tǒng)內(nèi)存管理的專利文獻(xiàn)中,都沒(méi)有提及基于內(nèi)存池的固定分區(qū)法的缺陷及改進(jìn)方案,例如,申請(qǐng)?zhí)?00310110344,X、名為"一種嵌入式系統(tǒng)內(nèi)存管理的方法",主要是通過(guò)對(duì)不同尺寸內(nèi)存塊不同處理來(lái)解決內(nèi)存不能被充分利用的問(wèn)題;而申請(qǐng)?zhí)?00410041459.2、名為"一種嵌入式實(shí)時(shí)操作系統(tǒng)中內(nèi)存分配的方法,,,可以動(dòng)態(tài)調(diào)整分配策略,保i正高優(yōu)先級(jí)任務(wù)的實(shí)時(shí)性。
      發(fā)明內(nèi)容有鑒于此,本發(fā)明在基于內(nèi)存池的固定分區(qū)法的基礎(chǔ)上,提供一種嵌入式系統(tǒng)內(nèi)存管理方法,以解決現(xiàn)有方案在內(nèi)存塊統(tǒng)計(jì)特性改變時(shí)分配失敗的問(wèn)題。為此,本發(fā)明實(shí)施例采用如下技術(shù)方案5一種嵌入式系統(tǒng)內(nèi)存管理的方法,包括以下步驟遍歷內(nèi)存池,查找地址連續(xù)且均處于空閑狀態(tài)的內(nèi)存塊;合并所述地址連續(xù)的空閑內(nèi)存塊,形成回收區(qū);接收到內(nèi)存分配請(qǐng)求后,從所述回收區(qū)分配內(nèi)存。其中,預(yù)置時(shí)間間隔,定期對(duì)地址連續(xù)的空閑內(nèi)存塊進(jìn)行合并。優(yōu)選地,當(dāng)無(wú)法從自由鏈和內(nèi)存池的空閑區(qū)分配尺寸合適的內(nèi)存塊時(shí),才對(duì)地址連續(xù)的空閑內(nèi)存塊進(jìn)4亍合并。上述方法還包括判斷內(nèi)存池所有內(nèi)存塊是否都空閑;若內(nèi)存池所有內(nèi)存塊均空閑,對(duì)地址連續(xù)的空閑內(nèi)存塊進(jìn)行合并是指對(duì)內(nèi)存池進(jìn)行格式化。進(jìn)一步,在確定無(wú)法從自由鏈和內(nèi)存池的空閑區(qū)分配尺寸合適的內(nèi)存塊之后,還包括判斷自由鏈上是否存在比所述請(qǐng)求對(duì)應(yīng)內(nèi)存塊的尺寸更大的大尺寸內(nèi)存塊;若有大尺寸內(nèi)存塊,則首先利用所述大尺寸內(nèi)存塊分配內(nèi)存,然后執(zhí)行所述對(duì)地址連續(xù)的空閑內(nèi)存塊進(jìn)行合并,若沒(méi)有大尺寸內(nèi)存塊,執(zhí)行所述從回收區(qū)分配內(nèi)存,并重新對(duì)地址連續(xù)的空閑內(nèi)存塊進(jìn)行合并。上述方法還包括建立備份池,所述備份池包含系統(tǒng)預(yù)置的各種尺寸的內(nèi)存塊;當(dāng)無(wú)法從回收區(qū)分配內(nèi)存時(shí),/人所述備4分池分配內(nèi)存。其中,所述回收區(qū)為多個(gè);其中,是選擇最大回收區(qū)進(jìn)行內(nèi)存分配的。上述方法還包括合并所述回收區(qū)與相鄰空閑內(nèi)存塊,形成更大的回收區(qū)。其中,所述內(nèi)存塊包括由狀態(tài)位、地址以及長(zhǎng)度構(gòu)成的內(nèi)存頭。通過(guò)所述內(nèi)存頭的狀態(tài)位確定內(nèi)存塊是否空閑;通過(guò)所述內(nèi)存頭的地址和長(zhǎng)度,確定地址連續(xù)的內(nèi)存塊。對(duì)于上述技術(shù)方案的技術(shù)效果分析如下本發(fā)明對(duì)地址連續(xù)的內(nèi)存塊進(jìn)行融合形成回收區(qū),當(dāng)原空閑區(qū)不充足時(shí),回收區(qū)可被作為空閑區(qū)的有效擴(kuò)充,提高分配成功的概率。當(dāng)內(nèi)存塊統(tǒng)計(jì)特性發(fā)生改變時(shí),由充足的回收區(qū)來(lái)滿足內(nèi)存分配的新要求。而且,優(yōu)選地,僅當(dāng)通過(guò)空閑區(qū)和自由鏈上無(wú)法分配內(nèi)存時(shí)才啟動(dòng)后臺(tái)整理,有利于保證內(nèi)存分配的實(shí)時(shí)性,可保證在大部分情況不啟動(dòng)內(nèi)存整理,減少CPU開(kāi)銷。而且,在所有內(nèi)存塊均空閑時(shí),可以直接格式化內(nèi)存池,從而簡(jiǎn)化流程,實(shí)現(xiàn)快速內(nèi)存整理。另外,利用備份池進(jìn)行內(nèi)存分配,進(jìn)一步提高分配成功率。圖1為現(xiàn)有技術(shù)基于內(nèi)存池的固定分區(qū)法示意圖2為本發(fā)明實(shí)施例一示意圖3為本發(fā)明實(shí)施例二內(nèi)存分配流程圖4為本發(fā)明實(shí)施例二后臺(tái)整理流程圖5為本發(fā)明實(shí)施例二回收鏈?zhǔn)疽鈭D。具體實(shí)施例方式正如前面對(duì)現(xiàn)有技術(shù)的分析,當(dāng)內(nèi)存池的空閑區(qū)不足以分配內(nèi)存塊時(shí),會(huì)出現(xiàn)分配失敗的問(wèn)題。究其原因,是現(xiàn)有方案對(duì)內(nèi)存塊的不可逆分割導(dǎo)致的。因此,本發(fā)明從此問(wèn)題出發(fā),提出一種可逆的分割方法,能夠有效解決內(nèi)存塊統(tǒng)計(jì)特性改變時(shí)分配失敗的問(wèn)題。下面結(jié)合附圖,對(duì)發(fā)明的實(shí)施例作詳細(xì)介紹。首先介紹本發(fā)明實(shí)施例一本發(fā)明對(duì)地址連續(xù)的內(nèi)存塊進(jìn)行融合,形成的回收區(qū)可以作為內(nèi)存池的空閑區(qū)重新被分割。也就是說(shuō),回收區(qū)可被作為空閑區(qū)的有效擴(kuò)充,提高分配成功的概率。當(dāng)內(nèi)存塊統(tǒng)計(jì)特性發(fā)生改變時(shí),由充足的回收區(qū)來(lái)滿足內(nèi)存分配的新要求。實(shí)施例一包括以下步驟1、遍歷內(nèi)存池,將地址連續(xù)的空閑內(nèi)存塊融合為回收區(qū);2、接收到分配內(nèi)存請(qǐng)求后,從回收區(qū)分配內(nèi)存。本發(fā)明中,每個(gè)被分割的各SIZE內(nèi)存塊都有表明一些狀態(tài)信息的內(nèi)存頭結(jié)構(gòu),內(nèi)存頭結(jié)構(gòu)包括用于標(biāo)識(shí)該內(nèi)存塊是正在使用或是空閑的狀態(tài)位,而且還包括該內(nèi)存塊起始地址,以及表明該內(nèi)存塊長(zhǎng)度的信息。參見(jiàn)表l,為內(nèi)存頭結(jié)構(gòu)示例。表1<table>tableseeoriginaldocumentpage8</column></row><table>那么,就可以通過(guò)狀態(tài)位來(lái)確定內(nèi)存塊是否空閑,通過(guò)起始地址以及長(zhǎng)度來(lái)確定下一個(gè)內(nèi)存塊。參見(jiàn)圖2,為實(shí)施例一示意圖。其中,內(nèi)存池已分配了編號(hào)A-J共10個(gè)內(nèi)存塊,通過(guò)各內(nèi)存塊的內(nèi)存頭,可以明確編號(hào)相鄰的內(nèi)存塊地址連續(xù)。除了被分配的內(nèi)存塊,內(nèi)存池僅剩余有限的空閑區(qū)(或者沒(méi)有空閑區(qū))。假設(shè)某時(shí)刻,內(nèi)存塊B、D、E、F、H和I處于空閑狀態(tài),也就是說(shuō)上述空閑的B、D、E、F、H和I內(nèi)存塊被掛接自由鏈上。那么,依據(jù)本實(shí)施例,可以將連續(xù)的空閑內(nèi)存塊融合,作為新的空閑區(qū)等待分配。處于空閑狀態(tài)的內(nèi)存塊中,D、E和F是地址連續(xù)的,H和I也是連續(xù)的,那么,就可以分別融合為兩部分回收區(qū),分別是D-E-F和H-I。當(dāng)有新的分配內(nèi)存請(qǐng)求時(shí),可以選擇從D-E-F或H-I回收區(qū)進(jìn)行內(nèi)存分配。應(yīng)用本實(shí)施例,可以利用回收區(qū)對(duì)空閑區(qū)作有效擴(kuò)充,當(dāng)出現(xiàn)空閑區(qū)不充足時(shí),可以在回收區(qū)上進(jìn)行內(nèi)存分配,降低不能分配的概率。當(dāng)然,也可以直接選擇回收區(qū)進(jìn)行內(nèi)存分配。例如,春£設(shè)系統(tǒng)要分割SIZE6的內(nèi)存塊,而內(nèi)存池原空閑區(qū)不足以分配SIZE6的內(nèi)存塊,此時(shí),4艮設(shè)內(nèi)存塊D、E和F分別為SIZE4、SIZE3和SIZE0的內(nèi)存塊,那么融合后的D-E-F回收區(qū)足以滿足分配SIZE6內(nèi)存塊的需求。需要說(shuō)明的是,本實(shí)施例提供的"遍歷內(nèi)存池、從而融合連續(xù)空閑內(nèi)存塊為回收區(qū),,的過(guò)程(下文將這一過(guò)程稱為"后臺(tái)整理"),是可以在操作系統(tǒng)后臺(tái)運(yùn)行的,不影響正常的內(nèi)存分配。何時(shí)啟動(dòng)后臺(tái)整理,可以有多種策略。例如,為了保證內(nèi)存分配的成功概率,可設(shè)置定期啟動(dòng)后臺(tái)整理?;蛘撸瑸榱吮M可能給內(nèi)存分配帶來(lái)少的影響,滿足內(nèi)存分配實(shí)時(shí)性的要求,可以在無(wú)法從自由鏈和空閑區(qū)分配內(nèi)存時(shí)啟動(dòng)一次內(nèi)存整理。在具體實(shí)施時(shí),可根據(jù)系統(tǒng)要求靈活設(shè)置。下面介紹本發(fā)明實(shí)施例二正如上面描述,可以在無(wú)法從自由鏈和空閑區(qū)分配內(nèi)存塊時(shí),再啟動(dòng)后臺(tái)整理,這對(duì)于滿足內(nèi)存分配的實(shí)時(shí)性有一定的保證,本實(shí)施例重點(diǎn)對(duì)這種方式進(jìn)一步闡述。參見(jiàn)圖3,為實(shí)施例二內(nèi)存分配流程圖。包括步驟30k接收到分配某尺寸內(nèi)存塊的請(qǐng)求;例如,請(qǐng)求分配SIZE6的內(nèi)存塊;步驟302:查找自由鏈,是否有尺寸合適(SIZE6)的空閑內(nèi)存塊?若有,執(zhí)行步驟303,否則,執(zhí)行步驟304;步驟303:利用尺寸合適的空閑內(nèi)存塊分配內(nèi)存;步驟304:內(nèi)存池空閑區(qū)是否足夠分配該尺寸內(nèi)存塊?若是,執(zhí)行步驟305,否則,執(zhí)行步驟306;步驟305:從內(nèi)存池的空閑區(qū)分配內(nèi)存塊;步驟306:自由鏈上是否有比所述請(qǐng)求對(duì)應(yīng)內(nèi)存塊的尺寸(SIZE6)更大的大尺寸的空閑內(nèi)存塊?例如SIZE7內(nèi)存塊。若有,執(zhí)行步驟307,否則,執(zhí)行步驟308;上述步驟306,可保證當(dāng)前分配請(qǐng)求得到滿足,但是此時(shí)已說(shuō)明自由鏈上沒(méi)有合適的內(nèi)存塊,并且空閑區(qū)也不足以分配內(nèi)存,所以,在利用大尺寸內(nèi)存塊分配內(nèi)存之后,應(yīng)該要啟動(dòng)內(nèi)存整理,形成回收區(qū)避免后續(xù)由于空閑區(qū)不足或自由鏈尺寸不合適而導(dǎo)致分配失敗。步驟307:利用大尺寸空閑內(nèi)存塊分配內(nèi)存,然后執(zhí)行步驟311啟動(dòng)后臺(tái)整理;步驟308:查看回收鏈?zhǔn)欠窨梢岳没厥諈^(qū)分配內(nèi)存?若是,執(zhí)行步驟309,否則,執(zhí)行步驟310;所謂回收鏈,是由多個(gè)回收區(qū)按一定順序掛接而成的鏈表,后文會(huì)詳細(xì)介紹。步驟309:利用回收區(qū)分配內(nèi)存,然后執(zhí)行步驟311啟動(dòng)后臺(tái)整理;步驟310:分配失敗,然后執(zhí)行步驟311啟動(dòng)后臺(tái)整理;步驟311:啟動(dòng)后臺(tái)整理。實(shí)際上,后臺(tái)整理是對(duì)空閑內(nèi)存塊進(jìn)行重新融合并分割。那么,存在兩種情況,一種就是當(dāng)前內(nèi)存池所有內(nèi)存都空閑(已分配的內(nèi)存塊均處于空閑狀態(tài)),此時(shí),可以不必逐塊合并而是直接對(duì)內(nèi)存池進(jìn)行格式化,也就是將內(nèi)存池恢復(fù)成創(chuàng)建初的狀態(tài);另一種就是當(dāng)前內(nèi)存池有一部分內(nèi)存被占用,那么,就按照實(shí)施例一所敘述的,遍歷自由鏈從而融合地址連續(xù)的空閑內(nèi)存塊??梢岳斫獾氖?,對(duì)于第一種格式化內(nèi)存池的方式,可以作為第二種方式的一個(gè)特例。因此,在啟動(dòng)后臺(tái)整理后,在后臺(tái)整理過(guò)程中,可先判斷內(nèi)存池是否所有內(nèi)存均空閑,若是,可直接對(duì)內(nèi)存池進(jìn)行格式化,否則,再逐塊融合地址連續(xù)的空閑內(nèi)存塊。參見(jiàn)圖4,為后臺(tái)整理流程圖。包括步驟401:在啟動(dòng)后臺(tái)整理任務(wù)后,獲取內(nèi)存區(qū)頭指針;步驟402:判斷當(dāng)前內(nèi)存塊是否空閑(也即是否屬于自由鏈)?若是,執(zhí)行步驟403,否則,執(zhí)行步驟405;步驟403:判斷下一個(gè)內(nèi)存塊是否空閑?若是,重復(fù)執(zhí)行步驟403,否則執(zhí)行步驟404;步驟404:將連續(xù)空閑內(nèi)存塊合并成的回收區(qū)掛接到回收鏈上;步驟405:是否到達(dá)內(nèi)存池尾?若是,結(jié)束,否則,執(zhí)行步驟406;步驟406:跳過(guò)被占用(未釋放)的內(nèi)存塊,返回執(zhí)行步驟402,對(duì)下一區(qū)段的連續(xù)空閑內(nèi)存塊繼續(xù)整理。回收鏈?zhǔn)且粋€(gè)動(dòng)態(tài)雙向鏈表,回收區(qū)可以按照從大到小排列?;厥真溕蠏旖拥幕厥諈^(qū),是經(jīng)過(guò)融合后形成的大內(nèi)存塊,當(dāng)內(nèi)存池空閑區(qū)無(wú)法分配內(nèi)存時(shí),系統(tǒng)從回收鏈上摘除最大回收區(qū),作為新的內(nèi)存分配區(qū),這樣可以盡可能分配成功,當(dāng)然也可以在回收鏈上任意的回收區(qū)上分配。參見(jiàn)圖5,為回收鏈?zhǔn)疽鈭D,其中,回收區(qū)大小順序?yàn)榛厥諈^(qū)4、回收區(qū)3、回收區(qū)1、回收區(qū)0和回收區(qū)2,將他們按照大小順序掛接,形成回收鏈。當(dāng)需要從回收區(qū)分配內(nèi)存時(shí),可以在回收區(qū)4上進(jìn)行分配。在合并新的回收區(qū)時(shí),回收鏈上的回收區(qū)也與自由鏈上的空閑內(nèi)存塊一樣,需要與它相鄰的內(nèi)存塊合并為更大的回收區(qū)。在實(shí)施例二中,僅當(dāng)通過(guò)空閑區(qū)和自由鏈上無(wú)法分配內(nèi)存時(shí)才啟動(dòng)后臺(tái)整理,有利于保證內(nèi)存分配的實(shí)時(shí)性,可保證在大部分情況不啟動(dòng)內(nèi)存整理,減少CPU開(kāi)銷,而一旦出現(xiàn)利用空閑區(qū)和自由鏈無(wú)法分配內(nèi)存時(shí),又可通過(guò).回收區(qū)提高分配的成功率。而且,在所有內(nèi)存塊均空閑時(shí),可以直接格式化內(nèi)存池,從而筒化流程,實(shí)現(xiàn)快速整理。最后,介紹本發(fā)明實(shí)施例三為了進(jìn)一步保證內(nèi)存分配的成功率,本實(shí)施例提出了^f分池的方案。本領(lǐng)域技術(shù)人員都了解,嵌入式實(shí)時(shí)操作系統(tǒng)一般規(guī)劃多個(gè)內(nèi)存池,那么,就可以設(shè)置其中之一作為其余內(nèi)存池的備份池,在其余內(nèi)存池正常分配過(guò)程中不對(duì)備份池進(jìn)行分配,僅在某內(nèi)存池?zé)o法滿足分配請(qǐng)求時(shí),才利用備份池進(jìn)行內(nèi)存分配。備份池可以預(yù)先分配系統(tǒng)預(yù)置的各種尺寸的內(nèi)存塊,正如
      背景技術(shù)
      中的描述,預(yù)先分割SIZE0-SIZE7的內(nèi)存塊。再請(qǐng)參見(jiàn)圖3,當(dāng)無(wú)法從空閑區(qū)、自由鏈以及回收區(qū)分配內(nèi)存時(shí),會(huì)導(dǎo)致步驟310的分配失敗。因此,可以在步驟308確定不可以利用回收區(qū)分配內(nèi)存時(shí),利用備份池進(jìn)行內(nèi)存分配,從而進(jìn)一步提高分配成功率。在利用備份池分配后,也需要啟動(dòng)內(nèi)存管理。需要說(shuō)明的是,備份池往往需要為多個(gè)內(nèi)存池提供備份,因此,應(yīng)盡量少占用備^f分池資源,并且在占用后應(yīng)盡快釋^:。以上所述僅是本發(fā)明的優(yōu)選實(shí)施方式,應(yīng)當(dāng)指出,對(duì)于本
      技術(shù)領(lǐng)域
      的普通技術(shù)人員來(lái)說(shuō),在不脫離本發(fā)明原理的前提下,還可以做出若干改進(jìn)和潤(rùn)飾,這些改進(jìn)和潤(rùn)飾也應(yīng)視為本發(fā)明的保護(hù)范圍。權(quán)利要求1、一種嵌入式系統(tǒng)內(nèi)存管理的方法,其特征在于,包括:遍歷內(nèi)存池,查找地址連續(xù)且均處于空閑狀態(tài)的內(nèi)存塊;合并所述地址連續(xù)的空閑內(nèi)存塊,形成回收區(qū);接收到內(nèi)存分配請(qǐng)求后,從所述回收區(qū)分配內(nèi)存。2、根據(jù)權(quán)利要求l所述方法,其特征在于,預(yù)置時(shí)間間隔,定期對(duì)地址連續(xù)的空閑內(nèi)存塊進(jìn)行合并。3、根據(jù)權(quán)利要求l所述方法,其特征在于,當(dāng)無(wú)法從自由鏈和內(nèi)存池的空閑區(qū)分配尺寸合適的內(nèi)存塊時(shí),才對(duì)地址連續(xù)的空閑內(nèi)存塊進(jìn)4亍合并。4、根據(jù)權(quán)利要求3所述方法,其特征在于,還包括判斷內(nèi)存池所有內(nèi)存塊是否都空閑;若內(nèi)存池所有內(nèi)存塊均空閑,對(duì)地址連續(xù)的空閑內(nèi)存塊進(jìn)行合并是指對(duì)內(nèi)存池進(jìn)行格式化。5、根據(jù)權(quán)利要求4所述方法,其特征在于,在確定無(wú)法從自由鏈和內(nèi)存池的空閑區(qū)分配尺寸合適的內(nèi)存塊之后,還包括判斷自由鏈上是否存在比所述請(qǐng)求對(duì)應(yīng)內(nèi)存塊的尺寸更大的大尺寸內(nèi)存塊;若有大尺寸內(nèi)存塊,則首先利用所述大尺寸內(nèi)存塊分配內(nèi)存,然后執(zhí)行所述對(duì)地址連續(xù)的空閑內(nèi)存塊進(jìn)行合并,若沒(méi)有大尺寸內(nèi)存塊,執(zhí)行所述從回收區(qū)分配內(nèi)存,并重新對(duì)地址連續(xù)的空閑內(nèi)存塊進(jìn)行合并。6、根據(jù)權(quán)利1至5中任一項(xiàng)所述方法,其特征在于,還包括建立備份池,所述備份池包含系統(tǒng)預(yù)置的各種尺寸的內(nèi)存塊;當(dāng)無(wú)法從回收區(qū)分配內(nèi)存時(shí),從所述備份池分配內(nèi)存。7、根據(jù)權(quán)利要求6所述方法,其特征在于,所述回收區(qū)為多個(gè);其中,是選擇最大回收區(qū)進(jìn)行內(nèi)存分配的。8、根據(jù)權(quán)利要求7所述方法,其特征在于,還包括合并所述回收區(qū)與相鄰空閑內(nèi)存塊,形成更大的回收區(qū)。9、根據(jù)權(quán)利要求6所述方法,其特征在于,所述內(nèi)存塊包括由狀態(tài)位、地址以及長(zhǎng)度構(gòu)成的內(nèi)存頭。10、根據(jù)權(quán)利要求9所述方法,其特征在于,通過(guò)所述內(nèi)存頭的狀態(tài)位確定內(nèi)存塊是否空閑;通過(guò)所述內(nèi)存頭的地址和長(zhǎng)度,確定地址連續(xù)的內(nèi)存塊。全文摘要本發(fā)明公開(kāi)了一種嵌入式系統(tǒng)內(nèi)存管理的方法,包括以下步驟遍歷內(nèi)存池,查找地址連續(xù)且均處于空閑狀態(tài)的內(nèi)存塊;合并地址連續(xù)的空閑內(nèi)存塊,形成回收區(qū);接收到內(nèi)存分配請(qǐng)求后,從所述回收區(qū)分配內(nèi)存。本發(fā)明整理的回收區(qū)對(duì)空閑區(qū)進(jìn)行了有效擴(kuò)充,提高了內(nèi)存分配成功的概率。文檔編號(hào)G06F12/06GK101382916SQ200710121449公開(kāi)日2009年3月11日申請(qǐng)日期2007年9月6日優(yōu)先權(quán)日2007年9月6日發(fā)明者郭繼燕,郭長(zhǎng)旺申請(qǐng)人:大唐移動(dòng)通信設(shè)備有限公司
      網(wǎng)友詢問(wèn)留言 已有0條留言
      • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1