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

終端的內(nèi)存分配方法及裝置與流程

文檔序號(hào):12463697閱讀:262來源:國知局
終端的內(nèi)存分配方法及裝置與流程

本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,尤其涉及一種終端的內(nèi)存分配方法及裝置。



背景技術(shù):

目前,終端一般會(huì)與平臺(tái)發(fā)生交互,因此終端數(shù)據(jù)的處理也需要與平臺(tái)的數(shù)據(jù)發(fā)生交互,但是平臺(tái)與終端發(fā)生數(shù)據(jù)交互時(shí),交互的數(shù)據(jù)沒有定長,終端數(shù)據(jù)和平臺(tái)數(shù)據(jù)的范圍相差很大。在終端上預(yù)設(shè)空間的時(shí)候,該預(yù)設(shè)的空間需要被設(shè)置得很大,會(huì)加大內(nèi)存的需求。

現(xiàn)有的內(nèi)存管理技術(shù)為了降低內(nèi)存的需求,大多以位標(biāo)記表示內(nèi)存的存儲(chǔ)情況。如果單個(gè)位標(biāo)記表示的內(nèi)存太少時(shí),則需要用到的標(biāo)記位太多,這會(huì)造成空間的浪費(fèi),而單個(gè)位標(biāo)記表示的內(nèi)存太大時(shí),單次申請(qǐng)的內(nèi)存空間利用率則會(huì)比較低,同時(shí),在內(nèi)存申請(qǐng)和內(nèi)存釋放過程中需要進(jìn)行多次位移計(jì)算和多次位與運(yùn)算,需要消耗較長的時(shí)間,因此采用位標(biāo)記表示內(nèi)存的存儲(chǔ)情況時(shí),內(nèi)存空間的利用率會(huì)比較低,同時(shí)數(shù)據(jù)的處理速率也會(huì)較慢。此外,在進(jìn)行內(nèi)存申請(qǐng)時(shí),需按內(nèi)存的物理地址順序?qū)?nèi)存進(jìn)行檢索,以查找到滿足分配需求的空閑空間進(jìn)行內(nèi)存分配,但在實(shí)際內(nèi)存中,占用空間和空閑空間是間隔分布的,因此除了檢索空閑空間之外,還會(huì)檢索無法再分配的占用空間,這種檢索方式對(duì)內(nèi)存中不必要的部分進(jìn)行檢索,花費(fèi)了不必要的時(shí)間,降低了內(nèi)存分配效率。此外現(xiàn)有公開技術(shù)在檢索中很難找到合適的空間,往往會(huì)將較大的空間進(jìn)行切割分配,這種方式容易導(dǎo)致沒有必要的邏輯碎片,甚至?xí)?dǎo)致后續(xù)的內(nèi)存申請(qǐng)空間較大時(shí),由于找不大合適的空間而導(dǎo)致失敗。

上述內(nèi)容僅用于輔助理解本發(fā)明的技術(shù)方案,并不代表承認(rèn)上述內(nèi)容是現(xiàn)有技術(shù)。



技術(shù)實(shí)現(xiàn)要素:

本發(fā)明的主要目的在于提出一種終端的內(nèi)存分配方法及裝置,旨在實(shí)現(xiàn)提高內(nèi)存的利用率,同時(shí)減少空間查找花費(fèi)的時(shí)間,提高查找效率和內(nèi)存分配效率。

為實(shí)現(xiàn)上述目的,本發(fā)明提供的一種終端的內(nèi)存分配方法,所述終端的內(nèi)存包括占用空間和空閑空間,所述空閑空間包括節(jié)點(diǎn)空間和分配空間,所述空閑空間的節(jié)點(diǎn)空間包括下一空閑空間開始位置的地址,所述終端的內(nèi)存分配方法包括以下步驟:

接收外部設(shè)備發(fā)送的內(nèi)存申請(qǐng)指令;

根據(jù)所述內(nèi)存申請(qǐng)指令和節(jié)點(diǎn)空間中的下一空閑空間開始位置的地址對(duì)所述內(nèi)存中的空閑空間進(jìn)行查找;

若在所述內(nèi)存中查找到分配空間滿足內(nèi)存申請(qǐng)需求的空閑空間,則根據(jù)所述內(nèi)存申請(qǐng)指令分配所述空閑空間中對(duì)應(yīng)的分配空間,并在分配完成時(shí)修改對(duì)應(yīng)的空閑空間的下一空閑空間開始位置的地址。

優(yōu)選的,所述終端的內(nèi)存中設(shè)置有快速切入口,所述快速切入口設(shè)置在一空閑空間的開始位置,所述根據(jù)所述內(nèi)存申請(qǐng)指令和節(jié)點(diǎn)空間中的下一空閑空間開始位置的地址對(duì)所述內(nèi)存中的空閑空間進(jìn)行查找的步驟包括:

根據(jù)所述內(nèi)存申請(qǐng)指令和節(jié)點(diǎn)空間中的信息從所述快速切入口所在的空閑空間開始對(duì)所述空閑空間進(jìn)行查找;

所述若在所述內(nèi)存中查找到分配空間滿足內(nèi)存申請(qǐng)需求的空閑空間,則根據(jù)所述內(nèi)存申請(qǐng)指令分配所述空閑空間中對(duì)應(yīng)的分配空間,并在分配完成時(shí)修改對(duì)應(yīng)的空閑空間的下一空閑空間開始位置的地址的步驟包括:

在分配完成時(shí),將所述快速切入口調(diào)整到另一空閑空間中節(jié)點(diǎn)空間的開始位置。

優(yōu)選的,所述快速切入口設(shè)置在分配空間最小的空閑空間,所述根據(jù)所述內(nèi)存申請(qǐng)指令和節(jié)點(diǎn)空間中的下一空閑空間開始位置的地址對(duì)所述內(nèi)存中的空閑空間進(jìn)行查找的步驟之前還包括:

根據(jù)各空閑空間分配空間的大小進(jìn)行排序,并根據(jù)排序結(jié)果修改所述內(nèi)存中各空閑空間中的下一空閑空間開始位置的地址,以使得各空閑空間按分配空間大小依次進(jìn)行關(guān)聯(lián);

所述根據(jù)所述內(nèi)存申請(qǐng)指令和節(jié)點(diǎn)空間中的下一空閑空間開始位置的地址從所述快速切入口所在的空閑空間開始對(duì)所述空閑空間進(jìn)行查找的步驟包括:

根據(jù)所述內(nèi)存申請(qǐng)指令和節(jié)點(diǎn)空間中的下一空閑空間開始位置的地址從所述快速切入口所在的分配空間最小的空閑空間開始對(duì)所述空閑空間進(jìn)行查找。

