專利名稱::混合結(jié)構(gòu)內(nèi)存的內(nèi)存分配系統(tǒng)及方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及計(jì)算機(jī)科學(xué)
技術(shù)領(lǐng)域:
,尤其涉及一種混合結(jié)構(gòu)內(nèi)存的內(nèi)存分配系統(tǒng)及方法。
背景技術(shù):
:一種基于相變存儲(chǔ)(Wiase-ChangeMemory,PCM)的相變隨機(jī)存儲(chǔ)器(PRAM)技術(shù)被認(rèn)為是替代動(dòng)態(tài)隨機(jī)存儲(chǔ)器(DRAM)的候選技術(shù),其具有高密度,非易失,低功耗等特點(diǎn)。與DRAM相比,PRAM可以在更小的尺寸上存儲(chǔ)更多的內(nèi)容;速度方面,PRAM的讀速度比DRAM稍慢,寫速度比DRAM慢幾十倍,但整體能耗比DRAM低的多。但是,PRAM有一個(gè)明顯的缺點(diǎn),就是其存儲(chǔ)單元的寫次數(shù)有限,目前的技術(shù)可以支持PRAM存儲(chǔ)單元重復(fù)寫IO8次。針對(duì)這一問題,研究人員也提出了很多技術(shù)方案來彌補(bǔ)不足,使得PRAM真正發(fā)揮自身的優(yōu)點(diǎn)。這些技術(shù)方案主要是一些混合架構(gòu)并結(jié)合減少冗余寫,磨損均衡等技術(shù)組成,進(jìn)而提高PRAM的使用壽命。在操作系統(tǒng)中,加載器負(fù)責(zé)把應(yīng)用程序從磁盤加載到內(nèi)存中運(yùn)行。加載器一般分為如下幾個(gè)步驟來完成程序的加載。1)從文件中讀取頭部信息,計(jì)算需要多少內(nèi)存;2)按照需要申請(qǐng)內(nèi)存,將程序復(fù)制到相應(yīng)的段中;3)將bss段填充為0;4)創(chuàng)建程序運(yùn)行需要的堆棧段力)設(shè)置環(huán)境變量和相關(guān)運(yùn)行參數(shù);6)跳轉(zhuǎn)到代碼段,運(yùn)行程序。分析加載過程,可以看出步驟2)和步驟4)會(huì)向操作系統(tǒng)申請(qǐng)分配物理內(nèi)存。在Linux作為內(nèi)核的操作系統(tǒng)中,通用的可執(zhí)行文件格式是ELF(ExecutableandLinkableFormat)文件格式,Windows操作系統(tǒng)上采用的是PE(PortableExecutable)文件格式。下面以ELF文件格式舉例來分析程序的加載。一個(gè)典型的ELF文件由程序頭信息和各種段信息組成。不同的段具有不同的屬性,如保存了程序運(yùn)行代碼的.text代碼段為只讀屬性,而保存了程序數(shù)據(jù)的.data數(shù)據(jù)段為可讀可寫段。當(dāng)內(nèi)存是混合內(nèi)存架構(gòu)(DRAM和PRAM混合使用)時(shí),操作系統(tǒng)原有的內(nèi)存管理方法將不會(huì)對(duì)PRAM內(nèi)存進(jìn)行控制,使之使用壽命縮短,所以需要采用新的內(nèi)存分配方法來保證PRAM的魯棒性。
發(fā)明內(nèi)容(一)要解決的技術(shù)問題本發(fā)明要解決的技術(shù)問題是提供一種混合結(jié)構(gòu)內(nèi)存的內(nèi)存分配系統(tǒng)及方法,使得在計(jì)算機(jī)的操作系統(tǒng)中能夠較好的支持混合內(nèi)存架構(gòu),將PRAM和DRAM按其自身特點(diǎn)進(jìn)行管理使用,使得PRAM和DRAM的內(nèi)存組合可以發(fā)揮更大的作用。(二)技術(shù)方案為解決上述問題,一方面,本發(fā)明提供了一種混合結(jié)構(gòu)內(nèi)存的內(nèi)存分配系統(tǒng),包括混合結(jié)構(gòu)內(nèi)存,包括相變存儲(chǔ)內(nèi)存區(qū)域和動(dòng)態(tài)隨機(jī)存儲(chǔ)內(nèi)存區(qū)域,內(nèi)存區(qū)域容量查看模塊,用于查看所述相變存儲(chǔ)內(nèi)存區(qū)域和動(dòng)態(tài)隨機(jī)存儲(chǔ)內(nèi)存區(qū)域的剩余容量;信息判斷模塊,用于判斷待處理文件程序段的讀寫屬性;內(nèi)存分配模塊,用于根據(jù)所述信息判斷模塊判斷的待處理文件程序段的讀寫屬性將只讀屬性的程序段優(yōu)先分配到相變存儲(chǔ)內(nèi)存區(qū)域;將可讀可寫的程序段優(yōu)先分配到動(dòng)態(tài)隨機(jī)存儲(chǔ)內(nèi)存區(qū)域。優(yōu)選地,所述系統(tǒng)還包括加載器模塊,用于將待處理文件程序從磁盤加載到內(nèi)存中運(yùn)行。另一方面,本發(fā)明還提供了一種混合結(jié)構(gòu)內(nèi)存的內(nèi)存分配方法,包括Sl查看所述混合結(jié)構(gòu)內(nèi)存中相變存儲(chǔ)內(nèi)存區(qū)域和動(dòng)態(tài)隨機(jī)存儲(chǔ)內(nèi)存區(qū)域的剩余容量;若所述相變存儲(chǔ)內(nèi)存區(qū)域和動(dòng)態(tài)隨機(jī)存儲(chǔ)內(nèi)存區(qū)域都有剩余容量則轉(zhuǎn)到步驟S2;若所述相變存儲(chǔ)內(nèi)存區(qū)域和動(dòng)態(tài)隨機(jī)存儲(chǔ)內(nèi)存區(qū)域中任一方容量沒有剩余則轉(zhuǎn)到步驟S4;S2判斷待處理文件程序段的讀寫屬性;S3根據(jù)所述判斷的待處理文件程序段的讀寫屬性將只讀屬性的程序段優(yōu)先分配到相變存儲(chǔ)內(nèi)存區(qū)域;將可讀可寫的程序段優(yōu)先分配到動(dòng)態(tài)隨機(jī)存儲(chǔ)內(nèi)存區(qū)域;S4程序運(yùn)行需要的內(nèi)存全部占用另一方有剩余容量的內(nèi)存區(qū)域資源。優(yōu)選地,所述待處理文件為可執(zhí)行文件,所述步驟S3具體為根據(jù)判斷的可執(zhí)行文件程序段的讀寫屬性將可執(zhí)行文件的只讀屬性的程序段優(yōu)先分配到相變存儲(chǔ)內(nèi)存區(qū)域;將可執(zhí)行文件的可讀可寫的程序段優(yōu)先分配到動(dòng)態(tài)隨機(jī)存儲(chǔ)內(nèi)存區(qū)域;將程序運(yùn)行中分配的堆和棧優(yōu)先建立在動(dòng)態(tài)隨機(jī)存儲(chǔ)內(nèi)存區(qū)域。優(yōu)選地,所述可執(zhí)行文件為Linux操作系統(tǒng)的ELF格式文件。優(yōu)選地,所述可執(zhí)行文件為Windows操作系統(tǒng)的PE格式文件。當(dāng)然,除了上述幾種文件形式以外,本發(fā)明的待處理文件還可以為其它具有只讀和可寫可讀屬性的程序段的文件。(三)有益效果本發(fā)明的內(nèi)存分配系統(tǒng)及方法,使得在計(jì)算機(jī)的操作系統(tǒng)中能夠較好的支持混合內(nèi)存架構(gòu),將PRAM和DRAM按其自身特點(diǎn)進(jìn)行管理使用,既使得在一定尺寸的內(nèi)存上存儲(chǔ)更多的內(nèi)容,又延長了PRAM使用壽命、保證PRAM的魯棒性。圖1為根據(jù)本發(fā)明內(nèi)存分配方法的流程示意圖。具體實(shí)施例方式下面結(jié)合附圖及實(shí)施例對(duì)本發(fā)明進(jìn)行詳細(xì)說明如下。實(shí)施例一本實(shí)施例記載了一種混合結(jié)構(gòu)內(nèi)存的內(nèi)存分配系統(tǒng),包括混合結(jié)構(gòu)內(nèi)存,包括相變存儲(chǔ)內(nèi)存區(qū)域和動(dòng)態(tài)隨機(jī)存儲(chǔ)內(nèi)存區(qū)域,內(nèi)存區(qū)域容量查看模塊,用于查看所述相變存儲(chǔ)內(nèi)存區(qū)域和動(dòng)態(tài)隨機(jī)存儲(chǔ)內(nèi)存區(qū)域的剩余容量;信息判斷模塊,用于判斷程序段信息的種類;內(nèi)存分配模塊,用于根據(jù)所述信息判斷模塊判斷的程序段信息種類,將可執(zhí)行文件的只讀屬性的程序段優(yōu)先分配到相變存儲(chǔ)內(nèi)存區(qū)域;將可執(zhí)行文件的可讀可寫的程序段優(yōu)先分配到動(dòng)態(tài)隨機(jī)存儲(chǔ)內(nèi)存區(qū)域;將程序運(yùn)行中分配的堆和棧優(yōu)先建立在動(dòng)態(tài)隨機(jī)存儲(chǔ)內(nèi)存區(qū)域。實(shí)施例二如圖1所示,本實(shí)施例記載了一種混合結(jié)構(gòu)內(nèi)存的內(nèi)存分配方法,包括Sl查看所述混合結(jié)構(gòu)內(nèi)存中相變存儲(chǔ)內(nèi)存區(qū)域和動(dòng)態(tài)隨機(jī)存儲(chǔ)內(nèi)存區(qū)域的剩余容量;若所述相變存儲(chǔ)內(nèi)存區(qū)域和動(dòng)態(tài)隨機(jī)存儲(chǔ)內(nèi)存區(qū)域都有剩余容量則轉(zhuǎn)到步驟S2;若所述相變存儲(chǔ)內(nèi)存區(qū)域和動(dòng)態(tài)隨機(jī)存儲(chǔ)內(nèi)存區(qū)域中任一方容量沒有剩余則轉(zhuǎn)到步驟S4;S2判斷程序段信息的種類;S3根據(jù)所述判斷的程序段信息種類將可執(zhí)行文件的只讀屬性的程序段(例如ELF文件中的.text代碼段)優(yōu)先分配到相變存儲(chǔ)內(nèi)存區(qū)域;將可執(zhí)行文件的可讀可寫的程序段(例如ELF文件中的保存了程序數(shù)據(jù)的.data數(shù)據(jù)段)優(yōu)先分配到動(dòng)態(tài)隨機(jī)存儲(chǔ)內(nèi)存區(qū)域;將程序運(yùn)行中分配的堆和棧優(yōu)先建立在動(dòng)態(tài)隨機(jī)存儲(chǔ)內(nèi)存區(qū)域;S4程序運(yùn)行需要的內(nèi)存全部占用另一方有剩余容量的內(nèi)存區(qū)域資源。本發(fā)明記載的系統(tǒng)和方法使得在計(jì)算機(jī)的操作系統(tǒng)中能夠較好的支持混合內(nèi)存架構(gòu),將PRAM和DRAM按其自身特點(diǎn)進(jìn)行管理使用,使得PRAM和DRAM的內(nèi)存組合可以發(fā)揮更大的作用。以上實(shí)施方式僅用于說明本發(fā)明,而并非對(duì)本發(fā)明的限制,有關(guān)
技術(shù)領(lǐng)域:
的普通技術(shù)人員,在不脫離本發(fā)明的精神和范圍的情況下,還可以做出各種變化和變型,因此所有等同的技術(shù)方案也屬于本發(fā)明的范疇,本發(fā)明的專利保護(hù)范圍應(yīng)由權(quán)利要求限定。權(quán)利要求1.一種混合結(jié)構(gòu)內(nèi)存的內(nèi)存分配系統(tǒng),其特征在于,包括混合結(jié)構(gòu)內(nèi)存,包括相變存儲(chǔ)內(nèi)存區(qū)域和動(dòng)態(tài)隨機(jī)存儲(chǔ)內(nèi)存區(qū)域,內(nèi)存區(qū)域容量查看模塊,用于查看所述相變存儲(chǔ)內(nèi)存區(qū)域和動(dòng)態(tài)隨機(jī)存儲(chǔ)內(nèi)存區(qū)域的剩余容量;信息判斷模塊,用于判斷待處理文件程序段的讀寫屬性;內(nèi)存分配模塊,用于根據(jù)所述信息判斷模塊判斷的待處理文件程序段的讀寫屬性將只讀屬性的程序段優(yōu)先分配到相變存儲(chǔ)內(nèi)存區(qū)域;將可讀可寫的程序段優(yōu)先分配到動(dòng)態(tài)隨機(jī)存儲(chǔ)內(nèi)存區(qū)域。2.如權(quán)利要求1所述的內(nèi)存分配系統(tǒng),其特征在于,所述系統(tǒng)還包括加載器模塊,用于將待處理文件程序從磁盤加載到內(nèi)存中運(yùn)行。3.一種混合結(jié)構(gòu)內(nèi)存的內(nèi)存分配方法,其特征在于,包括51查看所述混合結(jié)構(gòu)內(nèi)存中相變存儲(chǔ)內(nèi)存區(qū)域和動(dòng)態(tài)隨機(jī)存儲(chǔ)內(nèi)存區(qū)域的剩余容量;若所述相變存儲(chǔ)內(nèi)存區(qū)域和動(dòng)態(tài)隨機(jī)存儲(chǔ)內(nèi)存區(qū)域都有剩余容量則轉(zhuǎn)到步驟S2;若所述相變存儲(chǔ)內(nèi)存區(qū)域和動(dòng)態(tài)隨機(jī)存儲(chǔ)內(nèi)存區(qū)域中任一方容量沒有剩余則轉(zhuǎn)到步驟S4;52判斷待處理文件程序段的讀寫屬性;53根據(jù)所述判斷的待處理文件程序段的讀寫屬性將只讀屬性的程序段優(yōu)先分配到相變存儲(chǔ)內(nèi)存區(qū)域;將可讀可寫的程序段優(yōu)先分配到動(dòng)態(tài)隨機(jī)存儲(chǔ)內(nèi)存區(qū)域;54程序運(yùn)行需要的內(nèi)存全部占用另一方有剩余容量的內(nèi)存區(qū)域資源。4.如權(quán)利要求3所述內(nèi)存分配方法,其特征在于,所述待處理文件為可執(zhí)行文件,所述步驟S3具體為根據(jù)判斷的可執(zhí)行文件程序段的讀寫屬性將可執(zhí)行文件的只讀屬性的程序段優(yōu)先分配到相變存儲(chǔ)內(nèi)存區(qū)域;將可執(zhí)行文件的可讀可寫的程序段優(yōu)先分配到動(dòng)態(tài)隨機(jī)存儲(chǔ)內(nèi)存區(qū)域;將程序運(yùn)行中分配的堆和棧優(yōu)先建立在動(dòng)態(tài)隨機(jī)存儲(chǔ)內(nèi)存區(qū)域。5.如權(quán)利要求4所述的內(nèi)存分配方法,其特征在于,所述可執(zhí)行文件為Linux操作系統(tǒng)的ELF格式文件。6.如權(quán)利要求4所述的內(nèi)存分配方法,其特征在于,所述可執(zhí)行文件為Windows操作系統(tǒng)的PE格式文件。全文摘要本發(fā)明公開了一種混合結(jié)構(gòu)內(nèi)存的內(nèi)存分配系統(tǒng)及方法,所述系統(tǒng)包括具有PCM內(nèi)存區(qū)域和DRAM內(nèi)存區(qū)域的混合結(jié)構(gòu)內(nèi)存,內(nèi)存區(qū)域容量查看模塊,信息判斷模塊,以及內(nèi)存分配模塊。所述方法包括查看所述混合結(jié)構(gòu)內(nèi)存各內(nèi)存區(qū)域的剩余容量;若各內(nèi)存區(qū)域都有剩余容量;則判斷程序段信息的種類并將只讀屬性的程序段優(yōu)先分配到PCM內(nèi)存區(qū)域;將可讀可寫的程序段優(yōu)先分配到DRAM內(nèi)存區(qū)域;將程序運(yùn)行中分配的堆和棧優(yōu)先建立在DRAM內(nèi)存區(qū)域;若兩種內(nèi)存區(qū)域中任一方容量沒有剩余;則程序運(yùn)行需要的內(nèi)存全部占用另一方的內(nèi)存區(qū)域資源。本發(fā)明將PRAM和DRAM按其自身特點(diǎn)進(jìn)行管理使用,使得PRAM和DRAM的內(nèi)存組合可以發(fā)揮更大的作用。文檔編號(hào)G06F12/02GK102508787SQ20111038798公開日2012年6月20日申請(qǐng)日期2011年11月29日優(yōu)先權(quán)日2011年11月29日發(fā)明者胡事民,趙鵬申請(qǐng)人:清華大學(xué)