亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種內(nèi)存管理方法和裝置的制造方法

文檔序號(hào):9547121閱讀:427來(lái)源:國(guó)知局
一種內(nèi)存管理方法和裝置的制造方法
【技術(shù)領(lǐng)域】
[0001 ] 本發(fā)明涉及內(nèi)存管理技術(shù)領(lǐng)域,尤其涉及一種終端上高效內(nèi)存管理方法和裝置。
【背景技術(shù)】
[0002]目前,內(nèi)存管理在軟件開(kāi)發(fā)和應(yīng)用中占有重要的地位,并且對(duì)軟件的性能有重要的影響。隨著軟件行業(yè)的迅猛發(fā)展及各類終端的涌現(xiàn),用戶對(duì)終端的需求越來(lái)越多,要求也越來(lái)越高。雖然隨著軟件技術(shù)的發(fā)展,各種終端的內(nèi)存容量越來(lái)越大,但是目前的內(nèi)存管理技術(shù)仍然不能完全滿足軟件發(fā)展的需要,因此,內(nèi)存仍然是一種寶貴且緊俏的資源,如何對(duì)內(nèi)存實(shí)施有效的管理也一直是研究的熱點(diǎn)。
[0003]由于操作系統(tǒng)要考慮底層硬件管理、內(nèi)存限制、內(nèi)存碎片、多軟件同時(shí)運(yùn)行、多線程環(huán)境等情況,導(dǎo)致現(xiàn)有的內(nèi)存的分配和回收操作都非常復(fù)雜,內(nèi)存管理操作所消耗的時(shí)間成本成為軟件開(kāi)發(fā)和內(nèi)存管理技術(shù)的瓶頸。目前,各類終端上現(xiàn)有的內(nèi)存管理方法基本上都是通過(guò)動(dòng)態(tài)分配內(nèi)存實(shí)現(xiàn)的,根據(jù)系統(tǒng)需要的內(nèi)存大小動(dòng)態(tài)申請(qǐng)內(nèi)存使用。由于外部系統(tǒng)需要的內(nèi)存大小不一致,在動(dòng)態(tài)申請(qǐng)使用內(nèi)存時(shí)很容易產(chǎn)生內(nèi)存碎片,無(wú)形中降低了內(nèi)存使用效率。
[0004]另外,一些傳統(tǒng)的方法在分配和回收時(shí)都需要進(jìn)行大量的內(nèi)存塊結(jié)構(gòu)查詢,才能完成分配和回收操作,這就導(dǎo)致了內(nèi)存管理的效率低下。在高性能的軟件開(kāi)發(fā)及應(yīng)用領(lǐng)域,尤其是在迅猛發(fā)展的終端上,內(nèi)存管理是關(guān)鍵的基礎(chǔ)功能,內(nèi)存管理的性能直接影響了整個(gè)軟件系統(tǒng)的運(yùn)行。
[0005]可見(jiàn),現(xiàn)有內(nèi)存管理方法中,內(nèi)存管理效率低下以及內(nèi)存分配和回收的過(guò)程中存在大量的內(nèi)存碎片等問(wèn)題是目前亟待解決的問(wèn)題。

【發(fā)明內(nèi)容】