優(yōu)選的,所述在分配完成時(shí)修改對(duì)應(yīng)的空閑空間的下一空閑空間開始位置的地址的步驟還包括:

在分配完成時(shí),根據(jù)各空閑空間當(dāng)前的分配空間大小,更新所述內(nèi)存中各空閑空間中的下一空閑空間開始位置的地址,以使得各空閑空間按當(dāng)前的分配空間大小依次進(jìn)行關(guān)聯(lián);

所述在分配完成時(shí),將所述快速切入口調(diào)整到另一空閑空間中節(jié)點(diǎn)空間的開始位置的步驟包括:

在分配完成時(shí),將所述快速切入口調(diào)整到當(dāng)前分配空間最小的空閑空間中節(jié)點(diǎn)空間的開始位置。

優(yōu)選的,所述接收外部設(shè)備發(fā)送的內(nèi)存申請(qǐng)指令的步驟之后還包括:

根據(jù)所述內(nèi)存申請(qǐng)指令獲取內(nèi)存申請(qǐng)的需求;

若未獲取到所述內(nèi)存申請(qǐng)的需求,則根據(jù)所述內(nèi)存申請(qǐng)指令在分配空間最大的空閑空間中進(jìn)行預(yù)分配;

若獲取到所述內(nèi)存申請(qǐng)的需求,則執(zhí)行步驟:根據(jù)所述內(nèi)存申請(qǐng)指令和節(jié)點(diǎn)空間中的下一空閑空間開始位置的地址對(duì)所述內(nèi)存中的空閑空間進(jìn)行查找。

優(yōu)選的,所述終端的內(nèi)存分配方法還包括:

在接收到所述占用空間的中數(shù)據(jù)已被使用或繼續(xù)使用的空間大小時(shí),釋放所述占用空間中對(duì)應(yīng)的空間;

修改所述占用空間的下一空閑空間開始位置的地址和其它對(duì)應(yīng)的空閑空間的下一空閑空間開始位置的地址,或者根據(jù)所述占用空間釋放的空間大小新建為空閑空間。

優(yōu)選的,所述空閑空間的預(yù)設(shè)空間還包括上一空間開始位置的地址和下一空間開始位置的地址,將釋放的占用空間定義為釋放空間,所述終端的內(nèi)存分配方法還包括:

根據(jù)所述釋放空間的下一空間開始位置的地址判斷與所述釋放空間相鄰的下一空間是否包括下一空閑空間開始位置的地址;

若與所述釋放空間相鄰的下一空間包括下一空閑空間開始位置的地址,則將所述釋放空間和所述釋放空間相鄰的下一空間合并,并在合并完成時(shí)修改對(duì)應(yīng)的空閑空間的上一空間開始位置的地址、下一空間開始位置的地址和下一空閑空間開始位置的地址;

根據(jù)所述釋放空間的上一空間開始位置的地址判斷與所述釋放空間相鄰的上一空間是否包括下一空閑空間開始位置的地址;

若與所述釋放空間相鄰的上一空間包括下一空閑空間開始位置的地址,則將所述釋放空間和所述釋放空間相鄰的上一空間合并,并在合并完成時(shí)修改對(duì)應(yīng)的空閑空間的上一空間開始位置的地址、下一空間開始位置的地址和下一空閑空間開始位置的地址。

此外,為實(shí)現(xiàn)上述目的,本發(fā)明還提供一種終端的內(nèi)存分配裝置,所述終端的內(nèi)存包括占用空間和空閑空間,所述空閑空間包括節(jié)點(diǎn)空間和分配空間,所述空閑空間的節(jié)點(diǎn)空間包括下一空閑空間開始位置的地址,所述內(nèi)存分配裝置包括:

指令接收模塊,用于接收外部設(shè)備發(fā)送的內(nèi)存申請(qǐng)指令;

空間查找模塊,用于根據(jù)所述內(nèi)存申請(qǐng)指令和節(jié)點(diǎn)空間中的下一空閑空間開始位置的地址對(duì)所述內(nèi)存中的空閑空間進(jìn)行查找;

空間分配模塊,用于若在所述內(nèi)存中查找到分配空間滿足內(nèi)存申請(qǐng)需求的空閑空間,則根據(jù)所述內(nèi)存申請(qǐng)指令分配所述空閑空間中對(duì)應(yīng)的分配空間,并在分配完成時(shí)修改對(duì)應(yīng)的空閑空間的下一空閑空間開始位置的地址。

優(yōu)選的,所述終端的內(nèi)存中設(shè)置有快速切入口,所述快速切入口設(shè)置在一空閑空間的開始位置,所述空間查找模塊還用于根據(jù)所述內(nèi)存申請(qǐng)指令和節(jié)點(diǎn)空間中的信息從所述快速切入口所在的空閑空間開始對(duì)所述空閑空間進(jìn)行查找;

所述空間分配模塊還用于在分配完成時(shí),將所述快速切入口調(diào)整到另一空閑空間中節(jié)點(diǎn)空間的開始位置。

優(yōu)選的,所述快速切入口設(shè)置在分配空間最小的空閑空間,所述內(nèi)存分配裝置還包括:

關(guān)聯(lián)模塊,用于根據(jù)各空閑空間分配空間的大小進(jìn)行排序,并根據(jù)排序結(jié)果修改所述內(nèi)存中各空閑空間中的下一空閑空間開始位置的地址,以使得各空閑空間按分配空間大小依次進(jìn)行關(guān)聯(lián);

所述空間查找模塊還用于根據(jù)所述內(nèi)存申請(qǐng)指令和節(jié)點(diǎn)空間中的信息從所述快速切入口所在的分配空間最小的空閑空間開始對(duì)所述空閑空間進(jìn)行查找。

優(yōu)選的,所述空間分配模塊,還用于在分配完成時(shí),根據(jù)各空閑空間當(dāng)前的分配空間大小,更新所述內(nèi)存中各空閑空間中的下一空閑空間開始位置的地址,以使得各空閑空間按當(dāng)前的分配空間大小依次進(jìn)行關(guān)聯(lián);

所述空間分配模塊,還用于將所述快速切入口調(diào)整到當(dāng)前分配空間最小的空閑空間中節(jié)點(diǎn)空間的開始位置。

優(yōu)選的,所述內(nèi)存分配裝置還包括:

需求獲取模塊,用于根據(jù)所述申請(qǐng)指令獲取所述內(nèi)存申請(qǐng)的需求;

空間確定模塊,用于若未獲取到所述內(nèi)存申請(qǐng)的需求,則根據(jù)所述內(nèi)存申請(qǐng)指令在分配空間最大的空閑空間中進(jìn)行預(yù)分配。

優(yōu)選的,所述內(nèi)存分配裝置還包括:

空間釋放模塊,用于在接收到所述占用空間的中數(shù)據(jù)已被使用或繼續(xù)使用的空間大小時(shí),釋放所述占用空間中對(duì)應(yīng)的空間;

