亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

大數(shù)據(jù)處理中的虛擬內(nèi)存管理方法及其裝置制造方法

文檔序號:6621887閱讀:402來源:國知局
大數(shù)據(jù)處理中的虛擬內(nèi)存管理方法及其裝置制造方法
【專利摘要】大數(shù)據(jù)處理中的虛擬內(nèi)存管理方法及其裝置,屬計算機系統(tǒng)優(yōu)化【技術(shù)領(lǐng)域】,主要用于計算機大數(shù)據(jù)處理中一次實時處理數(shù)據(jù)量大于可用物理內(nèi)存的情況。當內(nèi)存分配達到指定臨界值時,根據(jù)內(nèi)存塊訪問關(guān)聯(lián)綜合指數(shù),以及內(nèi)存分配申請大小,尋找一塊最合適的物理內(nèi)存與磁盤虛擬內(nèi)存置換。大小配對的內(nèi)存分配方法把一個分配單元的前段分配給較大的內(nèi)存需求者,后段分配給較小的內(nèi)存需求者,通過該方法增加虛擬內(nèi)存轉(zhuǎn)換匹配度,減少數(shù)據(jù)移動量。本發(fā)明方法在大量100KB-10MB的內(nèi)存分配,并且總量超過可用物理內(nèi)存時,虛擬內(nèi)存調(diào)度中的顛簸(Thrashing)現(xiàn)象很少,調(diào)度準確、有一定預見性,系統(tǒng)性能有明顯提升。
【專利說明】大數(shù)據(jù)處理中的虛擬內(nèi)存管理方法及其裝置

【技術(shù)領(lǐng)域】
[0001] 本發(fā)明屬于計算機系統(tǒng)優(yōu)化【技術(shù)領(lǐng)域】,具體涉及一種大數(shù)據(jù)處理中的虛擬內(nèi)存管 理方法及其裝置。

【背景技術(shù)】
[0002] 雖然計算機硬件發(fā)展迅速,內(nèi)存容量增長很快,從KB級到MB級,再到GB級,一個 級別增長千倍,但需求也在不斷增長?,F(xiàn)在進入了大數(shù)據(jù)處理的時代,再多的內(nèi)存配置也不 能滿足所有的應(yīng)用需求。另一方面,大容量的內(nèi)存配置也意味著較高的硬件投入,人們總希 望配置一般的計算機也能處理大量的數(shù)據(jù)。
[0003] 相對內(nèi)存的容量與成本,磁盤具有成本低、容量大的特點,在這樣的背景下就出現(xiàn) 了虛擬內(nèi)存技術(shù)。虛擬內(nèi)存是指利用一部分硬盤存儲空間作為內(nèi)存來使用,以增加總的可 使用內(nèi)存量。當物理內(nèi)存用完后,操作系統(tǒng)選擇將內(nèi)存中的部分內(nèi)容寫到作為虛擬內(nèi)存的 交換文件上。
[0004] 由于計算機內(nèi)存的訪問速度遠遠高于硬盤的讀寫速度,虛擬內(nèi)存技術(shù)僅解決了物 理內(nèi)存不足的問題。當使用到虛擬內(nèi)存時,計算機的性能明顯下降。因此虛擬內(nèi)存技術(shù)總 希望找到最佳的虛擬內(nèi)存調(diào)度算法,盡量少使用虛擬內(nèi)存,盡量提前把下一步可能使用的 數(shù)據(jù)置換調(diào)入物理內(nèi)存。
[0005] 虛擬內(nèi)存管理主要的關(guān)鍵問題,一是調(diào)度:決定哪些數(shù)據(jù)應(yīng)被調(diào)入物理內(nèi)存中; 二是地址映射:把訪問地址變換成為物理內(nèi)存地址或虛內(nèi)存物理地址;三是替換:決定哪 些程序和數(shù)據(jù)應(yīng)被調(diào)出主存(物理內(nèi)存);四是更新:要確保主存與輔存(虛擬內(nèi)存)數(shù)據(jù) 的一致性。其中替換問題與調(diào)度問題一并統(tǒng)一作為調(diào)度問題來處理。
[0006] 虛擬內(nèi)存調(diào)度方式有分頁式、段式、段頁式3種。頁式調(diào)度是將邏輯和物理地址空 間都分成固定大小的頁。物理內(nèi)存按頁順序編號,而每個獨立編址的程序空間有自己的頁 號順序,通過調(diào)度虛擬存儲中程序的各頁可以離散裝入物理內(nèi)存中不同的頁面位置。段式 調(diào)度是按程序的邏輯結(jié)構(gòu)劃分地址空間,段的長度是隨意的,并且允許伸長。將這兩種方法 結(jié)合起來便構(gòu)成段頁式調(diào)度。
[0007] 在某些情況下,操作系統(tǒng)忙于從物理內(nèi)存到虛擬內(nèi)存調(diào)入、調(diào)出頁,CPU資源占用 很大,內(nèi)存操作等待時間很長,通常稱為顛簸(Thrashing)現(xiàn)象。
[0008] 操作系統(tǒng)通??梢园岩粋€當前不活動的進程所占用的內(nèi)存調(diào)出到虛擬內(nèi)存中,而 把正在操作的活動進程盡量放在物理內(nèi)存中。但是當一個進程占用的內(nèi)存就已超過物理內(nèi) 存容量時,操作系統(tǒng)虛擬內(nèi)存調(diào)試方法就有局限性。在這種情況下我們常遇到應(yīng)用軟件的 速度性能大幅度下降,甚至出現(xiàn)假死機現(xiàn)象。
[0009] 另一個問題是操作系統(tǒng)多考慮一般性問題,當物理內(nèi)存基本耗盡時,才開始調(diào)度 使用虛擬內(nèi)存,隨后如果內(nèi)存分配需求大的話,伴隨著大量的虛擬內(nèi)存調(diào)度,速度性能成指 數(shù)下降。
[0010] 一類大數(shù)據(jù)處理中需要大量分配內(nèi)存,每次分配的內(nèi)存較大,比如100KB到10MB, 而且很多分配的內(nèi)存尺寸是相同或相近的,比如處理同樣大小的大量數(shù)據(jù)。通常當分配總 量接近或超過可用的計算機物理內(nèi)存中,操作系統(tǒng)啟用虛擬內(nèi)存管理。但是操作系統(tǒng)虛擬 內(nèi)存管理并不能最佳化處理這種情況,虛擬內(nèi)存調(diào)度效率低、頻繁調(diào)入、調(diào)出,數(shù)據(jù)移動過 多等,會導致這類大數(shù)據(jù)處理在數(shù)據(jù)量很大的情況下,速度非常慢,甚至無法處理。


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

