两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

一種內(nèi)存管理方法及設備的制作方法

文檔序號:6506666閱讀:233來源:國知局
一種內(nèi)存管理方法及設備的制作方法
【專利摘要】本發(fā)明的實施例公開了一種內(nèi)存管理方法及設備,涉及計算機領域,能夠解決對設備直通技術(shù)占用的內(nèi)存造成非法訪問和DMA數(shù)據(jù)被覆蓋的問題。該方法包括:主機設備根據(jù)物理內(nèi)存分配申請為DMA設備分配物理內(nèi)存,將為DMA設備分配的物理內(nèi)存標記為DMA物理內(nèi)存,將為DMA設備分配的物理內(nèi)存的地址轉(zhuǎn)換為第一機器內(nèi)存地址,并將第一機器內(nèi)存地址對應的機器內(nèi)存標記為DMA機器內(nèi)存。本發(fā)明用于內(nèi)存管理。
【專利說明】一種內(nèi)存管理方法及設備
【技術(shù)領域】
[0001]本發(fā)明涉及計算機領域,尤其涉及一種內(nèi)存管理方法及設備。
【背景技術(shù)】
[0002]隨著計算機的快速發(fā)展,越來越多的應用被部署到虛擬機上,這就對虛擬機的IO(Input and Output,輸入和輸出)性能有了更高的要求。
[0003]虛擬化內(nèi)存頁交換技術(shù):在VMM (Virtual Machine Monitor,虛擬化平臺)上,由虛擬化層為虛擬機分配內(nèi)存。虛擬化層管理的真實的內(nèi)存稱為機器內(nèi)存,虛擬機管理的內(nèi)存稱為物理內(nèi)存,虛擬機內(nèi)進程管理的內(nèi)存稱為虛擬內(nèi)存。內(nèi)存虛擬化一般指虛擬化層實現(xiàn)機器內(nèi)存與物理內(nèi)存之間對應關(guān)系的管理。為了提高內(nèi)存復用率,虛擬化層會采用內(nèi)存頁交換機制,具體的說就是將機器內(nèi)存上的部分內(nèi)容保存到磁盤上,將該部分機器內(nèi)存暫時用作其他用途,當需要使用原有內(nèi)容時,通過缺頁中斷將磁盤上的數(shù)據(jù)重新導入回機器內(nèi)存。內(nèi)存頁交換技術(shù)可以實現(xiàn)機器內(nèi)存的超分配,提升了單服務器上的虛擬機密度。
[0004]設備直通技術(shù):DMA (Direct Memory Access,直接內(nèi)存存取)設備直接與計算機內(nèi)存進行數(shù)據(jù)傳輸,實現(xiàn)了 DMA設備直接訪問虛擬機內(nèi)存,縮短了數(shù)據(jù)傳輸路徑。不僅提升了虛擬機的IO性能,也降低了 CPU (Central Processing Unit,中央處理器)的負載壓力。
[0005]但是,內(nèi)存交換技術(shù)通過CPU訪問內(nèi)存頁時觸發(fā)缺頁錯誤來避免訪問非法內(nèi)存,而現(xiàn)有的設備直通技術(shù),無法正常觸發(fā)和處理缺頁中斷,在使用內(nèi)存頁交換技術(shù)時,會出現(xiàn)對設備直通技術(shù)占用的內(nèi)存造成非法訪問和DMA數(shù)據(jù)被覆蓋的問題,這使得虛擬化技術(shù)在同時實現(xiàn)虛擬機10性能的提升及虛擬機密度的增加時受到限制。

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

