專利名稱:內(nèi)存文件系統(tǒng)中內(nèi)存分區(qū)的管理方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及內(nèi)存文件系統(tǒng)中內(nèi)存分區(qū)的管理方法,尤其涉及一種內(nèi)存動(dòng)態(tài)增減的方法和裝置。
背景技術(shù):
內(nèi)存文件系統(tǒng)是一種建立在內(nèi)存上的文件系統(tǒng),主要用來(lái)存儲(chǔ)系統(tǒng)運(yùn)行時(shí)的臨時(shí)文件。相對(duì)于建立在磁盤上的文件系統(tǒng)(數(shù)據(jù)存儲(chǔ)在磁盤上)而言,內(nèi)存文件系統(tǒng)中所有的目錄、文件信息和數(shù)據(jù)都存儲(chǔ)在內(nèi)存中,且具有讀寫數(shù)據(jù)速度快,斷電后數(shù)據(jù)丟失等特點(diǎn),目前共有兩種內(nèi)存文件系統(tǒng)Ramdisk和Ramfs。Ramdisk是在初始化時(shí)就向系統(tǒng)申請(qǐng)一塊內(nèi)存作為分區(qū)來(lái)使用,該內(nèi)存分區(qū)大小固定,之后不能改變,在文件系統(tǒng)卸載前,分配的內(nèi)存一直占用。Ramdisk內(nèi)部每次要使用內(nèi) 存時(shí),都是在這個(gè)已申請(qǐng)好的內(nèi)存分區(qū)上找一塊指定大小的空閑空間來(lái)使用。Ramdisk技術(shù)可以對(duì)所使用的內(nèi)存分區(qū)統(tǒng)一管理,內(nèi)存分區(qū)相對(duì)獨(dú)立,一般不會(huì)被系統(tǒng)公共內(nèi)存區(qū)異常操作(如內(nèi)存越界等)影響。因Ramdisk本身具有垃圾回收功能,所以頻繁讀寫內(nèi)存分區(qū)不會(huì)產(chǎn)生內(nèi)存碎片,但存在著初始化后內(nèi)存分區(qū)大小固定不能改變的缺點(diǎn),無(wú)法適應(yīng)復(fù)雜的系統(tǒng)環(huán)境。Ramfs在初始化不需要預(yù)先申請(qǐng)內(nèi)存,每次要使用內(nèi)存時(shí)都要在系統(tǒng)公共內(nèi)存上動(dòng)態(tài)申請(qǐng),某塊內(nèi)存使用完畢即可直接釋放。Ramfs在創(chuàng)建時(shí)可以指定其最大能使用的內(nèi)存大小,內(nèi)存使用靈活,占用的內(nèi)存大小隨著數(shù)據(jù)量的增減而增減。但存在易產(chǎn)生內(nèi)存碎片的缺點(diǎn),內(nèi)存利用率不高。
發(fā)明內(nèi)容
本發(fā)明實(shí)施例所要解決的技術(shù)問(wèn)題在于,提供一種內(nèi)存管理方法??山鉀Q現(xiàn)有技術(shù)中內(nèi)存分區(qū)大小固定和易產(chǎn)生內(nèi)存碎片的缺點(diǎn)。為了解決上述技術(shù)問(wèn)題,本發(fā)明實(shí)施例提供了一種內(nèi)存文件系統(tǒng)中內(nèi)存分區(qū)的管理方法,包括
接收到向第一內(nèi)存分區(qū)寫入大小為X字節(jié)文件數(shù)據(jù)的寫入請(qǐng)求,其中所述第一內(nèi)存分區(qū)的大小為P字節(jié);
當(dāng)判斷所述第一內(nèi)存分區(qū)的空閑空間的大小Y小于所述文件數(shù)據(jù)的大小X時(shí),則向系統(tǒng)申請(qǐng)大小為Q字節(jié)的第二內(nèi)存分區(qū),其中,Q>=P-Y+X ;
將所述第一內(nèi)存分區(qū)上已寫入的文件數(shù)據(jù)全部拷貝到所述第二內(nèi)存分區(qū)上,并釋放所述第一內(nèi)存分區(qū)的空間;
當(dāng)查詢到所述第二內(nèi)存分區(qū)的大小不小于X字節(jié)的空閑內(nèi)存塊時(shí),向該空閑內(nèi)存塊寫入所述X字節(jié)文件數(shù)據(jù)。其中,控制所述第二內(nèi)存分區(qū)的大小Q相對(duì)于第一內(nèi)存分區(qū)的大小P增加的大小
為第一預(yù)定值的正整數(shù)倍。
其中,所述將所述第一內(nèi)存分區(qū)上已寫入的文件數(shù)據(jù)全部拷貝到所述第二內(nèi)存分區(qū)上包括
將拷貝到所述第二內(nèi)存分區(qū)上的文件數(shù)據(jù)合并為一個(gè)連續(xù)空間,且所述連續(xù)空間的首地址與所述第二內(nèi)存分區(qū)的首地址相同。其中,還包括
當(dāng)接收到刪除所述第一內(nèi)存分區(qū)上大小為A的文件數(shù)據(jù)的刪除指令時(shí),釋放所述文件數(shù)據(jù)占用的內(nèi)存空間;
當(dāng)判斷所述第一內(nèi)存分區(qū)上的空閑空間大于第二預(yù)定值時(shí),向系統(tǒng)申請(qǐng)大小為L(zhǎng)的第三內(nèi)存分區(qū),其中,L〈Q-A;將所述第一內(nèi)存分區(qū)上已寫入的文件數(shù)據(jù)全部拷貝到所述第三內(nèi)存分區(qū)上,并釋放所述第一內(nèi)存分區(qū)的空間。其中,控制所述第三內(nèi)存分區(qū)的大小L相對(duì)于第一內(nèi)存分區(qū)的大小P減小的大小
為第三預(yù)定值的正整數(shù)倍。其中,所述將所述第一內(nèi)存分區(qū)上已寫入的文件數(shù)據(jù)全部拷貝到所述第三內(nèi)存分區(qū)上包括
將拷貝到所述第三內(nèi)存分區(qū)上的文件數(shù)據(jù)合并為一個(gè)連續(xù)空間,且所述連續(xù)空間的首地址與所述第三內(nèi)存分區(qū)的首地址相同。相應(yīng)地,本發(fā)明實(shí)施例還提供了一種內(nèi)存管理裝置,包括
請(qǐng)求接收模塊,用于接收到向第一內(nèi)存分區(qū)寫入大小為X字節(jié)文件數(shù)據(jù)的寫入請(qǐng)求,其中所述第一內(nèi)存分區(qū)的大小為P字節(jié);
新分區(qū)申請(qǐng)模塊,用于當(dāng)判斷所述第一內(nèi)存分區(qū)的空閑空間的大小Y小于所述文件數(shù)據(jù)的大小X時(shí),則向系統(tǒng)申請(qǐng)大小為Q字節(jié)的第二內(nèi)存分區(qū),其中,Q>=P-Y+X ;
舊分區(qū)釋放模塊,用于將所述第一內(nèi)存分區(qū)上已寫入的文件數(shù)據(jù)全部拷貝到所述第二內(nèi)存分區(qū)上,并釋放所述第一內(nèi)存分區(qū)的空間;
寫入模塊,用于查詢到所述第二內(nèi)存分區(qū)的大小不小于X字節(jié)的空閑內(nèi)存塊時(shí),向該空閑內(nèi)存塊寫入所述X字節(jié)文件數(shù)據(jù)。其中,還包括
刪除模塊,用于當(dāng)接收到刪除所述第一內(nèi)存分區(qū)上大小為A的文件數(shù)據(jù)時(shí),釋放所述文件數(shù)據(jù)占用的內(nèi)存空間;當(dāng)判斷所述第一內(nèi)存分區(qū)上的空閑空間大于第二預(yù)定值時(shí),向系統(tǒng)申請(qǐng)大小為L(zhǎng)的第三內(nèi)存分區(qū),其中,L〈Q-A;將所述第一內(nèi)存分區(qū)上已寫入的文件數(shù)據(jù)全部拷貝到所述第三內(nèi)存分區(qū)上,并釋放所述第一內(nèi)存分區(qū)的空間。其中,還包括
控制模塊,用于控制所述第二內(nèi)存分區(qū)的大小Q相對(duì)于第一內(nèi)存分區(qū)的大小P增加的大小為第一預(yù)定值的正整數(shù)倍;和
用于控制所述第三內(nèi)存分區(qū)的大小L相對(duì)于第一內(nèi)存分區(qū)的大小P減小的大小為第三預(yù)定值的正整數(shù)倍。其中,所述舊分區(qū)釋放模塊還包括
合并單元,用于將拷貝到所述第二內(nèi)存分區(qū)上的文件數(shù)據(jù)合并為一個(gè)連續(xù)空間,且所述連續(xù)空間的首地址與所述第二內(nèi)存分區(qū)的首地址相同。
實(shí)施本發(fā)明實(shí)施例,具有如下有益效果
能根據(jù)系統(tǒng)的需要對(duì)內(nèi)存分區(qū)進(jìn)行動(dòng)態(tài)管理,且不會(huì)產(chǎn)生內(nèi)存碎片,提高了內(nèi)存空間的利用率。
為了更清楚地說(shuō)明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖I是本發(fā)明實(shí)施例的一種內(nèi)存文件系統(tǒng)中內(nèi)存分區(qū)的管理方法的流程示意圖; 圖2是本發(fā)明實(shí)施例的一種內(nèi)存文件系統(tǒng)中內(nèi)存分區(qū)的管理方法的另一流程示意圖; 圖3是本發(fā)明實(shí)施例的寫入文件的示意 圖4是本發(fā)明實(shí)施例的刪除文件的示意 圖5是本發(fā)明實(shí)施例的一種內(nèi)存管理裝置的結(jié)構(gòu)示意 圖6是本發(fā)明實(shí)施例的一種內(nèi)存管理裝置的另一結(jié)構(gòu)示意 圖7是圖6中舊分區(qū)釋放模塊的結(jié)構(gòu)示意圖。
具體實(shí)施例方式下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。基于本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。參見(jiàn)圖1,為本發(fā)明實(shí)施例的一種內(nèi)存文件系統(tǒng)中內(nèi)存分區(qū)的管理方法的流程示意圖,該流程包括
步驟101、接收到向第一內(nèi)存分區(qū)寫入大小為X字節(jié)文件數(shù)據(jù)的寫入請(qǐng)求,其中第一內(nèi)存分區(qū)的大小為P字節(jié)。具體的,第一內(nèi)存分區(qū)在Ramdisk內(nèi)存盤初始化時(shí)已申請(qǐng)好,且大小為P字節(jié),假設(shè)該第一內(nèi)存分區(qū)上已寫入其他的文件,接收到向第一內(nèi)存分區(qū)寫入大小為X字節(jié)的文件數(shù)據(jù)的請(qǐng)求時(shí),執(zhí)行步驟102 ;若該第一內(nèi)存分區(qū)沒(méi)有寫入其他的文件,判斷該第一內(nèi)存分區(qū)的大小P是否大于X,若為是,則直接將X字節(jié)文件數(shù)據(jù)寫入所述第一內(nèi)存分區(qū),若為否,則向系統(tǒng)申請(qǐng)一塊內(nèi)存空間,以滿足寫入X字節(jié)文件數(shù)據(jù)的請(qǐng)求。步驟102、當(dāng)判斷第一內(nèi)存分區(qū)的空閑空間的大小Y小于文件數(shù)據(jù)的大小X時(shí),則向系統(tǒng)申請(qǐng)大小為Q字節(jié)的第二內(nèi)存分區(qū),其中,Q>=P_Y+X。具體的,當(dāng)判斷第一內(nèi)存分區(qū)的空閑空間的大小Y小于文件數(shù)據(jù)的大小X時(shí),表明第一內(nèi)存分區(qū)沒(méi)有足夠的空閑空間來(lái)寫入當(dāng)前的文件數(shù)據(jù),則此時(shí)向系統(tǒng)申請(qǐng)一塊更大的第二內(nèi)存分區(qū),第二內(nèi)存分區(qū)的大小至少為P-Y+X,當(dāng)?shù)诙?nèi)存分區(qū)申請(qǐng)成功時(shí),則執(zhí)行步驟103 ;若申請(qǐng)失敗,返回?zé)o法寫入的消息。步驟103、將第一內(nèi)存分區(qū)上已寫入的文件數(shù)據(jù)全部拷貝到第二內(nèi)存分區(qū)上,并釋放第一內(nèi)存分區(qū)的空間。
步驟104、當(dāng)查詢到第二內(nèi)存分區(qū)的空閑內(nèi)存塊的大小不小于文件數(shù)據(jù)的大小X時(shí),向該內(nèi)存塊寫入所述文件數(shù)據(jù)。實(shí)施本發(fā)明的實(shí)施例,可克服Ramdisk初始化分配好后,大小固定不能改變的缺點(diǎn),響應(yīng)系統(tǒng)的要求改變內(nèi)存分區(qū)的大小,提高了內(nèi)存分區(qū)使用的靈活性。參見(jiàn)圖2-圖4,為本發(fā)明實(shí)施例的一種內(nèi)存文件系統(tǒng)中內(nèi)存分區(qū)的管理方法的另一流程示意圖,包括
步驟201、判斷系統(tǒng)發(fā)出的是寫入文件還是刪除文件的請(qǐng)求。判斷系統(tǒng)發(fā)出的是向第一內(nèi)存分區(qū)寫入文件還是刪除第一內(nèi)存分區(qū)的文件的請(qǐng)求,若為寫入文件的請(qǐng)求,執(zhí)行步驟202,若為刪除文件的請(qǐng)求,執(zhí)行步驟207。步驟202、接收到向第一內(nèi)存分區(qū)寫入大小為X字節(jié)文件數(shù)據(jù)的寫入請(qǐng)求,其中第一內(nèi)存分區(qū)的大小為P字節(jié)。 具體的,參見(jiàn)圖3,第一內(nèi)存分區(qū)已寫入的文件為文件I、文件2、文件3和文件4,接收到向第一內(nèi)存分區(qū)寫入文件5的寫入請(qǐng)求。步驟203、當(dāng)判斷第一內(nèi)存分區(qū)的空閑空間的大小Y小于文件數(shù)據(jù)的大小X時(shí),則向系統(tǒng)申請(qǐng)大小為Q字節(jié)的第二內(nèi)存分區(qū),其中,Q>=P_Y+X。具體的,當(dāng)判斷第一內(nèi)存分區(qū)的空閑空間的大小小于當(dāng)前要寫入的文件數(shù)據(jù)的大小時(shí),表明第一內(nèi)存分區(qū)沒(méi)有足夠的空閑空間來(lái)寫入當(dāng)前的文件數(shù)據(jù),則此時(shí)向系統(tǒng)申請(qǐng)一塊更大的第二內(nèi)存分區(qū),第二內(nèi)存分區(qū)的大小至少為P-Y+X,當(dāng)?shù)诙?nèi)存分區(qū)申請(qǐng)成功時(shí),則執(zhí)行步驟204,若申請(qǐng)失敗,返回?zé)o法寫入的消息。步驟204、控制所述第二內(nèi)存分區(qū)的大小Q相對(duì)于第一內(nèi)存分區(qū)的大小P增加的大
小為第一預(yù)定值的正整數(shù)倍。具體的,內(nèi)存分區(qū)增加的大小可以按照IM字節(jié)為粒度計(jì)算,第一預(yù)定值的選取和評(píng)估本發(fā)明不作限制。若增大的粒度過(guò)大則可能浪費(fèi)較多的內(nèi)存空間,若增大的粒度較小則可能會(huì)需要多次增大分區(qū)才能滿足需求。例如,若第一內(nèi)存分區(qū)的空閑空間的大小為O. 5M字節(jié),此時(shí)需要寫入O. 7M字節(jié)的文件數(shù)據(jù),則申請(qǐng)的第二內(nèi)存分區(qū)只需要在第一內(nèi)存分區(qū)大小的基礎(chǔ)上增加IM字節(jié),若需要寫入I. 6M字節(jié)的文件數(shù)據(jù),則第二內(nèi)存分區(qū)需要在第一內(nèi)存分區(qū)的基礎(chǔ)上增加2M字節(jié),增加的空間的大小均為規(guī)定的第一預(yù)定值的正整數(shù)倍。步驟205、將第一內(nèi)存分區(qū)上已寫入的文件數(shù)據(jù)全部拷貝至第二內(nèi)存分區(qū)上,并釋放第一內(nèi)存分區(qū)的空間,其中,將拷貝到所述第二內(nèi)存分區(qū)的文件數(shù)據(jù)合并為一個(gè)連續(xù)空間,且所述連續(xù)空間的首地址與所述第二內(nèi)存分區(qū)的首地址相同。具體的,參見(jiàn)圖3,將第一內(nèi)存分區(qū)上一寫入的文件I、文件2、文件3和文件4的數(shù)據(jù)內(nèi)容全部拷貝至新申請(qǐng)的第二內(nèi)存分區(qū),且文件I至文件4合并成一個(gè)連續(xù)的空間,可以理解的是,文件I、文件2、文件3和文件4的具體的順序在拷貝沒(méi)有限制,可以按任意順序排列,只要滿足合并為一個(gè)連續(xù)的空間即可,且該連續(xù)空間的首地址與第二內(nèi)存分區(qū)的首地址相同,即該連續(xù)空間要在第二內(nèi)存分區(qū)的最頂端,具體實(shí)施時(shí),也可以在第二內(nèi)存分區(qū)的最末端,這樣,可以最大限制的保留出第二內(nèi)存分區(qū)的的最大內(nèi)存塊,提高內(nèi)存空間的利用率。步驟206、當(dāng)查詢到第二內(nèi)存分區(qū)的大小不小于X字節(jié)的空閑內(nèi)存塊時(shí),向該空閑內(nèi)存塊寫入所述文件數(shù)據(jù)。具體的,遍歷第二內(nèi)存分區(qū)上的空閑內(nèi)存塊并計(jì)算其大小,當(dāng)遍歷到一個(gè)足夠?qū)懭氘?dāng)前文件數(shù)據(jù)的空閑內(nèi)存塊時(shí),就將文件數(shù)據(jù)寫入該處,如圖3的文件4的后面的空閑內(nèi)存塊。步驟207、當(dāng)接收到刪除所述第一內(nèi)存分區(qū)上大小為A的文件數(shù)據(jù)的刪除請(qǐng)求時(shí),釋放所述文件數(shù)據(jù)占用的內(nèi)存空間。具體的,參見(jiàn)圖4,當(dāng)接收到刪除第一內(nèi)存分區(qū)上文件2的刪除請(qǐng)求時(shí),釋放文件2所占用的內(nèi)存空間。步驟208、當(dāng)判讀所述第一內(nèi)存分區(qū)上的空閑空間大于第二預(yù)定值時(shí),向系統(tǒng)申請(qǐng)大小為L(zhǎng)的第三內(nèi)存分區(qū),其中,L〈P-A。步驟209、控制所述第三內(nèi)存分區(qū)的大小L相對(duì)于第一內(nèi)存分區(qū)的大小P減小的大
小為第三預(yù)定值的正整數(shù)倍。具體的,假設(shè)第三預(yù)定值為O. 5M字節(jié),內(nèi)存分區(qū)減小可以按照O. 5M字節(jié)為粒度計(jì)算,第二預(yù)定值為IM的空閑空間,以防止馬上又要寫入文件。第三預(yù)定值的大小依賴于內(nèi)存分區(qū)增大的粒度,若減小的粒度太大會(huì)造成內(nèi)存分區(qū)減小操作不及時(shí),若減小的粒度太小則減小操作可能過(guò)于頻繁,會(huì)出現(xiàn)這樣一種情形,內(nèi)存分區(qū)剛剛增加完畢,再刪除一個(gè)小文件后馬上又要減小內(nèi)存分區(qū)。假設(shè)第一內(nèi)存分區(qū)的空閑空間大小為IM字節(jié),若要?jiǎng)h除O. IM字節(jié)的文件1,在刪除文件后,第一內(nèi)存分區(qū)的空閑空間大小變?yōu)镮. 1M,則此時(shí)不需要減小內(nèi)存,至少預(yù)留IM字節(jié)的空閑空間,若要?jiǎng)h除O. 7M字節(jié)的文件2,在刪除文件2后第一內(nèi)存分區(qū)的空閑空間為I. 7M,此時(shí)申請(qǐng)的第三內(nèi)存分區(qū)的大小要在第一內(nèi)存分區(qū)的大小基礎(chǔ)上減小O. 5M,若要?jiǎng)h除IM字節(jié)的文件3,在刪除文件3后第一內(nèi)存分區(qū)的空閑空間為2M,此時(shí)申請(qǐng)的第三內(nèi)存分區(qū)的大小要在第一內(nèi)存分區(qū)的大小上減小I. 5M,減小的內(nèi)存的大小均為第三預(yù)定值O. 5M的正整數(shù)倍。步驟210、將所述第一內(nèi)存分區(qū)上已寫入的文件數(shù)據(jù)全部拷貝到所述第三內(nèi)存分區(qū)上,并釋放所述第一內(nèi)存分區(qū)的空間,其中,將拷貝到所述第三內(nèi)存分區(qū)上的文件數(shù)據(jù)合并為一個(gè)連續(xù)空間,且所述連續(xù)空間的首地址與所述第三內(nèi)存分區(qū)的首地址相同。此過(guò)程與步驟205類似,此處不再敖述,合并后的連續(xù)空間如圖4所示。實(shí)施本發(fā)明的實(shí)施例,能實(shí)現(xiàn)動(dòng)態(tài)增減內(nèi)存分區(qū)大小,使得擴(kuò)展后的內(nèi)存文件系統(tǒng)的內(nèi)存分區(qū)相互獨(dú)立,不會(huì)產(chǎn)生內(nèi)存碎片,提高了內(nèi)存空間的利用率,同時(shí)又能根據(jù)需要?jiǎng)討B(tài)增減分區(qū)大小。參見(jiàn)圖5,為本發(fā)明實(shí)施例的一種內(nèi)存管理裝置的結(jié)構(gòu)示意圖,包括
請(qǐng)求接收模塊11,用于接收到向第一內(nèi)存分區(qū)寫入大小為X字節(jié)文件數(shù)據(jù)的寫入請(qǐng)求,其中所述第一內(nèi)存分區(qū)的大小為P字節(jié)。新分區(qū)申請(qǐng)模塊12,用于當(dāng)判斷所述第一內(nèi)存分區(qū)的空閑空間的大小Y小于所述文件數(shù)據(jù)的大小X時(shí),則向系統(tǒng)申請(qǐng)大小為Q字節(jié)的第二內(nèi)存分區(qū),其中,Q>=P-Y+X。舊分區(qū)釋放模塊13,用于將所述第一內(nèi)存分區(qū)上已寫入的文件數(shù)據(jù)全部拷貝到所述第二內(nèi)存分區(qū)上,并釋放所述第一內(nèi)存分區(qū)的空間。寫入模塊14,用于查詢到所述第二內(nèi)存分區(qū)的大小不小于X字節(jié)的空閑內(nèi)存塊時(shí),向該空閑內(nèi)存塊寫入所述X字節(jié)文件數(shù)據(jù)。實(shí)施本發(fā)明的實(shí)施例,能對(duì)內(nèi)存分區(qū)進(jìn)行動(dòng)態(tài)管理,且不會(huì)產(chǎn)生內(nèi)存碎片,提高了內(nèi)存空間的利用率。參見(jiàn)圖6和圖7,為本發(fā)明實(shí)施例的一種內(nèi)存管理裝置的另一結(jié)構(gòu)示意圖,同樣包括請(qǐng)求接收模塊11、新分區(qū)申請(qǐng)模塊12、舊分區(qū)釋放模塊13和寫入模塊14,除此之外,還包括
刪除模塊15,用于當(dāng)接收到刪除所述第一內(nèi)存分區(qū)上大小為A的文件數(shù)據(jù)時(shí),釋放所 述文件數(shù)據(jù)占用的內(nèi)存空間;當(dāng)判斷所述第一內(nèi)存分區(qū)上的空閑空間大于第二預(yù)定值時(shí),向系統(tǒng)申請(qǐng)大小為L(zhǎng)的第三內(nèi)存分區(qū),其中,L〈Q-A;將所述第一內(nèi)存分區(qū)上已寫入的文件數(shù)據(jù)全部拷貝到所述第三內(nèi)存分區(qū)上,并釋放所述第一內(nèi)存分區(qū)的空間。控制模塊16,用于控制所述第二內(nèi)存分區(qū)的大小Q相對(duì)于第一內(nèi)存分區(qū)的大小P增加的大小為第一預(yù)定值的正整數(shù)倍;和
用于控制所述第三內(nèi)存分區(qū)的大小L相對(duì)于第一內(nèi)存分區(qū)的大小P減小的大小為第三預(yù)定值的正整數(shù)倍。其中,舊分區(qū)釋放模塊13還包括
合并單元131,用于將拷貝到所述第二內(nèi)存分區(qū)上的文件數(shù)據(jù)合并為一個(gè)連續(xù)空間,且所述連續(xù)空間的首地址與所述第二內(nèi)存分區(qū)的首地址相同。實(shí)施本發(fā)明的實(shí)施例,能實(shí)現(xiàn)動(dòng)態(tài)增減內(nèi)存分區(qū)大小,使得擴(kuò)展后的內(nèi)存文件系統(tǒng)的內(nèi)存分區(qū)相互獨(dú)立,不會(huì)產(chǎn)生內(nèi)存碎片,提高了內(nèi)存空間的利用率,同時(shí)又能根據(jù)需要?jiǎng)討B(tài)增減分區(qū)大小。本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例方法中的全部或部分流程,是可以通過(guò)計(jì)算機(jī)程序來(lái)指令相關(guān)的硬件來(lái)完成,所述的程序可存儲(chǔ)于一計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中,該程序在執(zhí)行時(shí),可包括如上述各方法的實(shí)施例的流程。其中,所述的存儲(chǔ)介質(zhì)可為磁碟、光盤、只讀存儲(chǔ)記憶體(Read-Only Memory, ROM)或隨機(jī)存儲(chǔ)記憶體(Random AccessMemory, RAM)等。以上所揭露的僅為本發(fā)明一種較佳實(shí)施例而已,當(dāng)然不能以此來(lái)限定本發(fā)明之權(quán)利范圍,本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例的全部或部分流程,并依本發(fā)明權(quán)利要求所作的等同變化,仍屬于發(fā)明所涵蓋的范圍。
權(quán)利要求
1.一種內(nèi)存文件系統(tǒng)中內(nèi)存分區(qū)的管理方法,其特征在于,包括 接收到向第一內(nèi)存分區(qū)寫入大小為X字節(jié)文件數(shù)據(jù)的寫入請(qǐng)求,其中所述第一內(nèi)存分區(qū)的大小為P字節(jié); 當(dāng)判斷所述第一內(nèi)存分區(qū)的空閑空間的大小Y小于所述文件數(shù)據(jù)的大小X時(shí),則向系統(tǒng)申請(qǐng)大小為Q字節(jié)的第二內(nèi)存分區(qū),其中,Q>=P-Y+X ; 將所述第一內(nèi)存分區(qū)上已寫入的文件數(shù)據(jù)全部拷貝到所述第二內(nèi)存分區(qū)上,并釋放所述第一內(nèi)存分區(qū)的空間; 當(dāng)查詢到所述第二內(nèi)存分區(qū)的大小不小于X字節(jié)的空閑內(nèi)存塊時(shí),向該空閑內(nèi)存塊寫入所述X字節(jié)文件數(shù)據(jù)。
2.如權(quán)利要求I所述的方法,其特征在于,還包括 控制所述第二內(nèi)存分區(qū)的大小Q相對(duì)于第一內(nèi)存分區(qū)的大小P增加的大小為第一預(yù)定值的正整數(shù)倍。
3.如權(quán)利要求2所述的方法,其特征在于,所述將所述第一內(nèi)存分區(qū)上已寫入的文件數(shù)據(jù)全部拷貝到所述第二內(nèi)存分區(qū)上包括 將拷貝到所述第二內(nèi)存分區(qū)上的文件數(shù)據(jù)合并為一個(gè)連續(xù)空間,且所述連續(xù)空間的首地址與所述第二內(nèi)存分區(qū)的首地址相同。
4.如權(quán)利要求3所述的方法,其特征在于,還包括 當(dāng)接收到刪除所述第一內(nèi)存分區(qū)上大小為A的文件數(shù)據(jù)的刪除指令時(shí),釋放所述文件數(shù)據(jù)占用的內(nèi)存空間; 當(dāng)判斷所述第一內(nèi)存分區(qū)上的空閑空間大于第二預(yù)定值時(shí),向系統(tǒng)申請(qǐng)大小為L(zhǎng)的第三內(nèi)存分區(qū),其中,L〈Q-A; 將所述第一內(nèi)存分區(qū)上已寫入的文件數(shù)據(jù)全部拷貝到所述第三內(nèi)存分區(qū)上,并釋放所述第一內(nèi)存分區(qū)的空間。
5.如權(quán)利要求4所述的方法,其特征在于,還包括 控制所述第三內(nèi)存分區(qū)的大小L相對(duì)于第一內(nèi)存分區(qū)的大小P減小的大小為第三預(yù)定值的正整數(shù)倍。
6.如權(quán)利要求5所述的方法,其特征在于,所述將所述第一內(nèi)存分區(qū)上已寫入的文件數(shù)據(jù)全部拷貝到所述第三內(nèi)存分區(qū)上包括 將拷貝到所述第三內(nèi)存分區(qū)上的文件數(shù)據(jù)合并為一個(gè)連續(xù)空間,且所述連續(xù)空間的首地址與所述第三內(nèi)存分區(qū)的首地址相同。
7.—種內(nèi)存管理裝置,其特征在于,包括 請(qǐng)求接收模塊,用于接收到向第一內(nèi)存分區(qū)寫入大小為X字節(jié)文件數(shù)據(jù)的寫入請(qǐng)求,其中所述第一內(nèi)存分區(qū)的大小為P字節(jié); 新分區(qū)申請(qǐng)模塊,用于當(dāng)判斷所述第一內(nèi)存分區(qū)的空閑空間的大小Y小于所述文件數(shù)據(jù)的大小X時(shí),則向系統(tǒng)申請(qǐng)大小為Q字節(jié)的第二內(nèi)存分區(qū),其中,Q>=P-Y+X ; 舊分區(qū)釋放模塊,用于將所述第一內(nèi)存分區(qū)上已寫入的文件數(shù)據(jù)全部拷貝到所述第二內(nèi)存分區(qū)上,并釋放所述第一內(nèi)存分區(qū)的空間; 寫入模塊,用于查詢到所述第二內(nèi)存分區(qū)的大小不小于X字節(jié)的空閑內(nèi)存塊時(shí),向該空閑內(nèi)存塊寫入所述X字節(jié)文件數(shù)據(jù)。
8.如權(quán)利要求7所述的裝置,其特征在于,還包括 刪除模塊,用于當(dāng)接收到刪除所述第一內(nèi)存分區(qū)上大小為A的文件數(shù)據(jù)時(shí),釋放所述文件數(shù)據(jù)占用的內(nèi)存空間;當(dāng)判斷所述第一內(nèi)存分區(qū)上的空閑空間大于第二預(yù)定值時(shí),向系統(tǒng)申請(qǐng)大小為L(zhǎng)的第三內(nèi)存分區(qū),其中,L〈Q-A;將所述第一內(nèi)存分區(qū)上已寫入的文件數(shù)據(jù)全部拷貝到所述第三內(nèi)存分區(qū)上,并釋放所述第一內(nèi)存分區(qū)的空間。
9.如權(quán)利要求8所述的裝置,其特征在于,還包括 控制模塊,用于控制所述第二內(nèi)存分區(qū)的大小Q相對(duì)于第一內(nèi)存分區(qū)的大小P增加的大小為第一預(yù)定值的正整數(shù)倍;和 用于控制所述第三內(nèi)存分區(qū)的大小L相對(duì)于第一內(nèi)存分區(qū)的大小P減小的大小為第三預(yù)定值的正整數(shù)倍。
10.如權(quán)利要求9所述的裝置,其特征在于,所述舊分區(qū)釋放模塊還包括 合并單元,用于將拷貝到所述第二內(nèi)存分區(qū)上的文件數(shù)據(jù)合并為一個(gè)連續(xù)空間,且所述連續(xù)空間的首地址與所述第二內(nèi)存分區(qū)的首地址相同。
全文摘要
本發(fā)明實(shí)施例公開(kāi)了一種內(nèi)存文件系統(tǒng)中內(nèi)存分區(qū)的管理方法,包括接收到向第一內(nèi)存分區(qū)寫入大小文件數(shù)據(jù)的寫入請(qǐng)求;當(dāng)判斷所述第一內(nèi)存分區(qū)的空閑空間的大小Y小于所述文件數(shù)據(jù)的大小X時(shí),則向系統(tǒng)申請(qǐng)第二內(nèi)存分區(qū);將所述第一內(nèi)存分區(qū)上已寫入的文件數(shù)據(jù)全部拷貝到所述第二內(nèi)存分區(qū)上,并釋放所述第一內(nèi)存分區(qū)的空間;當(dāng)查詢到所述第二內(nèi)存分區(qū)的大小足夠的空閑內(nèi)存塊時(shí),向該空閑內(nèi)存塊寫入所述X字節(jié)文件數(shù)據(jù)。采用本發(fā)明,能對(duì)內(nèi)存分區(qū)進(jìn)行動(dòng)態(tài)管理,且不會(huì)產(chǎn)生內(nèi)存碎片,提高了內(nèi)存空間的利用率。
文檔編號(hào)G06F17/30GK102968380SQ20121043118
公開(kāi)日2013年3月13日 申請(qǐng)日期2012年11月2日 優(yōu)先權(quán)日2012年11月2日
發(fā)明者楊匯源 申請(qǐng)人:深圳市同洲電子股份有限公司