[0011] 本發(fā)明的目的在于為解決上述問題,提供一種大數(shù)據(jù)處理中的虛擬內(nèi)存管理方法 及其裝置,以優(yōu)化大數(shù)據(jù)處理中虛擬內(nèi)存的管理,減小虛擬內(nèi)存調(diào)度中的顛簸(Thrashing) 現(xiàn)象,加強虛擬內(nèi)存調(diào)度準確性、預見性,從而提升系統(tǒng)性能。
[0012] 本發(fā)明虛擬內(nèi)存管理方法的特征在于其中的虛擬內(nèi)存調(diào)度管理至少包括:
[0013] 1、內(nèi)存分配單元管理:基本處理和管理的內(nèi)存操作以內(nèi)存分配單元為單位,內(nèi) 存分配單元采用大小配對分配方法;大內(nèi)存分配時,安排一個分配單元,分配單元大小 mUnitSize =申請大小RequestSizeX 125%;前段BigMem區(qū)分配大數(shù)據(jù),后段LitMem區(qū)分 配小數(shù)據(jù);小內(nèi)存分配時,優(yōu)先在已安排的分配單元中找LitMem空閑區(qū),若找到分配單元 向后對齊,若未找到安排分配到小內(nèi)存分配區(qū)。
[0014] 2、內(nèi)存分配單元訪問關(guān)聯(lián)綜合指數(shù):反映內(nèi)存分配單元優(yōu)先調(diào)出到虛擬內(nèi)存的指 標,第η個分配單元訪問關(guān)聯(lián)綜合指數(shù):Xn =(當前時間-最后一次訪問時間)XFaXFm/ Fn2,其中時間單位是毫秒,F(xiàn)a為內(nèi)存分配單元平均訪問頻次,F(xiàn)m為內(nèi)存分配單元最大訪問 頻次,F(xiàn)n為第η個分配單元訪問頻次;當Xn>Xa時,第η個內(nèi)存分配單元可以調(diào)出到虛擬內(nèi) 存,其中Xa為訪問關(guān)聯(lián)綜合指數(shù)平均值。
[0015] 3、虛擬內(nèi)存調(diào)度匹配置換:
[0016] (1)虛擬內(nèi)存調(diào)度僅調(diào)入或調(diào)出內(nèi)存分配單元中較大的內(nèi)存塊,以減少調(diào)度執(zhí)行 次數(shù);
[0017] (2)內(nèi)存分配單元中較小的內(nèi)存塊需要時在物理內(nèi)存中移動,以少量的內(nèi)存數(shù)據(jù) 移動增加虛擬內(nèi)存調(diào)度轉(zhuǎn)換匹配率;
[0018] (3)虛擬內(nèi)存調(diào)度置換比較時,源和目標內(nèi)存分配單元大小只要75%相近就屬于 匹配可轉(zhuǎn)換對象;這樣在大數(shù)據(jù)處理中很多數(shù)據(jù)大小相近的情況下,虛擬內(nèi)存調(diào)度準確率 商、效率商;
[0019] (4)物理內(nèi)存中能否調(diào)出通過訪問關(guān)聯(lián)綜合指數(shù)來決定;
[0020] (5)總是保持必要可用物理內(nèi)存空間,稱為最小周轉(zhuǎn)備用區(qū)MinSpareMem,來保證 虛擬內(nèi)存調(diào)度過程不影響系統(tǒng)正常運行。
[0021] 本發(fā)明方法可以按以下步驟實現(xiàn):
[0022] 1、初始化:向操作系統(tǒng)申請一塊較大且連續(xù)的物理內(nèi)存,在磁盤創(chuàng)建或打開虛擬 內(nèi)存映像文件,文件大小為4G-32G,根據(jù)應(yīng)用配置來確定。注意此文件不是windows中的 PageFile. sys〇
[0023] 2、小內(nèi)存分配:申請分配小于BitMemSize的內(nèi)存時執(zhí)行小內(nèi)存分配,在已安排的 內(nèi)存分配單元中查找L_MemArea為空、且可用大小大于申請尺寸RequestSize的單元,找到 則記錄返回,未找到則在小內(nèi)存分配區(qū)內(nèi)分配。
[0024] 3、創(chuàng)建內(nèi)存分配單元:根據(jù)內(nèi)存分配申請尺寸大小RequestSize,在管理的物理 內(nèi)存建立一個大小為此91168七5丨26\125%的內(nèi)存分配單元并記錄,如果可用物理內(nèi)存小于 MinSpareMem時,啟動步驟9。
[0025] 4、大內(nèi)存分配:申請分配大于BitMemSize的內(nèi)存時執(zhí)行大內(nèi)存分配,如果有內(nèi)存 分配單元的BigMem區(qū)已釋放,且大小合適,則直接選用、記錄并返回;否則,如果可用物理 內(nèi)存小于最小周轉(zhuǎn)備用內(nèi)存MinSpareMem時,啟動調(diào)出任務(wù),同時執(zhí)行步驟3,然后把新單 元返回來申請者。
[0026] 5、小內(nèi)存位置調(diào)整:在內(nèi)存分配單元匹配處理時,因為不考慮小內(nèi)存區(qū)是否有數(shù) 據(jù),如果內(nèi)存分配單元被重新使用,且新的使用中BigMemSize會覆蓋到小內(nèi)存區(qū)時,小內(nèi) 存區(qū)需要進行移動,移動方法為執(zhí)行步驟2,并拷貝數(shù)據(jù),然后小內(nèi)存區(qū)初始化備用。
[0027] 6、一般內(nèi)存分配:根據(jù)申請內(nèi)存大小分別選擇執(zhí)行步驟2和步驟4。
[0028] 7、內(nèi)存數(shù)據(jù)訪問:根據(jù)地址映射表確定所訪問數(shù)據(jù)是否在物理內(nèi)存中,在物理內(nèi) 存中直接訪問,否則選擇執(zhí)行調(diào)出任務(wù),然后執(zhí)行調(diào)入任務(wù)并訪問數(shù)據(jù)。
[0029] 8、內(nèi)存分配單元匹配處理:源內(nèi)存分配單元大小為目標內(nèi)存分配單元的1/2?1 倍即為匹配成功;然后檢測目標內(nèi)存分配單元的小內(nèi)存分配區(qū)時否有數(shù)據(jù),源內(nèi)存分配單 元的大內(nèi)存區(qū)數(shù)據(jù)移到目標內(nèi)存分配單元時,是否會覆蓋目標內(nèi)存分配單元的小內(nèi)存數(shù) 據(jù),如果會覆蓋則執(zhí)行步驟5。
[0030] 9、內(nèi)存分配單元調(diào)出:根據(jù)內(nèi)存分配單元訪問關(guān)聯(lián)綜合指數(shù)以及調(diào)出大小需求, 選擇最合適調(diào)出的內(nèi)存分配單元,可以選擇調(diào)出幾個問關(guān)聯(lián)綜合指數(shù)相等的內(nèi)存分配單 元;如果被調(diào)出的內(nèi)存分配單元的小內(nèi)存分配區(qū)有數(shù)據(jù)則執(zhí)行步驟5。
[0031] 10、內(nèi)存分配單元調(diào)入:先執(zhí)行步驟8,如果未找到匹配的內(nèi)存分配單元則,則執(zhí) 行步驟3,將虛擬內(nèi)存中目標內(nèi)容拷貝到找到或新分配的內(nèi)存分配單元中,記錄更新地址映 射表。
[0032] 本發(fā)明裝置包括:
[0033] 訪問接口模塊:包含物理內(nèi)存管理和虛擬內(nèi)存管理初始化、內(nèi)存分配、內(nèi)存釋放、 讀數(shù)據(jù)、寫數(shù)據(jù)、帶緩沖讀數(shù)據(jù)、帶緩沖寫數(shù)據(jù)方法,虛擬內(nèi)存調(diào)度自動進行,不反映到接口 模塊,該模塊同時計算內(nèi)存分配單元訪問關(guān)聯(lián)綜合指數(shù),在內(nèi)存分配以及訪問過程中自動 計算,供虛擬內(nèi)存調(diào)度時決策哪些優(yōu)先調(diào)出。
[0034] 內(nèi)存分配管理模塊:管理本裝置可以使用的物理內(nèi)存空間以及輔存虛擬內(nèi)存空 間,執(zhí)行內(nèi)存分配、釋放,管理地址映射表,必要時啟動調(diào)出任務(wù)管理模塊,或啟動調(diào)入執(zhí)行 程序、調(diào)出執(zhí)行程序;內(nèi)存分配以本發(fā)明的內(nèi)存分配單元結(jié)構(gòu)形式來管理,內(nèi)存分配包含大 內(nèi)存塊分配和小內(nèi)存分配兩條路線,以大內(nèi)存分配為優(yōu)先,為了適應(yīng)大內(nèi)存分配,小內(nèi)存區(qū) LitMem可以移動。
[0035] 調(diào)入執(zhí)行模塊:執(zhí)行從虛擬內(nèi)存調(diào)入一個分配單元到物理內(nèi)存的過程,其中包含 在物理內(nèi)存中查找或分配一個相匹配的內(nèi)存分配單元,更新地址映射表,從輔存調(diào)入數(shù)據(jù)。
[0036] 調(diào)出任務(wù)管理模塊:以一個獨立線程的形式的記錄和執(zhí)行調(diào)出任務(wù),盡量減少虛 擬內(nèi)存調(diào)度過程不影響主線程操作。
[0037] 調(diào)出執(zhí)行模塊:執(zhí)行從物理內(nèi)存中的調(diào)出一個內(nèi)存分配單元到虛擬內(nèi)存的過程, 包括檢測和處理移動目標中LitMem區(qū)的數(shù)據(jù)、移動數(shù)據(jù)到虛擬內(nèi)存、更新地址映射表,初 始化移出后的內(nèi)存分配單元步驟。
[0038] 初始化模塊:啟動本裝置進入正常工作狀態(tài)進行的初始化工作,包括裝置所管理 的物理內(nèi)存、虛擬內(nèi)存、地址映射表;加載配置和運行統(tǒng)計信息對裝置各個模塊進行配置。
[0039] 本發(fā)明的有益效果:大數(shù)據(jù)處理中一個處理過程相關(guān)數(shù)據(jù)量經(jīng)常超過可用物理內(nèi) 存量,操作系統(tǒng)提供的一般化虛擬內(nèi)存管理方法解決了容量問題,但效率并不高。本發(fā)明的 方法和裝置在大數(shù)據(jù)處理中,有效減小虛擬內(nèi)存調(diào)度中的顛簸(Thrashing)現(xiàn)象,加強虛 擬內(nèi)存調(diào)度準確性、預見性,在用到虛擬內(nèi)存的大數(shù)據(jù)處理中系統(tǒng)的速度性能和穩(wěn)定性有 實質(zhì)性提高。實際軟件開發(fā)中當物理內(nèi)存不足時,快速申請大塊內(nèi)存,操作系統(tǒng)返回都為分 配失敗,而不是虛擬內(nèi)存調(diào)度后能夠成功分配,這樣應(yīng)用系統(tǒng)也就不能繼續(xù)處理任務(wù)。本發(fā) 明有效地解決了這一個問題,物理內(nèi)存不足時,使用虛擬內(nèi)存,僅是速度略慢。