地址修改模塊,用于修改所述占用空間的下一空閑空間開始位置的地址和其它對(duì)應(yīng)的空閑空間的下一空閑空間開始位置的地址,或者根據(jù)所述占用空間釋放的空間大小新建為空閑空間。

優(yōu)選的,所述空閑空間的預(yù)設(shè)空間還包括上一空間開始位置的地址和下一空間開始位置的地址,將釋放的占用空間定義為釋放空間,所述內(nèi)存分配裝置還包括:

第一判斷模塊,用于根據(jù)所述釋放空間的下一空間開始位置的地址判斷與所述釋放空間相鄰的下一空間是否包括下一空閑空間開始位置的地址;

第一合并模塊,用于若所述釋放空間相鄰的下一空間包括下一空閑空間開始位置的地址,則將所述釋放空間和所述釋放空間相鄰的下一空間合并,并在合并完成時(shí)修改對(duì)應(yīng)的空閑空間的上一空間開始位置的地址、下一空間開始位置的地址和下一空閑空間開始位置的地址;

第二判斷模塊,用于根據(jù)所述釋放空間的上一空間開始位置的地址判斷與所述釋放空間相鄰的上一空間是否包括下一空閑空間開始位置的地址;

第二合并模塊,用于若所述釋放空間相鄰的上一空間包括下一空閑空間開始位置的地址,則將所述釋放空間和所述釋放空間相鄰的上一空間合并,并在合并完成時(shí)修改對(duì)應(yīng)的空閑空間的上一空間開始位置的地址、下一空間開始位置的地址和下一空閑空間開始位置的地址。

本發(fā)明中終端的內(nèi)存包括占用空間和空閑空間,所述終端的內(nèi)存包括占用空間和空閑空間,所述空閑空間包括節(jié)點(diǎn)空間和分配空間,所述空閑空間的節(jié)點(diǎn)空間包括下一空閑空間開始位置的地址,終端在接收外部設(shè)備發(fā)送的內(nèi)存申請(qǐng)指令時(shí),根據(jù)內(nèi)存申請(qǐng)指令和節(jié)點(diǎn)空間中的下一空閑空間開始位置的地址對(duì)所述內(nèi)存中的空閑空間進(jìn)行查找,若查找到分配空間滿足內(nèi)存申請(qǐng)需求的空閑空間,則根據(jù)所述內(nèi)存申請(qǐng)指令分配所述空閑空間中對(duì)應(yīng)的分配空間,避免在內(nèi)存申請(qǐng)時(shí)進(jìn)行多次的位移計(jì)算和位與計(jì)算,從而能夠提高數(shù)據(jù)的處理效率;同時(shí),分配的內(nèi)存空間剛好滿足內(nèi)存申請(qǐng)的需求,不會(huì)存在單次申請(qǐng)空間過大的情況,從而提高內(nèi)存的利用率;此外,在空閑空間之間建立聯(lián)系,在內(nèi)存申請(qǐng)時(shí),根據(jù)節(jié)點(diǎn)空間包括的下一空閑空間開始位置的地址,對(duì)空閑空間進(jìn)行查找,以查找到滿足申請(qǐng)條件的空間,提高內(nèi)存分配效率。因此本發(fā)明能夠提高數(shù)據(jù)的處理速率,提高內(nèi)存的利用率,降低終端的內(nèi)存需求,提高內(nèi)存分配效率。

附圖說明

圖1為本發(fā)明終端的內(nèi)存分配方法第一實(shí)施例的流程示意圖;

圖2為本發(fā)明終端的內(nèi)存分配方法第二實(shí)施例的流程示意圖;

圖3為本發(fā)明終端的內(nèi)存分配方法第三實(shí)施例的流程示意圖;

圖4為本發(fā)明終端的內(nèi)存分配方法第四實(shí)施例的流程示意圖;

圖5為本發(fā)明終端的內(nèi)存分配方法第五實(shí)施例的流程示意圖;

圖6為本發(fā)明終端的內(nèi)存分配方法第六實(shí)施例的流程示意圖;

圖7為本發(fā)明終端的內(nèi)存分配方法第一實(shí)施例中內(nèi)存結(jié)構(gòu)示意圖;

圖8為本發(fā)明終端的內(nèi)存分配方法第三實(shí)施例中內(nèi)存結(jié)構(gòu)示意圖;

圖9為本發(fā)明終端的內(nèi)存分配方法第六實(shí)施例中內(nèi)存結(jié)構(gòu)示意圖1;

圖10為本發(fā)明終端的內(nèi)存分配方法第六實(shí)施例中內(nèi)存結(jié)構(gòu)示意圖2;

圖11為本發(fā)明終端的內(nèi)存分配裝置第一實(shí)施例的功能模塊示意圖;

圖12為本發(fā)明終端的內(nèi)存分配裝置第二實(shí)施例的功能模塊示意圖;

圖13為本發(fā)明終端的內(nèi)存分配裝置第三實(shí)施例的功能模塊示意圖;

圖14為本發(fā)明終端的內(nèi)存分配裝置第四實(shí)施例的功能模塊示意圖;

圖15為本發(fā)明終端的內(nèi)存分配裝置第五實(shí)施例的功能模塊示意圖。

本發(fā)明目的的實(shí)現(xiàn)、功能特點(diǎn)及優(yōu)點(diǎn)將結(jié)合實(shí)施例,參照附圖做進(jìn)一步說明。

具體實(shí)施方式

應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。

本發(fā)明提供一種終端的內(nèi)存分配方法。

參照?qǐng)D1,圖1為本發(fā)明終端的內(nèi)存分配方法第一實(shí)施例的流程示意圖。

在本實(shí)施例中,該終端的內(nèi)存分配方法包括以下步驟:

步驟S110,接收外部設(shè)備發(fā)送的內(nèi)存申請(qǐng)指令;