[0006]本發(fā)明的實施例提供了一種內(nèi)存管理方法及設備,能夠解決對設備直通技術(shù)占用的內(nèi)存造成非法訪問和DMA數(shù)據(jù)被覆蓋的問題。
[0007]為達到上述目的,本發(fā)明的實施例采用如下技術(shù)方案:
[0008]第一方面,本發(fā)明的實施例提供一種內(nèi)存管理方法,包括:
[0009]主機設備根據(jù)物理內(nèi)存分配申請為直接內(nèi)存存取DMA設備分配物理內(nèi)存;
[0010]所述主機設備將為所述DMA設備分配的所述物理內(nèi)存標記為DMA物理內(nèi)存;
[0011]具體的,所述主機設備利用虛擬化平臺VMM接口將為所述DMA設備分配的所述物理內(nèi)存標記為DMA物理內(nèi)存;
[0012]所述主機設備將為所述DMA設備分配的所述物理內(nèi)存的地址轉(zhuǎn)換為第一機器內(nèi)存地址;
[0013]所述主機設備將所述第一機器內(nèi)存地址對應的機器內(nèi)存標記為DMA機器內(nèi)存。
[0014]結(jié)合第一方面,在第一種可能的實現(xiàn)方式中,所述所述主機設備將所述第一機器內(nèi)存地址對應的機器內(nèi)存標記為DMA機器內(nèi)存之后,還包括:
[0015]所述主機設備將非DMA機器內(nèi)存交換到硬盤。[0016]結(jié)合第一方面或第一方面的第一種可能的實現(xiàn)方式,在第二種可能的實現(xiàn)方式中,所述所述主機設備將所述第一機器內(nèi)存地址對應的機器內(nèi)存標記為DMA機器內(nèi)存之后,還包括:
[0017]所述主機設備根據(jù)物理內(nèi)存釋放申請釋放為所述DMA設備分配的所述物理內(nèi)存;
[0018]所述主機設備將釋放的物理內(nèi)存標記為非DMA物理內(nèi)存;
[0019]所述主機設備將所述釋放的物理內(nèi)存的地址轉(zhuǎn)換為第二機器內(nèi)存地址;
[0020]所述主機設備將所述第二機器內(nèi)存地址對應的機器內(nèi)存標記為非DMA機器內(nèi)存;
[0021]其中,所述第一內(nèi)存地址是為DMA設備分配的DMA物理內(nèi)存地址對應的機器內(nèi)存地址;所述第二機器內(nèi)存地址為DMA物理內(nèi)存地址釋放為非DMA物理內(nèi)存地址后對應的機器內(nèi)存地址。
[0022]第二方面,本發(fā)明的實施例提供了一種主機設備,包括至少一個虛擬機及虛擬化平臺VMM,所述虛擬機包括:分配單元;所述VMM包括:接口單元和分類單元;
[0023]所述分配單元,用于根據(jù)物理內(nèi)存分配申請為所述DMA設備分配物理內(nèi)存;
[0024]所述接口單元,用于將所述分配單元為所述DMA設備分配的所述物理內(nèi)存標記為DMA物理內(nèi)存,并將所述分配單元為所述DMA設備分配的所述物理內(nèi)存的地址轉(zhuǎn)換為第一機器內(nèi)存地址;
[0025]所述分類單元,用于獲取所述接口單元轉(zhuǎn)換獲得的所述第一機器內(nèi)存地址,并將獲取的所述第一機器內(nèi)存地址對應的機器內(nèi)存標記為DMA機器內(nèi)存。
[0026]結(jié)合第二方面,在第一種可能的實現(xiàn)方式中,所述VMM還包括交換單元,
[0027]所述交換單元,用于將非DMA機器內(nèi)存交換到硬盤。
[0028]結(jié)合第二方面或第二方面的第一種可能的實現(xiàn)方式,在第二種可能的實現(xiàn)方式中,
[0029]所述分配單元,還用于根據(jù)物理內(nèi)存釋放申請釋放為所述DMA設備分配的所述物理內(nèi)存;
[0030]所述接口單元,還用于將所述分配單元釋放的所述物理內(nèi)存標記為非DMA物理內(nèi)存,將所述釋放的物理內(nèi)存的地址轉(zhuǎn)換為第二機器內(nèi)存地址;
[0031]所述分類單元,用于獲取所述接口單元轉(zhuǎn)換獲得的所述第二機器內(nèi)存地址,并將獲取的所述第二機器內(nèi)存地址對應的機器內(nèi)存標記為非DMA機器內(nèi)存。
[0032]本發(fā)明的實施例提供的內(nèi)存管理方法及設備,通過主機設備為DMA設備分配物理內(nèi)存,將為DMA設備分配的物理內(nèi)存標記為DMA物理內(nèi)存,并將DMA物理內(nèi)存對應的機器內(nèi)存標記為DMA機器內(nèi)存,這樣,將DMA機器內(nèi)存用于直通設備訪問,將非DMA機器內(nèi)存用于內(nèi)存頁交換,解決了對設備直通技術(shù)占用的內(nèi)存造成非法訪問和DMA數(shù)據(jù)被覆蓋的問題,有利于使得設備直通技術(shù)和內(nèi)存頁交換技術(shù)兼容的實現(xiàn),從而在提升虛擬機輸入輸出IO性能的同時能夠增加單服務器上的虛擬機密度。
【專利附圖】

