1.一種內(nèi)存管理方法,其特征在于,包括:
S10內(nèi)存申請(qǐng)方法:
S110根據(jù)業(yè)務(wù)信息申請(qǐng)內(nèi)存的需求,查找相應(yīng)規(guī)格的內(nèi)存空閑鏈表中是否存在空閑內(nèi)存塊,若是,則進(jìn)入步驟S120;否則,進(jìn)入步驟S130;
S120從所述內(nèi)存空閑鏈表中移除一空閑內(nèi)存塊,進(jìn)入步驟S140;
S130向系統(tǒng)申請(qǐng)相應(yīng)的空閑內(nèi)存塊;
S140將所述空閑內(nèi)存塊分配給業(yè)務(wù)存儲(chǔ)數(shù)據(jù)信息,并添加到所述業(yè)務(wù)所屬的模塊號(hào)的內(nèi)存占用鏈表中;
S20內(nèi)存釋放方法:
S210將待釋放的內(nèi)存塊從所述模塊號(hào)的內(nèi)存占用鏈表中移除;
S220將所述內(nèi)存塊進(jìn)行清空處理,還原至空閑內(nèi)存塊狀態(tài);
S230根據(jù)所述內(nèi)存塊的大小,將所述內(nèi)存塊鏈接在相應(yīng)規(guī)格的內(nèi)存空閑鏈表中。
2.根據(jù)權(quán)利要求1所述的一種內(nèi)存管理方法,其特征在于,包括:
S010進(jìn)程啟動(dòng)時(shí),先將內(nèi)存初始化,并根據(jù)所述進(jìn)程向系統(tǒng)申請(qǐng)一內(nèi)存池;
S020根據(jù)所述進(jìn)程,將所述內(nèi)存池劃分成不同規(guī)格的內(nèi)存塊組;同一內(nèi)存塊組中包含若干大小相等的空閑內(nèi)存塊;所述內(nèi)存塊包括結(jié)構(gòu)頭、可存儲(chǔ)區(qū)、和診斷尾;所述結(jié)構(gòu)頭和診斷尾用于存儲(chǔ)數(shù)據(jù)的相關(guān)信息,且所述結(jié)構(gòu)頭上存儲(chǔ)有雙向指針;
S030將同一內(nèi)存塊組的空閑內(nèi)存塊通過(guò)所述雙向指針鏈接起來(lái),形成所述規(guī)格的內(nèi)存空閑鏈表;
S040當(dāng)所述進(jìn)程中的模塊號(hào)下的業(yè)務(wù)占用了內(nèi)存塊時(shí),利用所述雙向指針,將所述進(jìn)程中同一個(gè)模塊號(hào)下已占用的內(nèi)存塊鏈接起來(lái)構(gòu)成內(nèi)存占用鏈表。
3.根據(jù)權(quán)利要求2所述的一種內(nèi)存管理方法,其特征在于,還包括S30診斷方法:
S310查找相應(yīng)模塊號(hào)的內(nèi)存占用鏈表;
S320遍歷所述內(nèi)存占用鏈表,判斷所述內(nèi)存占用鏈表中的內(nèi)存塊的結(jié)構(gòu)頭信息是否被擦寫,若是進(jìn)入步驟S330;
S330判斷所述內(nèi)存塊為壞塊。
4.根據(jù)權(quán)利要求2所述的一種內(nèi)存管理方法,其特征在于,
所述步驟S120包括步驟:
S121從所述內(nèi)存空閑鏈表的頭部或尾部移除所述空閑內(nèi)存塊;
所述步驟S140包括步驟:
S141根據(jù)所述業(yè)務(wù)信息,填充所述內(nèi)存塊的結(jié)構(gòu)頭和診斷尾信息,所述內(nèi)存塊的可存儲(chǔ)區(qū)用于給業(yè)務(wù)存儲(chǔ)數(shù)據(jù)信息;
S142將所述內(nèi)存塊掛載在以所述業(yè)務(wù)所屬的模塊號(hào)為下標(biāo)的內(nèi)存占用鏈表頭部或尾部;
所述步驟S210包括:
S211根據(jù)待釋放內(nèi)存塊的雙向指針,在所述模塊號(hào)的內(nèi)存占用鏈表中找到所述待釋放內(nèi)存塊的前一內(nèi)存塊及后一內(nèi)存塊;
S212將所述待釋放內(nèi)存塊從所述內(nèi)存占用鏈表中移除;
S213將所述待釋放內(nèi)存塊的前一內(nèi)存塊和后一內(nèi)存塊鏈接起來(lái);
所述步驟S230包括:
S231根據(jù)所述內(nèi)存塊的大小,將所述內(nèi)存塊掛載在相應(yīng)規(guī)格的內(nèi)存空閑鏈表頭部或尾部。
5.根據(jù)權(quán)利要求2所述的一種內(nèi)存管理方法,其特征在于,所述內(nèi)存塊的結(jié)構(gòu)頭,用于存儲(chǔ)雙向指針、內(nèi)存塊的總大小、存儲(chǔ)的數(shù)據(jù)標(biāo)識(shí)位、及所屬的模塊號(hào)信息;
所述內(nèi)存塊的診斷尾,用于存儲(chǔ)申請(qǐng)所述內(nèi)存塊的文件名、行號(hào)信息;
所述內(nèi)存塊的大小為2i,其中i為自然數(shù)。
6.一種內(nèi)存管理系統(tǒng),其特征在于,包括內(nèi)存管理模塊、查找模塊、操作模塊,所述內(nèi)存管理模塊分別與所述查找模塊、操作模塊相連;其中:
當(dāng)所述內(nèi)存管理模塊接收到內(nèi)存申請(qǐng)時(shí),根據(jù)業(yè)務(wù)信息申請(qǐng)內(nèi)存的需求,通過(guò)所述查找模塊查找相應(yīng)規(guī)格的內(nèi)存空閑鏈表中是否存在空閑內(nèi)存塊,若是,則所述操作模塊在所述內(nèi)存管理模塊的控制下,從所述內(nèi)存空閑鏈表中移除一空閑內(nèi)存塊,否則所述內(nèi)存管理模塊向系統(tǒng)申請(qǐng)相應(yīng)的空閑內(nèi)存塊;
所述內(nèi)存管理模塊將所述空閑內(nèi)存塊分配給業(yè)務(wù)存儲(chǔ)數(shù)據(jù)信息,所述操作模塊將所述存儲(chǔ)數(shù)據(jù)信息的內(nèi)存塊添加到所述業(yè)務(wù)所屬的模塊號(hào)的內(nèi)存占用鏈表中;
當(dāng)所述內(nèi)存管理模塊接收到內(nèi)存釋放申請(qǐng)時(shí),所述操作模塊在所述內(nèi)存管理模塊的控制下,將待釋放的內(nèi)存塊從所述模塊號(hào)的內(nèi)存占用鏈表中移除;并將所述內(nèi)存塊進(jìn)行清空處理,還原至空閑內(nèi)存塊狀態(tài);再根據(jù)所述內(nèi)存塊的大小,將所述內(nèi)存塊鏈接在相應(yīng)規(guī)格的內(nèi)存空閑鏈表中。
7.根據(jù)權(quán)利要求6所述的一種內(nèi)存管理系統(tǒng),其特征在于,還包括初始化模塊,內(nèi)存空間申請(qǐng)模塊、內(nèi)存空間劃分模塊;所述內(nèi)存空間申請(qǐng)模塊分別與所述初始化模塊及所述內(nèi)存空間劃分模塊相連,且所述內(nèi)存管理模塊分別與所述內(nèi)存空間申請(qǐng)模塊、內(nèi)存空間劃分模塊相連,其中:
當(dāng)進(jìn)程啟動(dòng)時(shí),所述初始模塊將內(nèi)存初始化,所述內(nèi)存空間申請(qǐng)模塊根據(jù)所述進(jìn)程向系統(tǒng)申請(qǐng)一內(nèi)存池;
所述內(nèi)存空間劃分模塊根據(jù)所述進(jìn)程,將所述內(nèi)存池劃分成不同規(guī)格的內(nèi)存塊組;同一內(nèi)存塊組中包含若干大小相等的空閑內(nèi)存塊;所述內(nèi)存塊包括結(jié)構(gòu)頭、可存儲(chǔ)區(qū)、和診斷尾;所述結(jié)構(gòu)頭和診斷尾用于存儲(chǔ)數(shù)據(jù)的相關(guān)信息,且所述結(jié)構(gòu)頭上存儲(chǔ)有雙向指針;
所述內(nèi)存管理模塊將同一內(nèi)存塊組的空閑內(nèi)存塊通過(guò)所述雙向指針鏈接起來(lái),形成所述規(guī)格的內(nèi)存空閑鏈表;
當(dāng)所述內(nèi)存管理模塊判斷進(jìn)程中的模塊號(hào)下的業(yè)務(wù)占用了內(nèi)存塊時(shí),所述內(nèi)存管理模塊利用所述雙向指針,將所述進(jìn)程中同一個(gè)模塊號(hào)下已占用的內(nèi)存塊鏈接起來(lái)構(gòu)成內(nèi)存占用鏈表。
8.根據(jù)權(quán)利要求7所述的一種內(nèi)存管理系統(tǒng),其特征在于,還包括遍歷判斷模塊,所述遍歷判斷模塊分別與所述查找模塊及內(nèi)存管理模塊相連,其中:
所述查找模塊查找相應(yīng)模塊號(hào)的內(nèi)存占用鏈表;
所述遍歷判斷模塊遍歷所述內(nèi)存占用鏈表,判斷所述內(nèi)存占用鏈表中的內(nèi)存塊的結(jié)構(gòu)頭信息是否被擦寫,若是,則判斷所述內(nèi)存塊為壞塊。
9.根據(jù)權(quán)利要求7所述的一種內(nèi)存管理系統(tǒng),其特征在于,
內(nèi)存申請(qǐng)時(shí):
所述操作模塊在所述內(nèi)存管理模塊的控制下,從所述內(nèi)存空閑鏈表中移除一空閑內(nèi)存塊是指所述操作模塊在所述內(nèi)存管理模塊的控制下,從所述內(nèi)存空閑鏈表的頭部或尾部移除一空閑內(nèi)存塊;
所述內(nèi)存管理模塊將所述空閑內(nèi)存塊分配給業(yè)務(wù)存儲(chǔ)數(shù)據(jù)信息,所述操作模塊將所述存儲(chǔ)數(shù)據(jù)信息的內(nèi)存塊添加到所述業(yè)務(wù)所屬的模塊號(hào)下的內(nèi)存占用鏈表中包括:所述內(nèi)存管理模塊根據(jù)所述業(yè)務(wù)信息,填充所述內(nèi)存塊的結(jié)構(gòu)頭和診斷尾信息,所述內(nèi)存塊的可存儲(chǔ)區(qū)用于給業(yè)務(wù)存儲(chǔ)數(shù)據(jù)信息;所述操作模塊在所述內(nèi)存管理模塊的控制下將所述內(nèi)存塊掛載在以所述業(yè)務(wù)所屬的模塊號(hào)為下標(biāo)的內(nèi)存占用鏈表頭部或尾部;
內(nèi)存釋放時(shí):
所述操作模塊在所述內(nèi)存管理模塊的控制下,將待釋放的內(nèi)存塊從所述模塊號(hào)的內(nèi)存占用鏈表中移除包括:所述操作模塊在所述內(nèi)存管理模塊的控制下,根據(jù)待釋放內(nèi)存塊的雙向指針,在所述模塊號(hào)的內(nèi)存占用鏈表中找到所述待釋放內(nèi)存塊的前一內(nèi)存塊及后一內(nèi)存塊;所述操作模塊將所述待釋放內(nèi)存塊從所述內(nèi)存占用鏈表中移除;所述操作模塊將所述待釋放內(nèi)存塊的前一內(nèi)存塊和后一內(nèi)存塊鏈接起來(lái);
所述操作模塊根據(jù)所述內(nèi)存塊的大小,將所述內(nèi)存塊鏈接在相應(yīng)規(guī)格的內(nèi)存空閑鏈表中是指所述操作模塊根據(jù)所述內(nèi)存塊的大小,將所述內(nèi)存塊掛載在相應(yīng)規(guī)格的內(nèi)存空閑鏈表頭部或尾部。
10.根據(jù)權(quán)利要求7所述的一種內(nèi)存管理系統(tǒng),其特征在于,所述內(nèi)存塊的結(jié)構(gòu)頭,用于存儲(chǔ)雙向指針、內(nèi)存塊的總大小、存儲(chǔ)的數(shù)據(jù)標(biāo)識(shí)位、及所屬的模塊號(hào)信息;
所述內(nèi)存塊的診斷尾,用于存儲(chǔ)申請(qǐng)所述內(nèi)存塊的文件名、行號(hào)信息。
所述內(nèi)存塊的大小為2i,其中i為自然數(shù)。