本實(shí)施例中終端的內(nèi)存包括占用空間和空閑空間,所述空閑空間包括節(jié)點(diǎn)空間和分配空間,所述空閑空間的節(jié)點(diǎn)空間包括下一空閑空間開始位置的地址,使用過程中終端的內(nèi)存分布示意可以如圖7所示。具體地,圖7中內(nèi)存包括占用空間(圖中標(biāo)識(shí)為占1、占2)、空閑空間(圖中標(biāo)識(shí)為空1、空2),其中每個(gè)空閑空間都包括節(jié)點(diǎn)空間(圖中標(biāo)識(shí)為f1、f2)和分配空間(圖中標(biāo)識(shí)為分1,分2)??臻e空間的節(jié)點(diǎn)空間包括下一空閑空間開始位置的地址,各連續(xù)空間通過節(jié)點(diǎn)空間包括下一空間開始位置的地址建立空閑關(guān)連,例如圖7中,空閑空間空1通過預(yù)設(shè)空間f1中的下一空閑空間開始位置的地址與空閑空間空2建立空閑關(guān)連,當(dāng)查找完空閑空間空1時(shí),通過該地址可跳過占用空間占2直接查找到空閑空間空2。空閑空間中的分配空間為可分配的空間、未被占用的空間。本實(shí)施例中為使用方便將節(jié)點(diǎn)空間設(shè)置在各個(gè)空間的開端位置,該開端位置是按照內(nèi)存中存儲(chǔ)位置的先后為標(biāo)準(zhǔn),先分配的位置為前端,整個(gè)內(nèi)存空間為一總線段。換而言之,本實(shí)施例中內(nèi)存的管理結(jié)構(gòu)采用節(jié)點(diǎn)線段的方式,即各個(gè)空間則為總線段中的各個(gè)節(jié)點(diǎn)線段。具體實(shí)施中為了不影響其他功能的實(shí)現(xiàn),內(nèi)存中包括的占用空間和空閑空間都包括節(jié)點(diǎn)空間和分配空間,占用空間中節(jié)點(diǎn)空間也包括下一空閑空間開始位置的地址信息、下一空間開始位置的地址信息和上一空間開始位置的地址信息,區(qū)別在于占用空間的節(jié)點(diǎn)空間中的三個(gè)信息為空,而空閑空間的節(jié)點(diǎn)空間則存有對(duì)應(yīng)的地址信息,因此根據(jù)節(jié)點(diǎn)空間中信息是否為空,即可判斷出節(jié)點(diǎn)空間所在空間是占用空間還是空閑空間。

在終端開始使用時(shí),整個(gè)內(nèi)存空間為一空閑空間,整個(gè)內(nèi)存空間通過多次內(nèi)存申請(qǐng)和內(nèi)存釋放會(huì)產(chǎn)生不同的空閑空間,如圖7所示,終端一共進(jìn)行了3次內(nèi)存申請(qǐng)和1次內(nèi)存釋放,通過3次內(nèi)存申請(qǐng)和1次內(nèi)存釋放,產(chǎn)生了2個(gè)空閑空間,在下一次內(nèi)存申請(qǐng)中,所述空閑空間可以是這2個(gè)空閑空間的任意一個(gè)。

所述外部設(shè)備包括與終端進(jìn)行數(shù)據(jù)交互的平臺(tái)、服務(wù)器。終端接收外部設(shè)備發(fā)送的內(nèi)存申請(qǐng)指令,根據(jù)所述內(nèi)存申請(qǐng)指令可以獲得外部設(shè)備發(fā)送的內(nèi)存申請(qǐng)數(shù)據(jù),獲得所述內(nèi)存申請(qǐng)數(shù)據(jù)的字節(jié)數(shù)。

步驟S120,根據(jù)所述內(nèi)存申請(qǐng)指令和節(jié)點(diǎn)空間中的下一空閑空間開始位置的地址對(duì)所述內(nèi)存中的空閑空間進(jìn)行查找;

根據(jù)所述內(nèi)存申請(qǐng)指令獲得外部設(shè)備發(fā)送的內(nèi)存申請(qǐng)數(shù)據(jù)大小,即獲得所述內(nèi)存申請(qǐng)數(shù)據(jù)的字節(jié)數(shù),然后根據(jù)接收到的內(nèi)存申請(qǐng)指令和節(jié)點(diǎn)空間中的下一空閑空間開始位置的地址所述內(nèi)存中的空閑空間進(jìn)行查找,以查找到夠滿足所述內(nèi)存申請(qǐng)的需求的空閑空間,具體地,本實(shí)施例中可以從最靠近內(nèi)存開始位置的空閑空間開始檢索,在查找空閑空間時(shí),判斷查找到的空閑空間是否滿足內(nèi)存申請(qǐng)的需求,具體實(shí)施中也可以從其他位置開始檢索。值得注意的是,若檢索的空閑空間不能滿足內(nèi)存申請(qǐng)的需求,則根據(jù)該空閑空間的節(jié)點(diǎn)空間中的下一空閑空間開始位置的地址,直接對(duì)下一空閑空間進(jìn)行檢索,跳過兩個(gè)空閑空間之間的占用空間,不對(duì)該占用空間進(jìn)行查找。這種查找方式有利于縮短查找時(shí)間,提高查找效率,從而提高內(nèi)存分配的效率。

步驟S130,若在所述內(nèi)存中查找到分配空間滿足內(nèi)存申請(qǐng)需求的空閑空間,則根據(jù)所述內(nèi)存申請(qǐng)指令分配所述空閑空間中對(duì)應(yīng)的分配空間,并在分配完成時(shí)修改對(duì)應(yīng)的空閑空間的下一空閑空間開始位置的地址。

根據(jù)步驟S120的結(jié)果,如果查找到分配空間滿足內(nèi)存申請(qǐng)需求的空閑空間,則根據(jù)外部設(shè)備發(fā)送的內(nèi)存申請(qǐng)指令分配對(duì)應(yīng)的內(nèi)存空間,即按照內(nèi)存申請(qǐng)的需求進(jìn)行分配,具體地,如果查找到的空閑空間的分配空間大小大于內(nèi)存申請(qǐng)的空間大小,則會(huì)剩余部分分配空間,此時(shí)這剩余的分配空間則重新定義為一連續(xù)的空閑空間,其開始位置設(shè)置對(duì)應(yīng)的節(jié)點(diǎn)空間,該空閑空間的原來的節(jié)點(diǎn)空間則作為已分配的空間的節(jié)點(diǎn)空間,此時(shí)該已分配的空間為占用空間。在分配完成時(shí),清除該占用空間的節(jié)點(diǎn)空間中下一空閑空間開始位置的地址信息,以釋放空閑關(guān)連;此外在分配完成時(shí),若該占用空間之前存在空閑空間,則將該占用空間的上一空閑空間中預(yù)設(shè)空間包括的下一空閑空間開始位置的地址信息進(jìn)行修改,以在該占用空間的上一空閑空間和該占用空間的下一空閑空間之間建立空閑關(guān)連。

如果查找到的空閑空間的分配空間大小等于內(nèi)存申請(qǐng)的空間大小,則只需修改該空間中節(jié)點(diǎn)空間的空間狀態(tài)。如果沒有查找到分配空間滿足內(nèi)存申請(qǐng)需求的空閑空間,則說明內(nèi)存申請(qǐng)失敗。

