欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種內(nèi)存分配的方法及裝置的制造方法

文檔序號(hào):9547115閱讀:576來源:國知局
一種內(nèi)存分配的方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,具體涉及一種內(nèi)存分配的方法及裝置。
【背景技術(shù)】
[0002]操作系統(tǒng)中的內(nèi)存在使用時(shí),直接從操作系統(tǒng)進(jìn)行分配,基本不對(duì)內(nèi)存進(jìn)行管理,有些會(huì)進(jìn)行簡單的管理,但是只限于串行分配,即同一時(shí)間只能給一個(gè)請(qǐng)求分配內(nèi)存。
[0003]現(xiàn)有技術(shù)中的內(nèi)存分配,內(nèi)存分配效率低,而且也降低了內(nèi)存的使用率低。

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

[0004]本發(fā)明實(shí)施例提供一種內(nèi)存分配的方法,可以提高內(nèi)存分配效率和內(nèi)存使用率。本發(fā)明實(shí)施例還提供了相應(yīng)的裝置。
[0005]本發(fā)明第一方面提供一種內(nèi)存分配的方法,包括:
[0006]從總內(nèi)存中獲取一個(gè)第一內(nèi)存塊,所述一個(gè)第一內(nèi)存塊中包含多個(gè)不同大小的第二內(nèi)存塊;
[0007]根據(jù)業(yè)務(wù)對(duì)內(nèi)存的需求量,從所述一個(gè)第一內(nèi)存塊中確定滿足所述需求量的一個(gè)第二內(nèi)存塊,或者,從所述總內(nèi)存中獲取滿足所述需求量的另一個(gè)第一內(nèi)存塊;
[0008]將所述一個(gè)第二內(nèi)存塊或者所述另一個(gè)第一內(nèi)存塊,分配給所述業(yè)務(wù)。
[0009]本發(fā)明第二方面提供一種內(nèi)存分配的裝置,包括:
[0010]獲取單元,用于從總內(nèi)存中獲取一個(gè)第一內(nèi)存塊,所述一個(gè)第一內(nèi)存塊中包含多個(gè)不同大小的第二內(nèi)存塊;
[0011]確定單元,用于根據(jù)業(yè)務(wù)對(duì)內(nèi)存的需求量,從所述獲取單元獲取的所述一個(gè)第一內(nèi)存塊中確定滿足所述需求量的一個(gè)第二內(nèi)存塊,或者,從所述總內(nèi)存中獲取滿足所述需求量的另一個(gè)第一內(nèi)存塊;
[0012]分配單元,用于將所述確定單元確定的所述一個(gè)第二內(nèi)存塊或者所述另一個(gè)第一內(nèi)存塊,分配給所述業(yè)務(wù)。
[0013]本發(fā)明實(shí)施例米用從總內(nèi)存中獲取一個(gè)第一內(nèi)存塊,所述一個(gè)第一內(nèi)存塊中包含多個(gè)不同大小的第二內(nèi)存塊;根據(jù)業(yè)務(wù)對(duì)內(nèi)存的需求量,從所述一個(gè)第一內(nèi)存塊中確定滿足所述需求量的一個(gè)第二內(nèi)存塊,或者,從所述總內(nèi)存中獲取滿足所述需求量的另一個(gè)第一內(nèi)存塊;將所述一個(gè)第二內(nèi)存塊或者所述另一個(gè)第一內(nèi)存塊,分配給所述業(yè)務(wù)。與現(xiàn)有技術(shù)中只能從總內(nèi)存中申請(qǐng)內(nèi)存塊,而且每次只能申請(qǐng)一個(gè)內(nèi)存塊相比,本發(fā)明實(shí)施例提供的內(nèi)存分配的方法,可以根據(jù)業(yè)務(wù)對(duì)內(nèi)存的需求量,從總內(nèi)存的一個(gè)第一內(nèi)存塊中申請(qǐng)合適的第二內(nèi)存塊,這樣,就可以實(shí)現(xiàn)內(nèi)存的并行分配,可以提高內(nèi)存分配效率和內(nèi)存使用率。
【附圖說明】
[0014]為了更清楚地說明本發(fā)明實(shí)施例中的技術(shù)方案,下面將對(duì)實(shí)施例描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0015]圖1是本發(fā)明實(shí)施例中內(nèi)存分配的方法的一實(shí)施例示意圖;
[0016]圖2是本發(fā)明實(shí)施例中內(nèi)存分配的方法的另一實(shí)施例示意圖;
[0017]圖3是本發(fā)明實(shí)施例中內(nèi)存分配的方法的另一實(shí)施例示意圖;
[0018]圖4是本發(fā)明實(shí)施例中內(nèi)存分配的方法的另一實(shí)施例示意圖;
[0019]圖5是本發(fā)明實(shí)施例中內(nèi)存分配的方法的另一實(shí)施例示意圖;
[0020]圖6是本發(fā)明實(shí)施例中內(nèi)存分配的方法的另一實(shí)施例示意圖;
[0021]圖7是本發(fā)明實(shí)施例中內(nèi)存分配的裝置的一實(shí)施例示意圖;
[0022]圖8是本發(fā)明實(shí)施例中內(nèi)存分配的裝置的另一實(shí)施例示意圖;
[0023]圖9是本發(fā)明實(shí)施例中內(nèi)存分配的裝置的另一實(shí)施例示意圖;
[0024]圖10是本發(fā)明實(shí)施例中內(nèi)存分配的裝置的另一實(shí)施例示意圖;
[0025]圖11是本發(fā)明實(shí)施例中內(nèi)存分配的裝置的另一實(shí)施例示意圖;
[0026]圖12是本發(fā)明實(shí)施例中內(nèi)存分配的裝置的另一實(shí)施例示意圖;
[0027]圖13是本發(fā)明實(shí)施例中終端的另一實(shí)施例示意圖。
【具體實(shí)施方式】
[0028]本發(fā)明實(shí)施例提供一種內(nèi)存分配的方法,可以提高內(nèi)存分配效率和內(nèi)存使用率。本發(fā)明實(shí)施例還提供了相應(yīng)的裝置。以下分別進(jìn)行詳細(xì)說明。
[0029]下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域技術(shù)人員在沒有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
[0030]本發(fā)明實(shí)施例提供的內(nèi)存分配的方法的一實(shí)施例包括:
[0031]參閱圖1,本發(fā)明實(shí)施例中,從總內(nèi)存中獲取的第一內(nèi)存塊用Block表示,Block是較大的內(nèi)存塊,總內(nèi)存可以為操作系統(tǒng)的內(nèi)存,第一內(nèi)存塊Block中包含的第二內(nèi)存塊用chunk表示。Block中可以包含多個(gè)不同大小的chunk,可以理解為:Block中最小的chunk的大小為Base,其他的chunk大小按照2的指數(shù)次冪遞增。當(dāng)然,chunk的大小還可以按照其他策略劃分。
[0032]從總內(nèi)存中獲取的Block,可以通過Block結(jié)構(gòu)串聯(lián)起來,用Blocklist的形式進(jìn)行管理。Blocklist為本發(fā)明實(shí)施例中的第一內(nèi)存塊鏈表。每個(gè)Block的內(nèi)存都可以獨(dú)立進(jìn)行管理,一個(gè)Block中包含指針Next,指針Free和指針End。指針Next指向下一個(gè)Block,指針Free指向當(dāng)前Block的空閑chunk,指針End指向Block的結(jié)束位置。初始化時(shí)可以根據(jù)Block的最小大小初始化一個(gè)Block。后面每次獲取的Block都是上一次獲取Block的大小的兩倍,但是不超過最大Block的限制。
[0033]參閱圖2, chunk中包括三個(gè)部分:指針next, chunk的大小Size和信息位Info,chunk沒有被業(yè)務(wù)占用時(shí),空閑的chunk根據(jù)大小在對(duì)應(yīng)的空閑鏈表位置通過單項(xiàng)鏈表串聯(lián)起來。Chunk被分配后,指針next指向所屬的分配器,在釋放內(nèi)存的時(shí)候也是通過這個(gè)指針來把自己放回到對(duì)應(yīng)的分配器中。Size是這個(gè)Chunk的字節(jié)大小,包括業(yè)務(wù)數(shù)據(jù)和Chunk頭部的三個(gè)單元的長度。信息為Info,主要存儲(chǔ)一些校驗(yàn)信息,包括內(nèi)存寫越界的校驗(yàn)等。Info之后是用戶的業(yè)務(wù)數(shù)據(jù)的存儲(chǔ)的位置,返回給用戶的時(shí)候通過下面的方法計(jì)算出指針的位置:chunk+sizeof (Next) +sizeof (Size) +sizeof (Info),釋放內(nèi)存的時(shí)候通過如下方式找到 Chunk 白勺頭部:Ptr-sizeof (Next) -sizeof (Size) -sizeof (Info)。
[0034]Chunk可以通過空閑鏈表freelist來進(jìn)行管理,freelist為本發(fā)明實(shí)施例中的第二內(nèi)存塊鏈表。freelist中記錄有該第一內(nèi)存塊中每個(gè)第二內(nèi)存塊的指針和大小信息,最小的chunk可以根據(jù)業(yè)務(wù)的需要設(shè)置基礎(chǔ)冪指數(shù)Base,后面的chunk大小按照2的冪來遞士飽
>曰ο
[0035]如圖1和圖2中所示,本發(fā)明實(shí)施例描述了內(nèi)存分配的方法,可以對(duì)內(nèi)存進(jìn)行預(yù)先劃分,使用時(shí)選擇適合業(yè)務(wù)的block或chunk使用,從而提高了內(nèi)存的分配效率核使用效率,而且在每個(gè)Block和每個(gè)Chunk中都可以設(shè)置獨(dú)立的鎖,避免了業(yè)務(wù)間的干擾。
[0036]參閱圖3,圖3為本發(fā)明實(shí)施例中提供的內(nèi)存初始化的過程示意圖:
[0037]S100、初始化開始。
[0038]S105、獲取初始block大小,最大block大小、最小Chunk大小、freelist長度等參數(shù)。
[0039]初始block大小也就是第一個(gè)block的大小,可以按照初始block大小獲取第一個(gè)block。最大block大小是獲取block時(shí)的上限,獲取的block大小最大不能超過該最大block大小的限制。最小Chunk大小為基礎(chǔ)冪指數(shù)Base, freelist長度也就是Chunk的個(gè)數(shù)。
[0040]參閱圖4,本發(fā)明實(shí)施例提供的內(nèi)存分配的方法的另一實(shí)施例包括:
[0041]S200、初始化開始。
[0042]初始化過程可以參閱圖3部分的描述進(jìn)行理解。
[0043]S201、獲取業(yè)務(wù)需求量。
[0044]S202、判斷業(yè)務(wù)對(duì)內(nèi)存的需求量是否大于初始化時(shí)已申請(qǐng)的一個(gè)block中的最大chunk,是,執(zhí)行S203,否,執(zhí)行S207。
[0045]S203、當(dāng)業(yè)務(wù)對(duì)內(nèi)存的需求量大于一個(gè)block中的最大chunk時(shí),則從總內(nèi)存中再申請(qǐng)一個(gè)適用于所述業(yè)務(wù)的另一個(gè)block。
[0046]S204、將 blocklist 加鎖,并將所述另一個(gè) block 加入 b1cklist 中,對(duì) b1cklist解鎖。
[0047]S205、將新申請(qǐng)的所述另一個(gè)block分配給所述業(yè)務(wù),并在業(yè)務(wù)運(yùn)行時(shí)對(duì)所述另一個(gè)block加鎖,
當(dāng)前第1頁1 2 3 4 5 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
定安县| 永登县| 阳曲县| 泸定县| 竹山县| 清远市| 汉源县| 崇阳县| 普兰店市| 翁牛特旗| 井冈山市| 凉城县| 宝鸡市| 安宁市| 涿鹿县| 菏泽市| 休宁县| 保山市| 连云港市| 青川县| 汝阳县| 宜黄县| 托克托县| 海丰县| 遵义市| 长沙县| 兴安县| 玉山县| 柳州市| 科尔| 曲水县| 阜新| 清徐县| 太和县| 大竹县| 临猗县| 原阳县| 江源县| 龙口市| 连江县| 南平市|