本公開涉及一種虛擬機內(nèi)存訪問方法、系統(tǒng)和電子設(shè)備。
背景技術(shù):
::虛擬化技術(shù)可以重新整合物理資源,并使之得到最大化的利用。電信級虛擬化要求虛擬機具有實時性和高效性。實時性要求虛擬機內(nèi)所有的任務(wù)請求都能在規(guī)定的可預(yù)測時間內(nèi)給予相應(yīng),不能出現(xiàn)延遲毛刺。高效性要求虛擬機內(nèi)所有的任務(wù)請求都要快速高效的完成。然而,目前的內(nèi)存子系統(tǒng)的尚不能滿足電信級虛擬化的需求。技術(shù)實現(xiàn)要素:本公開的一個方面提供了一種虛擬機內(nèi)存訪問方法,包括獲取所述虛擬機對應(yīng)的虛擬機控制結(jié)構(gòu),其中,虛擬機控制結(jié)構(gòu)中包括虛擬內(nèi)存起始地址和虛擬內(nèi)存大小,根據(jù)所述虛擬內(nèi)存起始地址和虛擬內(nèi)存大小,建立與所述虛擬機對應(yīng)的物理內(nèi)存地址和虛擬內(nèi)存地址的映射關(guān)系,以及基于所述映射關(guān)系,通過虛擬內(nèi)存空間地址訪問對應(yīng)的物理內(nèi)存地址??蛇x地,所述虛擬機控制結(jié)構(gòu)還包括映射啟用選項,所述根據(jù)所述虛擬內(nèi)存起始地址和虛擬內(nèi)存大小,建立與所述虛擬機對應(yīng)的物理內(nèi)存地址和虛擬內(nèi)存地址的映射關(guān)系包括,獲取所述映射啟用選項,以及在映射啟用選項表示啟用映射時,根據(jù)所述虛擬內(nèi)存起始地址和虛擬內(nèi)存大小,建立與所述虛擬機對應(yīng)的物理內(nèi)存地址和虛擬內(nèi)存地址的映射關(guān)系??蛇x地,所述根據(jù)所述虛擬內(nèi)存起始地址和虛擬內(nèi)存大小,建立與所述虛擬機對應(yīng)的物理內(nèi)存地址和虛擬內(nèi)存地址的映射關(guān)系包括,在虛擬機被創(chuàng)建時,根據(jù)所述虛擬內(nèi)存起始地址和虛擬內(nèi)存大小,建立與所述虛擬機對應(yīng)的物理內(nèi)存地址和虛擬內(nèi)存地址的映射關(guān)系??蛇x地,所述根據(jù)所述虛擬內(nèi)存起始地址和虛擬內(nèi)存大小,建立與所述虛擬機對應(yīng)的物理內(nèi)存地址和虛擬內(nèi)存地址的映射關(guān)系,包括執(zhí)行如下循環(huán)操作,直至所述虛擬內(nèi)存地址已全部處理:從所創(chuàng)建的虛擬內(nèi)存中選取一個未處理過的頁,判斷所述頁的地址范圍是否在由所述虛擬內(nèi)存起始地址和所述虛擬內(nèi)存大小確定的映射范圍內(nèi),若所述頁的地址范圍在所述映射范圍內(nèi),則為所述頁建立映射。本公開的另一個方面提供了一種部署有虛擬機的電子設(shè)備,包括處理器以及存儲器。存儲器上存儲有機器可讀指令,所述指令在被處理器執(zhí)行時,使得處理器獲取所述虛擬機對應(yīng)的虛擬機控制結(jié)構(gòu),其中,虛擬機控制結(jié)構(gòu)中包括虛擬內(nèi)存起始地址和虛擬內(nèi)存大小,根據(jù)所述虛擬內(nèi)存起始地址和虛擬內(nèi)存大小,建立與所述虛擬機對應(yīng)的物理內(nèi)存地址和虛擬內(nèi)存地址的映射關(guān)系,以及基于所述映射關(guān)系,通過虛擬內(nèi)存空間地址訪問對應(yīng)的物理內(nèi)存地址??蛇x地,所述虛擬機控制結(jié)構(gòu)還包括映射啟用選項,所述處理器根據(jù)所述虛擬內(nèi)存起始地址和虛擬內(nèi)存大小,建立與所述虛擬機對應(yīng)的物理內(nèi)存地址和虛擬內(nèi)存地址的映射關(guān)系包括,獲取所述映射啟用選項,以及在映射啟用選項表示啟用映射時,根據(jù)所述虛擬內(nèi)存起始地址和虛擬內(nèi)存大小,建立與所述虛擬機對應(yīng)的物理內(nèi)存地址和虛擬內(nèi)存地址的映射關(guān)系??蛇x地,所述處理器根據(jù)所述虛擬內(nèi)存起始地址和虛擬內(nèi)存大小,建立與所述虛擬機對應(yīng)的物理內(nèi)存地址和虛擬內(nèi)存地址的映射關(guān)系包括,在虛擬機被創(chuàng)建時,根據(jù)所述虛擬內(nèi)存起始地址和虛擬內(nèi)存大小,建立與所述虛擬機對應(yīng)的物理內(nèi)存地址和虛擬內(nèi)存地址的映射關(guān)系。可選地,所述處理器根據(jù)所述虛擬內(nèi)存起始地址和虛擬內(nèi)存大小,建立與所述虛擬機對應(yīng)的物理內(nèi)存地址和虛擬內(nèi)存地址的映射關(guān)系包括執(zhí)行如下循環(huán)操作,直至所述虛擬內(nèi)存地址已全部處理:從所創(chuàng)建的虛擬內(nèi)存中選取一個未處理過的頁,判斷所述頁的地址范圍是否在由所述虛擬內(nèi)存起始地址和所述虛擬內(nèi)存大小確定的映射范圍內(nèi),若所述頁的地址范圍在所述映射范圍內(nèi),則為所述頁建立映射。本公開的另一個方面提供了一種虛擬機內(nèi)存訪問系統(tǒng),包括獲取模塊、映射模塊、以及訪問模塊。獲取模塊,用于獲取所述虛擬機對應(yīng)的虛擬機控制結(jié)構(gòu),其中,虛擬機控制結(jié)構(gòu)中包括虛擬內(nèi)存起始地址和虛擬內(nèi)存大小。映射模塊,用于根據(jù)所述虛擬內(nèi)存起始地址和虛擬內(nèi)存大小,建立與所述虛擬機對應(yīng)的物理內(nèi)存地址和虛擬內(nèi)存地址的映射關(guān)系。訪問模塊,用于基于所述映射關(guān)系,通過虛擬內(nèi)存空間地址訪問對應(yīng)的物理內(nèi)存地址??蛇x地,所述虛擬機控制結(jié)構(gòu)還包括映射啟用選項,所述映射模塊包括獲取子模塊和映射子模塊。獲取子模塊,用于獲取所述映射啟用選項。映射子模塊,用于在映射啟用選項表示啟用映射時,根據(jù)所述虛擬內(nèi)存起始地址和虛擬內(nèi)存大小,建立與所述虛擬機對應(yīng)的物理內(nèi)存地址和虛擬內(nèi)存地址的映射關(guān)系。本公開的另一方面提供了一種非易失性存儲介質(zhì),存儲有計算機可執(zhí)行指令,所述指令在被執(zhí)行時用于實現(xiàn)如上所述的方法。本公開的另一方面提供了一種計算機程序,所述計算機程序包括計算機可執(zhí)行指令,所述指令在被執(zhí)行時用于實現(xiàn)如上所述的方法。附圖說明為了更完整地理解本公開及其優(yōu)勢,現(xiàn)在將參考結(jié)合附圖的以下描述,其中:圖1示意性示出了根據(jù)本公開實施例的虛擬機內(nèi)存訪問方法的應(yīng)用場景;圖2示意性示出了根據(jù)本公開實施例的虛擬機內(nèi)存訪問方法的流程圖;圖3示意性示出了根據(jù)本公開實施例的映射建立過程的流程圖;圖4示意性示出了根據(jù)本公開實施例的映射建立過程的流程圖;圖5示意性示出了根據(jù)本公開實施例的虛擬機內(nèi)存訪問系統(tǒng)的框圖;圖6示意性示出了根據(jù)本公開實施例的映射模塊的框圖;以及圖7示意性示出了根據(jù)本公開實施例的部署有虛擬機的電子設(shè)備的框圖。具體實施方式以下,將參照附圖來描述本公開的實施例。但是應(yīng)該理解,這些描述只是示例性的,而并非要限制本公開的范圍。此外,在以下說明中,省略了對公知結(jié)構(gòu)和技術(shù)的描述,以避免不必要地混淆本公開的概念。在此使用的術(shù)語僅僅是為了描述具體實施例,而并非意在限制本公開。這里使用的詞語“一”、“一個(種)”和“該”等也應(yīng)包括“多個”、“多種”的意思,除非上下文另外明確指出。此外,在此使用的術(shù)語“包括”、“包含”等表明了所述特征、步驟、操作和/或部件的存在,但是并不排除存在或添加一個或多個其他特征、步驟、操作或部件。在此使用的所有術(shù)語(包括技術(shù)和科學(xué)術(shù)語)具有本領(lǐng)域技術(shù)人員通常所理解的含義,除非另外定義。應(yīng)注意,這里使用的術(shù)語應(yīng)解釋為具有與本說明書的上下文相一致的含義,而不應(yīng)以理想化或過于刻板的方式來解釋。附圖中示出了一些方框圖和/或流程圖。應(yīng)理解,方框圖和/或流程圖中的一些方框或其組合可以由計算機程序指令來實現(xiàn)。這些計算機程序指令可以提供給通用計算機、專用計算機或其他可編程數(shù)據(jù)處理裝置的處理器,從而這些指令在由該處理器執(zhí)行時可以創(chuàng)建用于實現(xiàn)這些方框圖和/或流程圖中所說明的功能/操作的裝置。因此,本公開的技術(shù)可以硬件和/或軟件(包括固件、微代碼等)的形式來實現(xiàn)。另外,本公開的技術(shù)可以采取存儲有指令的計算機可讀介質(zhì)上的計算機程序產(chǎn)品的形式,該計算機程序產(chǎn)品可供指令執(zhí)行系統(tǒng)使用或者結(jié)合指令執(zhí)行系統(tǒng)使用。在本公開的上下文中,計算機可讀介質(zhì)可以是能夠包含、存儲、傳送、傳播或傳輸指令的任意介質(zhì)。例如,計算機可讀介質(zhì)可以包括但不限于電、磁、光、電磁、紅外或半導(dǎo)體系統(tǒng)、裝置、器件或傳播介質(zhì)。計算機可讀介質(zhì)的具體示例包括:磁存儲裝置,如磁帶或硬盤(hdd);光存儲裝置,如光盤(cd-rom);存儲器,如隨機存取存儲器(ram)或閃存;和/或有線/無線通信鏈路。為了便于描述,將虛擬機的系統(tǒng)稱為guest系統(tǒng),運行虛擬機的系統(tǒng)稱為host系統(tǒng)。guest系統(tǒng)使用虛擬硬件,host系統(tǒng)擁有真正的物理硬件,并虛擬許多份虛擬硬件分配給各個虛擬機使用,從而達到硬件資源共享的目的。虛擬機中每個虛擬中央處理器(vcpu)都對應(yīng)一個虛擬機控制結(jié)構(gòu)(vmcs,virtual-machinecontrolstructure),虛擬機控制結(jié)構(gòu)保存了host系統(tǒng)和guest系統(tǒng)的各種狀態(tài)。出于某些功能原因(如需要虛擬機監(jiān)控器處理虛擬硬件請求、虛擬機時間片用完發(fā)生切換、外部發(fā)生物理中斷等),虛擬機會退出(vm-exit),vm-exit過程中需要將guest系統(tǒng)狀態(tài)保存到vmcs中并從vmcs結(jié)構(gòu)中讀取host系統(tǒng)的狀態(tài)加載到物理cpu;當處理完相應(yīng)功能后,虛擬機就可以繼續(xù)運行了,再次運行虛擬機的動作稱之為vm-entry,在vm-entry過程中需要將host系統(tǒng)的狀態(tài)保存到vmcs結(jié)構(gòu)中并從vmcs結(jié)構(gòu)中讀取guest系統(tǒng)的狀態(tài)加載到物理cpu。vm-exit和vm-entry都涉及到vmcs內(nèi)存的讀寫和cpu狀態(tài)的切換,這是相當消耗時間的。所以vm-exit和vm-entry發(fā)生的次數(shù)直接就可以衡量一個虛擬機的性能。vm-exit和vm-entry次數(shù)越少,虛擬機的性能越高。vm-exit和vm-entry還可能伴隨有操作系統(tǒng)的進程調(diào)度,如果vm-exit后調(diào)度到了其他的進程,那么虛擬機進程就會被放入調(diào)度隊列尾部,再次發(fā)生vm-entry的時機是不可預(yù)知的,導(dǎo)致虛擬機內(nèi)部任務(wù)處理完成時間變得不可預(yù)知,可能造成虛擬機內(nèi)部任務(wù)響應(yīng)的延遲毛刺,從而大大降低了虛擬機內(nèi)部任務(wù)的實時性。所以減少vm-exit和vm-entry發(fā)生的次數(shù),可以提高虛擬機的實時性。圖1示意性示出了根據(jù)本公開實施例的虛擬機內(nèi)存訪問方法的應(yīng)用場景。如圖1所示,host系統(tǒng)上的物理內(nèi)存的地址稱為hpa(hostphysicaladdress),guest系統(tǒng)上的邏輯地址稱為gva(guestvirtualaddress),guest虛擬內(nèi)存空間地址稱為gpa(guestphysicaladdress)。當guest軟件訪問內(nèi)存時,會給出將要訪問的gva地址,通過guest系統(tǒng)內(nèi)的原生頁表,就可以轉(zhuǎn)換為guest虛擬內(nèi)存空間地址gpa。然而,gpa在物理內(nèi)存上并不是從0開始,且不一定是連續(xù)的,因此還需要在gpa與hpa之間建立映射。gpa到hpa的轉(zhuǎn)換通過虛擬機監(jiān)控器(vmm,virtual-machinemonitor)上的影子頁表spt(shadowpagetable)來完成。如果影子頁表spt中沒有找到gpa到hpa的映射,就會導(dǎo)致虛擬機的退出vm-exit,由vmm完成gpa到hpa的影子頁表映射后,再通過vm-entry進入虛擬機,讓虛擬機繼續(xù)運行。如圖1所示,影子頁表spt與guest系統(tǒng)內(nèi)的原生頁表可分為多級,例如分為4級,這樣根據(jù)gpa到spt中進行4級索引,最終得到hpa。影子頁表中每級中的頁表項稱為影子頁表項(spte,shadowpagetableentry)。需要注意的是,在guest系統(tǒng)內(nèi)的原生頁表的頁表項內(nèi)存放的也是下一級頁表基地址或者guest內(nèi)存地址,而guest頁表中存放的這兩種地址均是虛擬內(nèi)存地址gpa,并不是真正的物理內(nèi)存地址。也就是說,訪問guest系統(tǒng)內(nèi)的頁表和guest訪問一個物理內(nèi)存是一樣的,都需要經(jīng)過影子頁表來完成gpa到hpa的轉(zhuǎn)換才能真正的找到guest的下一級頁表。目前的管理策略是懶惰策略,即,在虛擬機內(nèi)存創(chuàng)建時,影子頁表內(nèi)是空的,只有虛擬機需要真正操作內(nèi)存的時候,才會建立vmm內(nèi)的影子頁表。以4級頁表為例,guest系統(tǒng)內(nèi)訪問一個內(nèi)存,會發(fā)生最多達4次vm-exit和vm-entry,即8次vmcs的保存和載入,極大地影響虛擬機的高效性和實時性。圖2示意性示出了根據(jù)本公開實施例的虛擬機內(nèi)存訪問方法的流程圖。如圖2所示,該方法包括操作s210~s230。在操作s210,獲取所述虛擬機對應(yīng)的虛擬機控制結(jié)構(gòu),其中,虛擬機控制結(jié)構(gòu)中包括虛擬內(nèi)存起始地址和虛擬內(nèi)存大小。在操作s220,根據(jù)所述虛擬內(nèi)存起始地址和虛擬內(nèi)存大小,建立與所述虛擬機對應(yīng)的物理內(nèi)存地址和虛擬內(nèi)存地址的映射關(guān)系。在操作s230,基于所述映射關(guān)系,通過虛擬內(nèi)存空間地址訪問對應(yīng)的物理內(nèi)存地址。該方法根據(jù)所述虛擬內(nèi)存起始地址和虛擬內(nèi)存大小,建立與所述虛擬機對應(yīng)的物理內(nèi)存地址和虛擬內(nèi)存地址的映射關(guān)系,避免了在操作內(nèi)存時反復(fù)退出和進入虛擬機(vm-exit和vm-entry),提高了虛擬機內(nèi)存訪問的實時性和高效性。根據(jù)本公開實施例,在操作s210獲取的虛擬機控制結(jié)構(gòu)vmcs中包括經(jīng)過定義的虛擬內(nèi)存起始地址字段和虛擬內(nèi)存大小字段。由虛擬內(nèi)存起始地址字段和虛擬內(nèi)存大小字段確定出需要映射的內(nèi)存地址范圍。例如,一個虛擬機在創(chuàng)建時被分配了1g的內(nèi)存,其創(chuàng)建了gpa從0開始的大小為1g的地址空間,那么可以設(shè)定虛擬內(nèi)存起始地址為0,虛擬內(nèi)存大小為1g,即,虛擬機全部的內(nèi)存需要在后續(xù)的操作中完成映射關(guān)系的建立?;蛘?,例如設(shè)定虛擬內(nèi)存起始地址為0,虛擬內(nèi)存大小為128m,即,設(shè)定了虛擬機的一部分內(nèi)存地址,在后續(xù)的操作中建立映射關(guān)系,其他的虛擬內(nèi)存仍采用懶惰策略,在使用到該內(nèi)存時才建立映射關(guān)系。在操作s220,根據(jù)所述虛擬內(nèi)存起始地址和虛擬內(nèi)存大小,建立與所述虛擬機對應(yīng)的物理內(nèi)存地址和虛擬內(nèi)存地址的映射關(guān)系。建立與所述虛擬機對應(yīng)的物理內(nèi)存地址和虛擬內(nèi)存地址的映射關(guān)系并不依賴內(nèi)存的使用,而是根據(jù)獲取的虛擬內(nèi)存起始地址和虛擬內(nèi)存大小,將該范圍內(nèi)的內(nèi)存全部映射。根據(jù)本公開實施例,所述根據(jù)所述虛擬內(nèi)存起始地址和虛擬內(nèi)存大小,建立與所述虛擬機對應(yīng)的物理內(nèi)存地址和虛擬內(nèi)存地址的映射關(guān)系包括,在虛擬機被創(chuàng)建時,根據(jù)所述虛擬內(nèi)存起始地址和虛擬內(nèi)存大小,建立與所述虛擬機對應(yīng)的物理內(nèi)存地址和虛擬內(nèi)存地址的映射關(guān)系。在虛擬機被創(chuàng)建時,需要為該虛擬機分配內(nèi)存大小,并根據(jù)所分配的內(nèi)存大小,為其創(chuàng)建內(nèi)存。根據(jù)本公開實施例,在內(nèi)存創(chuàng)建完成后,可以立即建立與所述虛擬機對應(yīng)的物理內(nèi)存地址和虛擬內(nèi)存地址的映射關(guān)系,以使得在虛擬機操作內(nèi)存時不再觸發(fā)vm-exit和vm-entry,提高了虛擬機內(nèi)存訪問的實時性和高效性。在操作s230,在全部內(nèi)存或設(shè)定的部分內(nèi)存的映射關(guān)系建立完成后,可以基于所述映射關(guān)系,通過虛擬內(nèi)存空間地址訪問對應(yīng)的物理內(nèi)存地址。由于已經(jīng)建立了映射關(guān)系,此時的訪問不再需要經(jīng)過vm-exit和vm-entry過程,guest系統(tǒng)的運行更加穩(wěn)定可靠,提高了虛擬機內(nèi)存訪問的實時性和高效性。圖3示意性示出了根據(jù)本公開實施例的映射建立過程的流程圖。如圖3所示,該方法包括操作s310~s320。在操作s310,獲取所述映射啟用選項。在操作s320,在映射啟用選項表示啟用映射時,根據(jù)所述虛擬內(nèi)存起始地址和虛擬內(nèi)存大小,建立與所述虛擬機對應(yīng)的物理內(nèi)存地址和虛擬內(nèi)存地址的映射關(guān)系。根據(jù)本公開實施例,在操作s210獲取的虛擬機控制結(jié)構(gòu)vmcs中還包括經(jīng)過定義的映射啟用選項字段。例如,該字段可以用一個比特位表示,該位為1時,表示啟用映射,該位為0時,表示不啟用映射。因此,在獲取虛擬機控制結(jié)構(gòu)后,可以從中獲取映射啟用選項,并判斷是否立即開始映射。該方法可以根據(jù)不同虛擬機的使用需要,合理地確定虛擬機在創(chuàng)建時是否采用參考圖2所描述的方法進行映射,尤其是對于使用頻率不高的虛擬機,允許其采用懶惰策略,即僅在內(nèi)存操作時才建立映射。圖4示意性示出了根據(jù)本公開實施例的映射建立過程的流程圖。如圖4所示,該方法包括操作s410~s450。在操作s410,從所創(chuàng)建的虛擬內(nèi)存中選取一個未處理過的頁。根據(jù)本公開實施例,可以從虛擬內(nèi)存起始地址開始,依次選取4k大小的內(nèi)存地址空間作為一個頁,以頁為單位進行處理。在操作s420,判斷所述頁的地址范圍是否在由所述虛擬內(nèi)存起始地址和所述虛擬內(nèi)存大小確定的映射范圍內(nèi),若所述頁的地址范圍在所述映射范圍內(nèi),則執(zhí)行操作s430,否則跳過s430,直接執(zhí)行操作s440。在操作s430,若所述頁的地址范圍在所述映射范圍內(nèi),則為所述頁建立映射。根據(jù)本公開實施例,所建立的映射關(guān)系為多級頁表。以4級頁表為例,首先取得一個guest物理頁,為其分配第二級頁表頁,并鏈接到第一級頁表的頁表項,再分配第三級頁表頁,并鏈接到第二級頁表的頁表項,然后分配第四級頁表頁,并鏈接到第三級頁表的頁表項,最后分配host物理內(nèi)存頁,并將物理頁的基地址填入第一級頁表的頁表項中。當然,上述順序并非固定,可以任意調(diào)整。在操作s430執(zhí)行完畢后,進入操作s440。在操作s440,判斷是否存在未處理的虛擬內(nèi)存地址,如果存在未處理的虛擬內(nèi)存地址,則返回操作s410,否則進入操作s450。在操作s450,循環(huán)結(jié)束,映射完畢。圖5示意性示出了根據(jù)本公開實施例的虛擬機內(nèi)存訪問系統(tǒng)500的框圖。如圖5所示,虛擬機內(nèi)存訪問系統(tǒng)500包括獲取模塊510、映射模塊520以及訪問模塊530。獲取模塊510,例如執(zhí)行上文參考圖2描述的操作s210,用于獲取所述虛擬機對應(yīng)的虛擬機控制結(jié)構(gòu),其中,虛擬機控制結(jié)構(gòu)中包括虛擬內(nèi)存起始地址和虛擬內(nèi)存大小。映射模塊520,例如執(zhí)行上文參考圖2描述的操作s220,用于根據(jù)所述虛擬內(nèi)存起始地址和虛擬內(nèi)存大小,建立與所述虛擬機對應(yīng)的物理內(nèi)存地址和虛擬內(nèi)存地址的映射關(guān)系。訪問模塊530,例如執(zhí)行上文參考圖2描述的操作s230,用于基于所述映射關(guān)系,通過虛擬內(nèi)存空間地址訪問對應(yīng)的物理內(nèi)存地址。圖6示意性示出了根據(jù)本公開實施例的映射模塊520的框圖。如圖6所示,映射模塊520包括獲取子模塊610和映射子模塊620。獲取子模塊610,例如執(zhí)行上文參考圖3描述的操作s310,用于獲取所述映射啟用選項。映射子模塊620,例如執(zhí)行上文參考圖3描述的操作s320,用于在映射啟用選項表示啟用映射時,根據(jù)所述虛擬內(nèi)存起始地址和虛擬內(nèi)存大小,建立與所述虛擬機對應(yīng)的物理內(nèi)存地址和虛擬內(nèi)存地址的映射關(guān)系。根據(jù)本公開實施例,所述映射模塊520包括第二映射子模塊,用于在虛擬機被創(chuàng)建時,根據(jù)所述虛擬內(nèi)存起始地址和虛擬內(nèi)存大小,建立與所述虛擬機對應(yīng)的物理內(nèi)存地址和虛擬內(nèi)存地址的映射關(guān)系。根據(jù)本公開實施例,所述映射模塊520還包括循環(huán)處理模塊,用于執(zhí)行如下循環(huán)操作,直至所述虛擬內(nèi)存地址已全部處理:從所創(chuàng)建的虛擬內(nèi)存中選取一個未處理過的頁,判斷所述頁的地址范圍是否在由所述虛擬內(nèi)存起始地址和所述虛擬內(nèi)存大小確定的映射范圍內(nèi),若所述頁的地址范圍在所述映射范圍內(nèi),則為所述頁建立映射??梢岳斫獾氖?,獲取模塊510、映射模塊520、訪問模塊530、獲取子模塊610以及映射子模塊620可以合并在一個模塊中實現(xiàn),或者其中的任意一個模塊可以被拆分成多個模塊?;蛘撸@些模塊中的一個或多個模塊的至少部分功能可以與其他模塊的至少部分功能相結(jié)合,并在一個模塊中實現(xiàn)。根據(jù)本發(fā)明的實施例,獲取模塊510、映射模塊520、訪問模塊530、獲取子模塊610以及映射子模塊620中的至少一個可以至少被部分地實現(xiàn)為硬件電路,例如現(xiàn)場可編程門陣列(fpga)、可編程邏輯陣列(pla)、片上系統(tǒng)、基板上的系統(tǒng)、封裝上的系統(tǒng)、專用集成電路(asic),或可以以對電路進行集成或封裝的任何其他的合理方式等硬件或固件來實現(xiàn),或以軟件、硬件以及固件三種實現(xiàn)方式的適當組合來實現(xiàn)?;蛘撸@取模塊510、映射模塊520、訪問模塊530、獲取子模塊610以及映射子模塊620中的至少一個可以至少被部分地實現(xiàn)為計算機程序模塊,當該程序被計算機運行時,可以執(zhí)行相應(yīng)模塊的功能。圖7示意性示出了根據(jù)本公開實施例的部署有虛擬機的電子設(shè)備700的框圖。如圖7所示,部署有虛擬機的電子設(shè)備700包括處理器710和存儲器720。該電子設(shè)備700可以執(zhí)行上面參考圖2~圖4描述的方法,以實現(xiàn)對虛擬機內(nèi)存的快速訪問。具體地,處理器710例如可以包括通用微處理器、指令集處理器和/或相關(guān)芯片組和/或?qū)S梦⑻幚砥?例如,專用集成電路(asic)),等等。處理器710還可以包括用于緩存用途的板載存儲器。處理器710可以是用于執(zhí)行參考圖2~圖4描述的根據(jù)本公開實施例的方法流程的不同動作的單一處理單元或者是多個處理單元。存儲器720,例如可以是能夠包含、存儲、傳送、傳播或傳輸指令的任意介質(zhì)。例如,可讀存儲介質(zhì)可以包括但不限于電、磁、光、電磁、紅外或半導(dǎo)體系統(tǒng)、裝置、器件或傳播介質(zhì)。可讀存儲介質(zhì)的具體示例包括:磁存儲裝置,如磁帶或硬盤(hdd);光存儲裝置,如光盤(cd-rom);半導(dǎo)體存儲器,如隨機存取存儲器(ram)或閃存;和/或有線/無線通信鏈路。存儲器720可以包括計算機程序721,該計算機程序721可以包括代碼/計算機可執(zhí)行指令,其在由處理器710執(zhí)行時使得處理器710執(zhí)行例如上面結(jié)合圖2~圖4所描述的方法流程及其任何變形。計算機程序721可被配置為具有例如包括計算機程序模塊的計算機程序代碼。例如,在示例實施例中,計算機程序721中的代碼可以包括一個或多個程序模塊,例如包括721a、模塊721b、……。應(yīng)當注意,模塊的劃分方式和個數(shù)并不是固定的,本領(lǐng)域技術(shù)人員可以根據(jù)實際情況使用合適的程序模塊或程序模塊組合,當這些程序模塊組合被處理器710執(zhí)行時,使得處理器710可以執(zhí)行例如上面結(jié)合圖2~圖4所描述的方法流程及其任何變形。根據(jù)本發(fā)明的實施例,獲取模塊510、映射模塊520、訪問模塊530、獲取子模塊610以及映射子模塊620中的至少一個可以實現(xiàn)為參考圖7描述的計算機程序模塊,其在被處理器710執(zhí)行時,可以實現(xiàn)上面描述的相應(yīng)操作。本領(lǐng)域技術(shù)人員可以理解,本公開的各個實施例和/或權(quán)利要求中記載的特征可以進行多種組合或/或結(jié)合,即使這樣的組合或結(jié)合沒有明確記載于本公開中。特別地,在不脫離本公開精神和教導(dǎo)的情況下,本公開的各個實施例和/或權(quán)利要求中記載的特征可以進行多種組合和/或結(jié)合。所有這些組合和/或結(jié)合均落入本公開的范圍。盡管已經(jīng)參照本公開的特定示例性實施例示出并描述了本公開,但是本領(lǐng)域技術(shù)人員應(yīng)該理解,在不背離所附權(quán)利要求及其等同物限定的本公開的精神和范圍的情況下,可以對本公開進行形式和細節(jié)上的多種改變。因此,本公開的范圍不應(yīng)該限于上述實施例,而是應(yīng)該不僅由所附權(quán)利要求來進行確定,還由所附權(quán)利要求的等同物來進行限定。當前第1頁12當前第1頁12