本發(fā)明中終端的內(nèi)存包括占用空間和空閑空間,所述終端的內(nèi)存包括占用空間和空閑空間,所述空閑空間包括節(jié)點(diǎn)空間和分配空間,所述空閑空間的節(jié)點(diǎn)空間包括下一空閑空間開始位置的地址,終端在接收外部設(shè)備發(fā)送的內(nèi)存申請(qǐng)指令時(shí),根據(jù)內(nèi)存申請(qǐng)指令和節(jié)點(diǎn)空間中的下一空閑空間開始位置的地址對(duì)所述內(nèi)存中的空閑空間進(jìn)行查找,若查找到分配空間滿足內(nèi)存申請(qǐng)需求的空閑空間,則根據(jù)所述內(nèi)存申請(qǐng)指令分配所述空閑空間中對(duì)應(yīng)的分配空間,避免在內(nèi)存申請(qǐng)時(shí)進(jìn)行多次的位移計(jì)算和位與計(jì)算,從而能夠提高數(shù)據(jù)的處理效率;同時(shí),分配的內(nèi)存空間剛好滿足內(nèi)存申請(qǐng)的需求,不會(huì)存在單次申請(qǐng)空間過大的情況,從而提高內(nèi)存的利用率;此外,在空閑空間之間建立聯(lián)系,在內(nèi)存申請(qǐng)時(shí),根據(jù)節(jié)點(diǎn)空間包括的下一空閑空間開始位置的地址,對(duì)空閑空間進(jìn)行查找,以查找到滿足申請(qǐng)條件的空間,提高內(nèi)存分配效率。因此本發(fā)明能夠提高數(shù)據(jù)的處理速率,提高內(nèi)存的利用率,降低終端的內(nèi)存需求,提高內(nèi)存分配效率。

參照?qǐng)D2,圖2為本發(fā)明終端的內(nèi)存分配方法第二實(shí)施例的流程示意圖。

基于本發(fā)明終端的內(nèi)存分配方法第一實(shí)施例,為進(jìn)一步提高查找速率,本實(shí)施例中與第一實(shí)施例的區(qū)別在于終端的內(nèi)存中設(shè)置有快速切入口,所述快速切入口設(shè)置在一空閑空間的開始位置,步驟S120包括:

步驟S121,根據(jù)所述內(nèi)存申請(qǐng)指令和節(jié)點(diǎn)空間中的信息從所述快速切入口所在的空閑空間開始對(duì)所述空閑空間進(jìn)行查找;

為了避免每次查找空閑空間時(shí),都從內(nèi)存的開始位置開始查找,本實(shí)施例中設(shè)置有快速切入口,所述快速切入口設(shè)置在一空閑空間的開始位置,在接收到外部設(shè)備發(fā)送的內(nèi)存申請(qǐng)指令時(shí),根據(jù)接收到的內(nèi)存申請(qǐng)指令和節(jié)點(diǎn)空間中的信息從快速切入口開始查找夠滿足所述內(nèi)存申請(qǐng)的需求的空閑空間,如果快速切入口所在空閑空間滿足內(nèi)存申請(qǐng)需求時(shí),則分配對(duì)應(yīng)的空間;如果快速切入口所在空閑空間不能滿足內(nèi)存申請(qǐng)需求時(shí),則根據(jù)該空閑空間的節(jié)點(diǎn)空間中的下一空閑空間開始位置的地址查找下一空閑空間。

步驟S130可以包括:

步驟S131,在分配完成時(shí),將所述快速切入口調(diào)整到另一空閑空間中節(jié)點(diǎn)空間的開始位置。

本實(shí)施例中根據(jù)所述內(nèi)存申請(qǐng)指令分配所述空閑空間中對(duì)應(yīng)的分配空間后,將快速切入口調(diào)整到另一空閑空間中節(jié)點(diǎn)空間的開始位置,以方便下次從另一空閑空間開始進(jìn)行查找。使用時(shí)可根據(jù)實(shí)際情況將快速切入口設(shè)置在分配空間較大的空閑空間,因此減少查找時(shí)間。

參照?qǐng)D3,圖3為本發(fā)明終端的內(nèi)存分配方法第三實(shí)施例的流程示意圖。

基于本發(fā)明終端的內(nèi)存分配方法第二實(shí)施例,為避免大空間被小需求分隔,進(jìn)一步提高內(nèi)存利用率,本實(shí)施例中所述快速切入口設(shè)置在分配空間最小的空閑空間,步驟S120之前還包括:

步驟S100,根據(jù)各空閑空間分配空間的大小進(jìn)行排序,并根據(jù)排序結(jié)果修改所述內(nèi)存中各空閑空間中的下一空閑空間開始位置的地址,以使得各空閑空間按分配空間大小依次進(jìn)行關(guān)聯(lián);

本實(shí)施例中,根據(jù)各連續(xù)空間中分配空間的大小進(jìn)行排序,在排序完成時(shí)可得到一個(gè)排序結(jié)果,根據(jù)該結(jié)果修改各空閑空間中的下一空閑空間開始位置的地址,使得各空閑空間按分配空間的大小依次進(jìn)行關(guān)聯(lián)。

步驟S120可以包括:

步驟S122,根據(jù)所述內(nèi)存申請(qǐng)指令和節(jié)點(diǎn)空間中的信息從所述快速切入口所在的分配空間最小的空閑空間開始對(duì)所述空閑空間進(jìn)行查找;

本實(shí)施例中,快速入口的指向不再是任意的一個(gè)空閑空間,而是整個(gè)內(nèi)存中下分配空間最小的空閑空間,之后還連接著所有分配空間從小到大的排列的空閑空間。在進(jìn)行空間查找時(shí),按分配空間的大小順序?qū)臻e空間進(jìn)行查找,這種方式不但提升了申請(qǐng)速度,還最大限度優(yōu)化了空間配置。具體的,如圖8,分配空間從小到大依次為空2、空3、空1,在進(jìn)行內(nèi)存申請(qǐng)時(shí),由快速切入口進(jìn)入到分配空間最小的空閑空間空2,依次查找空閑空間空2、空閑空間空3、空閑空間空1,查找過程脫離了物理先后順序,也跳過了占用空間,使查找效率大大提高。每次空間申請(qǐng)時(shí)都會(huì)從最小的開始檢索,直到符合要求,此時(shí)空間是最適合大小,減少了再分割情況,減少空閑空間數(shù)量,提高之后的檢索效率,同時(shí)也保證大空間供應(yīng),形成了最佳空間利用,提高內(nèi)存利用率。

步驟130可以包括:

步驟132,在分配完成時(shí),根據(jù)各空閑空間當(dāng)前的分配空間大小,更新所述內(nèi)存中各空閑空間中的下一空閑空間開始位置的地址,以使得各空閑空間按當(dāng)前的分配空間大小依次進(jìn)行關(guān)聯(lián);

