專利名稱:一種嵌入式軟件安全內(nèi)存管理方法
技術(shù)領(lǐng)域:
本發(fā)明屬于計(jì)算機(jī)軟件內(nèi)存管理方法,特別是工業(yè)實(shí)時(shí)自動(dòng)化裝置中嵌入式軟件的內(nèi)存管理方法。
背景技術(shù):
計(jì)算機(jī)軟件編程過程中離不開內(nèi)存管理,通常內(nèi)存管理算法都由操作系統(tǒng)提供;應(yīng)用軟件在運(yùn)行過程中不可避免地頻繁分配、釋放和使用內(nèi)存片段,而內(nèi)存片段的訪問安全性控制、以及內(nèi)存片段分配和釋放過程中形成的大量空間碎片,通常是造成系統(tǒng)不穩(wěn)定的重要起因。在現(xiàn)代嵌入式系統(tǒng)中,嵌入式軟件的功能越來(lái)越復(fù)雜,尤其是面向?qū)ο蠹夹g(shù)的廣泛使用,傳統(tǒng)的靜態(tài)內(nèi)存分配模式已不能滿足軟件編程過程中的算法需求。目前在嵌入式系統(tǒng)中大量采用各種嵌入式操作系統(tǒng),這些系統(tǒng)中提供了各具特色的內(nèi)存管理算法,它們大多關(guān)心內(nèi)存的分配和釋放引起的碎片問題,通常采用固定尺寸的空間分配策略,造成空間利用效率低,并且這些算法沒有檢測(cè)內(nèi)存片內(nèi)容改寫越界的問題。而這些問題,均是工業(yè)控制系統(tǒng)中滿7x24應(yīng)用中不能容忍的。為了在嵌入式系統(tǒng)中應(yīng)對(duì)越來(lái)越復(fù)雜的功能需要,面向?qū)ο缶幊碳夹g(shù)越來(lái)越受到重視;然而,面向?qū)ο缶幊碳夹g(shù)中許多面向?qū)ο蟊旧硖卣鲙Ыo設(shè)計(jì)者的優(yōu)越體驗(yàn),要大量動(dòng)態(tài)創(chuàng)建對(duì)象時(shí)才能顯現(xiàn)出來(lái),而大量動(dòng)態(tài)創(chuàng)建和釋放對(duì)象實(shí)例往往會(huì)給系統(tǒng)中的內(nèi)存管理帶來(lái)大量的內(nèi)存碎片;往往是總的內(nèi)存用量不多,卻又分配不到需要的內(nèi)存片;直接基于地址指標(biāo)的內(nèi)存訪問方法,在這種情況下沒有有效的碎片收集方法來(lái)避免系統(tǒng)崩潰。
發(fā)明內(nèi)容
本發(fā)明的目的是提供一種嵌入式軟件安全內(nèi)存管理方法,能夠在內(nèi)存碎片多、內(nèi)存分配申請(qǐng)失敗時(shí),進(jìn)行安全的內(nèi)存碎片收集,確保軟件安全可靠地運(yùn)行。本發(fā)明的目的是這樣實(shí)現(xiàn)的,基于固定訪問標(biāo)識(shí)的內(nèi)存管理方法,其特征是:包括:
內(nèi)存池,在RAM中靜態(tài)分配的存貯空間,用于存放分配給客戶代碼使用的內(nèi)存片; 索引表,在RAM中靜態(tài)分配的存貯空間,用于存放內(nèi)存片索引;
一組用于完成內(nèi)存片的管理的算法,這些算法在內(nèi)存池中分配內(nèi)存片并通過索引表進(jìn)行管理,客戶代碼采用固定的訪問標(biāo)識(shí)進(jìn)行申請(qǐng)、訪問和釋放等操作。內(nèi)存池是在嵌入式系統(tǒng)RAM中靜態(tài)分配出來(lái)的一片存貯空間,其大小由嵌入式軟件編程時(shí)預(yù)先配置,軟件中各功能應(yīng)用中需要分配的內(nèi)存片均在內(nèi)存池中分配。在嵌入式系統(tǒng)RAM中靜態(tài)分配出來(lái)的一片存貯空間,具有固定尺寸的結(jié)構(gòu),其數(shù)量在嵌入式軟件編程時(shí)預(yù)先配置,在內(nèi)存池中分配的內(nèi)存片的信息,都記錄在索引表中。在內(nèi)存池中分配的存貯空間,至少包括信息存貯空間和邊界標(biāo)志。用于完成內(nèi)存片的管理的算法是基于客戶代碼提供的訪問標(biāo)識(shí)。 所述的索引表為固定尺寸的結(jié)構(gòu),每個(gè)結(jié)構(gòu)中至少包含內(nèi)存片所屬的固定訪問標(biāo)識(shí)、內(nèi)存片起始地址、內(nèi)存片長(zhǎng)度、分配計(jì)數(shù)四項(xiàng)記錄;至少包含內(nèi)存片分配、內(nèi)存片訪問、碎片收集、內(nèi)存片釋放的方法。所述的標(biāo)識(shí)用于內(nèi)存管理算法將訪問標(biāo)識(shí)與內(nèi)存片一對(duì)一地聯(lián)系起來(lái);內(nèi)存片起始地址是內(nèi)存片在內(nèi)存池中的分配的空間的開始地址,用于為使用內(nèi)存片的;內(nèi)存片長(zhǎng)度是客戶代碼申請(qǐng)內(nèi)存片時(shí)指定的信息存貯空間尺寸和邊界標(biāo)志長(zhǎng)度之和;分配計(jì)數(shù)是指客戶代碼使用同一個(gè)固定標(biāo)志分配空間的次數(shù);內(nèi)存管理算法以固定訪問標(biāo)識(shí)為憑據(jù),在內(nèi)存池中搜索已分配過的具有相同固定訪問標(biāo)識(shí)的內(nèi)存片,對(duì)重復(fù)訪問標(biāo)志分配要求,對(duì)索引項(xiàng)中的訪問計(jì)數(shù)加一;分配失敗時(shí)算法主動(dòng)完成內(nèi)存碎片收集。以固定訪問標(biāo)識(shí)為憑據(jù),在內(nèi)存池中搜索已分配過的具有相同固定訪問標(biāo)識(shí)的內(nèi)存片,并且檢測(cè)內(nèi)存片的邊界標(biāo)志是否被破壞。將已分配的內(nèi)存片強(qiáng)行移動(dòng)到從內(nèi)存池起始地址開始的一片連續(xù)存貯空間中,各內(nèi)存片首尾相接,不留縫隙,同時(shí)修改索引表中對(duì)應(yīng)索引項(xiàng)中記錄的內(nèi)存片起始地址;收集后內(nèi)存池中最后Iv塊內(nèi)存片之后全部為自由存空間;以固定訪問標(biāo)識(shí)為憑據(jù),在內(nèi)存池中搜索已分配過的具有相同固定訪問標(biāo)識(shí)的內(nèi)存片;若找到,則將其中的分配計(jì)數(shù)減一;當(dāng)分配計(jì)數(shù)為O時(shí),釋放內(nèi)存片。本發(fā)明的優(yōu)點(diǎn)是:
提供了一套用于嵌入式軟件編程過程中進(jìn)行動(dòng)態(tài)內(nèi)存管理的一系列算法,實(shí)現(xiàn)了安全、高效的動(dòng)態(tài)內(nèi)存管理;這可以克服原有設(shè)計(jì)模式下需要在編程階段為每個(gè)需要貯存器的代碼靜態(tài)分配內(nèi)存、并且還不能確保訪問的內(nèi)存片中的內(nèi)容的可靠性這一問題;尤其是現(xiàn)代嵌入式軟件發(fā)展到越來(lái)越復(fù)雜,面向?qū)ο蠹夹g(shù)在嵌入式軟件編程中得到越來(lái)越深入的應(yīng)用,在安全、可靠、無(wú)碎片的動(dòng)態(tài)內(nèi)存管理技術(shù)的支持下,面向?qū)ο蠹夹g(shù)可發(fā)揮其全部的潛能。
圖1是本發(fā)明的實(shí)施結(jié)構(gòu)示意 圖2是內(nèi)存片的結(jié)構(gòu) 圖3是索引表的結(jié)構(gòu) 圖4是內(nèi)存片分配算法流程 圖5是內(nèi)存碎片收集算法流程 圖6是內(nèi)存片訪問算法流程 圖7是內(nèi)存片釋放算法流程 圖8是實(shí)施例一在GUI中的應(yīng)用。
具體實(shí)施例方式如圖1所示,一種嵌入式軟件安全內(nèi)存管理方法,包括:固定訪問標(biāo)識(shí)是嵌入式軟件中定義的地址、常數(shù)等恒定的、在代碼運(yùn)行期間不會(huì)發(fā)生變化的常量?;诠潭ㄔL問標(biāo)識(shí)的內(nèi)存管理方法,一組用于完成內(nèi)存片的管理的算法,這些算法在內(nèi)存池中分配內(nèi)存片并通過索引表進(jìn)行管理,客戶代碼采用固定的訪問標(biāo)識(shí)進(jìn)行申請(qǐng)、訪問和釋放等操作。
內(nèi)存池,在RAM中靜態(tài)分配的存貯空間,用于存放分配給客戶代碼使用的內(nèi)存片。索引表,在RAM中靜態(tài)分配的存貯空間,用于存放內(nèi)存片索引。所述內(nèi)存池是在嵌入式系統(tǒng)RAM中靜態(tài)分配出來(lái)的一片存貯空間,其大小由嵌入式軟件編程時(shí)預(yù)先配置,軟件中各功能應(yīng)用中需要分配的內(nèi)存片均在內(nèi)存池中分配。所述的索引表是在嵌入式系統(tǒng)RAM中靜態(tài)分配出來(lái)的一片存貯空間,具有固定尺寸的結(jié)構(gòu),其數(shù)量在嵌入式軟件編程時(shí)預(yù)先配置,在內(nèi)存池中分配的內(nèi)存片的信息,都記錄在索引表中。所述的內(nèi)存片是指結(jié)構(gòu)如圖2所示的在內(nèi)存池中分配占有的一片連續(xù)的存貯空間;至少包括信息存貯空間和邊界標(biāo)志;其中信息存貯空間用于為客戶代碼提供存貯信息用的內(nèi)存空間;邊界標(biāo)志用于識(shí)別客戶代碼是否修改了它們申請(qǐng)分配的信息存貯空間之外的存貯器空間。所述的客戶代碼是指嵌入式軟件中使用內(nèi)存管理算法獲得信息存貯空間的計(jì)算機(jī)程序代碼。所述的內(nèi)存管理方法至少包含內(nèi)存的4個(gè)算法:分配、訪問、碎片收集、釋放方法;這一系列算法都基于使用這些算法的客戶代碼提供的訪問標(biāo)識(shí)。所述的索引表中的固定尺寸的結(jié)構(gòu)如圖3所示,至少包含內(nèi)存片所屬的固定訪問標(biāo)識(shí)、內(nèi)存片起始地址、內(nèi)存片長(zhǎng)度、分配計(jì)數(shù)四項(xiàng)記錄;其中內(nèi)存片所屬的標(biāo)識(shí)用于內(nèi)存管理算法將訪問標(biāo)識(shí)與內(nèi)存片一對(duì)一地聯(lián)系起來(lái);內(nèi)存片起始地址是內(nèi)存片在內(nèi)存池中的分配的空間的開始地址,用于為使用內(nèi)存片的;內(nèi)存片長(zhǎng)度是客戶代碼申請(qǐng)內(nèi)存片時(shí)指定的信息存貯空間尺寸和邊界標(biāo)志長(zhǎng)度之和;分配計(jì)數(shù)是指客戶代碼使用同一個(gè)固定標(biāo)志分配空間的次數(shù)。一、所述的內(nèi)存管理方法中的內(nèi)存片分配算法2如圖4,方法步驟如下:
1)在索引表7內(nèi)按客戶代碼I提供的訪問標(biāo)識(shí)2搜索是否有相同訪問標(biāo)識(shí)13的索引項(xiàng)。若找到相同訪問標(biāo)識(shí)13的索引項(xiàng)17,則對(duì)索引項(xiàng)17中的分配計(jì)數(shù)16加一,返回索引項(xiàng)中記錄的內(nèi)存片起始地址15;若沒找到相同訪問標(biāo)識(shí)13的索引項(xiàng)17,則繼續(xù)下面的過程;
2)在內(nèi)存池10中搜索連續(xù)尺寸大于客戶代碼I申請(qǐng)空間尺寸要求的自由存貯空間8,若找到滿足要求的自由存貯空間8,自由存貯空間8開始的地址即是為客戶代碼分配內(nèi)存片9的開始地址15,則分配一個(gè)空白索引項(xiàng)17并填寫該索引項(xiàng)17、設(shè)置內(nèi)存片邊界標(biāo)識(shí)12,將新分配的內(nèi)存片9的信息空間11的起始地址作為分配的存貯空間的起始地址返回給客戶代碼I ;若找不到滿足需要的自由存貯空間8,則繼續(xù)下面步驟:
3)調(diào)用內(nèi)存碎片收集方法,整理內(nèi)存池10,將內(nèi)存碎片8合并成一個(gè)連續(xù)的自由存貯空間8 ;比較合并后的自由存貯空間8的尺寸是否滿足客戶代碼要求的空間尺寸的要求;若滿足,則自由存貯空間8開始的地址即是為客戶代碼分配內(nèi)存片9的開始地址,分配一個(gè)空白索引項(xiàng)17并填寫該索引項(xiàng)17、設(shè)置內(nèi)存片邊界標(biāo)識(shí)12,將新分配的內(nèi)存片9的信息空間11的起始地址作為分配的存貯空間的起始地址返回給客戶代碼I ;若不滿足,則返回0,通知客戶代碼I空間分配申請(qǐng)失敗。二、所述的索引項(xiàng)17填寫方法:
索引表7中內(nèi)存片長(zhǎng)度14為O的索引項(xiàng)被認(rèn)為是空白索引項(xiàng)。
將訪問標(biāo)識(shí)13、內(nèi)存片長(zhǎng)度14、內(nèi)存內(nèi)起始地址15、這3項(xiàng)信息記錄在索引項(xiàng)中,并將分配計(jì)數(shù)16置1,即為填寫索引項(xiàng);其中,內(nèi)存片長(zhǎng)度14是客戶代碼申請(qǐng)的空間長(zhǎng)度11與邊界標(biāo)志12長(zhǎng)度之和;
三、所述的內(nèi)存碎片是指內(nèi)存池10中所有不連續(xù)的尺寸較小的自由存貯空間8片段的總稱。四、所述的自由存貯空間8是指在內(nèi)存池10中沒有被索引表7中各索引項(xiàng)記錄為被客戶代碼占用的存貯空間片段。五、所述的內(nèi)存碎片收集算法4如圖5,其過程步驟如下:
1)將內(nèi)存池10起始地址作為內(nèi)存碎片收集的起點(diǎn),該地地址作為下列步驟的當(dāng)前地址初值;
2)在索引表7中搜索當(dāng)前地址是否記錄為被占用,若被占用,轉(zhuǎn)到步驟4);若未被占用,則執(zhí)行步驟3);
3)搜索當(dāng)前地址之后距離最近的內(nèi)存片9起始地址的索引項(xiàng)17;若存在這樣的索引項(xiàng)17,則將該內(nèi)存片9整體復(fù)制到從當(dāng)前地址開始的存貯空間中,并將該索引項(xiàng)17內(nèi)存片起始地址15記錄修改為當(dāng)前地址;若不存在,則意味著從當(dāng)前地址開始到內(nèi)存池尾部的連續(xù)空間是自由存貯空間,內(nèi)存碎片收集過程結(jié)束;
4)跳過當(dāng)前索引項(xiàng)17中記錄的內(nèi)存片長(zhǎng)度14,即將當(dāng)前地址加上內(nèi)存片長(zhǎng)度14作為新的當(dāng)前地址;跳轉(zhuǎn)到步驟2)。七、所述的內(nèi)存管理方法中的內(nèi)存片訪問算法5是指:客戶代碼I通過固定訪問標(biāo)識(shí)2獲得對(duì)應(yīng)內(nèi)存片9中信息空間11起始地址的過程,如圖6,其過程步驟如下:
1)在索引表7內(nèi)按客戶代碼I提供的訪問標(biāo)識(shí)2搜索是否有相同訪問標(biāo)識(shí)13的索引項(xiàng)17。若找到記錄有該訪問標(biāo)識(shí)13的索引項(xiàng)17,則執(zhí)行步驟2);若沒找到該訪問標(biāo)識(shí)13的索引項(xiàng)17,則返回0,通知客戶代碼I內(nèi)存片9訪問操作失?。?br>
2)按索引項(xiàng)17找到內(nèi)存片邊界12,檢查邊界標(biāo)志12;
3)若邊界標(biāo)志12正確,則返回內(nèi)存片9中信息空間11起始地址,并通知客戶代碼I一切正常;
4)修復(fù)邊界標(biāo)志12,返回索引項(xiàng)內(nèi)存片9中的信息空間11起始地址,并通知客戶代碼I內(nèi)存片9內(nèi)容不可靠。八、所述的內(nèi)存管理方法中的內(nèi)存片釋放算法6如圖7,其過程步驟臺(tái)下:
1)在索引表7內(nèi)按客戶代碼I提供的訪問標(biāo)識(shí)2搜索是否有相同訪問標(biāo)識(shí)13的索引項(xiàng)17。若找到記錄有該訪問標(biāo)識(shí)13的索引項(xiàng)17,則執(zhí)行步驟2);若沒找到該訪問標(biāo)識(shí)13的索引項(xiàng)17,則返回,并通知客戶代碼I內(nèi)存片9釋放操作失?。?br>
2)將索引項(xiàng)17中的分配記數(shù)16減去一;若分配計(jì)數(shù)16值為0,則執(zhí)行步驟3);否則跳到步驟4) ;3)索引項(xiàng)17中的內(nèi)存片長(zhǎng)度值置為0,即宣告該索引項(xiàng)為空白索引項(xiàng);
3)返回,并通知客戶代碼I內(nèi)存片釋放操作成功。九、圖8是本發(fā)明在GUI中的應(yīng)用舉例,以本發(fā)明為內(nèi)存管理器開發(fā)的GUI的基本思想是:
I)所有描述窗體、控件、行為的數(shù)據(jù)均采用靜態(tài)數(shù)據(jù)表18的形式固化在Flash存貯器中; 2)⑶I代碼19通過讀取這些靜態(tài)數(shù)據(jù)表18,繪制窗體及其控件的外觀到IXD上21,外觀可以是靜態(tài)的也可能是根據(jù)時(shí)間或交互輸入而變化的;
3)GUI代碼掃描交互設(shè)備(按鍵或觸摸屏)20的輸入,根據(jù)靜態(tài)數(shù)據(jù)表18中的行為描述,切換出新的窗體、關(guān)閉一或多級(jí)窗體;
4)在創(chuàng)建出新窗體和控件時(shí),使用內(nèi)存片分配算法3,為對(duì)象實(shí)例分配空間,并在該空間中創(chuàng)建對(duì)象實(shí)例;
5)窗體或控件活動(dòng)時(shí),使用內(nèi)存片訪問算法5取回對(duì)象實(shí)例存貯空間的指針,并可獲知該存貯空間是否還有效;若無(wú)效了,則采取修復(fù)措施;
6)窗體或控件關(guān)閉時(shí),使用內(nèi)存片釋放算法6釋放對(duì)象實(shí)例占用的存貯空間;
對(duì)象分配、訪問、釋放存貯空間,均是使用靜態(tài)數(shù)據(jù)表18中該描述對(duì)象的數(shù)據(jù)項(xiàng)的地址作為訪問標(biāo)識(shí)2 ;因此,在GUI代碼19執(zhí)行其間,任何一個(gè)窗體或者控件對(duì)象實(shí)例化后使用的存貯空間是唯一確定的;8)由于本發(fā)明獨(dú)特地采用了固定訪問標(biāo)識(shí)2作為內(nèi)存管理的唯一依據(jù),完全采用面向?qū)ο蠹夹g(shù)開發(fā)的GUI代碼19能夠可靠地進(jìn)行動(dòng)態(tài)對(duì)象實(shí)例化、無(wú)障礙碎片收集,極大地提升了 GUI核心代碼開發(fā)的靈活和可靠性。
權(quán)利要求
1.基于固定訪問標(biāo)識(shí)的內(nèi)存管理方法,其特征是:包括: 內(nèi)存池,在RAM中靜態(tài)分配的存貯空間,用于存放分配給客戶代碼使用的內(nèi)存片; 索引表,在RAM中靜態(tài)分配的存貯空間,用于存放內(nèi)存片索引; 一組用于完成內(nèi)存片的管理的算法,這些算法在內(nèi)存池中分配內(nèi)存片并通過索引表進(jìn)行管理,客戶代碼采用固定的訪問標(biāo)識(shí)進(jìn)行申請(qǐng)、訪問和釋放等操作。
2.根據(jù)權(quán)利要求1所述的基于固定訪問標(biāo)識(shí)的內(nèi)存管理方法,其特征是:內(nèi)存池是在嵌入式系統(tǒng)RAM中靜態(tài)分配出來(lái)的一片存貯空間,其大小由嵌入式軟件編程時(shí)預(yù)先配置,軟件中各功能應(yīng)用中需要分配的內(nèi)存片均在內(nèi)存池中分配。
3.根據(jù)權(quán)利要求2所述的基于固定訪問標(biāo)識(shí)的內(nèi)存管理方法,其特征是:在嵌入式系統(tǒng)RAM中靜態(tài)分配出來(lái)的一片存貯空間,具有固定尺寸的結(jié)構(gòu),其數(shù)量在嵌入式軟件編程時(shí)預(yù)先配置,在內(nèi)存池中分配的內(nèi)存片的信息,都記錄在索引表中。
4.根據(jù)權(quán)利要求1所述的基于固定訪問標(biāo)識(shí)的內(nèi)存管理方法,其特征是:在內(nèi)存池中分配的存貯空間,至少包括信息存貯空間和邊界標(biāo)志。
5.根據(jù)權(quán)利要求1所述的基于固定訪問標(biāo)識(shí)的內(nèi)存管理方法,其特征是:用于完成內(nèi)存片的管理的算法是基于客戶代碼提供的訪問標(biāo)識(shí)。
6.根據(jù)權(quán)利要求1所述的基于固定訪問標(biāo)識(shí)的內(nèi)存管理方法,其特征是:所述的索引表為固定尺寸的結(jié)構(gòu),每個(gè)結(jié)構(gòu)中至少包含內(nèi)存片所屬的固定訪問標(biāo)識(shí)、內(nèi)存片起始地址、內(nèi)存片長(zhǎng)度、分配計(jì)數(shù)四項(xiàng)記錄;至少包含內(nèi)存片分配、內(nèi)存片訪問、碎片收集、內(nèi)存片釋放的方法。
7.根據(jù)權(quán)利要求1所述的基于固定訪問標(biāo)識(shí)的內(nèi)存管理方法,其特征是:所述的標(biāo)識(shí)用于內(nèi)存管理算法將訪問標(biāo)識(shí)與內(nèi)存片一對(duì)一地聯(lián)系起來(lái);內(nèi)存片起始地址是內(nèi)存片在內(nèi)存池中的分配的空間的開始地址,用于為使用內(nèi)存片的;內(nèi)存片長(zhǎng)度是客戶代碼申請(qǐng)內(nèi)存片時(shí)指定的信息存貯空間尺寸和邊界標(biāo)志長(zhǎng)度之和;分配計(jì)數(shù)是指客戶代碼使用同一個(gè)固定標(biāo)志分配空間的次數(shù);內(nèi)存管理算法以固定訪問標(biāo)識(shí)為憑據(jù),在內(nèi)存池中搜索已分配過的具有相同固定訪問標(biāo)識(shí)的內(nèi)存片,對(duì)重復(fù)訪問標(biāo)志分配要求,對(duì)索引項(xiàng)中的訪問計(jì)數(shù)加一;分配失敗時(shí)算法主動(dòng)完成內(nèi)存碎片收集。
8.根據(jù)權(quán)利要求1所述的基于固定訪問標(biāo)識(shí)的內(nèi)存管理方法,其特征是:以固定訪問標(biāo)識(shí)為憑據(jù),在內(nèi)存池中搜索已分配過的具有相同固定訪問標(biāo)識(shí)的內(nèi)存片,并且檢測(cè)內(nèi)存片的邊界標(biāo)志是否被破壞。
9.根據(jù)權(quán)利要求1所述的基于固定訪問標(biāo)識(shí)的內(nèi)存管理方法,其特征是:將已分配的內(nèi)存片強(qiáng)行移動(dòng)到從內(nèi)存池起始地址開始的一片連續(xù)存貯空間中,各內(nèi)存片首尾相接,不留縫隙,同時(shí)修改索引表中對(duì)應(yīng)索引項(xiàng)中記錄的內(nèi)存片起始地址;收集后內(nèi)存池中最后一個(gè)塊內(nèi)存片之后全部為自由存貯空間。
10.根據(jù)權(quán)利要求1所述的基于固定訪問標(biāo)識(shí)的內(nèi)存管理方法,其特征是:以固定訪問標(biāo)識(shí)為憑據(jù),在內(nèi)存池中搜索已分配過的具有相同固定訪問標(biāo)識(shí)的內(nèi)存片;若找到,則將其中的分配計(jì)數(shù)減一;當(dāng)分配計(jì)數(shù)為O時(shí),釋放內(nèi)存片。
全文摘要
本發(fā)明屬于計(jì)算機(jī)軟件內(nèi)存管理方法,特別是工業(yè)實(shí)時(shí)自動(dòng)化裝置中嵌入式軟件的內(nèi)存管理方法。包括內(nèi)存池,在RAM中靜態(tài)分配的存貯空間,用于存放分配給客戶代碼使用的內(nèi)存片;索引表,在RAM中靜態(tài)分配的存貯空間,用于存放內(nèi)存片索引;一組用于完成內(nèi)存片的管理的算法,這些算法在內(nèi)存池中分配內(nèi)存片并通過索引表進(jìn)行管理,客戶代碼采用固定的訪問標(biāo)識(shí)進(jìn)行申請(qǐng)、訪問和釋放等操作。
文檔編號(hào)G06F12/06GK103176911SQ20111042893
公開日2013年6月26日 申請(qǐng)日期2011年12月20日 優(yōu)先權(quán)日2011年12月20日
發(fā)明者衛(wèi)榮平 申請(qǐng)人:陜西銀河網(wǎng)電科技有限公司