【專利附圖】

【附圖說明】
[0040] 圖1本發(fā)明的包含虛擬調(diào)度管理的內(nèi)存分配流程圖;
[0041] 圖2本發(fā)明的內(nèi)存分配單元以及虛擬內(nèi)存調(diào)試單元結(jié)構(gòu)圖;
[0042] 圖3本發(fā)明的物理內(nèi)存分配狀態(tài)示意圖;
[0043] 圖4本發(fā)明的包含虛擬調(diào)度管理的內(nèi)存數(shù)據(jù)訪問流程圖;
[0044] 圖5本發(fā)明虛擬內(nèi)存數(shù)據(jù)調(diào)出(從物理內(nèi)存到輔存)處理流程;
[0045] 圖6本發(fā)明虛擬內(nèi)存數(shù)據(jù)調(diào)入(從輔存到物理內(nèi)存)處理流程;
[0046] 圖7本發(fā)明裝置模塊組成結(jié)構(gòu)示意圖。

【具體實施方式】
[0047] 下面結(jié)合附圖對本發(fā)明的實施方式的技術(shù)方案進行詳細、完整的闡述。
[0048] 本發(fā)明提供一種虛擬內(nèi)存調(diào)度管理方法,其至少包括:內(nèi)存分配單元管理方法、虛 擬內(nèi)存調(diào)度匹配置換方法、內(nèi)存分配單元訪問關(guān)聯(lián)綜合指數(shù)。下面闡述主要工作流程。
[0049] 如圖1所示,本發(fā)明虛擬內(nèi)存管理方法中,包含虛擬調(diào)度管理的內(nèi)存分配流程:
[0050] S100、當一個數(shù)據(jù)處理應(yīng)用申請大小為RequestSize內(nèi)存時,進入該流程,包括:
[0051] S101判斷申請內(nèi)存大小,是否屬于大內(nèi)存范疇,如果是大內(nèi)存執(zhí)行S102,否 則執(zhí)行S110。本發(fā)明中,大內(nèi)存是數(shù)據(jù)處理應(yīng)用申請分配尺寸較大的內(nèi)存,例如大小 100KB。反之小內(nèi)存指申請分配尺寸較小的內(nèi)存,例如小于100KB。大內(nèi)存的分界線大小以 BigMemSize來表示。本發(fā)明重點針對大數(shù)據(jù)處理中,大量分配大內(nèi)存的特點,虛擬內(nèi)存調(diào)度 的重點也是針對大內(nèi)存。
[0052] S102檢測當次內(nèi)存分配是否啟動虛擬內(nèi)存調(diào)出程序。當MaxAvailPhyMem-AllocatedMem〈MinSpareMem時需要啟動調(diào)出任務(wù)S103,否則執(zhí)行S105。其中 MaxAvailPhyMem為本發(fā)明裝置所管理的物理內(nèi)存大小,AllocatedMem為已分配的物理內(nèi) 存大小,MinSpareMem為最小周轉(zhuǎn)備用物理內(nèi)存大小。
[0053] S103執(zhí)行符合調(diào)出條件的內(nèi)存分配單元匹配查找程序,如果找到合適調(diào)出的內(nèi)存 分配單元,執(zhí)行調(diào)出程序S104,否則執(zhí)行傳統(tǒng)虛擬調(diào)度方法S108,調(diào)出一段最長時間未訪 問的內(nèi)存分配單元。其中調(diào)出條件由內(nèi)存分配單元訪問關(guān)聯(lián)綜合指數(shù)來決定,該指數(shù)在下 面說明。
[0054] S105執(zhí)行大內(nèi)存分配區(qū)空閑的內(nèi)存分配單元查找程序,找到執(zhí)行S106分配方式, 否找到則執(zhí)行S107。其中內(nèi)存分配單元的大內(nèi)存分配區(qū)和小內(nèi)存分配區(qū)見圖2說明。
[0055] 5107安排新的內(nèi)存分配單元麻^麻仏11^11行5丨26 = 1^9脫8七5丨26\125%,置麻仏 BigAreaSize = RequestSize,MAU. LitAreaSize = RequestSize/4〇
[0056] S110查找內(nèi)存分配單元中小內(nèi)存分配區(qū)是否有合適未用的單元,若有則記錄分配 并返回成功;未找到則執(zhí)行S111,從圖2,S206小內(nèi)存分配區(qū)安排內(nèi)存分配。內(nèi)存分配單元 MAU 的 MAU. mUnitSize-MAU. BigAreaSize = RequestSize ?RequestSizeX2,即為匹配。
[0057] 如圖2,本發(fā)明虛擬內(nèi)存管理方法中包括內(nèi)存分配單元管理方法:
[0058] 本發(fā)明基本處理和管理的內(nèi)存操作以內(nèi)存分配單元為單位,內(nèi)存分配單元采用大 小配對分配方法,如圖2所示。大內(nèi)存分配時,安排一個分配單元,分配單元大小mUnitSize =申請大小RequestSizeX 125% ;前段BigMem區(qū)分配大數(shù)據(jù),后段LitMem區(qū)分配小數(shù)據(jù); 小內(nèi)存分配時,優(yōu)先在已安排的分配單元中找LitMem空閑區(qū),若找到分配單元向后對齊, 若未找到安排分配到小內(nèi)存分配區(qū)。
[0059] 其中內(nèi)存分配單兀的最小值由配置參數(shù)確定,記為BigMemSize。大于BigMemSize 的內(nèi)存分配采用大內(nèi)存分配流程,小于BigMemSize采用小內(nèi)存分配流程。
[0060] 另外,內(nèi)存分配單元中BigMem與LitMem區(qū)之間通常有留空,通過較少的分配 浪費,獲得較好的性能。在內(nèi)存分配單元匹配、置換中,主要以考慮BigMem,留空可以擴 張、壓縮,LitMem如果有數(shù)據(jù)也可以移動到其它位置。因此內(nèi)存分配單元MAU的初始 值是MAU. BigAreaSize = MAU.mUnitSizeX75%,通過調(diào)度、置換、重新分配等過程后, MAU. BigAreaSize 的控制范圍是 MAU. mUnitSize X 50 % ?MAU. mUnitSize X 100 %,MAU. LitAreaSize的控制范圍是0?MAU. mUnitSizeXSO%。同樣內(nèi)存分配單元中留空部分范 圍是 0 ?MAU. mUnitSizeX50%。
[0061] 如圖4,本發(fā)明虛擬內(nèi)存管理方法中內(nèi)存數(shù)據(jù)訪問流程S400 :
[0062] S402、根據(jù)地址映射表判斷所訪問的數(shù)據(jù)是否在輔存(虛擬內(nèi)存)中,若是則執(zhí)行 S404,否則執(zhí)行正常訪問流程。地址映射表僅記錄內(nèi)存分配單元地址、內(nèi)存分配地址、內(nèi)存 分配單元訪問信息等數(shù)據(jù),本說明書不對此深入闡述。
[0063] S404如果有調(diào)出任務(wù)未執(zhí)行,則先執(zhí)行調(diào)出任務(wù)S406,確保有足夠物理內(nèi)存空間 可以調(diào)入需要訪問的數(shù)據(jù)。
[0064] S408執(zhí)行調(diào)入處理流程S600,從輔存調(diào)入所要訪問的內(nèi)存分配單元。
[0065] 可選地,內(nèi)存分配單元訪問關(guān)聯(lián)綜合指數(shù)相等的連續(xù)幾個內(nèi)存分配單元可以加入 到調(diào)入任務(wù),在系統(tǒng)操作的過程中,后臺調(diào)入隨后可能訪問到的內(nèi)存分配單元。
[0066] 如圖5,本發(fā)明虛擬內(nèi)存管理方法中內(nèi)存分配單元調(diào)出流程S500,從物理內(nèi)存中 把一個內(nèi)存分配單元調(diào)出到輔存(虛擬內(nèi)存):
[0067] S502、檢測內(nèi)存分配單元中小內(nèi)存區(qū)L_MemArea是否使用,如果使用了則執(zhí)行 S504,將小內(nèi)存移動到其它位置。
[0068] S506把內(nèi)存分配單元拷貝到輔存(虛擬內(nèi)存),變更地址映射表。其中輔存上虛 擬內(nèi)存存儲文件在初始化時創(chuàng)建或打開。為了減少管理復雜性,該文件預分配較大的空間, 例如4G?32G,以便提高訪問速度和減少磁盤碎片。每次程序啟動運行時,指針置0,隨后 以增量存儲的方式向后存調(diào)出數(shù)據(jù)。
[0069] 如圖6,本發(fā)明虛擬內(nèi)存管理方法中內(nèi)存分配單元調(diào)入出流程S600,從輔存(虛擬 內(nèi)存)調(diào)入需要訪問的內(nèi)存分配單元或隨后訪問機率較大且數(shù)據(jù)位置處于輔存中的內(nèi)存 分配單元。調(diào)入單元大小為mUnitSizeA。
[0070] S602在物理內(nèi)存中的內(nèi)存分配單元MAU中查找匹配單元,S卩MAU. BigMem未使用, 且 mUnitSizeA = MAU. mUnitSize/2 ?MAU. mUnitSize。找到執(zhí)行 S606,未找到執(zhí)行 S604。
[0071] S604安排一個新的內(nèi)存分配單兀MAU,MAU. mUnitSize = mUnitSizeA,詳細操作步 驟見圖1說明。
[0072] S606檢測找到的內(nèi)存分配單元MAU,MAU. LitMem如果有內(nèi)容則移到其它位置,MAU 初始化。
[0073] S608從輔存(虛擬內(nèi)存)拷貝所需調(diào)入的數(shù)據(jù)到物理內(nèi)存中找到或新分配的內(nèi)存 分配單元,更新地址映射表。
[0074] 本發(fā)明虛擬內(nèi)存管理方法中內(nèi)存分配單元訪問關(guān)聯(lián)綜合指數(shù)是判定內(nèi)存分配單 元優(yōu)先調(diào)出選擇的依據(jù),也是預測虛擬內(nèi)存提前調(diào)入和調(diào)出的依據(jù),包括:
[0075] 第η個分配單元訪問關(guān)聯(lián)綜合指數(shù):Xn =(當前時間-最后一次訪問時 間)XFaXFm/Fn2。其中時間單位是毫秒,F(xiàn)a為內(nèi)存分配單元平均訪問頻次,F(xiàn)m為內(nèi)存分 配單元最大訪問頻次,F(xiàn)n為第η個分配單元訪問頻次。當Xn>Xa時,第η個內(nèi)存分配單元 可以調(diào)出到虛擬內(nèi)存,其中Xa為訪問關(guān)聯(lián)綜合指數(shù)平均值。
[0076] 其中內(nèi)存訪問單元記錄以毫秒為單位的最后一次訪問時間、訪問次數(shù)。當執(zhí)行內(nèi) 存數(shù)據(jù)訪問程序S400時更新上述各個值。創(chuàng)建內(nèi)存分配單元時初始化Xn = 0, Fn = 1。
[0077] 本發(fā)明提供一種基于上述方法的虛擬內(nèi)存管理裝置,包括:
[0078] 訪問接口模塊:為系統(tǒng)應(yīng)用提供內(nèi)存分配、數(shù)據(jù)訪問的功能。包含物理內(nèi)存管理和 虛擬內(nèi)存管理初始化,指定使用物理內(nèi)存的大小和虛擬內(nèi)存初始文件大??;內(nèi)存分配、內(nèi)存 釋放、讀數(shù)據(jù)、寫數(shù)據(jù)、帶緩沖讀數(shù)據(jù)、帶緩沖寫數(shù)據(jù)等方法。虛擬內(nèi)存調(diào)度自動進行,不反 映到接口模塊。該模塊同時計算內(nèi)存分配單元訪問關(guān)聯(lián)綜合指數(shù),在內(nèi)存分配以及訪問過 程中自動計算,供虛擬內(nèi)存調(diào)度時決策哪些優(yōu)先調(diào)出。
[0079] 內(nèi)存分配管理模塊:管理本裝置可以使用的物理內(nèi)存空間以及輔存虛擬內(nèi)存空 間,執(zhí)行內(nèi)存分配、釋放,管理地址映射表,物理內(nèi)存較少時,啟動調(diào)出任務(wù)管理模塊,或啟 動調(diào)入執(zhí)行程序、調(diào)出執(zhí)行程序。內(nèi)存分配以本發(fā)明的內(nèi)存分配單元結(jié)構(gòu)形式來管理,如圖 2。內(nèi)存分配包含大內(nèi)存塊分配和小內(nèi)存分配兩條路線,以大內(nèi)存分配為優(yōu)先,為了適應(yīng)大 內(nèi)存分配,小內(nèi)存區(qū)LitMem可以移動。
[0080] 調(diào)入執(zhí)行模塊:執(zhí)行從虛擬內(nèi)存(輔存)調(diào)入一個分配單元到物理內(nèi)存的過程。 其中包含在物理內(nèi)存中查找或分配一個相匹配的內(nèi)存分配單元,更新地址映射表,從輔存 調(diào)入數(shù)據(jù)等。
[0081] 調(diào)出任務(wù)管理模塊:裝置啟動時,創(chuàng)建一個獨立線程專門用來執(zhí)行調(diào)出任務(wù),即從 物理內(nèi)存調(diào)出一些較長時間不使用的內(nèi)存分配單元,該模塊主要包含調(diào)出任務(wù)隊列管理和 調(diào)用執(zhí)行調(diào)出任務(wù)。通過后臺運行的獨立線程方式執(zhí)行調(diào)出任務(wù),盡量減少虛擬內(nèi)存調(diào)度 過程不影響主線程操作。
[0082] 調(diào)出執(zhí)行模塊:執(zhí)行從物理內(nèi)存中的調(diào)出一個內(nèi)存分配單元到虛擬內(nèi)存(輔存) 的過程,包括檢測和處理移動目標中LitMem區(qū)的數(shù)據(jù)、移動數(shù)據(jù)到輔存、更新地址映射表, 初始化移出后的內(nèi)存分配單元等步驟。
[0083] 初始化模塊:啟動本發(fā)明裝置進入正常工作狀態(tài)進行的必要初始化工作,包括裝 置所管理的物理內(nèi)存、輔存(虛擬內(nèi)存)、地址映射表,創(chuàng)建調(diào)出任務(wù)管理線程;加載配置和 運行統(tǒng)計信息對裝置各個模塊進行配置。
[0084] 本發(fā)明的虛擬內(nèi)存管理裝置按以下步驟工作:
[0085] 步驟1 :初始化:向操作系統(tǒng)申請一塊較大且連續(xù)的物理內(nèi)存,由本裝置管理,在 磁盤創(chuàng)建或打開虛擬內(nèi)存映像文件,文件大小約為4G-32G,根據(jù)應(yīng)用配置和可用輔存容量 來確定,此文件不是windows中的PageFile. sys。虛擬內(nèi)存映像文件大小的設(shè)置原則隨后 有更多說明。如圖2,初始化物理內(nèi)存結(jié)構(gòu)以及地址映射表,以備內(nèi)存分配和訪問使用;創(chuàng) 建調(diào)出任務(wù)管理線程。
[0086] 步驟2 :小內(nèi)存分配:如圖2,申請分配小于BitMemSize的內(nèi)存時執(zhí)行小內(nèi) 存分配。在已安排的內(nèi)存分配單元中查找L_MemA rea為空、且可用大小大于申請尺寸 RequestSize的單元,找到則記錄返回,未找到則在小內(nèi)存分配區(qū)內(nèi)分配。
[0087] 步驟3 :創(chuàng)建內(nèi)存分配單元:如圖2,根據(jù)內(nèi)存分配申請尺寸大小RequestSize,在 本裝置管理的物理內(nèi)存建立一個大小為Reque StSiZeX125%的內(nèi)存分配單元并記錄。如果 可用物理內(nèi)存小于MinSpareMem時,啟動步驟9。
[0088] 步驟4 :大內(nèi)存分配:申請分配大于BitMemSize的內(nèi)存時執(zhí)行大內(nèi)存分配。如果 有內(nèi)存分配單元的BigMem區(qū)已釋放,且大小合適,則直接選用、記錄并返回。否則,如果可 用物理內(nèi)存小于最小周轉(zhuǎn)備用內(nèi)存MinSpareMem時,啟動調(diào)出任務(wù)。同時執(zhí)行步驟3,然后 把新單元返回來申請者。
[0089] 步驟5 :小內(nèi)存位置調(diào)整:在內(nèi)存分配單元匹配處理時,因為不考慮小內(nèi)存區(qū)是否 有數(shù)據(jù),如果內(nèi)存分配單元被重新使用,且新的使用中BigMemSize會覆蓋到小內(nèi)存區(qū)時, 小內(nèi)存區(qū)需要進行移動。移動方法為執(zhí)行步驟2,并拷貝數(shù)據(jù),然后小內(nèi)存區(qū)初始化備用。
[0090] 步驟6 :-般內(nèi)存分配。如圖1,根據(jù)申請內(nèi)存大小分別選擇執(zhí)行步驟2和步驟4。 [0091] 步驟7 :內(nèi)存數(shù)據(jù)訪問:如圖4,根據(jù)地址映射表確定所訪問數(shù)據(jù)是否在物理內(nèi)存 中,在物理內(nèi)存中直接訪問,否則選擇執(zhí)行調(diào)出任務(wù),然后執(zhí)行調(diào)入任務(wù)并訪問數(shù)據(jù)。內(nèi)存 數(shù)據(jù)訪問時更新內(nèi)存分配單元的最后訪問時間以及訪問次數(shù),這是計算訪問關(guān)聯(lián)綜合指數(shù) 的重要數(shù)據(jù)。
[0092] 步驟8 :內(nèi)存分配單元匹配處理:源內(nèi)存分配單元大小為目標內(nèi)存分配單元的 1/2?1倍即為匹配成功。然后檢測目標內(nèi)存分配單元的小內(nèi)存分配區(qū)時否有數(shù)據(jù),源內(nèi)存 分配單元的大內(nèi)存區(qū)數(shù)據(jù)移到目標內(nèi)存分配單元時,是否會覆蓋目標內(nèi)存分配單元的小內(nèi) 存數(shù)據(jù),如果會覆蓋則執(zhí)行步驟5。
[0093] 步驟9 :內(nèi)存分配單元調(diào)出:如圖5,根據(jù)內(nèi)存分配單元訪問關(guān)聯(lián)綜合指數(shù)以及調(diào) 出大小需求,選擇最合適調(diào)出的內(nèi)存分配單元,可以選擇調(diào)出幾個問關(guān)聯(lián)綜合指數(shù)相等的 內(nèi)存分配單元。如果被調(diào)出的內(nèi)存分配單元的小內(nèi)存分配區(qū)有數(shù)據(jù)則執(zhí)行步驟5。
[0094] 步驟10 :內(nèi)存分配單元調(diào)入:如圖6,先執(zhí)行步驟8,如果未找到匹配的內(nèi)存分配單 元則,則執(zhí)行步驟3,將輔存(虛擬內(nèi)存)中目標內(nèi)容拷貝到找到或新分配的內(nèi)存分配單元 中,記錄更新地址映射表。
[0095] 步驟11 :計算內(nèi)存分配單元訪問關(guān)聯(lián)綜合指數(shù):在調(diào)出內(nèi)存分配單元查找匹配 時,計算當前的訪問關(guān)聯(lián)綜合指數(shù),每個內(nèi)存分配單元的訪問關(guān)聯(lián)綜合指數(shù)Xn =(當前時 間-最后一次訪問時間)XFaXFm/Fn2,詳細見前面訪問關(guān)聯(lián)綜合指數(shù)計算方法。
[0096] 以上是本發(fā)明提出的針對大數(shù)據(jù)處理的虛擬內(nèi)存調(diào)度管理方法及其裝置,以下 對我們應(yīng)用本發(fā)明前后的情況進行說明:
[0097] 本發(fā)明應(yīng)用測試計算機為通用微型計算機,內(nèi)存配置為2G-32G,一次實時處理數(shù) 據(jù)約為2000-10000幀圖像數(shù)據(jù),每幀數(shù)據(jù)大小約為512KB?25MB,根據(jù)大數(shù)據(jù)處理需要,每 個數(shù)據(jù)的處理需要存放原始數(shù)據(jù)、處理中間數(shù)據(jù)以及顯示緩沖數(shù)據(jù),約為原數(shù)據(jù)大小的2. 5 倍;實際一次實時處理需要內(nèi)存約為6GB - 32GB,BigMemSize = 512KB。
[0098] 本發(fā)明輔存虛擬內(nèi)存文件大小按以下原則配置:
[0099] ㈧盡量以高速磁盤,例如固態(tài)硬盤、SAS盤為優(yōu)先;
[0100] (B)如果同操作系統(tǒng)在一個盤,則除了虛擬內(nèi)存文件外還需保證剩余容量不低于 總磁盤容量的1/10 ;
[0101] (C)在滿足上述條件下,在4GB?32GB范圍選擇較大的值來設(shè)置虛擬內(nèi)存文件大 小。
[0102] 采用操作系統(tǒng)提供的虛擬內(nèi)存管理或一些已公開的相關(guān)虛擬內(nèi)存管理方法,當次 實時處理數(shù)據(jù)量大于可用物理物理內(nèi)存時,常見內(nèi)存分配失敗、數(shù)據(jù)訪問速率低于直接從 磁盤讀數(shù)據(jù)的速率、系統(tǒng)出現(xiàn)長時間等待未響應(yīng)等,采用本發(fā)明方法和裝置針后,不會出現(xiàn) 內(nèi)存分配失敗的情況,數(shù)據(jù)訪問速率不低于讀磁盤速度,同時提前調(diào)度預見性有所提高。
[0103] 以上所述僅為本發(fā)明的一個實施例,并不能以此限制本發(fā)明,凡在本發(fā)明的思想 和方法范圍內(nèi),所做的任何修改、改進,均應(yīng)包含在本發(fā)明保護的范圍之內(nèi)。
【權(quán)利要求】
1. 一種大數(shù)據(jù)處理中的虛擬內(nèi)存管理方法,其特征在于其中的虛擬內(nèi)存調(diào)度管理至少 包括: (1) 、內(nèi)存分配單元管理:基本處理和管理的內(nèi)存操作以內(nèi)存分配單元為單位,內(nèi) 存分配單元采用大小配對分配方法;大內(nèi)存分配時,安排一個分配單元,分配單元大小 mUnitSize =申請大小RequestSizeX 125%;前段BigMem區(qū)分配大數(shù)據(jù),后段LitMem區(qū)分 配小數(shù)據(jù);小內(nèi)存分配時,優(yōu)先在已安排的分配單元中找LitMem空閑區(qū),若找到分配單元 向后對齊,若未找到安排分配到小內(nèi)存分配區(qū); (2) 、內(nèi)存分配單元訪問關(guān)聯(lián)綜合指數(shù):反映內(nèi)存分配單元優(yōu)先調(diào)出到虛擬內(nèi)存的指 標,第η個分配單元訪問關(guān)聯(lián)綜合指數(shù):Xn =(當前時間-最后一次訪問時間)XFaXFm/ Fn2,其中時間單位是毫秒,F(xiàn)a為內(nèi)存分配單元平均訪問頻次,F(xiàn)m為內(nèi)存分配單元最大訪問 頻次,F(xiàn)n為第η個分配單元訪問頻次;當Xn>Xa時,第η個內(nèi)存分配單元可以調(diào)出到虛擬內(nèi) 存,其中Xa為訪問關(guān)聯(lián)綜合指數(shù)平均值; (3) 、虛擬內(nèi)存調(diào)度匹配置換: (a) 虛擬內(nèi)存調(diào)度僅調(diào)入或調(diào)出內(nèi)存分配單元中較大的內(nèi)存塊,以減少調(diào)度執(zhí)行次 數(shù); (b) 內(nèi)存分配單元中較小的內(nèi)存塊需要時在物理內(nèi)存中移動,以少量的內(nèi)存數(shù)據(jù)移動 增加虛擬內(nèi)存調(diào)度轉(zhuǎn)換匹配率; (c) 虛擬內(nèi)存調(diào)度置換比較時,源和目標內(nèi)存分配單元大小只要75%相近就屬于匹配 可轉(zhuǎn)換對象;這樣在大數(shù)據(jù)處理中很多數(shù)據(jù)大小相近的情況下,虛擬內(nèi)存調(diào)度準確率高、效 率1? ; (d) 物理內(nèi)存中能否調(diào)出通過訪問關(guān)聯(lián)綜合指數(shù)來決定; (e) 總是保持必要可用物理內(nèi)存空間,稱為最小周轉(zhuǎn)備用區(qū)MinSpareMem,來保證虛擬 內(nèi)存調(diào)度過程不影響系統(tǒng)正常運行。
2. 如權(quán)利要求1所述的大數(shù)據(jù)處理中的虛擬內(nèi)存管理方法,其特征在于虛擬內(nèi)存調(diào)度 管理按以下步驟實現(xiàn): a、 初始化:向操作系統(tǒng)申請一塊較大且連續(xù)的物理內(nèi)存,在磁盤創(chuàng)建或打開虛擬內(nèi) 存映像文件,文件大小為4G-32G,根據(jù)應(yīng)用配置來確定。注意此文件不是windows中的 PageFile. sys〇 b、 小內(nèi)存分配:申請分配小于BitMemSize的內(nèi)存時執(zhí)行小內(nèi)存分配,在已安排的內(nèi)存 分配單元中查找L_MemArea為空、且可用大小大于申請尺寸RequestSize的單元,找到則記 錄返回,未找到則在小內(nèi)存分配區(qū)內(nèi)分配。 c、 創(chuàng)建內(nèi)存分配單元:根據(jù)內(nèi)存分配申請尺寸大小RequestSize,在管理的物理內(nèi)存 建立一個大小為RequestSizeX 125 %的內(nèi)存分配單元并記錄,如果可用物理內(nèi)存小于 MinSpareMem時,啟動步驟9。 d、 大內(nèi)存分配:申請分配大于BitMemSize的內(nèi)存時執(zhí)行大內(nèi)存分配,如果有內(nèi)存分配 單元的BigMem區(qū)已釋放,且大小合適,則直接選用、記錄并返回;否則,如果可用物理內(nèi)存 小于最小周轉(zhuǎn)備用內(nèi)存MinSpareMem時,啟動調(diào)出任務(wù),同時執(zhí)行步驟3,然后把新單元返 回來申請者。 e、 小內(nèi)存位置調(diào)整:在內(nèi)存分配單元匹配處理時,因為不考慮小內(nèi)存區(qū)是否有數(shù)據(jù),如 果內(nèi)存分配單元被重新使用,且新的使用中BigMemSize會覆蓋到小內(nèi)存區(qū)時,小內(nèi)存區(qū)需 要進行移動,移動方法為執(zhí)行步驟2,并拷貝數(shù)據(jù),然后小內(nèi)存區(qū)初始化備用。 f、 一般內(nèi)存分配:根據(jù)申請內(nèi)存大小分別選擇執(zhí)行步驟2和步驟4。 g、 內(nèi)存數(shù)據(jù)訪問:根據(jù)地址映射表確定所訪問數(shù)據(jù)是否在物理內(nèi)存中,在物理內(nèi)存中 直接訪問,否則選擇執(zhí)行調(diào)出任務(wù),然后執(zhí)行調(diào)入任務(wù)并訪問數(shù)據(jù)。 h、 內(nèi)存分配單元匹配處理:源內(nèi)存分配單元大小為目標內(nèi)存分配單元的1/2?1倍即 為匹配成功;然后檢測目標內(nèi)存分配單元的小內(nèi)存分配區(qū)時否有數(shù)據(jù),源內(nèi)存分配單元的 大內(nèi)存區(qū)數(shù)據(jù)移到目標內(nèi)存分配單元時,是否會覆蓋目標內(nèi)存分配單元的小內(nèi)存數(shù)據(jù),如 果會覆蓋則執(zhí)行步驟5。 i、 內(nèi)存分配單元調(diào)出:根據(jù)內(nèi)存分配單元訪問關(guān)聯(lián)綜合指數(shù)以及調(diào)出大小需求,選擇 最合適調(diào)出的內(nèi)存分配單元,可以選擇調(diào)出幾個問關(guān)聯(lián)綜合指數(shù)相等的內(nèi)存分配單元;如 果被調(diào)出的內(nèi)存分配單元的小內(nèi)存分配區(qū)有數(shù)據(jù)則執(zhí)行步驟5。 j、 內(nèi)存分配單元調(diào)入:先執(zhí)行步驟8,如果未找到匹配的內(nèi)存分配單元則,則執(zhí)行步驟 3,將虛擬內(nèi)存中目標內(nèi)容拷貝到找到或新分配的內(nèi)存分配單元中,記錄更新地址映射表。
3. -種大數(shù)據(jù)處理中的虛擬內(nèi)存管理裝置,其特征在于包括: 訪問接口模塊:為系統(tǒng)應(yīng)用提供內(nèi)存分配、數(shù)據(jù)訪問的功能,包含物理內(nèi)存管理和虛 擬內(nèi)存管理初始化,指定使用物理內(nèi)存的大小和虛擬內(nèi)存初始文件大小;內(nèi)存分配、內(nèi)存釋 放、讀數(shù)據(jù)、寫數(shù)據(jù)、帶緩沖讀數(shù)據(jù)、帶緩沖寫數(shù)據(jù);虛擬內(nèi)存調(diào)度自動進行,不反映到接口 模塊;該模塊同時計算內(nèi)存分配單元訪問關(guān)聯(lián)綜合指數(shù),在內(nèi)存分配以及訪問過程中自動 計算,供虛擬內(nèi)存調(diào)度時決策哪些優(yōu)先調(diào)出; 內(nèi)存分配管理模塊:管理本裝置可以使用的物理內(nèi)存空間以及輔存虛擬內(nèi)存空間,執(zhí) 行內(nèi)存分配、釋放,管理地址映射表,物理內(nèi)存較少時,啟動調(diào)出任務(wù)管理模塊,或啟動調(diào)入 執(zhí)行程序、調(diào)出執(zhí)行程序;內(nèi)存分配以本發(fā)明的內(nèi)存分配單元結(jié)構(gòu)形式來管理;內(nèi)存分配 包含大內(nèi)存塊分配和小內(nèi)存分配兩條路線,以大內(nèi)存分配為優(yōu)先,為了適應(yīng)大內(nèi)存分配,小 內(nèi)存區(qū)LitMem可以移動; 調(diào)入執(zhí)行模塊:執(zhí)行從虛擬內(nèi)存調(diào)入一個分配單元到物理內(nèi)存的過程;其中包含在 物理內(nèi)存中查找或分配一個相匹配的內(nèi)存分配單元,更新地址映射表,從輔存調(diào)入數(shù)據(jù); 調(diào)出任務(wù)管理模塊:裝置啟動時,創(chuàng)建一個獨立線程專門用來執(zhí)行調(diào)出任務(wù),即從物理 內(nèi)存調(diào)出一些較長時間不使用的內(nèi)存分配單元,該模塊主要包含調(diào)出任務(wù)隊列管理和調(diào)用 執(zhí)行調(diào)出任務(wù);通過后臺運行的獨立線程方式執(zhí)行調(diào)出任務(wù),盡量減少虛擬內(nèi)存調(diào)度過程 不影響主線程操作; 調(diào)出執(zhí)行模塊:執(zhí)行從物理內(nèi)存中的調(diào)出一個內(nèi)存分配單元到虛擬內(nèi)存的過程,包括 檢測和處理移動目標中LitMem區(qū)的數(shù)據(jù)、移動數(shù)據(jù)到輔存、更新地址映射表,初始化移出 后的內(nèi)存分配單元; 初始化模塊:啟動本發(fā)明裝置進入正常工作狀態(tài)進行的必要初始化工作,包括裝置所 管理的物理內(nèi)存、虛擬內(nèi)存、地址映射表,創(chuàng)建調(diào)出任務(wù)管理線程;加載配置和運行統(tǒng)計信 息對裝置各個模塊進行配置。
4. 如權(quán)利要求3說的虛擬內(nèi)存管理裝置,其特征在于按以下步驟工作: a、初始化:向操作系統(tǒng)申請一塊較大且連續(xù)的物理內(nèi)存,由本裝置管理,在磁盤創(chuàng)建或 打開虛擬內(nèi)存映像文件,文件大小為4G-32G,根據(jù)應(yīng)用配置和可用輔存容量來確定,初始化 物理內(nèi)存結(jié)構(gòu)以及地址映射表,以備內(nèi)存分配和訪問使用;創(chuàng)建調(diào)出任務(wù)管理線程; b、 小內(nèi)存分配:申請分配小于BitMemSize的內(nèi)存時執(zhí)行小內(nèi)存分配,在已安排的內(nèi)存 分配單元中查$L_MemArea為空、且可用大小大于申請尺寸RequestSize的單元,找到則記 錄返回,未找到則在小內(nèi)存分配區(qū)內(nèi)分配; c、 創(chuàng)建內(nèi)存分配單元:根據(jù)內(nèi)存分配申請尺寸大小RequestSize,在本裝置管理的物 理內(nèi)存建立一個大小為1^91168七5丨26\125%的內(nèi)存分配單元并記錄。如果可用物理內(nèi)存小 于MinSpareMem時,啟動步驟9 ; d、 大內(nèi)存分配:申請分配大于BitMemSize的內(nèi)存時執(zhí)行大內(nèi)存分配;如果有內(nèi)存分配 單元的BigMem區(qū)已釋放,且大小合適,則直接選用、記錄并返回;否則,如果可用物理內(nèi)存 小于最小周轉(zhuǎn)備用內(nèi)存MinSpareMem時,啟動調(diào)出任務(wù),同時執(zhí)行步驟3,然后把新單元返 回來申請者; e、 小內(nèi)存位置調(diào)整:在內(nèi)存分配單元匹配處理時,因為不考慮小內(nèi)存區(qū)是否有數(shù)據(jù),如 果內(nèi)存分配單元被重新使用,且新的使用中BigMemSize會覆蓋到小內(nèi)存區(qū)時,小內(nèi)存區(qū)需 要進行移動;移動方法為執(zhí)行步驟2,并拷貝數(shù)據(jù),然后小內(nèi)存區(qū)初始化備用; f、 一般內(nèi)存分配。:根據(jù)申請內(nèi)存大小分別選擇執(zhí)行步驟2和步驟4 ; g、 內(nèi)存數(shù)據(jù)訪問:根據(jù)地址映射表確定所訪問數(shù)據(jù)是否在物理內(nèi)存中,在物理內(nèi)存中 直接訪問,否則選擇執(zhí)行調(diào)出任務(wù),然后執(zhí)行調(diào)入任務(wù)并訪問數(shù)據(jù);內(nèi)存數(shù)據(jù)訪問時更新內(nèi) 存分配單元的最后訪問時間以及訪問次數(shù); h、 內(nèi)存分配單元匹配處理:源內(nèi)存分配單元大小為目標內(nèi)存分配單元的1/2?1倍即 為匹配成功;然后檢測目標內(nèi)存分配單元的小內(nèi)存分配區(qū)時否有數(shù)據(jù),源內(nèi)存分配單元的 大內(nèi)存區(qū)數(shù)據(jù)移到目標內(nèi)存分配單元時,是否會覆蓋目標內(nèi)存分配單元的小內(nèi)存數(shù)據(jù),如 果會覆蓋則執(zhí)行步驟5 ; i、 內(nèi)存分配單元調(diào)出:根據(jù)內(nèi)存分配單元訪問關(guān)聯(lián)綜合指數(shù)以及調(diào)出大小需求,選擇 最合適調(diào)出的內(nèi)存分配單元,可以選擇調(diào)出幾個問關(guān)聯(lián)綜合指數(shù)相等的內(nèi)存分配單元;如 果被調(diào)出的內(nèi)存分配單元的小內(nèi)存分配區(qū)有數(shù)據(jù)則執(zhí)行步驟5 ; j、 內(nèi)存分配單元調(diào)入:先執(zhí)行步驟8,如果未找到匹配的內(nèi)存分配單元則,則執(zhí)行步驟 3,將虛擬內(nèi)存中目標內(nèi)容拷貝到找到或新分配的內(nèi)存分配單元中,記錄更新地址映射表; k、 計算內(nèi)存分配單元訪問關(guān)聯(lián)綜合指數(shù):在調(diào)出內(nèi)存分配單元查找匹配時,計算當前 的訪問關(guān)聯(lián)綜合指數(shù),每個內(nèi)存分配單元的訪問關(guān)聯(lián)綜合指數(shù)Xn =(當前時間-最后一次 訪問時間)XFaXFm/Fn2,其中Xa為訪問關(guān)聯(lián)綜合指數(shù)平均值。
【文檔編號】G06F9/455GK104111896SQ201410368134
【公開日】2014年10月22日 申請日期:2014年7月30日 優(yōu)先權(quán)日:2014年7月30日
【發(fā)明者】鄭家亮, 雷曉凌 申請人:云南大學
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1