【附圖說明】
[0033]為了更清楚地說明本發(fā)明實施例的技術(shù)方案,下面將對實施例描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,還可以根據(jù)這些附圖獲得其他的附圖。[0034]圖1為本發(fā)明的實施例提供的一種主機設備的結(jié)構(gòu)示意圖;
[0035]圖2為本發(fā)明的另一實施例提供的一種主機設備的結(jié)構(gòu)示意圖;
[0036]圖3為本發(fā)明的實施例提供的一種內(nèi)存管理方法的流程示意圖;
[0037]圖4為本發(fā)明的另一實施例提供的一種內(nèi)存管理方法的流程示意圖;
[0038]圖5為本發(fā)明的另一實施例提供的主機設備的硬件架構(gòu)示意圖;
[0039]圖6為本發(fā)明另一實施例提供的內(nèi)存管理方法中內(nèi)存交換的流程示意圖。
【具體實施方式】
[0040]下面將結(jié)合本發(fā)明的實施例中的附圖,對本發(fā)明的實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例。
[0041]本發(fā)明的實施例提供了一種主機設備,參照圖1所示,該主機設備10包括虛擬機101及VMM102,其中虛擬機101包括分配單元111,VMM102包括接口單元121及分類單元122。
[0042]分配單元111,用于,根據(jù)物理內(nèi)存分配申請為DMA設備分配物理內(nèi)存。
[0043]具體的,當有外部DMA設備需要訪問虛擬機的物理內(nèi)存時,主機設備生成物理內(nèi)存分配申請,該物理內(nèi)存分配申請為DMA設備訪問所需要的物理內(nèi)存大小,根據(jù)該物理內(nèi)存分配申請,主機設備將分配專用于DMA設備訪問的物理內(nèi)存,參照圖1所示,該內(nèi)存分配申請可由驅(qū)動單元112根據(jù)外部直通設備的需求生成。
[0044]接口單元121,用于將分配單元111為DMA設備分配的物理內(nèi)存標記為DMA物理內(nèi)存,并將分配單元111為DMA設備分配的物理內(nèi)存的地址轉(zhuǎn)換為第一機器內(nèi)存地址。
[0045]分類單元122,用于獲取接收接口單元121轉(zhuǎn)換的第一機器內(nèi)存地址,并將獲取的第一機器內(nèi)存地址對應的機器內(nèi)存標記為DMA機器內(nèi)存。
[0046]這樣,主機設備可以通過標記的DMA物理內(nèi)存和DMA機器內(nèi)存實現(xiàn)與直通設備之間的設備直通技術(shù),即主機設備只向直通設備提供帶有DMA標記的機器內(nèi)存,而將沒有DMA標記的機器內(nèi)存用作內(nèi)存頁交換,從而避免同時在主機設備上使用內(nèi)存頁交換技術(shù)和設備直通技術(shù)時,造成的不兼容問題。
[0047]本發(fā)明的實施例提供的主機設備,通過利用虛擬機內(nèi)部的分配單元為DMA設備分配物理內(nèi)存,通過VMM上的接口單元將為DMA設備分配的物理內(nèi)存標記為DMA物理內(nèi)存,并利用分類單元將DMA物理內(nèi)存對應的機器內(nèi)存標記為DMA機器內(nèi)存,解決了對設備直通技術(shù)占用的內(nèi)存造成非法訪問和DMA數(shù)據(jù)被覆蓋的問題,使設備直通技術(shù)和內(nèi)存頁交換技術(shù)實現(xiàn)兼容,從而在提升虛擬機IO性能的同時能夠增加單服務器上的虛擬機密度。
[0048]進一步的,參照圖1所示,該主機設備10的虛擬機101還包括驅(qū)動單元112,VMM102還包括交換單元123 ;
[0049]交換單元123,用于將非DMA機器內(nèi)存交換到硬盤。
[0050]當需要進行內(nèi)存頁交換時,交換單元123會根據(jù)DMA機器內(nèi)存的標記避免將DMA機器內(nèi)存交換出去,保證了在應用內(nèi)存頁交換技術(shù)的同時,設備直通技術(shù)也可以正常應用,即實現(xiàn)內(nèi)存頁交換技術(shù)與設備直通技術(shù)的兼容,從而在提升虛擬機IO性能的同時能夠增加單服務器上的虛擬機密度。
[0051]可選的,[0052]驅(qū)動單元112,用于生成DMA設備的物理內(nèi)存分配申請和DMA設備的物理內(nèi)存釋放申請。
[0053]分配單元111,還用于根據(jù)驅(qū)動單元112生成的物理內(nèi)存釋放申請釋放為DMA設備分配的物理內(nèi)存。
[0054]接口單元121,還用于將分配單元111釋放的物理內(nèi)存標記為非DMA物理內(nèi)存,將釋放的物理內(nèi)存的地址轉(zhuǎn)換為第二機器內(nèi)存地址。
[0055]分類單元122,用于獲取接口單元121轉(zhuǎn)換的第二機器內(nèi)存地址,并將獲取的第二機器內(nèi)存地址對應的機器內(nèi)存標記為非DMA機器內(nèi)存。
[0056]當然以上第一機器內(nèi)存地址和第二機器內(nèi)存地址可以為相同的機器內(nèi)存地址,其中第一和第二只是為了區(qū)分其當前狀態(tài),即第一機器內(nèi)存地址為接到物理內(nèi)存分配申請后將要用于DMA設備訪問的機器內(nèi)存的地址,第二機器內(nèi)存地址為接到物理內(nèi)存釋放申請后將要釋放的DMA設備的機器內(nèi)存的地址。
[0057]在DMA設備使用完為其分配的物理內(nèi)存后,通過釋放為DMA設備分配的物理內(nèi)存,使該物理內(nèi)存對應的機器內(nèi)存也可以進行正常的內(nèi)存交換,使設備直通技術(shù)的使用不影響內(nèi)存頁交換技術(shù)的應用,即實現(xiàn)內(nèi)存頁交換技術(shù)與設備直通技術(shù)的兼容,從而在提升虛擬機IO性能的同時能夠增加單服務器上的虛擬機密度。
[0058]本發(fā)明的實施例提供的主機設備,通過利用虛擬機內(nèi)部的分配單元為DMA設備分配物理內(nèi)存,通過VMM上的接口單元將為DMA設備分配的物理內(nèi)存標記為DMA物理內(nèi)存,并利用分類單元將DMA物理內(nèi)存對應的機器內(nèi)存標記為DMA機器內(nèi)存,解決了對設備直通技術(shù)占用的內(nèi)存造成非法訪問和DMA數(shù)據(jù)被覆蓋的問題,使設備直通技術(shù)和內(nèi)存頁交換技術(shù)實現(xiàn)兼容,從而在提升虛擬機IO性能的同時能夠增加單服務器上的虛擬機密度。
[0059]本發(fā)明的另一實施例提供了一種主機設備,其結(jié)構(gòu)參照圖2所示,該主機設備20包括:至少一個處理器201、數(shù)據(jù)總線202、存儲器203及通信接口 204,至少一個處理器201、存儲器203和通信接口 204通過數(shù)據(jù)總線202連接并完成相互間的通信,其中:
[0060]該數(shù)據(jù)總線202可以是工業(yè)標準體系結(jié)構(gòu)ISA總線、外部設備互連PCI總線或擴展工業(yè)標準體系結(jié)構(gòu)EISA總線等。該數(shù)據(jù)總線202可以分為地址總線、數(shù)據(jù)總線、控制總線等。為便于表示,圖2中僅用一條粗線表示,但并不表示僅有一根總線或一種類型的總線。其中:
[0061]存儲器203用于存儲可執(zhí)行程序代碼,該程序代碼包括計算機操作指令。存儲器203可能包含高速RAM存儲器,也可能還包括非易失性存儲器,在本發(fā)明中存儲器至少包括硬盤232和機器內(nèi)存231。
[0062]處理器201可能是一個中央處理器CPU,或者是特定集成電路ASIC,或者是被配置成實施本發(fā)明實施例的一個或多個集成電路。
[0063]通信接口 204,用于實現(xiàn)主機設備和DMA設備之間的通信。
[0064]處理器201,還用于調(diào)用存儲器203中的程序代碼,用以執(zhí)行上述設備實施例中虛擬機101及VMM102的操作,具體描述參照圖1對應的設備實施例這里不再贅述。
[0065]本發(fā)明的實施例提供的主機設備,通過利用處理器為DMA設備分配物理內(nèi)存,將為DMA設備分配的物理內(nèi)存標記為DMA物理內(nèi)存,并將DMA物理內(nèi)存對應的機器內(nèi)存標記為DMA機器內(nèi)存,解決了對設備直通技術(shù)占用的內(nèi)存造成非法訪問和DMA數(shù)據(jù)被覆蓋的問題,使設備直通技術(shù)和內(nèi)存頁交換技術(shù)實現(xiàn)兼容,從而在提升虛擬機IO性能的同時能夠增加單服務器上的虛擬機密度。
[0066]本發(fā)明的實施例提供了一種內(nèi)存管理方法,該方法通過上述設備實施例提供的主機設備實現(xiàn),參照圖3所示,該方法包括:
[0067]301、主機設備根據(jù)物理內(nèi)存分配申請為DMA設備分配物理內(nèi)存。
[0068]具體的,當有外部DMA設備需要訪問虛擬機的物理內(nèi)存時,主機設備生成物理內(nèi)存分配申請,該物理內(nèi)存分配申請包括DMA設備訪問所需要的物理內(nèi)存大小,根據(jù)該物理內(nèi)存分配申請,主機設備將為DMA設備分配專用于該DMA設備訪問的物理內(nèi)存。
[0069]302、主機設備將為DMA設備分配的物理內(nèi)存標記為DMA物理內(nèi)存。
[0070]具體的,該標記在設備存儲器中存儲于該物理內(nèi)存對應的機器內(nèi)存之中。
[0071]303、主機設備將為DMA設備分配的物理內(nèi)存的地址轉(zhuǎn)換為第一機器內(nèi)存地址。
[0072]物理內(nèi)存是虛擬機管理的內(nèi)存,是以機器內(nèi)存為硬件基礎的一種虛擬化的內(nèi)存,物理內(nèi)存地址與機器內(nèi)存地址之間存在一一對應的映射關(guān)系,根據(jù)這種映射關(guān)系,將為DMA設備分配的物理內(nèi)存的地址轉(zhuǎn)換為第一機器內(nèi)存地址,將物理內(nèi)存對應的機器內(nèi)存用于直通設備訪問,就能實現(xiàn)直通設備訪問虛擬機物理內(nèi)存的過程。
[0073]304、主機設備將第一機器內(nèi)存地址對應的機器內(nèi)存標記為DMA機器內(nèi)存。
[0074]具體的,該標記在設備存儲器中存儲于該物理內(nèi)存對應的機器內(nèi)存之中。
[0075]這樣,主機設備可以通過標記的DMA物理內(nèi)存和DMA機器內(nèi)存實現(xiàn)與直通設備之間的設備直通技術(shù),即主機設備只向直通設備提供帶有DMA標記的物理內(nèi)存和機器內(nèi)存,而將沒有DMA標記的機器內(nèi)存用作內(nèi)存頁交換,從而避免同時在主機設備上使用內(nèi)存頁交換技術(shù)和設備直通技術(shù)時,造成的不兼容問題。
[0076]本發(fā)明的實施例提供的內(nèi)存管理方法,通過主機設備為DMA設備分配物理內(nèi)存,將為DMA設備分配的物理內(nèi)存標記為DMA物理內(nèi)存,并將DMA物理內(nèi)存對應的機器內(nèi)存標記為DMA機器內(nèi)存,解決了對設備直通技術(shù)占用的內(nèi)存造成非法訪問和DMA數(shù)據(jù)被覆蓋的問題,使設備直通技術(shù)和內(nèi)存頁交換技術(shù)實現(xiàn)兼容,從而在提升虛擬機IO性能的同時能夠增加單服務器上的虛擬機密度。
[0077]本發(fā)明還提供了一種內(nèi)存管理方法,該方法通過上述設備實施例提供的主機設備實現(xiàn),參照圖5所示,圖5提供了該主機設備的硬件架構(gòu),包括在圖2所提供的實體硬件設備上實現(xiàn)圖1所提供的虛擬設備構(gòu)架,其中圖5包括:虛擬機501、VMM502、機器內(nèi)存503、CPU504、硬盤505。其中虛擬機501與VMM502是構(gòu)架在CPU504、機器內(nèi)存503、硬盤505這些實體設備之上的虛擬設備。虛擬機501包括DMA設備驅(qū)動512、DMA內(nèi)存分配器511、普通內(nèi)存分配器513,VMM502包括VMM接口 521、DMA內(nèi)存分類器522、內(nèi)存交換裝置523。對照圖1,DMA設備驅(qū)動512實現(xiàn)驅(qū)動單元112的功能,DMA內(nèi)存分配器511實現(xiàn)分配單元111的功能,VMM接口 521實現(xiàn)接口單元121的功能,DMA內(nèi)存分類器522實現(xiàn)分類單元122的功能,內(nèi)存頁交換裝置523實現(xiàn)交換單元123的功能。參照圖4所示,該方法包括:
[0078]401、主機設備根據(jù)物理內(nèi)存分配申請為DMA設備分配物理內(nèi)存。
[0079]當有外部的DMA設備506要訪問虛擬機501的物理內(nèi)存時,虛擬機501內(nèi)部的DMA設備驅(qū)動512會生成DMA設備的物理內(nèi)存分配申請,并向DMA內(nèi)存分配器511發(fā)送該物理內(nèi)存分配申請。DMA內(nèi)存分配器511根據(jù)DMA設備驅(qū)動512發(fā)送的物理內(nèi)存分配申請向DMA設備506分配物理內(nèi)存。
[0080]具體的,該物理內(nèi)存分配申請包括DMA設備506訪問所需要的物理內(nèi)存大小,該物理內(nèi)存分配申請用于告知分配器511分配專用于DMA設備506訪問虛擬機501的物理內(nèi)存。
[0081]此外,圖5中還示出了普通內(nèi)存分配器513,其中,普通內(nèi)存分配器513用于主機設備在處理其他非直通設備的數(shù)據(jù)過程中的內(nèi)存分配。
[0082]402、主機設備將為DMA設備分配的物理內(nèi)存標記為DMA物理內(nèi)存,并將為DMA設備分配的物理內(nèi)存的地址轉(zhuǎn)換為第一機器內(nèi)存地址。
[0083]DMA內(nèi)存分配器511為DMA設備506分配好物理內(nèi)存后,VMM502中VMM接口 521會將分配給DMA設備506的物理內(nèi)存標記為DMA物理內(nèi)存,并且將分配給DMA設備506的物理內(nèi)存的地址轉(zhuǎn)換為第一機器內(nèi)存地址。
[0084]物理內(nèi)存是虛擬機管理的內(nèi)存,是以機器內(nèi)存為硬件基礎的一種虛擬化的內(nèi)存,物理內(nèi)存地址與機器內(nèi)存地址之間存在一一對應的映射關(guān)系,根據(jù)這種映射關(guān)系,將物理內(nèi)存對應的機器內(nèi)存用于DMA設備506訪問,就能實現(xiàn)DMA設備506訪問虛擬機501的物理內(nèi)存的過程。
[0085]403、主機設備將第一機器內(nèi)存地址對應的機器內(nèi)存標記為DMA機器內(nèi)存。
[0086]DMA內(nèi)存分類器522根據(jù)VMM接口 521轉(zhuǎn)換的第一機器內(nèi)存地址,將第一機器內(nèi)存地址對應的機器內(nèi)存標記為DMA機器內(nèi)存531,也就是將分配給DMA設備506的物理內(nèi)存對應的機器內(nèi)存標記為DMA機器內(nèi)存531。結(jié)合步驟403,這兩步完成了機器內(nèi)存503和虛擬機501內(nèi)部的物理內(nèi)存之間的相互對應。
[0087]404、主機設備將非DMA機器內(nèi)存交換到硬盤。
[0088]內(nèi)存交換裝置523通過DMA機器內(nèi)存531的標記避免將DMA機器內(nèi)存531交換出去,而后將沒有DMA標記的機器內(nèi)存,即非DMA機器內(nèi)存532交換到硬盤505,實現(xiàn)內(nèi)存交換。
[0089]其中,步驟403之后還包括:
[0090]405、主機設備根據(jù)物理內(nèi)存釋放申請釋放為DMA設備分配的物理內(nèi)存。
[0091]當DMA設備506使用完標記的DMA機器內(nèi)存之后,即DMA設備506實現(xiàn)對虛擬機501的直通訪問之后,DMA設備驅(qū)動512會生成DMA設備的物理內(nèi)存釋放申請,并向DMA內(nèi)存分配器511發(fā)送該物理內(nèi)存釋放申請。
[0092]具體的該物理內(nèi)存釋放申請用于告知DMA內(nèi)存分配器511將分配給DMA設備506的DMA物理內(nèi)存標記為非DMA物理內(nèi)存,即普通物理內(nèi)存。
[0093]DMA內(nèi)存分配器511根據(jù)DMA設備驅(qū)動512發(fā)送的物理內(nèi)存釋放申請釋放被DMA設備506占用的物理內(nèi)存。
[0094]對于內(nèi)存頁交換,即步驟404,只要機器內(nèi)存沒有DMA標記,就可以執(zhí)行內(nèi)存頁交換,因此與直通技術(shù)的實現(xiàn)沒有時間上的先后順序。
[0095]406、主機設備將釋放的物理內(nèi)存標記為非DMA物理內(nèi)存,并將釋放的物理內(nèi)存的地址轉(zhuǎn)換為第二機器內(nèi)存地址。
[0096]VMM接口 521在DMA設備506占用的物理內(nèi)存被釋放之后將被釋放的物理內(nèi)存標記為非DMA物理內(nèi)存,并將被釋放的物理內(nèi)存的地址轉(zhuǎn)換為第二機器內(nèi)存地址。
[0097]407、主機設備將第二機器內(nèi)存地址對應的機器內(nèi)存標記為非DMA機器內(nèi)存。[0098]DMA內(nèi)存分類器522根據(jù)VMM接口 521轉(zhuǎn)換的第二機器內(nèi)存地址,將第二機器內(nèi)存地址對應的機器內(nèi)存標記為非DMA機器內(nèi)存532,也就是將釋放的物理內(nèi)存對應的機器內(nèi)存503標記為非DMA機器內(nèi)存532,此后,該非DMA機器內(nèi)存532也可用于正常交換。
[0099]這樣,主機設備可以通過標記的DMA物理內(nèi)存和DMA機器內(nèi)存實現(xiàn)與直通設備之間的設備直通技術(shù),即主機設備只向直通設備提供帶有DMA標記的物理內(nèi)存和機器內(nèi)存,而將沒有DMA標記的機器內(nèi)存用作內(nèi)存頁交換,從而避免同時在主機設備上使用內(nèi)存頁交換技術(shù)和設備直通技術(shù)時,造成的不兼容問題。
[0100]可選的,步驟505中主機設備將非DMA機器內(nèi)存以內(nèi)存頁的形式交換到硬盤,將非機器內(nèi)存頁交換到硬盤的過程具體包括以下步驟,如圖6所示。
[0101]601、開始。
[0102]602、獲取一個機器內(nèi)存頁。
[0103]603、判斷獲取的機器內(nèi)存頁的DMA類型;
[0104]如果該內(nèi)存頁為DMA機器內(nèi)存頁,直接執(zhí)行步驟605 ;
[0105]如果該內(nèi)存頁為非DMA機器內(nèi)存頁,執(zhí)行步驟604。
[0106]604、將非DMA機器內(nèi)存頁交換到硬盤。
[0107]605、判斷是否還有其他內(nèi)存頁需要執(zhí)行交換;
[0108]如果有其他內(nèi)存頁需要執(zhí)行交換,則返回執(zhí)行步驟602 ;
[0109]如果沒有其他內(nèi)存頁需要執(zhí)行交換,則執(zhí)行步驟606。
[0110]606、結(jié)束。
[0111]本發(fā)明的實施例提供的內(nèi)存管理方法,通過主機設備為DMA設備分配物理內(nèi)存,將為DMA設備分配的物理內(nèi)存標記為DMA物理內(nèi)存,并將DMA物理內(nèi)存對應的機器內(nèi)存標記為DMA機器內(nèi)存,解決了對設備直通技術(shù)占用的內(nèi)存造成非法訪問和DMA數(shù)據(jù)被覆蓋的問題,使設備直通技術(shù)和內(nèi)存頁交換技術(shù)實現(xiàn)兼容,從而在提升虛擬機IO性能的同時能夠增加單服務器上的虛擬機密度。
[0112]以上所述,僅為本發(fā)明的【具體實施方式】,但本發(fā)明的保護范圍并不局限于此,任何熟悉本【技術(shù)領域】的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到變化或替換,都應涵蓋在本發(fā)明的保護范圍之內(nèi)。因此,本發(fā)明的保護范圍應所述以權(quán)利要求的保護范圍為準。
【權(quán)利要求】
1.一種內(nèi)存管理的方法,其特征在于,包括: 主機設備根據(jù)物理內(nèi)存分配申請為直接內(nèi)存存取DMA設備分配物理內(nèi)存; 所述主機設備將為所述DMA設備分配的所述物理內(nèi)存標記為DMA物理內(nèi)存; 所述主機設備將為所述DMA設備分配的所述物理內(nèi)存的地址轉(zhuǎn)換為第一機器內(nèi)存地址; 所述主機設備將所述第一機器內(nèi)存地址對應的機器內(nèi)存標記為DMA機器內(nèi)存。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述所述主機設備將為所述DMA設備分配的所述物理內(nèi)存標記為DMA物理內(nèi)存,包括: 所述主機設備利用虛擬化平臺VMM接口將為所述DMA設備分配的所述物理內(nèi)存標記為DMA物理內(nèi)存。
3.根據(jù)權(quán)利要求1或2所述的方法,其特征在于,所述所述主機設備將所述第一機器內(nèi)存地址對應的機器內(nèi)存標記為DMA機器內(nèi)存之后,還包括: 所述主機設備將非DMA機器內(nèi)存交換到硬盤。
4.根據(jù)權(quán)利要求1至3任一項所述的方法,其特征在于,所述所述主機設備將所述第一機器內(nèi)存地址對應的機器內(nèi)存標記為DMA機器內(nèi)存之后,還包括: 所述主機設備根據(jù)物理內(nèi)存釋放申請釋放為所述DMA設備分配的所述物理內(nèi)存; 所述主機設備將釋放的物理內(nèi)存標記為非DMA物理內(nèi)存; 所述主機設備將所述釋放的物理內(nèi)存的地址轉(zhuǎn)換為第二機器內(nèi)存地址; 所述主機設備將所述第二機器內(nèi)存地址對應的機器內(nèi)存標記為非DMA機器內(nèi)存。
5.一種主機設備,包括至少一個虛擬機及虛擬化平臺VMM,其特征在于,所述虛擬機包括:分配單元;所述VMM包括:接口單元和分類單元; 所述分配單元,用于根據(jù)物理內(nèi)存分配申請為所述DMA設備分配物理內(nèi)存; 所述接口單元,用于將所述分配單元為所述DMA設備分配的所述物理內(nèi)存標記為DMA物理內(nèi)存,并將所述分配單元為所述DMA設備分配的所述物理內(nèi)存的地址轉(zhuǎn)換為第一機器內(nèi)存地址; 所述分類單元,用于獲取所述接口單元轉(zhuǎn)換獲得的所述第一機器內(nèi)存地址,并將獲取的所述第一機器內(nèi)存地址對應的機器內(nèi)存標記為DMA機器內(nèi)存。
6.根據(jù)權(quán)利要求5所述的主機設備,其特征在于,所述VMM還包括交換單元, 所述交換單元,用于將非DMA機器內(nèi)存交換到硬盤。
7.根據(jù)權(quán)利要求5或6所述的主機設備,其特征在于, 所述分配單元,還用于根據(jù)物理內(nèi)存釋放申請釋放為所述DMA設備分配的所述物理內(nèi)存; 所述接口單元,還用于將所述分配單元釋放的所述物理內(nèi)存標記為非DMA物理內(nèi)存,將所述釋放的物理內(nèi)存的地址轉(zhuǎn)換為第二機器內(nèi)存地址; 所述分類單元,用于獲取所述接口單元轉(zhuǎn)換獲得的所述第二機器內(nèi)存地址,并將獲取的所述第二機器內(nèi)存地址對應的機器內(nèi)存標記為非DMA機器內(nèi)存。
【文檔編號】G06F12/06GK103455438SQ201310325944
【公開日】2013年12月18日 申請日期:2013年7月30日 優(yōu)先權(quán)日:2013年7月30日
【發(fā)明者】顧嘉輝, 劉永安 申請人:華為技術(shù)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
竹北市| 饶平县| 启东市| 垫江县| 兴山县| 牟定县| 扶风县| 郯城县| 长顺县| 新龙县| 龙川县| 巴南区| 锡林浩特市| 城步| 丹棱县| 华亭县| 淳化县| 衡山县| 古丈县| 镇赉县| 托里县| 星子县| 上饶市| 宁南县| 桃源县| 利津县| 南雄市| 保山市| 达州市| 孙吴县| 定远县| 小金县| 江华| 鹤庆县| 彭阳县| 洛川县| 柳州市| 赣州市| 富民县| 勐海县| 曲松县|