[0006]有鑒于此,本發(fā)明實(shí)施例期望提供一種內(nèi)存管理方法和裝置,能夠在一定程度上提聞內(nèi)存分配和回收的效率,減少內(nèi)存碎片的廣生,提聞內(nèi)存管理的效率,進(jìn)而提升終端上的軟件運(yùn)行速度及數(shù)據(jù)傳輸速率。
[0007]為達(dá)到上述目的,本發(fā)明的技術(shù)方案是這樣實(shí)現(xiàn)的:
[0008]本發(fā)明實(shí)施例提供了一種內(nèi)存管理方法,所述方法包括:
[0009]分配具有固定起始地址和結(jié)束地址的物理內(nèi)存;
[0010]將所述物理內(nèi)存劃分為多個(gè)固定大小的緩沖區(qū)buffer,并將所述buffer串聯(lián)成單鏈表結(jié)構(gòu);
[0011]通過(guò)對(duì)單鏈表節(jié)點(diǎn)的刪除操作,對(duì)所述buffer進(jìn)行分配;并通過(guò)對(duì)單鏈表節(jié)點(diǎn)的插入操作,對(duì)所述buffer進(jìn)行回收。
[0012]上述方案中,所述通過(guò)對(duì)單鏈表節(jié)點(diǎn)的刪除操作,對(duì)所述buffer進(jìn)行分配包括:將所述單鏈表的頭指針指向的buffer分配給申請(qǐng)內(nèi)存的線程或功能模塊,并將單鏈表的頭指針指向下一個(gè)buffer,同時(shí)buffer個(gè)數(shù)減1。
[0013]上述方案中,所述通過(guò)對(duì)單鏈表節(jié)點(diǎn)的插入操作,對(duì)所述buffer進(jìn)行回收包括:將所述線程或功能模塊釋放的buffer的首地址插入到所述單鏈表的尾部,并將單鏈表的尾指針后指向所述插入的buffer,同時(shí)將buffer個(gè)數(shù)加1。
[0014]上述方案中,所述方法還包括:在單鏈表中每個(gè)buffer節(jié)點(diǎn)的數(shù)據(jù)部分設(shè)置用于標(biāo)記當(dāng)前buffer是否空閑的空閑標(biāo)記。
[0015]上述方案中,所述方法還包括:在單鏈表中每個(gè)buffer節(jié)點(diǎn)的數(shù)據(jù)部分設(shè)置用于判斷當(dāng)前buffer是否發(fā)生越界訪問(wèn)的越界訪問(wèn)標(biāo)記。
[0016]本發(fā)明實(shí)施例還提供了一種內(nèi)存管理裝置,所述裝置包括:內(nèi)存分配模塊、buffer處理模塊、分配回收模塊,其中,
[0017]所述內(nèi)存分配模塊,用于分配具有固定的起始地址和結(jié)束地址的物理內(nèi)存;
[0018]所述buffer處理模塊,用于將所述物理內(nèi)存劃分為多個(gè)固定大小的緩沖區(qū)buffer,并將所述buffer串聯(lián)成單鏈表結(jié)構(gòu);
[0019]所述分配回收模塊,用于通過(guò)對(duì)單鏈表節(jié)點(diǎn)的刪除操作,對(duì)所述buffer進(jìn)行分配;并通過(guò)對(duì)單鏈表節(jié)點(diǎn)的插入操作,對(duì)所述buffer進(jìn)行回收。
[0020]上述方案中,所述分配回收模塊通過(guò)對(duì)單鏈表節(jié)點(diǎn)的刪除操作,對(duì)所述buffer進(jìn)行分配包括:所述分配回收模塊將所述單鏈表的頭指針指向的buffer分配給申請(qǐng)內(nèi)存的線程或功能模塊,并將單鏈表的頭指針指向下一個(gè)buffer,同時(shí)buffer個(gè)數(shù)減1 ;
[0021]上述方案中,所述分配回收模所述通過(guò)對(duì)單鏈表節(jié)點(diǎn)的插入操作,對(duì)所述buffer進(jìn)行回收包括:所述分配回收模塊將所述線程或功能模塊釋放的buffer的首地址插入到所述單鏈表的尾部,并將單鏈表的尾指針后指向所述插入的buffer,同時(shí)將buffer個(gè)數(shù)加
Ιο
[0022]上述方案中,所述buffer處理模塊還用于:在單鏈表中每個(gè)buffer節(jié)點(diǎn)的數(shù)據(jù)部分設(shè)置用于標(biāo)記當(dāng)前buffer是否空閑的空閑標(biāo)記。
[0023]上述方案中,所述buffer處理模塊還用于:在單鏈表中每個(gè)buffer節(jié)點(diǎn)的數(shù)據(jù)部分設(shè)置用于判斷當(dāng)前buffer是否發(fā)生越界訪問(wèn)的越界訪問(wèn)標(biāo)記。
[0024]本發(fā)明實(shí)施例所提供的內(nèi)存管理方法和裝置,先分配具有固定起始地址和結(jié)束地址的物理內(nèi)存;再將所述物理內(nèi)存劃分為多個(gè)固定大小的緩沖區(qū)(buffer),并將所述buffer串聯(lián)成單鏈表結(jié)構(gòu);最后通過(guò)對(duì)單鏈表節(jié)點(diǎn)的刪除和插入操作,對(duì)所述buffer進(jìn)行分配和回收。如此,能夠在一定程度上提高內(nèi)存分配和回收的效率,有效減少內(nèi)存分配時(shí)產(chǎn)生的內(nèi)存碎片;而且,本發(fā)明實(shí)施例采用單向鏈表結(jié)構(gòu)簡(jiǎn)單,避免了現(xiàn)有技術(shù)中采用的遍歷查找空閑內(nèi)存的方式,大大提升內(nèi)存處理速度及內(nèi)存資源的利用率,有效提高內(nèi)存管理效率,進(jìn)而能大大提升終端上的軟件運(yùn)行速度及數(shù)據(jù)傳輸速率。
【附圖說(shuō)明】
[0025]圖1為本發(fā)明實(shí)施例內(nèi)存管理方法流程示意圖;
[0026]圖2為本發(fā)明實(shí)施例分配的固定大小的物理內(nèi)存結(jié)構(gòu)示意圖;
[0027]圖3為本發(fā)明實(shí)施例上行內(nèi)存和下行內(nèi)存結(jié)構(gòu)示意圖;
[0028]圖4為本發(fā)明實(shí)施例串聯(lián)后的buffer單鏈表結(jié)構(gòu)示意圖;
[0029]圖5為本發(fā)明實(shí)施例buffer分配方法示意圖;
[0030]圖6為本發(fā)明實(shí)施例buffer回收方法示意圖;
[0031]圖7為本發(fā)明實(shí)施例內(nèi)存管理裝置結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0032]在多模通信系統(tǒng)協(xié)議軟件開(kāi)發(fā)過(guò)程中,上下行數(shù)據(jù)的傳輸以及各個(gè)制式間數(shù)據(jù)的轉(zhuǎn)移,都需要內(nèi)存buffer來(lái)緩存或者暫存這些上下行數(shù)據(jù)。
[0033]為提高內(nèi)存分配和回收的效率,本發(fā)明實(shí)施例中,先分配具有固定起始地址和結(jié)束地址的物理內(nèi)存;再將所述物理內(nèi)存劃分為多個(gè)固定大小的buffer,并將所述buffer串聯(lián)成單鏈表結(jié)構(gòu);最后通過(guò)對(duì)單鏈表節(jié)點(diǎn)的刪除和插入操作,對(duì)所述buffer進(jìn)行分配和回收。
[0034]本發(fā)明實(shí)施例所述單鏈表,包括頭指針、尾指針、buffer計(jì)數(shù)器以及一個(gè)以上節(jié)點(diǎn)。其中,所述單鏈表結(jié)構(gòu)的每個(gè)節(jié)點(diǎn)對(duì)應(yīng)一個(gè)buffer,每個(gè)節(jié)點(diǎn)包括數(shù)據(jù)部分和指針部分,單鏈表的buffer計(jì)數(shù)器記錄所述buffer的總個(gè)數(shù)。
[0035]具體的,通過(guò)對(duì)單鏈表節(jié)點(diǎn)的刪除操作,對(duì)所述buffer進(jìn)行分配包括:將所述單鏈表的頭指針指向的buffer分配給申請(qǐng)內(nèi)存的線程或功能模塊,并將單鏈表的頭指針指向下一個(gè)buffer,同時(shí)buffer個(gè)數(shù)減1。
[0036]通過(guò)對(duì)單鏈表節(jié)點(diǎn)的插入操作,對(duì)所述buffer進(jìn)行回收包括:將所述線程或功能模塊釋放的buffer的首地址插入到所述單鏈表的尾部,并將單鏈表的尾指針后指向所述插入的buffer,同時(shí)將buffer個(gè)數(shù)加1。
[0037]所述方法還包括:在單鏈表中每個(gè)buffer節(jié)點(diǎn)的數(shù)據(jù)部分設(shè)置用于標(biāo)記當(dāng)前buffer是否空閑的空閑標(biāo)記;在單鏈表中每個(gè)buffer節(jié)點(diǎn)的數(shù)據(jù)部分設(shè)置用于判斷當(dāng)前buffer是否發(fā)生越界訪問(wèn)的越界訪問(wèn)標(biāo)記。
[0038]下面結(jié)合附圖及具體實(shí)施例,對(duì)本發(fā)明技術(shù)方案的實(shí)施作進(jìn)一步的詳細(xì)描述。本發(fā)明實(shí)施例內(nèi)存管理方法流程,如圖1所示,包括以下步驟:
[0039]步驟101:分配具有固定起始地址和結(jié)束地址的物理內(nèi)存;
[0040]具體的,從雙倍速率同步動(dòng)態(tài)隨機(jī)存儲(chǔ)器(DDR_RAM,Double Data Rate RandomAccess Memory)內(nèi)存中預(yù)先規(guī)劃分配一塊固定大小的物理內(nèi)存,所述物理內(nèi)存的起始地址和結(jié)束地址在進(jìn)行劃分時(shí)確定;所述固定大小的物理內(nèi)存的大小可以根據(jù)所需要傳輸?shù)腎P包的大小、同時(shí)傳輸?shù)腎P包個(gè)數(shù)、以及IP包的管理結(jié)構(gòu)大小確定。
[0041]例如,本發(fā)明實(shí)施例中,可以分配10M固定大小的物理內(nèi)存。如圖2所示,圖2為本發(fā)明實(shí)施例分配的固定大小的物理內(nèi)存結(jié)構(gòu)示意圖。所述物理內(nèi)存的起始地址為0x22A00000,結(jié)束地址為 0x23400000。
[0042]步驟102:將所述物理內(nèi)存劃分為多個(gè)固定大小的buffer,并將所述buffer串聯(lián)成單鏈表結(jié)構(gòu);
[0043]具體的,在初始化時(shí),將所述物理內(nèi)存劃分為多個(gè)固定大小的buffer,并使用單向鏈表結(jié)構(gòu)將這些固定大小的buffer串接起來(lái)。
[0044]所述單鏈表結(jié)構(gòu)的每一個(gè)節(jié)點(diǎn)對(duì)應(yīng)一個(gè)buffer,初始化后單鏈表的頭指針指向分
當(dāng)前第1頁(yè)1 2 3 
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1