本實(shí)施例中,在分配完成時(shí),內(nèi)存中空閑空間的分配空間大小將發(fā)生變化,根據(jù)分配空間的變化情況,重新根據(jù)各連續(xù)空間中當(dāng)前分配空間的大小進(jìn)行排序,在排序完成時(shí)可得到一個(gè)新的排序結(jié)果,根據(jù)該結(jié)果更新各空閑空間中的下一空閑空間開始位置的地址,使得各空閑空間按當(dāng)前分配空間的大小依次進(jìn)行關(guān)聯(lián)。需要說明的是具體實(shí)施中內(nèi)存中每次空閑空間變化時(shí),都會(huì)對(duì)所有的空閑空間進(jìn)行排序,然后調(diào)整對(duì)應(yīng)空閑空間之間的關(guān)聯(lián)關(guān)系。

步驟133,在分配完成時(shí),將所述快速切入口調(diào)整到當(dāng)前分配空間最小的空閑空間中節(jié)點(diǎn)空間的開始位置。

本實(shí)施例中,將快速切入口調(diào)整到當(dāng)前分配空間最小的空閑空間中節(jié)點(diǎn)空間的開始位置,以方便下次從當(dāng)前分配空間最小的空閑空間開始進(jìn)行查找。

參照?qǐng)D4,圖4為本發(fā)明終端的內(nèi)存分配方法第四實(shí)施例的流程示意圖。

基于本發(fā)明終端的內(nèi)存分配方法第三實(shí)施例,步驟S110之后還包括:

步驟S140,根據(jù)所述內(nèi)存申請(qǐng)指令獲取內(nèi)存申請(qǐng)的需求;

本實(shí)施例中,在接收到內(nèi)存申請(qǐng)指令時(shí),根據(jù)該內(nèi)存申請(qǐng)指令獲取內(nèi)存申請(qǐng)的需求,確定本次申請(qǐng)需要多少內(nèi)存。

步驟S150,若未獲取到所述內(nèi)存申請(qǐng)的需求,則根據(jù)所述內(nèi)存申請(qǐng)指令在分配空間最大的空閑空間中進(jìn)行預(yù)分配。

本實(shí)施例中,若未獲取到本次內(nèi)存申請(qǐng)的需求,無法確定本次申請(qǐng)需要多少內(nèi)存,則將內(nèi)存中分配空間最大的空閑空間進(jìn)行預(yù)分配。通過該分配方式,當(dāng)在不知道需求空間大小情況下,可在內(nèi)存中最大的空閑空間中進(jìn)行空間預(yù)申請(qǐng),使用完再以預(yù)授完成鎖定需求空間,多于的空間則新建為一空閑空間,可以實(shí)現(xiàn)最大限度的優(yōu)化。具體地,在按需求鎖定分配空間,對(duì)此分配空間所多出的部分進(jìn)行二次判斷,多出來的空間是否滿足創(chuàng)建一個(gè)新的空閑空間,若滿足就創(chuàng)建一個(gè)新的空閑空間。如果獲取到本次內(nèi)存申請(qǐng)的需求,則執(zhí)行步驟S122。

參照?qǐng)D5,圖5為本發(fā)明終端的內(nèi)存分配方法第五實(shí)施例的流程示意圖。

基于本發(fā)明終端的內(nèi)存分配方法第一實(shí)施例,所述終端的內(nèi)存分配方法還包括:

步驟S160,在接收到所述占用空間的中數(shù)據(jù)已被使用或繼續(xù)使用的空間大小時(shí),釋放所述占用空間中對(duì)應(yīng)的空間;

步驟S170,修改所述占用空間的下一空閑空間開始位置的地址和其它對(duì)應(yīng)的空閑空間的下一空閑空間開始位置的地址,或者根據(jù)所述占用空間釋放的空間大小新建為空閑空間。

所述被占用的內(nèi)存空間為終端進(jìn)行內(nèi)存申請(qǐng)并獲得分配的內(nèi)存空間,即占用空間中空間正在被使用,在具體實(shí)施中,所述被占用的內(nèi)存空間可以有多個(gè)。在占用空間位置使用完后,會(huì)傳入數(shù)據(jù)已經(jīng)被使用的信息;或者在部分使用完時(shí),傳入繼續(xù)使用的空間大小或使用完的空間大小的信息。

終端在接收到所述被占用內(nèi)存空間的數(shù)據(jù)已被使用或繼續(xù)使用的空間大小時(shí),則釋放被占用中對(duì)應(yīng)的空間。具體的,在接收到所述被占用內(nèi)存空間的數(shù)據(jù)已被使用,則獲取被占用的內(nèi)存空間的指針,所述指針用于標(biāo)記被占用的內(nèi)存空間。在獲取到該指針時(shí),對(duì)所述指針進(jìn)行映射,獲取所述占用空間中節(jié)點(diǎn)空間的開始位置的地址,并根據(jù)所述開始位置的地址,查找到所述占用空間并釋放該占用空間。

在空間全部釋放完成時(shí),該占用空間成為空閑空間,該占用空間包括節(jié)點(diǎn)空間。獲取該占用空間的上一空閑空間中的下一空閑空間開始位置的地址,并根據(jù)該地址修改該占用空間中節(jié)點(diǎn)空間的信息,使得該占用空間和該占用空間的下一空閑空間建立空閑關(guān)連。在與下一空閑空間建立空閑關(guān)連時(shí),修改該占用空間的上一空閑空間中節(jié)點(diǎn)空間的信息,以釋放該占用空間的上一空閑空間與該占用空間的下一空閑空間之間空閑關(guān)連,并在該占用空間的上一空閑空間與該占用空間建立空閑關(guān)連。

在接收到所述占用空間的中繼續(xù)使用的空間大小或使用完的空間大小時(shí),獲取將要釋放的空間的指針,釋放對(duì)應(yīng)的空間,將釋放的空間作為一個(gè)空閑空間。即釋放原占用空間中部分空間,將釋放的空間作為空閑空間。

本實(shí)施例中,判斷占用空間中的數(shù)據(jù)是否被使用,當(dāng)該數(shù)據(jù)已被使用時(shí)釋放該占用空間,有利于清理不必要的數(shù)據(jù),提高內(nèi)存利用率。

參照?qǐng)D6,圖6為本發(fā)明終端的內(nèi)存分配方法第六實(shí)施例的流程示意圖。

基于本發(fā)明終端的內(nèi)存分配方法第五實(shí)施例,所述終端的內(nèi)存分配方法還包括:

步驟S180,根據(jù)所述釋放空間的下一空間開始位置的地址判斷與所述釋放空間相鄰的下一空間是否包括下一空閑空間開始位置的地址;

