一種內(nèi)存分配回收方法
【專利摘要】本發(fā)明提供一種內(nèi)存分配回收方法,系統(tǒng)包括分段統(tǒng)計(jì)模塊(1),控制配置模塊(2),選擇算法模塊(3)三個(gè)部分,三個(gè)部分協(xié)同工作完成系統(tǒng)內(nèi)存分配和回收,其中:在分段統(tǒng)計(jì)模塊(1)中,按照分段粒度,對(duì)內(nèi)存統(tǒng)計(jì)范圍的內(nèi)存頁(yè)進(jìn)行分段統(tǒng)計(jì),對(duì)于一段連續(xù)的內(nèi)存頁(yè),在統(tǒng)計(jì)值更新的時(shí)機(jī),分別統(tǒng)計(jì)其中頁(yè)被分配和回收的次數(shù),記為此段內(nèi)存發(fā)生的分配、回收次數(shù),次數(shù)值的上限應(yīng)為系統(tǒng)能夠保存的最大整形,統(tǒng)計(jì)值在在分配或回收統(tǒng)計(jì)值被引用作為決策參數(shù)后,會(huì)被統(tǒng)計(jì)清零,該方法是針對(duì)當(dāng)前硬件資源相對(duì)充裕,應(yīng)用程序請(qǐng)求紛繁復(fù)雜的特點(diǎn),提出了新型內(nèi)存分配回收機(jī)制,區(qū)別于以往操作系統(tǒng)使用的機(jī)制,更加符合現(xiàn)代計(jì)算機(jī)的特點(diǎn),也更適用于現(xiàn)代應(yīng)用程序的行為需求。
【專利說(shuō)明】—種內(nèi)存分配回收方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計(jì)算機(jī)應(yīng)用【技術(shù)領(lǐng)域】,具體地說(shuō)是一種內(nèi)存分配回收方法。
【背景技術(shù)】
[0002]操作系統(tǒng)作為系統(tǒng)核心軟件,管理著機(jī)器的物理資源,維護(hù)它們保持在正常的狀態(tài);同時(shí)以這些資源響應(yīng)著用戶程序和系統(tǒng)硬件的各種請(qǐng)求。操作系統(tǒng)必須保證這些請(qǐng)求被及時(shí)和正確地響應(yīng),這樣整個(gè)系統(tǒng)才能正常地運(yùn)轉(zhuǎn)。
[0003]在操作系統(tǒng)管理的硬件物理資源中,內(nèi)存是不可或缺的重要組成部分。操作系統(tǒng)需要對(duì)所有內(nèi)存資源進(jìn)行合理的初始化和管理,處理各種程序的內(nèi)存使用請(qǐng)求,包括操作系統(tǒng)本身。還需要在程序退出或者不再需要某段內(nèi)存段時(shí)候?qū)?nèi)存回收,重新納入到空閑內(nèi)存中,以保證接下來(lái)的內(nèi)存使用請(qǐng)求會(huì)得到滿足。
[0004]在物理資源還很匱乏的信息技術(shù)早期,及時(shí)回收和循環(huán)使用有限的內(nèi)存來(lái)完成大量的工作是很重要的技術(shù),它擴(kuò)展了機(jī)器的性能,最大限度地挖掘了現(xiàn)有物理資源的潛力,顯示了軟件的魅力。隨著機(jī)械材料電子等多項(xiàng)技術(shù)的不斷進(jìn)步,現(xiàn)代計(jì)算機(jī)上的物理資源已經(jīng)相對(duì)充裕,但是仍然需要合理的管理機(jī)制來(lái)管理這些資源。因?yàn)榧夹g(shù)進(jìn)步的同時(shí)也帶來(lái)了信息量的巨大膨脹,現(xiàn)代計(jì)算機(jī)需要處理的數(shù)據(jù)的體積和算法的復(fù)雜度也呈幾何級(jí)增長(zhǎng),這對(duì)現(xiàn)代計(jì)算機(jī)上的軟件也提出了更高的要求,尤其是操作系統(tǒng)。
[0005]就內(nèi)存管理來(lái)說(shuō),一邊是可能的大量的物理資源,一邊是大量的復(fù)雜的處理請(qǐng)求,在中間需要非常優(yōu)秀的機(jī)制來(lái)管理和疏通,保證物理資源的充分利用,保證程序請(qǐng)求的及時(shí)滿足從而正常運(yùn)行,進(jìn)一步在極端壓力條件下,能夠充分挖掘出硬件的潛力,發(fā)揮出應(yīng)有的性能。內(nèi)存管理系統(tǒng)中,內(nèi)存分配回收機(jī)制是一個(gè)重要的組成部分。其主要運(yùn)用于處理應(yīng)用程序和系統(tǒng)程序的內(nèi)存分配請(qǐng)求,以及隨后的內(nèi)存回收以保證足夠的內(nèi)存滿足隨后的請(qǐng)求。
[0006]現(xiàn)有的操作系統(tǒng)中,內(nèi)存管理機(jī)制大都有著十年以上的歷史,由管理相對(duì)較少系統(tǒng)內(nèi)存的算法演變而來(lái),不一定適用于當(dāng)前的應(yīng)用硬件場(chǎng)景。本發(fā)明針對(duì)當(dāng)前硬件資源相對(duì)充裕,應(yīng)用程序請(qǐng)求紛繁復(fù)雜的特點(diǎn),提出了新型內(nèi)存分配回收機(jī)制,區(qū)別于以往操作系統(tǒng)使用的機(jī)制,更加符合現(xiàn)代計(jì)算機(jī)的特點(diǎn),也更適用于現(xiàn)代應(yīng)用程序的行為需求。
【發(fā)明內(nèi)容】
[0007]本發(fā)明的目的是提供一種內(nèi)存分配回收方法。
[0008]本發(fā)明的目的是按以下方式實(shí)現(xiàn)的,系統(tǒng)包括分段統(tǒng)計(jì)模塊(I),控制配置模塊
(2),選擇算法模塊(3)三個(gè)部分,三個(gè)部分協(xié)同工作完成系統(tǒng)內(nèi)存分配和回收,其中:
在分段統(tǒng)計(jì)模塊(I)中,按照分段粒度,對(duì)內(nèi)存統(tǒng)計(jì)范圍的內(nèi)存頁(yè)進(jìn)行分段統(tǒng)計(jì),對(duì)于一段連續(xù)的內(nèi)存頁(yè),在統(tǒng)計(jì)值更新的時(shí)機(jī),分別統(tǒng)計(jì)其中頁(yè)被分配和回收的次數(shù),記為此段內(nèi)存發(fā)生的分配、回收次數(shù),次數(shù)值的上限應(yīng)為系統(tǒng)能夠保存的最大整形,統(tǒng)計(jì)值在在分配或回收統(tǒng)計(jì)值被引用作為決策參數(shù)后,會(huì)被統(tǒng)計(jì)清零,其中: 分段粒度,是指對(duì)內(nèi)存進(jìn)行分段時(shí),每段內(nèi)存的大小,單位為物理內(nèi)存頁(yè),最小粒度為I頁(yè),最大粒度取決于系統(tǒng)內(nèi)存大?。?br>
內(nèi)存統(tǒng)計(jì)范圍,是進(jìn)行分段統(tǒng)計(jì)的內(nèi)存范圍,并不是系統(tǒng)所有內(nèi)存都在統(tǒng)計(jì)范圍,在所有用于分配回收的內(nèi)存頁(yè)中,除去操作系統(tǒng)本身和一些庫(kù)占用的內(nèi)存頁(yè),都應(yīng)該納入統(tǒng)計(jì)的范圍,因?yàn)椴僮飨到y(tǒng)本身和庫(kù)占用的內(nèi)存會(huì)一直駐留在內(nèi)存中,在系統(tǒng)運(yùn)行的生命周期中會(huì)一直被使用,所以不必納入統(tǒng)計(jì)范圍進(jìn)行分配回收控制;
統(tǒng)計(jì)值更新的時(shí)機(jī),是當(dāng)一段內(nèi)存中有頁(yè)被分配或者回收,在接口中對(duì)該段內(nèi)存的統(tǒng)計(jì)數(shù)據(jù)進(jìn)行更新;
統(tǒng)計(jì)清零,是指分配和回收的統(tǒng)計(jì)值的清零,在分配或回收統(tǒng)計(jì)值被引用作為決策參數(shù)后,將其清零以保證統(tǒng)計(jì)數(shù)據(jù)描述的是最近系統(tǒng)中內(nèi)存的使用情況,或在控制配置模塊
(2)中對(duì)此進(jìn)行配置是否進(jìn)行清零操作,如果不進(jìn)行清零操作,則統(tǒng)計(jì)數(shù)據(jù)描述的是系統(tǒng)內(nèi)存使用的歷史累計(jì)信息;
控制配置模塊(2),對(duì)方法中的屬性進(jìn)行控制,以協(xié)同完成整個(gè)分配回收方法,這些配置由系統(tǒng)管理員改變,使得本方法更加適用于使用環(huán)境,方法中被控制配置的有分段粒度,分配傾向,回收力度,回收傾向,統(tǒng)計(jì)清零幾個(gè)部分,其中:
分配傾向,是在分配內(nèi)存時(shí),對(duì)內(nèi)存段的選擇傾向:是否重復(fù)使用,如果不重復(fù)使用,則每次選擇的時(shí)候就不會(huì)選擇已經(jīng)有分配統(tǒng)計(jì)計(jì)數(shù)的內(nèi)存段,如果所有統(tǒng)計(jì)內(nèi)存段都已經(jīng)使用過(guò),則觸發(fā)統(tǒng)計(jì)清零;
回收力度,是在回收內(nèi)存時(shí)力度的大小,力度越大,回收程序回收越多的內(nèi)存;
回收傾向,是在回收內(nèi)存時(shí),對(duì)內(nèi)存段的選擇傾向:最近最少使用、歷史最少使用傾向下,回收程序會(huì)優(yōu)先對(duì)統(tǒng)計(jì)信息中分配計(jì)數(shù)最少的內(nèi)存段進(jìn)行回收操作,這種傾向下需要統(tǒng)計(jì)清零;歷史最少使用傾向下,回收程序行為一樣,只是不進(jìn)行統(tǒng)計(jì)清零;
選擇算法模塊(3),選擇算法模塊包括分配選擇算法和回收選擇算法,在分配或回收時(shí),分別根據(jù)分段統(tǒng)計(jì)模塊(I)所得的統(tǒng)計(jì)信息,選擇最佳的內(nèi)存段,進(jìn)行實(shí)際的內(nèi)存分配回收,其中:
分配選擇算法,在選擇內(nèi)存段進(jìn)行分配操作時(shí),根據(jù)統(tǒng)計(jì)信息,避開分配回收計(jì)數(shù)較高的內(nèi)存段,選擇統(tǒng)計(jì)計(jì)數(shù)較低的內(nèi)存段;結(jié)合分配傾向,決定是否重復(fù)使用內(nèi)存段,以選擇使用過(guò)與否的內(nèi)存段;
回收選擇算法,在選擇內(nèi)存段進(jìn)行回收操作時(shí),根據(jù)統(tǒng)計(jì)信息,選擇統(tǒng)計(jì)計(jì)數(shù)由小到大的內(nèi)存段進(jìn)行回收操作,結(jié)合回收力度,如需繼續(xù)回收則選擇統(tǒng)計(jì)計(jì)數(shù)更大的內(nèi)存段繼續(xù)回收操作;
具體分配回收步驟如下:
步驟1:在系統(tǒng)啟動(dòng)初始化階段,內(nèi)存初始化時(shí),分段統(tǒng)計(jì)模塊(I)將系統(tǒng)用于分配回收的內(nèi)存按照頁(yè)為單位平均分段,每段大小為8頁(yè),系統(tǒng)共分出了 512段;
步驟2:建立統(tǒng)計(jì)數(shù)據(jù)池,兩個(gè)最大整形類型的數(shù)組,alloc[512]記錄每段內(nèi)存段中發(fā)生的分配次數(shù),reclaim[512]記錄每段內(nèi)存中發(fā)生的回收次數(shù),初始值均為O ;
步驟3:在系統(tǒng)啟動(dòng)運(yùn)行的過(guò)程中,每次內(nèi)存分配回收發(fā)生,都更新alloc和reclaim數(shù)組;
步驟4:讀取配置,統(tǒng)計(jì)數(shù)據(jù)需要清零,分配傾向?yàn)椴恢貜?fù)使用,回收力度大,回收傾向相應(yīng)則為最近最少使用,控制配置允許隨時(shí)由系統(tǒng)管理員修改;
步驟5:系統(tǒng)運(yùn)行起來(lái)之后,對(duì)系統(tǒng)進(jìn)程和應(yīng)用進(jìn)程分配內(nèi)存的請(qǐng)求,控制配置模塊(2)根據(jù)配置控制的內(nèi)容,查看alloc和reclaim數(shù)組的值,在能夠分配的內(nèi)存段(alloc[i]==reclaim[i])中,找到還沒(méi)有分配過(guò)的內(nèi)存,即alloc[i]==0對(duì)應(yīng)的內(nèi)存段進(jìn)行具體的分配動(dòng)作;
步驟6:如在該段內(nèi)存分配成功,選擇算法模塊(3)更新alloc數(shù)組,在相應(yīng)段的計(jì)數(shù)加I ;
步驟7:根據(jù)配置控制,回收力度為大,選擇算法模塊(3)會(huì)在適當(dāng)?shù)臅r(shí)機(jī)啟動(dòng),根據(jù)配置,查看alloc和reclaim數(shù)組的值,在能夠進(jìn)行回收的段(alloc [i] >reclaim[i])中,尋找alloc[i]值較小的對(duì)應(yīng)段進(jìn)行具體的回收操作;
步驟8:如在該段內(nèi)存回收成功,更新reclaim數(shù)組;
步驟9:在所有內(nèi)存段都使用過(guò)之后,或清零時(shí)間間隔值到達(dá)時(shí),對(duì)alloc和reclaim數(shù)組進(jìn)行清零操作;
步驟10:系統(tǒng)關(guān)機(jī)時(shí),當(dāng)關(guān)機(jī)進(jìn)程退出后,釋放占用的系統(tǒng)資源。
[0009]本發(fā)明的有益效果是:本發(fā)明針對(duì)當(dāng)前硬件資源相對(duì)充裕,應(yīng)用程序請(qǐng)求紛繁復(fù)雜的特點(diǎn),提出了新型內(nèi)存分配回收機(jī)制,區(qū)別于以往操作系統(tǒng)使用的機(jī)制,更加符合現(xiàn)代計(jì)算機(jī)的特點(diǎn),也更適用于現(xiàn)代應(yīng)用程序的行為需求。
【專利附圖】
【附圖說(shuō)明】
[0010]圖1為分段統(tǒng)計(jì)結(jié)構(gòu)示意圖;
圖2為所實(shí)現(xiàn)機(jī)制的運(yùn)行示意圖。
【具體實(shí)施方式】
[0011 ] 參照說(shuō)明書附圖對(duì)本發(fā)明的方法作以下詳細(xì)地說(shuō)明。
[0012]為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí)施例,對(duì)本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說(shuō)明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
[0013]參照附圖,接下來(lái)對(duì)本發(fā)明的內(nèi)容以一個(gè)具體實(shí)例來(lái)描述實(shí)現(xiàn)這一機(jī)制的過(guò)程。
[0014]正如
【發(fā)明內(nèi)容】
中所描述的,本發(fā)明體系結(jié)構(gòu)主要包括:分段統(tǒng)計(jì)模塊,配置控制模塊和選擇算法模塊,具體分配回收步驟如下:
步驟1:在系統(tǒng)啟動(dòng)初始化階段,內(nèi)存初始化時(shí),分段統(tǒng)計(jì)模塊(I)將系統(tǒng)用于分配回收的內(nèi)存按照頁(yè)為單位平均分段,每段大小為8頁(yè),系統(tǒng)共分出了 512段;
步驟2:建立統(tǒng)計(jì)數(shù)據(jù)池,兩個(gè)最大整形類型的數(shù)組,alloc[512]記錄每段內(nèi)存段中發(fā)生的分配次數(shù),reclaim[512]記錄每段內(nèi)存中發(fā)生的回收次數(shù),初始值均為O ;
步驟3:在系統(tǒng)啟動(dòng)運(yùn)行的過(guò)程中,每次內(nèi)存分配回收發(fā)生,都更新alloc和reclaim數(shù)組;
步驟4:讀取配置,統(tǒng)計(jì)數(shù)據(jù)需要清零,分配傾向?yàn)椴恢貜?fù)使用,回收力度大,回收傾向相應(yīng)則為最近最少使用,控制配置允許隨時(shí)由系統(tǒng)管理員修改;
步驟5:系統(tǒng)運(yùn)行起來(lái)之后,對(duì)系統(tǒng)進(jìn)程和應(yīng)用進(jìn)程分配內(nèi)存的請(qǐng)求,控制配置模塊(2)根據(jù)配置控制的內(nèi)容,查看alloc和reclaim數(shù)組的值,在能夠分配的內(nèi)存段(alloc[i]==reclaim[i])中,找到還沒(méi)有分配過(guò)的內(nèi)存,即alloc[i]==0對(duì)應(yīng)的內(nèi)存段進(jìn)行具體的分配動(dòng)作;
步驟6:如在該段內(nèi)存分配成功,選擇算法模塊(3)更新alloc數(shù)組,在相應(yīng)段的計(jì)數(shù)加I ;
步驟7:根據(jù)配置控制,回收力度為大,選擇算法模塊(3)會(huì)在適當(dāng)?shù)臅r(shí)機(jī)啟動(dòng),根據(jù)配置,查看alloc和reclaim數(shù)組的值,在能夠進(jìn)行回收的段(alloc [i]>reclaim[i])中,尋找alloc[i]值較小的對(duì)應(yīng)段進(jìn)行具體的回收操作;
步驟8:如在該段內(nèi)存回收成功,更新reclaim數(shù)組;
步驟9:在所有內(nèi)存段都使用過(guò)之后,或清零時(shí)間間隔值到達(dá)時(shí),對(duì)alloc和reclaim數(shù)組進(jìn)行清零操作;
步驟10:系統(tǒng)關(guān)機(jī)時(shí),當(dāng)關(guān)機(jī)進(jìn)程退出后,釋放占用的系統(tǒng)資源。
[0015]以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
[0016]除說(shuō)明書所述的技術(shù)特征外,均為本專業(yè)技術(shù)人員的已知技術(shù)。
【權(quán)利要求】
1.一種內(nèi)存分配回收方法,其特征在于系統(tǒng)包括分段統(tǒng)計(jì)模塊(I),控制配置模塊(2),選擇算法模塊(3)三個(gè)部分,三個(gè)部分協(xié)同工作完成系統(tǒng)內(nèi)存分配和回收,其中: 在分段統(tǒng)計(jì)模塊(I)中,按照分段粒度,對(duì)內(nèi)存統(tǒng)計(jì)范圍的內(nèi)存頁(yè)進(jìn)行分段統(tǒng)計(jì),對(duì)于一段連續(xù)的內(nèi)存頁(yè),在統(tǒng)計(jì)值更新的時(shí)機(jī),分別統(tǒng)計(jì)其中頁(yè)被分配和回收的次數(shù),記為此段內(nèi)存發(fā)生的分配、回收次數(shù),次數(shù)值的上限應(yīng)為系統(tǒng)能夠保存的最大整形,統(tǒng)計(jì)值在在分配或回收統(tǒng)計(jì)值被引用作為決策參數(shù)后,會(huì)被統(tǒng)計(jì)清零,其中: 分段粒度,是指對(duì)內(nèi)存進(jìn)行分段時(shí),每段內(nèi)存的大小,單位為物理內(nèi)存頁(yè),最小粒度為I頁(yè),最大粒度取決于系統(tǒng)內(nèi)存大??; 內(nèi)存統(tǒng)計(jì)范圍,是進(jìn)行分段統(tǒng)計(jì)的內(nèi)存范圍,并不是系統(tǒng)所有內(nèi)存都在統(tǒng)計(jì)范圍,在所有用于分配回收的內(nèi)存頁(yè)中,除去操作系統(tǒng)本身和一些庫(kù)占用的內(nèi)存頁(yè),都應(yīng)該納入統(tǒng)計(jì)的范圍,因?yàn)椴僮飨到y(tǒng)本身和庫(kù)占用的內(nèi)存會(huì)一直駐留在內(nèi)存中,在系統(tǒng)運(yùn)行的生命周期中會(huì)一直被使用,所以不必納入統(tǒng)計(jì)范圍進(jìn)行分配回收控制; 統(tǒng)計(jì)值更新的時(shí)機(jī),是當(dāng)一段內(nèi)存中有頁(yè)被分配或者回收,在接口中對(duì)該段內(nèi)存的統(tǒng)計(jì)數(shù)據(jù)進(jìn)行更新; 統(tǒng)計(jì)清零,是指分配和回收的統(tǒng)計(jì)值的清零,在分配或回收統(tǒng)計(jì)值被引用作為決策參數(shù)后,將其清零以保證統(tǒng)計(jì)數(shù)據(jù)描述的是最近系統(tǒng)中內(nèi)存的使用情況,或在控制配置模塊(2)中對(duì)此進(jìn)行配置是否進(jìn)行清零操作,如果不進(jìn)行清零操作,則統(tǒng)計(jì)數(shù)據(jù)描述的是系統(tǒng)內(nèi)存使用的歷史累計(jì)信息; 控制配置模塊(2),對(duì)方法中的屬性進(jìn)行控制,以協(xié)同完成整個(gè)分配回收方法,這些配置由系統(tǒng)管理員改變,使得本方法更加適用于使用環(huán)境,方法中被控制配置的有分段粒度,分配傾向,回收力度,回收傾向,統(tǒng)計(jì)清零幾個(gè)部分,其中: 分配傾向,是在分配內(nèi)存時(shí),對(duì)內(nèi)存段的選擇傾向:是否重復(fù)使用,如果不重復(fù)使用,則每次選擇的時(shí)候就不會(huì)選擇已經(jīng)有分配統(tǒng)計(jì)計(jì)數(shù)的內(nèi)存段,如果所有統(tǒng)計(jì)內(nèi)存段都已經(jīng)使用過(guò),則觸發(fā)統(tǒng)計(jì)清零; 回收力度,是在回收內(nèi)存時(shí)力度的大小,力度越大,回收程序回收越多的內(nèi)存; 回收傾向,是在回收內(nèi)存時(shí),對(duì)內(nèi)存段的選擇傾向:最近最少使用、歷史最少使用傾向下,回收程序會(huì)優(yōu)先對(duì)統(tǒng)計(jì)信息中分配計(jì)數(shù)最少的內(nèi)存段進(jìn)行回收操作,這種傾向下需要統(tǒng)計(jì)清零;歷史最少使用傾向下,回收程序行為一樣,只是不進(jìn)行統(tǒng)計(jì)清零; 選擇算法模塊(3),選擇算法模塊包括分配選擇算法和回收選擇算法,在分配或回收時(shí),分別根據(jù)分段統(tǒng)計(jì)模塊(I)所得的統(tǒng)計(jì)信息,選擇最佳的內(nèi)存段,進(jìn)行實(shí)際的內(nèi)存分配回收,其中: 分配選擇算法,在選擇內(nèi)存段進(jìn)行分配操作時(shí),根據(jù)統(tǒng)計(jì)信息,避開分配回收計(jì)數(shù)較高的內(nèi)存段,選擇統(tǒng)計(jì)計(jì)數(shù)較低的內(nèi)存段;結(jié)合分配傾向,決定是否重復(fù)使用內(nèi)存段,以選擇使用過(guò)與否的內(nèi)存段; 回收選擇算法,在選擇內(nèi)存段進(jìn)行回收操作時(shí),根據(jù)統(tǒng)計(jì)信息,選擇統(tǒng)計(jì)計(jì)數(shù)由小到大的內(nèi)存段進(jìn)行回收操作,結(jié)合回收力度,如需繼續(xù)回收則選擇統(tǒng)計(jì)計(jì)數(shù)更大的內(nèi)存段繼續(xù)回收操作; 具體分配回收步驟如下: 步驟1:在系統(tǒng)啟動(dòng)初始化階段,內(nèi)存初始化時(shí),分段統(tǒng)計(jì)模塊(I)將系統(tǒng)用于分配回收的內(nèi)存按照頁(yè)為單位平均分段,每段大小為8頁(yè),系統(tǒng)共分出了 512段; 步驟2:建立統(tǒng)計(jì)數(shù)據(jù)池,兩個(gè)最大整形類型的數(shù)組,alloc[512]記錄每段內(nèi)存段中發(fā)生的分配次數(shù),reclaim[512]記錄每段內(nèi)存中發(fā)生的回收次數(shù),初始值均為O ; 步驟3:在系統(tǒng)啟動(dòng)運(yùn)行的過(guò)程中,每次內(nèi)存分配回收發(fā)生,都更新alloc和reclaim數(shù)組; 步驟4:讀取配置,統(tǒng)計(jì)數(shù)據(jù)需要清零,分配傾向?yàn)椴恢貜?fù)使用,回收力度大,回收傾向相應(yīng)則為最近最少使用,控制配置允許隨時(shí)由系統(tǒng)管理員修改; 步驟5:系統(tǒng)運(yùn)行起來(lái)之后,對(duì)系統(tǒng)進(jìn)程和應(yīng)用進(jìn)程分配內(nèi)存的請(qǐng)求,控制配置模塊(2)根據(jù)配置控制的內(nèi)容,查看alloc和reclaim數(shù)組的值,在能夠分配的內(nèi)存段(alloc[i]==reclaim[i])中,找到還沒(méi)有分配過(guò)的內(nèi)存,即alloc[i]==0對(duì)應(yīng)的內(nèi)存段進(jìn)行具體的分配動(dòng)作; 步驟6:如在該段內(nèi)存分配成功,選擇算法模塊(3)更新alloc數(shù)組,在相應(yīng)段的計(jì)數(shù)加I ; 步驟7:根據(jù)配置控制,回收力度為大,選擇算法模塊(3)會(huì)在適當(dāng)?shù)臅r(shí)機(jī)啟動(dòng),根據(jù)配置,查看alloc和reclaim數(shù)組的值,在能夠進(jìn)行回收的段(alloc [i] >reclaim[i])中,尋找alloc[i]值較小的對(duì)應(yīng)段進(jìn)行具體的回收操作; 步驟8:如在該段內(nèi)存回收成功,更新reclaim數(shù)組; 步驟9:在所有內(nèi)存段都使用過(guò)之后,或清零時(shí)間間隔值到達(dá)時(shí),對(duì)alloc和reclaim數(shù)組進(jìn)行清零操作; 步驟10:系統(tǒng)關(guān)機(jī)時(shí),當(dāng)關(guān) 機(jī)進(jìn)程退出后,釋放占用的系統(tǒng)資源。
【文檔編號(hào)】G06F12/02GK103593300SQ201310569470
【公開日】2014年2月19日 申請(qǐng)日期:2013年11月15日 優(yōu)先權(quán)日:2013年11月15日
【發(fā)明者】周雄, 吳楠, 張東 申請(qǐng)人:浪潮電子信息產(chǎn)業(yè)股份有限公司