本實(shí)施例中,所述空閑空間的節(jié)點(diǎn)空間還包括上一空間開始位置的地址和下一空間開始位置的地址。通過該上一空間開始位置的地址,可查找到該空閑空間的上一空間;通過該下一空間開始位置的地址,可查找到該空閑空間的下一空間。在某占用空間完成空間釋放,成為空閑空間時(shí),將該釋放的占用空間定義為釋放空間。根據(jù)該釋放空間中的下一空間開始位置的地址查找到該釋放空間的下一空間,并判斷該釋放空間的下一空間是否包括下一空閑空間開始位置的地址。若該釋放空間的下一空間不包括下一空閑空間開始位置的地址,則說明該釋放空間的下一空間沒有空閑關(guān)聯(lián),該釋放空間的下一空間為占用空間,而不是空閑空間;若該釋放空間的下一空間包括下一空閑空間開始位置的地址,則說明該釋放空間的下一空間有空閑關(guān)聯(lián),該釋放空間的下一空間為空閑空間,而不是占用空間,此時(shí)進(jìn)入步驟S190。特別的,如果該釋放空間的下一空間開始位置的地址為空,則說明該釋放空間處于內(nèi)存的最末段,此時(shí)仍進(jìn)入步驟S190。

步驟S190,若與所述釋放空間相鄰的下一空間包括下一空閑空間開始位置的地址,則將所述釋放空間和所述釋放空間相鄰的下一空間合并,并在合并完成時(shí)修改對(duì)應(yīng)的空閑空間的上一空間開始位置的地址、下一空間開始位置的地址和下一空閑空間開始位置的地址;

本實(shí)施例中,若該釋放空間的下一空間包括下一空閑空間開始位置的地址,則說明該釋放空間的下一空間有空閑關(guān)聯(lián),該釋放空間的下一空間為空閑空間,而不是占用空間。此時(shí)將該釋放空間中的分配空間、與該釋放空間相鄰的下一內(nèi)存空間的節(jié)點(diǎn)空間和分配空間合并,并修改對(duì)應(yīng)的空閑空間的上一空間開始位置的地址、下一空間開始位置的地址和下一空閑空間開始位置的地址。具體的,如圖9,其中釋放空間用釋放標(biāo)識(shí),各空閑空間的分配空間用分標(biāo)識(shí),各空閑空間的節(jié)點(diǎn)空間用f標(biāo)識(shí),釋放空間的上一空閑空間用空1標(biāo)識(shí),釋放和空1之間間隔有占用空間占1,釋放空間的下一空間為空閑空間,用空2標(biāo)識(shí),空2的下一空閑空間用空3標(biāo)識(shí),空2與空3之間間隔有占用空間占2。在釋放與空2合并完成時(shí),修改空1的下一空閑空間開始位置的地址信息和合并后空間中節(jié)點(diǎn)空間的信息,使得該合并空間分別與上一空間、下一空間以及下一空閑空間關(guān)聯(lián),即在修改完成時(shí),釋放與空2成為一個(gè)新的空閑空間,其上一空間為占1,上一空閑空間為空1,下一空間為占2,下一空閑空間為空3,此時(shí)釋放空間向后合并與修改完成。

步驟S200,根據(jù)所述釋放空間的上一空間開始位置的地址判斷與所述釋放空間相鄰的上一空間是否包括上一空閑空間開始位置的地址;

類似步驟S180,根據(jù)該釋放空間中的上一空間開始位置的地址查找到該釋放空間的上一空間,并判斷該釋放空間的上一空間是否包括下一空閑空間開始位置的地址。若該釋放空間的上一空間不包括下一空閑空間開始位置的地址,則說明該釋放空間的上一空間沒有空閑關(guān)聯(lián),該釋放空間的上一空間為占用空間,而不是空閑空間;若該釋放空間的下一空間包括下一空閑空間開始位置的地址,則說明該釋放空間的下一空間有空閑關(guān)聯(lián),該釋放空間的下一空間為空閑空間,而不是占用空間。特別的,如果該釋放空間的下一空間開始位置的地址為空,則說明該釋放空間處于內(nèi)存的最前段。

步驟S210,若與所述釋放空間相鄰的上一空間包括上一空閑空間開始位置的地址,則將所述釋放空間和所述釋放空間相鄰的上一空間合并,并在合并完成時(shí)修改對(duì)應(yīng)的空閑空間的上一空間開始位置的地址、下一空間開始位置的地址和下一空閑空間開始位置的地址。

若該釋放空間的下一空間包括下一空閑空間開始位置的地址,則說明該釋放空間的下一空間有空閑關(guān)聯(lián),該釋放空間的下一空間為空閑空間。此時(shí)將該釋放空間中的分配空間、與該釋放空間相鄰的上一內(nèi)存空間的節(jié)點(diǎn)空間和分配空間合并,并修改對(duì)應(yīng)的空閑空間的上一空間開始位置的地址、下一空間開始位置的地址和下一空閑空間開始位置的地址。具體的,如圖10,其中釋放空間用釋放標(biāo)識(shí),各空閑空間的分配空間用“分”標(biāo)識(shí),各空閑空間的節(jié)點(diǎn)空間用“f”標(biāo)識(shí),釋放空間的上一空閑為空閑空間,用空2標(biāo)識(shí),空2的上一空閑空間用空1標(biāo)識(shí),空1與空2間隔有占用空間占1,空2的下一空閑空間用空3標(biāo)識(shí),空2與空3間隔有釋放和占用空間占3。在釋放與空2合并完成時(shí),修改空2的下一空間開始位置的地址信息,使得通過空2的下一空間開始位置的地址可查找到占2,并將釋放的上一空間開始位置的地址、下一空間開始位置的地址釋放。在修改完成時(shí),釋放與空2成為一個(gè)新的空閑空間,其上一空間為占1,上一空閑空間為空1,下一空間為占2,下一空閑空間為空3,此時(shí)釋放空間向后合并與修改完成。

本實(shí)施中,將釋放空間和該釋放空間相鄰的空閑空間合并,對(duì)內(nèi)存中的空閑空間進(jìn)行有效整合,可得到分配空間更大的空閑空間,滿足更大的內(nèi)存需求,提高內(nèi)存利用率。

本發(fā)明進(jìn)一步提供一種終端的內(nèi)存分配裝置。

參照?qǐng)D11,圖11為本發(fā)明終端的內(nèi)存分配裝置第一實(shí)施例的功能模塊示意圖。

本實(shí)施例中,終端的內(nèi)存包括占用空間和空閑空間,所述空閑空間包括節(jié)點(diǎn)空間和分配空間,所述空閑空間的節(jié)點(diǎn)空間包括下一空閑空間開始位置的地址,所述內(nèi)存分配裝置包括:

指令接收模塊110,用于接收外部設(shè)備發(fā)送的內(nèi)存申請(qǐng)指令;

空間查找模塊120,用于根據(jù)所述內(nèi)存申請(qǐng)指令和節(jié)點(diǎn)空間中的下一空閑空間開始位置的地址對(duì)所述內(nèi)存中的空閑空間進(jìn)行查找;

空間分配模塊130,用于若在所述內(nèi)存中查找到分配空間滿足內(nèi)存申請(qǐng)需求的空閑空間,則根據(jù)所述內(nèi)存申請(qǐng)指令分配所述空閑空間中對(duì)應(yīng)的分配空間,并在分配完成時(shí)修改對(duì)應(yīng)的空閑空間的下一空閑空間開始位置的地址。

繼續(xù)參照?qǐng)D11,為進(jìn)一步提高查找速率,本實(shí)施例中與第一實(shí)施例的區(qū)別在于終端的內(nèi)存中設(shè)置有快速切入口,所述快速切入口設(shè)置在一空閑空間的開始位置,所述空間查找模塊120還用于根據(jù)所述內(nèi)存申請(qǐng)指令和節(jié)點(diǎn)空間中的信息從所述快速切入口所在的空閑空間開始對(duì)所述空閑空間進(jìn)行查找;

所述空間分配模塊130還用于在分配完成時(shí),將所述快速切入口調(diào)整到另一空閑空間中節(jié)點(diǎn)空間的開始位置。

參照?qǐng)D12,圖12為本發(fā)明終端的內(nèi)存分配裝置第二實(shí)施例的功能模塊示意圖。

基于本發(fā)明終端的內(nèi)存分配裝置第一實(shí)施例,本實(shí)施例中所述快速切入口設(shè)置在分配空間最小的空閑空間,所述內(nèi)存分配裝置還包括:

關(guān)聯(lián)模塊100,用于根據(jù)各空閑空間分配空間的大小進(jìn)行排序,并根據(jù)排序結(jié)果修改所述內(nèi)存中各空閑空間中的下一空閑空間開始位置的地址,以使得各空閑空間按分配空間大小依次進(jìn)行關(guān)聯(lián);

所述空間查找模塊120還用于根據(jù)所述內(nèi)存申請(qǐng)指令和節(jié)點(diǎn)空間中的信息從所述快速切入口所在的分配空間最小的空閑空間開始對(duì)所述空閑空間進(jìn)行查找。

繼續(xù)參照?qǐng)D12,基于本發(fā)明終端的內(nèi)存分配裝置第二實(shí)施例,本實(shí)施例中所述空間分配模塊130,用于在分配完成時(shí),根據(jù)各空閑空間當(dāng)前的分配空間大小,更新所述內(nèi)存中各空閑空間中的下一空閑空間開始位置的地址,以使得各空閑空間按當(dāng)前的分配空間大小依次進(jìn)行關(guān)聯(lián);

所述空間分配模塊130,還用于將所述快速切入口調(diào)整到當(dāng)前分配空間最小的空閑空間中節(jié)點(diǎn)空間的開始位置。

參照?qǐng)D13,圖13為本發(fā)明終端的內(nèi)存分配裝置第三實(shí)施例的功能模塊示意圖。

基于本發(fā)明終端的內(nèi)存分配裝置第二實(shí)施例,所述內(nèi)存分配裝置還包括:

需求獲取模塊140,用于根據(jù)所述申請(qǐng)指令獲取所述內(nèi)存申請(qǐng)的需求;

空間確定模塊150,用于若未獲取到所述內(nèi)存申請(qǐng)的需求,則根據(jù)所述內(nèi)存申請(qǐng)指令在分配空間最大的空閑空間中進(jìn)行預(yù)分配;

所述空間查找模塊還用于若獲取到所述內(nèi)存申請(qǐng)的需求,則根據(jù)所述內(nèi)存申請(qǐng)指令和節(jié)點(diǎn)空間中的下一空閑空間開始位置的地址對(duì)所述內(nèi)存中的空閑空間進(jìn)行查找。

參照?qǐng)D14,圖14為本發(fā)明終端的內(nèi)存分配裝置第四實(shí)施例的功能模塊示意圖。

基于本發(fā)明終端的內(nèi)存分配裝置第一實(shí)施例,所述內(nèi)存分配裝置還包括:

空間釋放模塊160,用于在接收到所述占用空間的中數(shù)據(jù)已被使用或繼續(xù)使用的空間大小時(shí),釋放所述占用空間中對(duì)應(yīng)的空間;

地址修改模塊170,用于修改所述占用空間的下一空閑空間開始位置的地址和其它對(duì)應(yīng)的空閑空間的下一空閑空間開始位置的地址,或者根據(jù)所述占用空間釋放的空間大小新建為空閑空間。

參照?qǐng)D15,圖15為本發(fā)明終端的內(nèi)存分配裝置第五實(shí)施例的功能模塊示意圖。

基于本發(fā)明終端的內(nèi)存分配裝置第四實(shí)施例,所述空閑空間的節(jié)點(diǎn)空間還包括上一空間開始位置的地址和下一空間開始位置的地址,將釋放的占用空間定義為釋放空間,所述內(nèi)存分配裝置還包括:

第一判斷模塊180,用于根據(jù)所述釋放空間的下一空間開始位置的地址判斷與所述釋放空間相鄰的下一空間是否包括下一空閑空間開始位置的地址;

第一合并模塊190,用于若所述釋放空間相鄰的下一空間包括下一空閑空間開始位置的地址,則將所述釋放空間和所述釋放空間相鄰的下一空間合并,并在合并完成時(shí)修改對(duì)應(yīng)的空閑空間的上一空間開始位置的地址、下一空間開始位置的地址和下一空閑空間開始位置的地址;

第二判斷模塊200,用于根據(jù)所述釋放空間的上一空間開始位置的地址判斷與所述釋放空間相鄰的上一空間是否包括下一空閑空間開始位置的地址;

第二合并模塊210,用于若所述釋放空間相鄰的上一空間包括下一空閑空間開始位置的地址,則將所述釋放空間和所述釋放空間相鄰的上一空間合并,并在合并完成時(shí)修改對(duì)應(yīng)的空閑空間的上一空間開始位置的地址、下一空間開始位置的地址和下一空閑空間開始位置的地址。

本發(fā)明終端的內(nèi)存分配裝置中各個(gè)模塊與上述方法實(shí)施例中各步驟相對(duì)應(yīng),各個(gè)的功能和實(shí)現(xiàn)過程在此處不再一一贅述。

以上僅為本發(fā)明的優(yōu)選實(shí)施例,并非因此限制本發(fā)明的專利范圍,凡是利用本發(fā)明說明書及附圖內(nèi)容所作的等效結(jié)構(gòu)或等效流程變換,或直接或間接運(yùn)用在其他相關(guān)的技術(shù)領(lǐng)域,均同理包括在本發(fā)明的專利保護(hù)范圍內(nèi)。

當(dāng)前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1