本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,尤其涉及一種虛擬機(jī)內(nèi)存的映射方法、裝置及數(shù)據(jù)傳輸設(shè)備。
背景技術(shù):
xen是一個(gè)基于開源軟件組織的虛擬機(jī)監(jiān)控器(virtualmachinemonitor,簡稱為“vmm”),其可以允許在單一設(shè)備上同時(shí)運(yùn)行多個(gè)操作系統(tǒng)實(shí)例。xen平臺(tái)為虛擬機(jī)提供了半虛擬化網(wǎng)卡,其由客戶操作系統(tǒng)里的虛擬網(wǎng)卡前端(簡稱“前端”,即frontend)和虛擬網(wǎng)卡后端(簡稱“后端”,即backend)兩部分構(gòu)成,該虛擬網(wǎng)卡前端和虛擬網(wǎng)卡后端之間能夠通過xen提供的hypercall(超級(jí)調(diào)用)進(jìn)行內(nèi)存頁的授權(quán)拷貝或授權(quán)映射,從而完成數(shù)據(jù)傳輸。例如,從前端來看,在虛擬網(wǎng)卡接收方向(即前端接收后端發(fā)送的數(shù)據(jù)時(shí)),是通過前端將用于接收數(shù)據(jù)的內(nèi)存頁的信息傳給后端,使得后端在接收到數(shù)據(jù)需要傳輸?shù)角岸藭r(shí),能夠通過xen提供的授權(quán)拷貝機(jī)制將數(shù)據(jù)復(fù)制到前端提供的內(nèi)存頁中;在虛擬網(wǎng)卡發(fā)送方向(即前端向后端發(fā)送數(shù)據(jù)時(shí)),是前端將存有待發(fā)送數(shù)據(jù)的內(nèi)存頁的信息傳給后端,后端通過xen提供的授權(quán)拷貝機(jī)制,將數(shù)據(jù)從前端提供的內(nèi)存頁中拷貝到后端對(duì)應(yīng)的線性地址空間,從而后端可訪問要發(fā)送的數(shù)據(jù)。
由此可見,在通過授權(quán)拷貝或授權(quán)映射進(jìn)行數(shù)據(jù)傳輸時(shí),由于需要通過調(diào)用hypercall接收或發(fā)送數(shù)據(jù),而每次調(diào)用hypercall時(shí)都會(huì)觸發(fā)終端中央處理器(centralprocessingunit,簡稱為“cpu”)執(zhí)行一系列操作,如執(zhí)行權(quán)限切換和上下文切換操作等等,這就導(dǎo)致cpu功耗過大,尤其是在網(wǎng)絡(luò)流量帶寬較高,即需要傳輸?shù)臄?shù)據(jù)包較多時(shí),則會(huì)嚴(yán)重制約數(shù)據(jù)傳輸速率。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明實(shí)施例提供一種虛擬機(jī)內(nèi)存的映射方法、裝置及數(shù)據(jù)傳輸設(shè)備,能夠提升數(shù)據(jù)傳輸速率,降低設(shè)備功耗。
第一方面,本發(fā)明實(shí)施例提供了一種虛擬機(jī)內(nèi)存的映射方法,包括:
獲取為第一虛擬機(jī)分配的第一內(nèi)存空間的地址信息;
獲取第二虛擬機(jī)的虛擬頁面對(duì)應(yīng)的物理內(nèi)存的地址信息;
根據(jù)所述第一內(nèi)存空間的地址信息與所述物理內(nèi)存的地址信息,建立第一內(nèi)存空間的線性地址與該物理內(nèi)存的內(nèi)存地址的映射關(guān)系。
其中,所述第二虛擬機(jī)為需要與所述第一虛擬機(jī)進(jìn)行數(shù)據(jù)傳輸?shù)奶摂M機(jī)。可選的,所述第二虛擬機(jī)可以是通過所述第一虛擬機(jī)發(fā)送的虛擬機(jī)標(biāo)識(shí)確定的,該虛擬機(jī)標(biāo)識(shí)可攜帶于該第一內(nèi)存空間的地址信息或其他信息中。
其中,所述第一內(nèi)存空間為第一虛擬機(jī)操作系統(tǒng)中預(yù)先分配的一段線性地址區(qū)域,用于與第二虛擬機(jī)即其他虛擬機(jī)建立內(nèi)存映射關(guān)系。該第一內(nèi)存空間的地址信息可包括該第一內(nèi)存空間的基地址和/或長度值等等,所述長度值指示的所述第一內(nèi)存空間的內(nèi)存大小與所述第二虛擬機(jī)的所有虛擬頁面對(duì)應(yīng)的虛擬內(nèi)存的內(nèi)存大小相同。
在一些實(shí)施例中,可在第一虛擬機(jī)操作系統(tǒng)中預(yù)先為該第一虛擬機(jī)分配一段內(nèi)核線性地址區(qū)域,該分配的線性地址區(qū)域的大小可大于或等于該第二虛擬機(jī)對(duì)應(yīng)的虛擬內(nèi)存的大小。若大于,則第一內(nèi)存空間為該線性地址區(qū)域的一部分,并可根據(jù)基地址和長度值信息從該線性地址區(qū)域中確定出與該第二虛擬機(jī)虛擬內(nèi)存大小相同的第一內(nèi)存空間。從而通過建立該第一內(nèi)存空間與第二虛擬機(jī)的物理內(nèi)存的映射關(guān)系來進(jìn)行虛擬機(jī)之間的數(shù)據(jù)傳輸。
在一些實(shí)施例中,所述物理內(nèi)存的地址信息可包括至少一個(gè)物理頁面的主機(jī)頁序號(hào)mfn;所述獲取第二虛擬機(jī)的虛擬頁面對(duì)應(yīng)的物理內(nèi)存的地址信息,包括:
根據(jù)存儲(chǔ)的第二虛擬機(jī)的虛擬頁面對(duì)應(yīng)的虛機(jī)頁序列號(hào)pfn與mfn的映射關(guān)系,確定出所述第二虛擬機(jī)中每一個(gè)pfn對(duì)應(yīng)的mfn;
所述根據(jù)所述第一內(nèi)存空間的地址信息與所述物理內(nèi)存的地址信息,建立所述第一內(nèi)存空間的線性地址與所述物理內(nèi)存的內(nèi)存地址的映射關(guān)系,包括:
確定所述第二虛擬機(jī)中每一個(gè)pfn對(duì)應(yīng)的虛擬頁面在所述第一內(nèi)存空間對(duì)應(yīng)的線性地址,并建立確定出的線性地址與該pfn對(duì)應(yīng)的mfn的映射關(guān)系。
從而實(shí)現(xiàn)將第二虛擬機(jī)的虛擬頁面對(duì)應(yīng)的物理內(nèi)存地址映射到為該第一虛擬機(jī)分配的第一內(nèi)存空間中。
在一些實(shí)施例中,所述第一虛擬機(jī)和所述第二虛擬機(jī)的類型可均為半虛擬化pv類型,所述第一內(nèi)存空間的地址信息還可包括所述第一內(nèi)存空間的基地址;所述確定所述第二虛擬機(jī)中每一個(gè)pfn對(duì)應(yīng)的虛擬頁面在所述第一內(nèi)存空間對(duì)應(yīng)的線性地址,包括:
根據(jù)所述第一內(nèi)存空間的基地址、所述第二虛擬機(jī)的各虛擬頁面的pfn、每一個(gè)虛擬頁面的內(nèi)存大小(也即“頁面大小”),確定出所述第二虛擬機(jī)中每一個(gè)pfn對(duì)應(yīng)的虛擬頁面在所述第一內(nèi)存空間對(duì)應(yīng)的線性地址。
其中,第二虛擬機(jī)的虛擬頁面的pfn與第一虛擬機(jī)的第一內(nèi)存空間中的線性地址的對(duì)應(yīng)關(guān)系可以為:
第一虛擬機(jī)線性地址=第一虛擬機(jī)基地址+第二虛擬機(jī)的pfn*頁面大小
在一些實(shí)施例中,在確定第一虛擬機(jī)線性地址與第二虛擬機(jī)對(duì)應(yīng)的mfn的映射關(guān)系之后,還可生成包括第一虛擬機(jī)線性地址與第二虛擬機(jī)對(duì)應(yīng)的mfn的映射關(guān)系的頁表,每一個(gè)pfn對(duì)應(yīng)的第一虛擬機(jī)線性地址及其映射的mfn可作為該頁表中的一個(gè)表項(xiàng),從而能夠通過表項(xiàng)查找實(shí)現(xiàn)將待發(fā)送的數(shù)據(jù)拷貝至第一虛擬機(jī)線性地址所映射的物理內(nèi)存地址或者從該線性地址所映射的物理內(nèi)存地址讀取傳輸?shù)臄?shù)據(jù)內(nèi)容,以實(shí)現(xiàn)數(shù)據(jù)傳輸。
在一些實(shí)施例中,在所述確定所述第二虛擬機(jī)中每一個(gè)pfn對(duì)應(yīng)的虛擬頁面在所述第一內(nèi)存空間對(duì)應(yīng)的線性地址,并建立確定出的線性地址與該pfn對(duì)應(yīng)的mfn的映射關(guān)系之后,所述方法還包括:
檢測(cè)所述第二虛擬機(jī)的各虛擬頁面對(duì)應(yīng)的pfn與mfn的映射關(guān)系是否發(fā)生變更;
若任一虛擬頁面對(duì)應(yīng)的pfn與mfn的映射關(guān)系發(fā)生變更,則獲取映射關(guān)系發(fā)生變更的pfn及其對(duì)應(yīng)的mfn,確定出該pfn在所述第一內(nèi)存空間對(duì)應(yīng)的線性地址,并將該pfn對(duì)應(yīng)的mfn更新為與確定出的該第一內(nèi)存空間對(duì)應(yīng)的線性地址具有映射關(guān)系的mfn。
在一些實(shí)施例中,當(dāng)?shù)诙摂M機(jī)的虛擬頁面pfn映射的主機(jī)物理頁面mfn發(fā)生變化時(shí),可將映射關(guān)系的變化同步到第一虛擬機(jī)的第一內(nèi)存空間對(duì)應(yīng)的頁表中,即將與第二虛擬機(jī)pfn在第一虛擬機(jī)中對(duì)應(yīng)的表項(xiàng)內(nèi)容進(jìn)行更新。從而實(shí)現(xiàn)第二虛擬機(jī)物理內(nèi)存與該第一虛擬機(jī)的第一內(nèi)存空間的線性地址的映射關(guān)系的更新。
在一些實(shí)施例中,所述第一虛擬機(jī)和所述第二虛擬機(jī)的類型均為硬件虛擬化hvm類型;所述方法還包括:
獲取為第一虛擬機(jī)分配的第二內(nèi)存空間的地址信息,所述第二內(nèi)存空間的地址信息包括所述第二內(nèi)存空間的基地址;
所述確定所述第二虛擬機(jī)中每一個(gè)pfn對(duì)應(yīng)的虛擬頁面在所述第一內(nèi)存空間對(duì)應(yīng)的線性地址,并建立確定出的線性地址與該pfn對(duì)應(yīng)的mfn的映射關(guān)系,包括:
根據(jù)所述第二內(nèi)存空間的基地址、所述第二虛擬機(jī)的各虛擬頁面的pfn、每一個(gè)虛擬頁面的頁面大小,確定出所述第二虛擬機(jī)中每一個(gè)pfn對(duì)應(yīng)的虛擬頁面在所述第二內(nèi)存空間對(duì)應(yīng)的線性地址,并建立確定出的線性地址與該pfn對(duì)應(yīng)的mfn的映射關(guān)系;
建立所述第二內(nèi)存空間的線性地址與所述第一內(nèi)存空間的線性地址的映射關(guān)系,以將所述第二虛擬機(jī)的各虛擬頁面對(duì)應(yīng)的mfn映射到所述第一內(nèi)存空間。
在一些實(shí)施例中,在確定第一虛擬機(jī)第二內(nèi)存空間與第二虛擬機(jī)對(duì)應(yīng)的mfn的映射關(guān)系之后,可將該映射關(guān)系存儲(chǔ)于預(yù)置的第一頁表中。并進(jìn)一步將該第二內(nèi)存空間映射到第一內(nèi)存空間,即建立第二內(nèi)存空間的線性地址與該第一內(nèi)存空間的線性地址的映射關(guān)系,并可將該第二內(nèi)存空間的線性地址與該第一內(nèi)存空間的線性地址的映射關(guān)系存儲(chǔ)于第二頁表中。從而能夠通過兩級(jí)映射的表項(xiàng)查找實(shí)現(xiàn)將待發(fā)送的數(shù)據(jù)拷貝至第一虛擬機(jī)線性地址所映射的物理內(nèi)存地址或者從該線性地址所映射的物理內(nèi)存地址讀取傳輸?shù)臄?shù)據(jù)內(nèi)容,以實(shí)現(xiàn)數(shù)據(jù)傳輸。
進(jìn)一步的,在一些實(shí)施例中,所述方法還包括:
當(dāng)創(chuàng)建所述第一虛擬機(jī)時(shí),為所述第一虛擬機(jī)分配所述第二內(nèi)存空間,并將所述第二內(nèi)存空間的類型設(shè)置為保留類型。
其中,所述第二內(nèi)存空間的地址信息還包括所述第二內(nèi)存空間的長度值,所述長度值指示的所述第二內(nèi)存空間的內(nèi)存大小與所述第二虛擬機(jī)的所有虛擬頁面對(duì)應(yīng)的虛擬內(nèi)存的內(nèi)存大小相同。通過將該分配的pfn區(qū)域設(shè)置為保留類型,可使得操作系統(tǒng)不對(duì)這段內(nèi)存空間進(jìn)行動(dòng)態(tài)分配,而只用于與第二虛擬機(jī)之間的內(nèi)存映射。
在一些實(shí)施例中,在所述確定所述第二虛擬機(jī)中每一個(gè)pfn對(duì)應(yīng)的虛擬頁面在所述第一內(nèi)存空間對(duì)應(yīng)的線性地址,并建立確定出的線性地址與該pfn對(duì)應(yīng)的mfn的映射關(guān)系之后,所述方法還包括:
檢測(cè)所述第二虛擬機(jī)的各虛擬頁面對(duì)應(yīng)的pfn與mfn的映射關(guān)系是否發(fā)生變更;
若任一虛擬頁面對(duì)應(yīng)的pfn與mfn的映射關(guān)系發(fā)生變更,則獲取映射關(guān)系發(fā)生變更的pfn及其對(duì)應(yīng)的mfn,確定出該pfn在所述第二內(nèi)存空間對(duì)應(yīng)的線性地址,并將該pfn對(duì)應(yīng)的mfn更新為與確定出的該第二內(nèi)存空間對(duì)應(yīng)的線性地址具有映射關(guān)系的mfn。
在一些實(shí)施例中,當(dāng)?shù)诙摂M機(jī)的虛擬頁面pfn映射的主機(jī)物理頁面mfn發(fā)生變化時(shí),可將映射關(guān)系的變化同步到第一虛擬機(jī)的第二內(nèi)存空間對(duì)應(yīng)的頁表中,即將與第二虛擬機(jī)pfn在第一虛擬機(jī)中pfn區(qū)域?qū)?yīng)的表項(xiàng)內(nèi)容進(jìn)行更新。從而實(shí)現(xiàn)第二虛擬機(jī)物理內(nèi)存與該第一虛擬機(jī)的第一內(nèi)存空間的線性地址的映射關(guān)系的更新。
第二方面,本發(fā)明實(shí)施例還提供了一種虛擬機(jī)內(nèi)存的映射裝置,包括獲取單元以及映射單元,所述虛擬機(jī)內(nèi)存的映射裝置通過上述單元實(shí)現(xiàn)第一方面的虛擬機(jī)內(nèi)存的映射方法的部分或全部步驟。
第三方面,本發(fā)明實(shí)施例還提供了一種計(jì)算機(jī)存儲(chǔ)介質(zhì),所述計(jì)算機(jī)存儲(chǔ)介質(zhì)存儲(chǔ)有程序,所述程序執(zhí)行時(shí)包括上述第一方面的虛擬機(jī)內(nèi)存的映射方法的部分或全部的步驟。
第四方面,本發(fā)明實(shí)施例還提供了一種數(shù)據(jù)傳輸設(shè)備,包括:通信接口、存儲(chǔ)器和處理器,所述處理器分別與所述通信接口及所述存儲(chǔ)器連接;其中,
所述存儲(chǔ)器用于存儲(chǔ)驅(qū)動(dòng)軟件;
所述處理器從所述存儲(chǔ)器讀取所述驅(qū)動(dòng)軟件并在所述驅(qū)動(dòng)軟件的作用下執(zhí)行上述第一方面的虛擬機(jī)內(nèi)存的映射方法的部分或全部步驟。
實(shí)施本發(fā)明實(shí)施例,具有如下有益效果:
本發(fā)明實(shí)施例中,通過獲取為第一虛擬機(jī)分配的第一內(nèi)存空間的地址信息,以及獲取第二虛擬機(jī)的虛擬頁面對(duì)應(yīng)的物理內(nèi)存的地址信息,建立得到該第一內(nèi)存空間的線性地址與該物理內(nèi)存的內(nèi)存地址的映射關(guān)系,以基于該映射關(guān)系在第一虛擬機(jī)和第二虛擬機(jī)之間傳輸數(shù)據(jù),使得在進(jìn)行數(shù)據(jù)傳輸時(shí)無需每次調(diào)用hypercall,從而提升了數(shù)據(jù)傳輸速率,并降低了設(shè)備功耗。
附圖說明
為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1是本發(fā)明實(shí)施例提供的一種系統(tǒng)架構(gòu)圖;
圖2是本發(fā)明實(shí)施例提供的一種虛擬機(jī)內(nèi)存的映射方法的流程示意圖;
圖3是本發(fā)明實(shí)施例提供的一種內(nèi)存映射示意圖;
圖4是本發(fā)明實(shí)施例提供的另一種虛擬機(jī)內(nèi)存的映射方法的流程示意圖;
圖5是本發(fā)明實(shí)施例提供的另一種內(nèi)存映射示意圖;
圖6是本發(fā)明實(shí)施例提供的又一種虛擬機(jī)內(nèi)存的映射方法的流程示意圖;
圖7是本發(fā)明實(shí)施例提供的又一種內(nèi)存映射示意圖;
圖8是本發(fā)明實(shí)施例提供的一種虛擬機(jī)內(nèi)存的映射裝置的結(jié)構(gòu)示意圖;
圖9是本發(fā)明實(shí)施例提供的另一種虛擬機(jī)內(nèi)存的映射裝置的結(jié)構(gòu)示意圖;
圖10是本發(fā)明實(shí)施例提供的又一種虛擬機(jī)內(nèi)存的映射裝置的結(jié)構(gòu)示意圖;
圖11是本發(fā)明實(shí)施例提供的一種數(shù)據(jù)傳輸設(shè)備的結(jié)構(gòu)示意圖。
具體實(shí)施方式
下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
應(yīng)理解,本發(fā)明實(shí)施例涉及的“第一”、“第二”和“第三”等是用于區(qū)別不同對(duì)象,而非用于描述特定順序。此外,術(shù)語“包括”以及它們?nèi)魏巫冃?,意圖在于覆蓋不排他的包含。例如包含了一系列步驟或單元的過程、方法、系統(tǒng)、產(chǎn)品或設(shè)備沒有限定于已列出的步驟或單元,而是可選地還包括沒有列出的步驟或單元,或可選地還包括對(duì)于這些過程、方法、產(chǎn)品或設(shè)備固有的其它步驟或單元。
應(yīng)理解,本發(fā)明實(shí)施例所涉及的技術(shù)方案可具體應(yīng)用于各種操作系統(tǒng)(operatingsystem,簡稱為“os”),包括但不限于linux、windows、unix系統(tǒng)。進(jìn)一步的,該操作系統(tǒng)可運(yùn)行于各種數(shù)據(jù)傳輸設(shè)備中,該數(shù)據(jù)傳輸設(shè)備包括但不限于智能手機(jī)(如android手機(jī)、ios手機(jī)等)、平板電腦、移動(dòng)互聯(lián)網(wǎng)設(shè)備(mobileinternetdevices,簡稱“mid”)、個(gè)人電腦等等。
應(yīng)理解,在xen平臺(tái)虛擬網(wǎng)卡前端(以下簡稱“前端”)和虛擬網(wǎng)卡后端(以下簡稱“后端”)之間可進(jìn)行數(shù)據(jù)傳輸,該前端可運(yùn)行于domu,該后端可運(yùn)行于dom0,或者后端還可運(yùn)行于用于進(jìn)行輸入輸出管理的driverdomain,本發(fā)明實(shí)施例以前端運(yùn)行于domu、后端運(yùn)行于dom0為例進(jìn)行說明。其中,該dom0和domu可為操作系統(tǒng)中需要進(jìn)行數(shù)據(jù)傳輸?shù)奶摂M機(jī)。
請(qǐng)參見圖1,圖1是本發(fā)明實(shí)施例提供的一種系統(tǒng)架構(gòu)圖,下面結(jié)合圖1對(duì)本發(fā)明實(shí)施例的系統(tǒng)架構(gòu)進(jìn)行介紹。如圖1所示,在啟動(dòng)承載有xen平臺(tái)的數(shù)據(jù)傳輸設(shè)備時(shí),即可啟動(dòng)dom0,從而dom0能夠響應(yīng)用戶管理操作,運(yùn)行虛擬網(wǎng)卡后端(backend)為與其他虛擬機(jī)(vm)提供通信服務(wù)等等。以下以dom0和其他虛擬機(jī)domu進(jìn)行通信為例進(jìn)行說明。其中,該domu運(yùn)行于上述的虛擬網(wǎng)卡前端(frontend),dom0運(yùn)行于上述的虛擬網(wǎng)卡后端,該domu和dom0均能調(diào)用hypercall進(jìn)行操作。進(jìn)一步的,該xen平臺(tái)運(yùn)行于數(shù)據(jù)傳輸設(shè)備的硬件(hardware)環(huán)境中,并通過驅(qū)動(dòng)(driver)控制前端和后端之間的數(shù)據(jù)傳輸??蛇x的,虛擬機(jī)如dom0及domu的類型可以是半虛擬化(para-virtualized,簡稱“pv”)類型、硬件虛擬化(hardwarevirtualmachine,簡稱“hvm”)類型等等。
本發(fā)明實(shí)施例公開了一種虛擬機(jī)內(nèi)存的映射方法、裝置及數(shù)據(jù)傳輸設(shè)備,使得在進(jìn)行數(shù)據(jù)傳輸時(shí)無需每次調(diào)用hypercall,從而能夠提升數(shù)據(jù)傳輸速率,降低設(shè)備功耗。以下分別詳細(xì)說明。
請(qǐng)參見圖2,是本發(fā)明實(shí)施例的一種虛擬機(jī)內(nèi)存的映射方法的流程示意圖。具體的,如圖2所示,本發(fā)明實(shí)施例的所述虛擬機(jī)內(nèi)存的映射方法可包括以下步驟:
101、獲取為第一虛擬機(jī)分配的第一內(nèi)存空間的地址信息。
需要說明的是,本發(fā)明實(shí)施例可以以虛擬機(jī)內(nèi)存的映射裝置(簡稱“映射裝置”)的角度對(duì)該方法進(jìn)行描述,xen虛擬化平臺(tái)可運(yùn)行于該映射裝置中。進(jìn)一步的,該映射裝置可通過調(diào)用其存儲(chǔ)的程序指令(驅(qū)動(dòng)軟件)來實(shí)現(xiàn)本發(fā)明實(shí)施例涉及的操作。
具體的,該第一虛擬機(jī)可與上述的dom0相對(duì)應(yīng)。所述第一內(nèi)存空間為dom0操作系統(tǒng)中分配的一段線性地址區(qū)域,用于與第二虛擬機(jī)即其他虛擬機(jī)建立內(nèi)存映射關(guān)系。其中,該第一內(nèi)存空間的地址信息可包括該第一內(nèi)存空間的基地址以及長度值等等。
102、獲取第二虛擬機(jī)的虛擬頁面對(duì)應(yīng)的物理內(nèi)存的地址信息。
其中,該第二虛擬機(jī)可以與上述的domu相對(duì)應(yīng),該第二虛擬機(jī)是指需要與所述第一虛擬機(jī)建立內(nèi)存映射關(guān)系的虛擬機(jī),如需要與第一虛擬機(jī)進(jìn)行數(shù)據(jù)傳輸?shù)奶摂M機(jī)。
可選的,所述第二虛擬機(jī)可以是通過所述第一虛擬機(jī)發(fā)送的虛擬機(jī)標(biāo)識(shí)確定的。進(jìn)一步可選的,該虛擬機(jī)標(biāo)識(shí)可攜帶于該第一內(nèi)存空間的地址信息中。
進(jìn)一步的,所述第一內(nèi)存空間的地址信息可包括該第一內(nèi)存空間的長度值,所述長度值指示的所述第一內(nèi)存空間的內(nèi)存大小與所述第二虛擬機(jī)的所有虛擬頁面對(duì)應(yīng)的虛擬內(nèi)存的內(nèi)存大小相同。也就是說,為dom0分配的用于與domu物理內(nèi)存建立映射關(guān)系的內(nèi)存空間即第一內(nèi)存空間與該domu對(duì)應(yīng)的虛擬內(nèi)存的大小(或者稱為“長度”)相同。具體的,可在dom0操作系統(tǒng)中預(yù)先為dom0分配一段內(nèi)核線性地址區(qū)域,該分配的線性地址區(qū)域的大小可大于或等于該domu對(duì)應(yīng)的虛擬內(nèi)存的大小,若大于,則第一內(nèi)存空間為該線性地址區(qū)域的一部分,并可根據(jù)基地址和長度值信息從該線性地址區(qū)域中確定出該第一內(nèi)存空間。
103、根據(jù)所述第一內(nèi)存空間的地址信息與所述物理內(nèi)存的地址信息,建立所述第一內(nèi)存空間的線性地址與所述物理內(nèi)存的內(nèi)存地址的映射關(guān)系。
進(jìn)一步的,請(qǐng)結(jié)合圖3,圖3是本發(fā)明實(shí)施例提供的一種內(nèi)存映射示意圖。如圖3所示,映射裝置通過獲取其他虛擬機(jī)如domu對(duì)應(yīng)的虛擬機(jī)地址空間(即“虛擬頁面”)與物理內(nèi)存地址的映射關(guān)系,建立該物理內(nèi)存地址與dom0線性地址(即“第一內(nèi)存空間”)的映射關(guān)系。
具體的,所述物理內(nèi)存的地址信息可包括至少一個(gè)物理頁面的主機(jī)頁序號(hào)(machineframenumber,簡稱為“mfn”)。則所述獲取第二虛擬機(jī)的虛擬頁面對(duì)應(yīng)的物理內(nèi)存的地址信息,可以具體為:根據(jù)存儲(chǔ)的第二虛擬機(jī)的虛擬頁面對(duì)應(yīng)的虛機(jī)頁序列號(hào)(physicalframenumber,簡稱為“pfn”)與mfn的映射關(guān)系,確定出所述第二虛擬機(jī)中每一個(gè)pfn對(duì)應(yīng)的mfn。進(jìn)一步的,所述根據(jù)所述第一內(nèi)存空間的地址信息與所述物理內(nèi)存的地址信息,建立所述第一內(nèi)存空間的線性地址與所述物理內(nèi)存的內(nèi)存地址的映射關(guān)系,可以具體為:確定所述第二虛擬機(jī)中每一個(gè)pfn對(duì)應(yīng)的虛擬頁面在所述第一內(nèi)存空間對(duì)應(yīng)的線性地址,并建立確定出的線性地址與該pfn對(duì)應(yīng)的mfn的映射關(guān)系。從而實(shí)現(xiàn)將第二虛擬機(jī)的虛擬頁面對(duì)應(yīng)的物理內(nèi)存地址映射到為該第一虛擬機(jī)分配的第一內(nèi)存空間中。
在第一虛擬機(jī)分配的內(nèi)存空間即第一內(nèi)存空間全量映射了第二虛擬機(jī)的物理內(nèi)存,即將第二虛擬機(jī)的每一個(gè)虛擬頁面對(duì)應(yīng)的mfn分別與第一內(nèi)存空間的線性地址建立映射關(guān)系之后,第一虛擬機(jī)通過對(duì)該第一內(nèi)存空間的訪問即可讀取或更改第二虛擬機(jī)對(duì)應(yīng)的物理內(nèi)存中的內(nèi)容。具體的,在虛擬網(wǎng)卡接收過程中,即第二虛擬機(jī)需要接收第一虛擬機(jī)發(fā)送的數(shù)據(jù)時(shí),第二虛擬機(jī)把接收數(shù)據(jù)的線性地址直接通知給第一虛擬機(jī),第一虛擬機(jī)在發(fā)送數(shù)據(jù)時(shí),將數(shù)據(jù)直接拷貝至該線性地址映射的物理內(nèi)存地址即可。在虛擬網(wǎng)卡發(fā)送過程中,即第二虛擬機(jī)需要向第一虛擬機(jī)發(fā)送數(shù)據(jù)時(shí),第二虛擬機(jī)把要發(fā)送數(shù)據(jù)的線性地址通知給第一虛擬機(jī),第一虛擬機(jī)訪問與該線性地址對(duì)應(yīng)的物理內(nèi)存地址,即可獲得需發(fā)送的數(shù)據(jù)內(nèi)容??蛇x的,第一虛擬機(jī)可將第二虛擬機(jī)線性地址與第一虛擬機(jī)基地址的和,作為需要進(jìn)行數(shù)據(jù)傳輸?shù)木€性地址,以將待發(fā)送的數(shù)據(jù)拷貝至該線性地址所映射的物理內(nèi)存地址或者從該線性地址所映射的物理內(nèi)存地址讀取傳輸?shù)臄?shù)據(jù)內(nèi)容?;蛘叩谝惶摂M機(jī)還根據(jù)第二虛擬機(jī)中每一個(gè)pfn在第一內(nèi)存空間對(duì)應(yīng)的線性地址而建立的第一內(nèi)存空間與第二虛擬機(jī)對(duì)應(yīng)的mfn的其他映射關(guān)系,來確定該需要進(jìn)行數(shù)據(jù)傳輸?shù)木€性地址,本發(fā)明實(shí)施例不做限定。
在本發(fā)明實(shí)施例中,能夠通過獲取為第一虛擬機(jī)分配的第一內(nèi)存空間的地址信息,以及獲取第二虛擬機(jī)的虛擬頁面對(duì)應(yīng)的物理內(nèi)存的地址信息,建立得到該第一內(nèi)存空間的線性地址與該物理內(nèi)存的內(nèi)存地址的映射關(guān)系,以基于該映射關(guān)系在第一虛擬機(jī)和第二虛擬機(jī)之間傳輸數(shù)據(jù),使得在進(jìn)行數(shù)據(jù)傳輸時(shí)無需每次調(diào)用hypercall,從而提升了數(shù)據(jù)傳輸速率,并降低了設(shè)備功耗。
進(jìn)一步的,請(qǐng)參見圖4,是本發(fā)明實(shí)施例的另一種虛擬機(jī)內(nèi)存的映射方法的流程示意圖。在本發(fā)明實(shí)施例中,第一虛擬機(jī)和第二虛擬機(jī)為pv類型。具體的,如圖4所示,本發(fā)明實(shí)施例的所述虛擬機(jī)內(nèi)存的映射方法可包括以下步驟:
201、獲取為第一虛擬機(jī)分配的第一內(nèi)存空間的地址信息。
202、根據(jù)存儲(chǔ)的第二虛擬機(jī)的虛擬頁面對(duì)應(yīng)的pfn與mfn的映射關(guān)系,確定出所述第二虛擬機(jī)中每一個(gè)pfn對(duì)應(yīng)的mfn。
其中,該第一虛擬機(jī)可與上述的dom0相對(duì)應(yīng),第二虛擬機(jī)可與上述的domu相對(duì)應(yīng)。該第一內(nèi)存空間的地址信息可包括該內(nèi)存空間的基地址以及長度值等等,且該長度值指示的第一內(nèi)存空間的內(nèi)存大小與該第二虛擬機(jī)的所有虛擬頁面對(duì)應(yīng)的虛擬內(nèi)存的內(nèi)存大小相同。
203、根據(jù)所述第一內(nèi)存空間的基地址、所述第二虛擬機(jī)的各虛擬頁面的pfn、每一個(gè)虛擬頁面的內(nèi)存大小,確定出所述第二虛擬機(jī)中每一個(gè)pfn對(duì)應(yīng)的虛擬頁面在所述第一內(nèi)存空間對(duì)應(yīng)的線性地址。
204、建立確定出的線性地址與該pfn對(duì)應(yīng)的mfn的映射關(guān)系。
進(jìn)一步的,請(qǐng)一并結(jié)合圖5,是本發(fā)明實(shí)施例提供的另一種內(nèi)存映射示意圖。如圖5所示,通過獲取domu的虛擬頁面的pfn與物理內(nèi)存地址對(duì)應(yīng)的mfn的映射關(guān)系,即可建立該物理內(nèi)存地址與dom0線性地址的映射關(guān)系??蛇x的,該pfn與mfn的映射關(guān)系可存儲(chǔ)于預(yù)置的domu頁表中,相應(yīng)地,該物理內(nèi)存地址與dom0線性地址的映射關(guān)系可存儲(chǔ)于預(yù)置的dom0頁表中。
具體實(shí)施例中,dom0可將第一內(nèi)存空間的地址信息(包括基地址和長度值)發(fā)送給xen,xen則可依次查找domu虛機(jī)頁面(虛擬頁面)對(duì)應(yīng)的mfn,并建立查找到的mfn與dom0的第一內(nèi)存空間的線性地址的映射關(guān)系。具體可根據(jù)domu虛機(jī)頁面的pfn,確定dom0的第一內(nèi)存空間中與該pfn對(duì)應(yīng)的線性地址,并獲取得到各pfn對(duì)應(yīng)的mfn,從而將該domu對(duì)應(yīng)的mfn映射到該第一內(nèi)存空間的線性地址。可選的,該domu可以是通過dom0發(fā)送的domuid確定出的,該domuid可攜帶于該第一內(nèi)存空間的地址信息或其他信息中,也可以單獨(dú)發(fā)送。其中,domu的虛擬頁面的pfn(簡稱“domupfn”)與dom0的第一內(nèi)存空間中的線性地址(簡稱“dom0線性地址”)的對(duì)應(yīng)關(guān)系可以為:
dom0線性地址=dom0基地址+domupfn*頁面大小
可選的,在確定dom0線性地址與domu對(duì)應(yīng)的mfn的映射關(guān)系之后,還可生成包括dom0線性地址與domu對(duì)應(yīng)的mfn的映射關(guān)系的頁表,每一個(gè)pfn對(duì)應(yīng)的dom0線性地址及其映射的mfn可作為該頁表中的一個(gè)表項(xiàng),以通過表項(xiàng)查找實(shí)現(xiàn)將待發(fā)送的數(shù)據(jù)拷貝至dom0線性地址所映射的物理內(nèi)存地址或者從該線性地址所映射的物理內(nèi)存地址讀取傳輸?shù)臄?shù)據(jù)內(nèi)容,以實(shí)現(xiàn)數(shù)據(jù)傳輸。
205、檢測(cè)所述第二虛擬機(jī)的各虛擬頁面對(duì)應(yīng)的pfn與mfn的映射關(guān)系是否發(fā)生變更。
具體的,若檢測(cè)到domu任一虛擬頁面對(duì)應(yīng)的pfn與mfn的映射關(guān)系發(fā)生變更,則可執(zhí)行步驟206,進(jìn)行映射關(guān)系更新;否則,可仍保持原來的映射關(guān)系,不做任何處理。
206、獲取映射關(guān)系發(fā)生變更的pfn及其對(duì)應(yīng)的mfn,確定出該pfn在所述第一內(nèi)存空間對(duì)應(yīng)的線性地址,并將該pfn對(duì)應(yīng)的mfn更新為與確定出的該第一內(nèi)存空間對(duì)應(yīng)的線性地址具有映射關(guān)系的mfn。
具體的,當(dāng)domu的虛擬頁面pfn映射的主機(jī)物理頁面mfn發(fā)生變化時(shí),dom0即可調(diào)用hypercall通知xen進(jìn)行修改。xen則可將映射關(guān)系的變化同步到dom0相應(yīng)線性地址區(qū)域的頁表,即將與domupfn對(duì)應(yīng)的dom0的頁表項(xiàng)內(nèi)容進(jìn)行更新,將該domupfn在dom0頁表中對(duì)應(yīng)的線性地址所映射的mfn替換為變化后與該domupfn映射的mfn。
在本發(fā)明實(shí)施例中,對(duì)于pv類型的dom0,通過建立domu物理頁面mfn到dom0線性地址的映射關(guān)系,使得dom0地址尋址可通過查詢dom0頁表中的映射關(guān)系尋址找到映射到指定線性地址的物理頁面,以實(shí)現(xiàn)將待發(fā)送的數(shù)據(jù)拷貝至指定線性地址所映射的物理內(nèi)存地址或者從該指定線性地址所映射的物理內(nèi)存地址讀取傳輸?shù)臄?shù)據(jù)內(nèi)容來實(shí)現(xiàn)數(shù)據(jù)傳輸。
進(jìn)一步的,請(qǐng)參見圖6,是本發(fā)明實(shí)施例的又一種虛擬機(jī)內(nèi)存的映射方法的流程示意圖。在本發(fā)明實(shí)施例中,第一虛擬機(jī)和第二虛擬機(jī)為hvm類型,并使用硬件輔助分頁(hardwareassistedpaging,簡稱為“hap”)機(jī)制。具體的,如圖6所示,本發(fā)明實(shí)施例的所述虛擬機(jī)內(nèi)存的映射方法可包括以下步驟:
301、獲取為第一虛擬機(jī)分配的第一內(nèi)存空間的地址信息。
302、獲取為第一虛擬機(jī)分配的第二內(nèi)存空間的地址信息,所述第二內(nèi)存空間的地址信息包括所述第二內(nèi)存空間的基地址。
其中,該第一虛擬機(jī)可與上述的dom0相對(duì)應(yīng),第二虛擬機(jī)可與上述的domu相對(duì)應(yīng)。該第一內(nèi)存空間的地址信息及所述第二內(nèi)存空間的地址信息均可包括相應(yīng)內(nèi)存空間的基地址以及長度值等等,且該長度值指示的第一內(nèi)存空間的內(nèi)存大小以及該第二內(nèi)存空間的內(nèi)存大小均與該第二虛擬機(jī)的所有虛擬頁面對(duì)應(yīng)的虛擬內(nèi)存的內(nèi)存大小相同。
具體實(shí)施例中,當(dāng)創(chuàng)建所述第一虛擬機(jī)時(shí),即可為第一虛擬機(jī)即dom0分配第二內(nèi)存空間,并將所述第二內(nèi)存空間的類型設(shè)置為保留類型。具體的,xen在創(chuàng)建dom0的過程中,可在e820表中多分配一個(gè)虛機(jī)頁面pfn區(qū)域,即第二內(nèi)存空間,用于映射其他虛擬機(jī)如domu的物理內(nèi)存,并在dom0操作系統(tǒng)的啟動(dòng)過程中,將該分配的pfn區(qū)域設(shè)置為保留類型,使得操作系統(tǒng)不對(duì)這段內(nèi)存空間進(jìn)行動(dòng)態(tài)分配,而只用于domu內(nèi)存映射。
303、根據(jù)存儲(chǔ)的第二虛擬機(jī)的虛擬頁面對(duì)應(yīng)的pfn與mfn的映射關(guān)系,確定出所述第二虛擬機(jī)中每一個(gè)pfn對(duì)應(yīng)的mfn。
304、根據(jù)所述第二內(nèi)存空間的基地址、所述第二虛擬機(jī)的各虛擬頁面的pfn、每一個(gè)虛擬頁面的頁面大小,確定出所述第二虛擬機(jī)中每一個(gè)pfn對(duì)應(yīng)的虛擬頁面在所述第二內(nèi)存空間對(duì)應(yīng)的線性地址,并建立確定出的線性地址與該pfn對(duì)應(yīng)的mfn的映射關(guān)系。
進(jìn)一步的,請(qǐng)一并結(jié)合圖7,是本發(fā)明實(shí)施例提供的又一種內(nèi)存映射示意圖。如圖7所示,通過獲取domu的虛擬頁面的pfn與物理內(nèi)存地址對(duì)應(yīng)的mfn的映射關(guān)系,即可建立該物理內(nèi)存地址與dom0pfn的映射關(guān)系,并進(jìn)一步建立dom0pfn與dom0線性地址的映射關(guān)系??蛇x的,該pfn與mfn的映射關(guān)系可存儲(chǔ)于預(yù)置的domu擴(kuò)展頁表中,相應(yīng)地,該建立的domu物理內(nèi)存地址與dom0pfn的映射關(guān)系可存儲(chǔ)于預(yù)置的dom0擴(kuò)展頁表中,dom0pfn與dom0線性地址的映射關(guān)系可存儲(chǔ)于預(yù)置的dom0頁表中。
具體實(shí)施例中,可預(yù)先擴(kuò)展xen的hypercall接口,獲取dom0pfn區(qū)間的信息,包括基pfn,長度值等,即獲取第二內(nèi)存空間的地址信息,并確定出需要與其進(jìn)行數(shù)據(jù)傳輸?shù)钠渌摂M機(jī)domu,如根據(jù)dom0發(fā)送的domuid確定domu,從而依次對(duì)domu的所有pfn進(jìn)行映射,實(shí)現(xiàn)domu對(duì)應(yīng)的mfn到dom0第一內(nèi)存空間的全量映射。具體的,xen可通過自身為domu維護(hù)的pfn到mfn的映射關(guān)系獲取domu各虛擬頁面的pfn分別對(duì)應(yīng)的物理內(nèi)存頁面mfn,從而通過調(diào)用擴(kuò)展的hypercall接口建立dom0第二內(nèi)存空間與該mfn的映射關(guān)系,將domu的內(nèi)存全量映射到該第二內(nèi)存空間,并可將該映射關(guān)系存儲(chǔ)于預(yù)置的第一頁表(即上述的dom0擴(kuò)展頁表)中。其中,每一個(gè)pfn地址及其映射的mfn可作為該頁表中的一個(gè)表項(xiàng),其映射方式可參照上述圖4-5對(duì)應(yīng)實(shí)施例的相關(guān)描述,此處不再贅述。舉例來說,對(duì)于domu中pfn為p的虛擬頁面,xen可通過自身為domu維護(hù)的pfn到mfn的映射關(guān)系找到與p對(duì)應(yīng)的物理內(nèi)存頁面m,從而將m更新到dom0擴(kuò)展頁表(即第一頁表)中序號(hào)為(基pfn+p)的表項(xiàng)中。
305、建立所述第二內(nèi)存空間的線性地址與所述第一內(nèi)存空間的線性地址的映射關(guān)系,以將所述第二虛擬機(jī)的各虛擬頁面對(duì)應(yīng)的mfn映射到所述第一內(nèi)存空間。
具體的,在建立得到dom0第二內(nèi)存空間與該mfn的映射關(guān)系之后,即可將該第二內(nèi)存空間映射到第一內(nèi)存空間,即建立第二內(nèi)存空間的線性地址與該第一內(nèi)存空間的線性地址的映射關(guān)系。具體可通過控制dom0修改自身維護(hù)的頁表(第二頁表,如上述的dom0頁表),將線性地址對(duì)應(yīng)的頁表項(xiàng)填充為對(duì)應(yīng)的pfn,從而實(shí)現(xiàn)將該第二內(nèi)存空間與該第一內(nèi)存空間的映射關(guān)系存儲(chǔ)于dom0頁表中,此處不再贅述。
進(jìn)一步的,在所述建立所述第二內(nèi)存空間的線性地址與所述第一內(nèi)存空間的線性地址的映射關(guān)系之后,還可檢測(cè)所述第二虛擬機(jī)的各虛擬頁面對(duì)應(yīng)的pfn與mfn的映射關(guān)系是否發(fā)生變更。具體的,若檢測(cè)到任一虛擬頁面對(duì)應(yīng)的pfn與mfn的映射關(guān)系發(fā)生變更,則可獲取映射關(guān)系發(fā)生變更的pfn及其對(duì)應(yīng)的mfn,確定出該pfn在所述第二內(nèi)存空間對(duì)應(yīng)的線性地址,并將該pfn對(duì)應(yīng)的mfn更新為與確定出的該第二內(nèi)存空間對(duì)應(yīng)的線性地址具有映射關(guān)系的mfn。否則,可仍保持原來的映射關(guān)系,不做任何處理。
具體的,domu的擴(kuò)展頁表內(nèi)容發(fā)生變化時(shí),比如序號(hào)為p的表項(xiàng)對(duì)應(yīng)的物理內(nèi)存頁面更新為m時(shí),xen即可將變化的映射關(guān)系同步到dom0擴(kuò)展頁表中與p對(duì)應(yīng)的表項(xiàng),將該表項(xiàng)內(nèi)容更新為m。
在本發(fā)明實(shí)施例中,對(duì)于hvm/hap類型的dom0,通過建立domu物理頁面mfn到dom0虛機(jī)頁面pfn的映射關(guān)系,以及建立dom0虛機(jī)頁面pfn到dom0線性地址的映射關(guān)系,使得dom0地址尋址可通過查詢dom0頁表和擴(kuò)展頁表兩級(jí)映射,尋址找到映射到指定線性地址的物理頁面,以實(shí)現(xiàn)將待發(fā)送的數(shù)據(jù)拷貝至指定線性地址所映射的物理內(nèi)存地址或者從該指定線性地址所映射的物理內(nèi)存地址讀取傳輸?shù)臄?shù)據(jù)內(nèi)容來實(shí)現(xiàn)數(shù)據(jù)傳輸。
請(qǐng)參見圖8,圖8是本發(fā)明實(shí)施例的一種虛擬機(jī)內(nèi)存的映射裝置的結(jié)構(gòu)示意圖。具體的,如圖8所示,本發(fā)明實(shí)施例的所述虛擬機(jī)內(nèi)存的映射裝置可包括獲取單元11以及映射單元12。其中,
所述獲取單元11,用于獲取為第一虛擬機(jī)分配的第一內(nèi)存空間的地址信息。
具體的,該第一虛擬機(jī)可與上述的dom0相對(duì)應(yīng)。所述第一內(nèi)存空間為dom0操作系統(tǒng)中分配的一段線性地址區(qū)域,用于與第二虛擬機(jī)即其他虛擬機(jī)建立內(nèi)存映射關(guān)系。其中,該第一內(nèi)存空間的地址信息可包括該第一內(nèi)存空間的基地址以及長度值等等。
所述獲取單元11,還用于獲取第二虛擬機(jī)的虛擬頁面對(duì)應(yīng)的物理內(nèi)存的地址信息,所述第二虛擬機(jī)為需要與所述第一虛擬機(jī)進(jìn)行數(shù)據(jù)傳輸?shù)奶摂M機(jī)。
其中,該第二虛擬機(jī)可以與上述的domu相對(duì)應(yīng),該第二虛擬機(jī)是指需要與所述第一虛擬機(jī)建立內(nèi)存映射關(guān)系的虛擬機(jī),如需要與第一虛擬機(jī)進(jìn)行數(shù)據(jù)傳輸?shù)奶摂M機(jī)。
其中,所述第一內(nèi)存空間的地址信息包括所述第一內(nèi)存空間的長度值,所述長度值指示的所述第一內(nèi)存空間的內(nèi)存大小與所述第二虛擬機(jī)的所有虛擬頁面對(duì)應(yīng)的虛擬內(nèi)存的內(nèi)存大小相同。
可選的,所述第二虛擬機(jī)可以是通過所述第一虛擬機(jī)發(fā)送的虛擬機(jī)標(biāo)識(shí)確定的。進(jìn)一步可選的,該虛擬機(jī)標(biāo)識(shí)可攜帶于該第一內(nèi)存空間的地址信息中。
映射單元12,用于根據(jù)所述獲取單元11獲取的所述第一內(nèi)存空間的地址信息與所述物理內(nèi)存的地址信息,建立所述第一內(nèi)存空間的線性地址與所述物理內(nèi)存的內(nèi)存地址的映射關(guān)系。
可選的,所述物理內(nèi)存的地址信息包括至少一個(gè)物理頁面的主機(jī)頁序號(hào)mfn;所述獲取單元11獲取第二虛擬機(jī)的虛擬頁面對(duì)應(yīng)的物理內(nèi)存的地址信息的具體方式可以為:
根據(jù)存儲(chǔ)的第二虛擬機(jī)的虛擬頁面對(duì)應(yīng)的虛機(jī)頁序列號(hào)pfn與mfn的映射關(guān)系,確定出所述第二虛擬機(jī)中每一個(gè)pfn對(duì)應(yīng)的mfn;
所述映射單元12可具體用于:
確定所述第二虛擬機(jī)中每一個(gè)pfn對(duì)應(yīng)的虛擬頁面在所述第一內(nèi)存空間對(duì)應(yīng)的線性地址,并建立確定出的線性地址與該pfn對(duì)應(yīng)的mfn的映射關(guān)系。
在第一虛擬機(jī)分配的內(nèi)存空間即第一內(nèi)存空間全量映射了第二虛擬機(jī)的物理內(nèi)存,即映射單元12分別建立第二虛擬機(jī)的每一個(gè)虛擬頁面對(duì)應(yīng)的mfn與第一內(nèi)存空間的線性地址的映射關(guān)系之后,第一虛擬機(jī)通過對(duì)該第一內(nèi)存空間的訪問即可讀取或更改第二虛擬機(jī)對(duì)應(yīng)的物理內(nèi)存中的內(nèi)容。
在本發(fā)明實(shí)施例中,能夠通過獲取為第一虛擬機(jī)分配的第一內(nèi)存空間的地址信息,以及獲取第二虛擬機(jī)的虛擬頁面對(duì)應(yīng)的物理內(nèi)存的地址信息,建立得到該第一內(nèi)存空間的線性地址與該物理內(nèi)存的內(nèi)存地址的映射關(guān)系,以基于該映射關(guān)系在第一虛擬機(jī)和第二虛擬機(jī)之間傳輸數(shù)據(jù),使得在進(jìn)行數(shù)據(jù)傳輸時(shí)無需每次調(diào)用hypercall,從而提升了數(shù)據(jù)傳輸速率,并降低了設(shè)備功耗。
進(jìn)一步的,請(qǐng)參見圖9,圖9是本發(fā)明實(shí)施例的另一種虛擬機(jī)內(nèi)存的映射裝置的結(jié)構(gòu)示意圖。具體的,如圖9所示,本發(fā)明實(shí)施例的所述裝置包括上述圖8對(duì)應(yīng)實(shí)施例的虛擬機(jī)內(nèi)存的映射裝置的獲取單元11以及映射單元12。在本發(fā)明實(shí)施例中,所述第一虛擬機(jī)和所述第二虛擬機(jī)的類型均為半虛擬化pv類型,所述第一內(nèi)存空間的地址信息還包括所述第一內(nèi)存空間的基地址;則所述映射單元12可具體用于:
根據(jù)所述第一內(nèi)存空間的基地址、所述第二虛擬機(jī)的各虛擬頁面的pfn、每一個(gè)虛擬頁面的內(nèi)存大小,確定出所述第二虛擬機(jī)中每一個(gè)pfn對(duì)應(yīng)的虛擬頁面在所述第一內(nèi)存空間對(duì)應(yīng)的線性地址;
建立確定出的線性地址與該pfn對(duì)應(yīng)的mfn的映射關(guān)系。
其中,該第一虛擬機(jī)可與上述的dom0相對(duì)應(yīng),第二虛擬機(jī)可與上述的domu相對(duì)應(yīng)。
具體實(shí)施例中,獲取單元11可接收dom0發(fā)送的第一內(nèi)存空間的地址信息(包括基地址和長度值),并依次查找domu虛擬頁面對(duì)應(yīng)的mfn,通過映射單元12建立查找到的mfn與dom0的第一內(nèi)存空間的線性地址的映射關(guān)系。映射單元12具體可根據(jù)domu虛機(jī)頁面的pfn,確定dom0的第一內(nèi)存空間中與該pfn對(duì)應(yīng)的線性地址,并獲取得到各pfn對(duì)應(yīng)的mfn,從而將該domu對(duì)應(yīng)的mfn映射到該第一內(nèi)存空間的線性地址。可選的,該domu可以是通過dom0發(fā)送的domuid確定出的,該domuid可攜帶于該第一內(nèi)存空間的地址信息或其他信息中,也可以單獨(dú)發(fā)送。從而通過將待發(fā)送的數(shù)據(jù)拷貝至dom0線性地址所映射的物理內(nèi)存地址或者從該線性地址所映射的物理內(nèi)存地址讀取傳輸?shù)臄?shù)據(jù)內(nèi)容來實(shí)現(xiàn)數(shù)據(jù)傳輸。
進(jìn)一步的,在本發(fā)明實(shí)施例中,所述裝置還包括:
第一檢測(cè)單元13,用于檢測(cè)所述第二虛擬機(jī)的各虛擬頁面對(duì)應(yīng)的pfn與mfn的映射關(guān)系是否發(fā)生變更;
第一更新單元14,用于在所述第一檢測(cè)單元13檢測(cè)到任一虛擬頁面對(duì)應(yīng)的pfn與mfn的映射關(guān)系發(fā)生變更時(shí),獲取映射關(guān)系發(fā)生變更的pfn及其對(duì)應(yīng)的mfn,確定出該pfn在所述第一內(nèi)存空間對(duì)應(yīng)的線性地址,并將該pfn對(duì)應(yīng)的mfn更新為與確定出的該第一內(nèi)存空間對(duì)應(yīng)的線性地址具有映射關(guān)系的mfn。
在本發(fā)明實(shí)施例中,對(duì)于pv類型的dom0,通過建立domu物理頁面mfn到dom0線性地址的映射關(guān)系,使得dom0地址尋址可通過查詢dom0頁表中的映射關(guān)系尋址找到映射到指定線性地址的物理頁面,以實(shí)現(xiàn)將待發(fā)送的數(shù)據(jù)拷貝至指定線性地址所映射的物理內(nèi)存地址或者從該指定線性地址所映射的物理內(nèi)存地址讀取傳輸?shù)臄?shù)據(jù)內(nèi)容來實(shí)現(xiàn)數(shù)據(jù)傳輸。
進(jìn)一步的,請(qǐng)參見圖10,圖10是本發(fā)明實(shí)施例的又一種虛擬機(jī)內(nèi)存的映射裝置的結(jié)構(gòu)示意圖。具體的,如圖10所示,本發(fā)明實(shí)施例的所述裝置包括上述圖8對(duì)應(yīng)實(shí)施例的虛擬機(jī)內(nèi)存的映射裝置的獲取單元11以及映射單元12。在本發(fā)明實(shí)施例中,所述第一虛擬機(jī)和所述第二虛擬機(jī)的類型均為硬件虛擬化hvm類型;進(jìn)一步的,
所述獲取單元11,還用于獲取為第一虛擬機(jī)分配的第二內(nèi)存空間的地址信息,所述第二內(nèi)存空間的地址信息包括所述第二內(nèi)存空間的基地址;
所述映射單元12可具體用于:
根據(jù)所述第二內(nèi)存空間的基地址、所述第二虛擬機(jī)的各虛擬頁面的pfn、每一個(gè)虛擬頁面的頁面大小,確定出所述第二虛擬機(jī)中每一個(gè)pfn對(duì)應(yīng)的虛擬頁面在所述第二內(nèi)存空間對(duì)應(yīng)的線性地址,并建立確定出的線性地址與該pfn對(duì)應(yīng)的mfn的映射關(guān)系;
建立所述第二內(nèi)存空間的線性地址與所述第一內(nèi)存空間的線性地址的映射關(guān)系,以將所述第二虛擬機(jī)的各虛擬頁面對(duì)應(yīng)的mfn映射到所述第一內(nèi)存空間。
進(jìn)一步的,在本發(fā)明實(shí)施例中,所述裝置還包括:
內(nèi)存分配單元15,用于當(dāng)創(chuàng)建所述第一虛擬機(jī)時(shí),為所述第一虛擬機(jī)分配所述第二內(nèi)存空間,并將所述第二內(nèi)存空間的類型設(shè)置為保留類型。
其中,該第一虛擬機(jī)可與上述的dom0相對(duì)應(yīng),第二虛擬機(jī)可與上述的domu相對(duì)應(yīng)。該第一內(nèi)存空間的地址信息及所述第二內(nèi)存空間的地址信息均可包括相應(yīng)內(nèi)存空間的基地址以及長度值等等,且該長度值指示的第一內(nèi)存空間的內(nèi)存大小以及該第二內(nèi)存空間的內(nèi)存大小均與該第二虛擬機(jī)的所有虛擬頁面對(duì)應(yīng)的虛擬內(nèi)存的內(nèi)存大小相同。
具體的,在創(chuàng)建dom0的過程中,內(nèi)存分配單元15可在e820表中多分配一個(gè)虛機(jī)頁面pfn區(qū)域,即第二內(nèi)存空間,用于映射其他虛擬機(jī)如domu的物理內(nèi)存,并在dom0操作系統(tǒng)的啟動(dòng)過程中,將該分配的pfn區(qū)域設(shè)置為保留類型,使得操作系統(tǒng)不對(duì)這段內(nèi)存空間進(jìn)行動(dòng)態(tài)分配,而只用于domu內(nèi)存映射。
進(jìn)一步的,獲取單元11可獲取dom0pfn區(qū)間的信息,包括基pfn,長度值等,即獲取第二內(nèi)存空間的地址信息,并確定出需要與其進(jìn)行數(shù)據(jù)傳輸?shù)钠渌摂M機(jī)domu,如根據(jù)dom0發(fā)送的domuid確定domu,從而通過映射單元依次對(duì)domu的所有pfn進(jìn)行映射,實(shí)現(xiàn)domu對(duì)應(yīng)的mfn到dom0第一內(nèi)存空間的全量映射。具體的,獲取單元11可通過自身為domu維護(hù)的pfn到mfn的映射關(guān)系獲取domu各虛擬頁面的pfn分別對(duì)應(yīng)的物理內(nèi)存頁面mfn,從而映射單元12可通過調(diào)用擴(kuò)展的hypercall接口建立dom0第二內(nèi)存空間與該mfn的映射關(guān)系,將domu的內(nèi)存全量映射到該第二內(nèi)存空間,并可將該映射關(guān)系存儲(chǔ)于預(yù)置的第一頁表(即上述的dom0擴(kuò)展頁表)中。在建立得到dom0第二內(nèi)存空間與該mfn的映射關(guān)系之后,映射單元12即可將該第二內(nèi)存空間映射到第一內(nèi)存空間,即建立第二內(nèi)存空間的線性地址與該第一內(nèi)存空間的線性地址的映射關(guān)系。具體可通過控制dom0修改自身維護(hù)的頁表(第二頁表,如上述的dom0頁表),將線性地址對(duì)應(yīng)的頁表項(xiàng)填充為對(duì)應(yīng)的pfn,從而實(shí)現(xiàn)將該第二內(nèi)存空間與該第一內(nèi)存空間的映射關(guān)系存儲(chǔ)于dom0頁表中,此處不再贅述。
進(jìn)一步的,所述裝置還包括:
第二檢測(cè)單元16,用于檢測(cè)所述第二虛擬機(jī)的各虛擬頁面對(duì)應(yīng)的pfn與mfn的映射關(guān)系是否發(fā)生變更;
第二更新單元17,用于在所述第二檢測(cè)單元16檢測(cè)到任一虛擬頁面對(duì)應(yīng)的pfn與mfn的映射關(guān)系發(fā)生變更時(shí),獲取映射關(guān)系發(fā)生變更的pfn及其對(duì)應(yīng)的mfn,確定出該pfn在所述第二內(nèi)存空間對(duì)應(yīng)的線性地址,并將該pfn對(duì)應(yīng)的mfn更新為與確定出的該第二內(nèi)存空間對(duì)應(yīng)的線性地址具有映射關(guān)系的mfn。
在本發(fā)明實(shí)施例中,對(duì)于hvm/hap類型的dom0,通過建立domu物理頁面mfn到dom0虛機(jī)頁面pfn的映射關(guān)系,以及建立dom0虛機(jī)頁面pfn到dom0線性地址的映射關(guān)系,使得dom0地址尋址可通過查詢dom0頁表和擴(kuò)展頁表兩級(jí)映射,尋址找到映射到指定線性地址的物理頁面,以實(shí)現(xiàn)將待發(fā)送的數(shù)據(jù)拷貝至指定線性地址所映射的物理內(nèi)存地址或者從該指定線性地址所映射的物理內(nèi)存地址讀取傳輸?shù)臄?shù)據(jù)內(nèi)容來實(shí)現(xiàn)數(shù)據(jù)傳輸。
請(qǐng)參見圖11,圖11是本發(fā)明實(shí)施例提供的一種數(shù)據(jù)傳輸設(shè)備的結(jié)構(gòu)示意圖,用于執(zhí)行上述的虛擬機(jī)內(nèi)存的映射方法。具體的,如圖11所示,本發(fā)明實(shí)施例的所述數(shù)據(jù)傳輸設(shè)備(以下簡稱“設(shè)備”)包括:通信接口300、存儲(chǔ)器200和處理器100,所述處理器100分別與所述通信接口300及所述存儲(chǔ)器200連接。所述存儲(chǔ)器200可以是高速ram存儲(chǔ)器,也可以是非不穩(wěn)定的存儲(chǔ)器(non-volatilememory),例如至少一個(gè)磁盤存儲(chǔ)器。所述通信接口300、存儲(chǔ)器200以及處理器100之間可以通過總線進(jìn)行數(shù)據(jù)連接,也可以通過其他方式數(shù)據(jù)連接。本實(shí)施例中以總線連接進(jìn)行說明。圖11中示出的設(shè)備結(jié)構(gòu)并不構(gòu)成對(duì)本發(fā)明實(shí)施例的限定,還可以包括比圖示更多或更少的部件,或者組合某些部件,或者不同的部件布置。其中:
處理器100為設(shè)備的控制中心,利用各種接口和線路連接整個(gè)設(shè)備的各個(gè)部分,通過運(yùn)行或執(zhí)行存儲(chǔ)在存儲(chǔ)器200內(nèi)的程序和/或單元,以及調(diào)用存儲(chǔ)在存儲(chǔ)器200內(nèi)的驅(qū)動(dòng)軟件,以執(zhí)行設(shè)備的各種功能和處理數(shù)據(jù)。處理器100可以由集成電路(integratedcircuit,簡稱ic)組成,例如可以由單顆封裝的ic所組成,也可以由連接多顆相同功能或不同功能的封裝ic而組成。舉例來說,處理器100可以僅包括中央處理器(centralprocessingunit,簡稱cpu),也可以是cpu、數(shù)字信號(hào)處理器(digitalsignalprocessor,簡稱dsp)、圖形處理器(graphicprocessingunit,簡稱gpu)及各種控制芯片的組合。在本發(fā)明實(shí)施方式中,cpu可以是單運(yùn)算核心,也可以包括多運(yùn)算核心。
通信接口300可包括有線接口、無線接口等。
存儲(chǔ)器200可用于存儲(chǔ)驅(qū)動(dòng)軟件(或軟件程序)以及單元,處理器100、通信接口300通過調(diào)用存儲(chǔ)在存儲(chǔ)器200中的驅(qū)動(dòng)軟件以及單元,從而執(zhí)行設(shè)備的各項(xiàng)功能應(yīng)用以及實(shí)現(xiàn)數(shù)據(jù)處理。存儲(chǔ)器200主要包括程序存儲(chǔ)區(qū)和數(shù)據(jù)存儲(chǔ)區(qū),其中,程序存儲(chǔ)區(qū)可存儲(chǔ)操作系統(tǒng)、至少一個(gè)功能所需的驅(qū)動(dòng)軟件等;數(shù)據(jù)存儲(chǔ)區(qū)可存儲(chǔ)根據(jù)設(shè)備的使用所創(chuàng)建的數(shù)據(jù)等,如上述的包括第二虛擬機(jī)物理內(nèi)存與第一虛擬機(jī)第一內(nèi)存空間的線性地址的映射關(guān)系的頁表。在本發(fā)明實(shí)施例中,操作系統(tǒng)可以是linux、windows、unix、android、ios或windows操作系統(tǒng)等等。
具體的,所述處理器100從所述存儲(chǔ)器200讀取所述驅(qū)動(dòng)軟件并在所述驅(qū)動(dòng)軟件的作用下執(zhí)行:
通過所述通信接口300獲取為第一虛擬機(jī)分配的第一內(nèi)存空間的地址信息;
通過所述通信接口300獲取第二虛擬機(jī)的虛擬頁面對(duì)應(yīng)的物理內(nèi)存的地址信息,所述第二虛擬機(jī)為需要與所述第一虛擬機(jī)進(jìn)行數(shù)據(jù)傳輸?shù)奶摂M機(jī);
根據(jù)所述第一內(nèi)存空間的地址信息與所述物理內(nèi)存的地址信息,建立所述第一內(nèi)存空間的線性地址與所述物理內(nèi)存的內(nèi)存地址的映射關(guān)系。
可選的,所述第一內(nèi)存空間的地址信息包括所述第一內(nèi)存空間的長度值,所述長度值指示的所述第一內(nèi)存空間的內(nèi)存大小與所述第二虛擬機(jī)的所有虛擬頁面對(duì)應(yīng)的虛擬內(nèi)存的內(nèi)存大小相同。
可選的,所述物理內(nèi)存的地址信息包括至少一個(gè)物理頁面的主機(jī)頁序號(hào)mfn;所述處理器100從所述存儲(chǔ)器200讀取所述驅(qū)動(dòng)軟件并在所述驅(qū)動(dòng)軟件的作用下執(zhí)行所述獲取第二虛擬機(jī)的虛擬頁面對(duì)應(yīng)的物理內(nèi)存的地址信息時(shí),具體執(zhí)行以下步驟:
根據(jù)存儲(chǔ)的第二虛擬機(jī)的虛擬頁面對(duì)應(yīng)的虛機(jī)頁序列號(hào)pfn與mfn的映射關(guān)系,確定出所述第二虛擬機(jī)中每一個(gè)pfn對(duì)應(yīng)的mfn;
所述處理器100從所述存儲(chǔ)器200讀取所述驅(qū)動(dòng)軟件并在所述驅(qū)動(dòng)軟件的作用下執(zhí)行所述根據(jù)所述第一內(nèi)存空間的地址信息與所述物理內(nèi)存的地址信息,建立所述第一內(nèi)存空間的線性地址與所述物理內(nèi)存的內(nèi)存地址的映射關(guān)系,具體執(zhí)行以下步驟:
確定所述第二虛擬機(jī)中每一個(gè)pfn對(duì)應(yīng)的虛擬頁面在所述第一內(nèi)存空間對(duì)應(yīng)的線性地址,并建立確定出的線性地址與該pfn對(duì)應(yīng)的mfn的映射關(guān)系。
可選的,所述第一虛擬機(jī)和所述第二虛擬機(jī)的類型均為半虛擬化pv類型,所述第一內(nèi)存空間的地址信息還包括所述第一內(nèi)存空間的基地址;所述處理器100從所述存儲(chǔ)器200讀取所述驅(qū)動(dòng)軟件并在所述驅(qū)動(dòng)軟件的作用下執(zhí)行所述確定所述第二虛擬機(jī)中每一個(gè)pfn對(duì)應(yīng)的虛擬頁面在所述第一內(nèi)存空間對(duì)應(yīng)的線性地址,具體執(zhí)行以下步驟:
根據(jù)所述第一內(nèi)存空間的基地址、所述第二虛擬機(jī)的各虛擬頁面的pfn、每一個(gè)虛擬頁面的內(nèi)存大小,確定出所述第二虛擬機(jī)中每一個(gè)pfn對(duì)應(yīng)的虛擬頁面在所述第一內(nèi)存空間對(duì)應(yīng)的線性地址。
可選的,在所述處理器100從所述存儲(chǔ)器200讀取所述驅(qū)動(dòng)軟件并在所述驅(qū)動(dòng)軟件的作用下執(zhí)行所述確定所述第二虛擬機(jī)中每一個(gè)pfn對(duì)應(yīng)的虛擬頁面在所述第一內(nèi)存空間對(duì)應(yīng)的線性地址,并建立確定出的線性地址與該pfn對(duì)應(yīng)的mfn的映射關(guān)系之后,還執(zhí)行以下步驟:
檢測(cè)所述第二虛擬機(jī)的各虛擬頁面對(duì)應(yīng)的pfn與mfn的映射關(guān)系是否發(fā)生變更;
若任一虛擬頁面對(duì)應(yīng)的pfn與mfn的映射關(guān)系發(fā)生變更,則獲取映射關(guān)系發(fā)生變更的pfn及其對(duì)應(yīng)的mfn,確定出該pfn在所述第一內(nèi)存空間對(duì)應(yīng)的線性地址,并將該pfn對(duì)應(yīng)的mfn更新為與確定出的該第一內(nèi)存空間對(duì)應(yīng)的線性地址具有映射關(guān)系的mfn。
可選的,所述第一虛擬機(jī)和所述第二虛擬機(jī)的類型均為硬件虛擬化hvm類型;所述處理器100從所述存儲(chǔ)器200讀取所述驅(qū)動(dòng)軟件并在所述驅(qū)動(dòng)軟件的作用下還執(zhí)行以下步驟:
通過所述通信接口300獲取為第一虛擬機(jī)分配的第二內(nèi)存空間的地址信息,所述第二內(nèi)存空間的地址信息包括所述第二內(nèi)存空間的基地址;
所述處理器100從所述存儲(chǔ)器200讀取所述驅(qū)動(dòng)軟件并在所述驅(qū)動(dòng)軟件的作用下執(zhí)行所述確定所述第二虛擬機(jī)中每一個(gè)pfn對(duì)應(yīng)的虛擬頁面在所述第一內(nèi)存空間對(duì)應(yīng)的線性地址,并建立確定出的線性地址與該pfn對(duì)應(yīng)的mfn的映射關(guān)系,具體執(zhí)行以下步驟:
根據(jù)所述第二內(nèi)存空間的基地址、所述第二虛擬機(jī)的各虛擬頁面的pfn、每一個(gè)虛擬頁面的頁面大小,確定出所述第二虛擬機(jī)中每一個(gè)pfn對(duì)應(yīng)的虛擬頁面在所述第二內(nèi)存空間對(duì)應(yīng)的線性地址,并建立確定出的線性地址與該pfn對(duì)應(yīng)的mfn的映射關(guān)系;
建立所述第二內(nèi)存空間的線性地址與所述第一內(nèi)存空間的線性地址的映射關(guān)系,以將所述第二虛擬機(jī)的各虛擬頁面對(duì)應(yīng)的mfn映射到所述第一內(nèi)存空間。
可選的,在所述處理器100從所述存儲(chǔ)器200讀取所述驅(qū)動(dòng)軟件并在所述驅(qū)動(dòng)軟件的作用下執(zhí)行所述確定所述第二虛擬機(jī)中每一個(gè)pfn對(duì)應(yīng)的虛擬頁面在所述第一內(nèi)存空間對(duì)應(yīng)的線性地址,并建立確定出的線性地址與該pfn對(duì)應(yīng)的mfn的映射關(guān)系之后,還執(zhí)行以下步驟:
檢測(cè)所述第二虛擬機(jī)的各虛擬頁面對(duì)應(yīng)的pfn與mfn的映射關(guān)系是否發(fā)生變更;
若任一虛擬頁面對(duì)應(yīng)的pfn與mfn的映射關(guān)系發(fā)生變更,則獲取映射關(guān)系發(fā)生變更的pfn及其對(duì)應(yīng)的mfn,確定出該pfn在所述第二內(nèi)存空間對(duì)應(yīng)的線性地址,并將該pfn對(duì)應(yīng)的mfn更新為與確定出的該第二內(nèi)存空間對(duì)應(yīng)的線性地址具有映射關(guān)系的mfn。
可選的,所述處理器100從所述存儲(chǔ)器200讀取所述驅(qū)動(dòng)軟件并在所述驅(qū)動(dòng)軟件的作用下還執(zhí)行以下步驟:
當(dāng)創(chuàng)建所述第一虛擬機(jī)時(shí),為所述第一虛擬機(jī)分配所述第二內(nèi)存空間,并將所述第二內(nèi)存空間的類型設(shè)置為保留類型。
可選的,所述第二內(nèi)存空間的地址信息還包括所述第二內(nèi)存空間的長度值,所述長度值指示的所述第二內(nèi)存空間的內(nèi)存大小與所述第二虛擬機(jī)的所有虛擬頁面對(duì)應(yīng)的虛擬內(nèi)存的內(nèi)存大小相同。
可選的,所述第二虛擬機(jī)是通過所述第一虛擬機(jī)發(fā)送的虛擬機(jī)標(biāo)識(shí)確定的。
在上述實(shí)施例中,對(duì)各個(gè)實(shí)施例的描述都各有側(cè)重,某個(gè)實(shí)施例中沒有詳述的部分,可以參見其他實(shí)施例的相關(guān)描述。
在本發(fā)明所提供的幾個(gè)實(shí)施例中,應(yīng)該理解到,所揭露的裝置和方法,可以通過其它的方式實(shí)現(xiàn)。例如,以上所描述的裝置實(shí)施例僅僅是示意性的,例如,所述單元的劃分,僅僅為一種邏輯功能劃分,實(shí)際實(shí)現(xiàn)時(shí)可以有另外的劃分方式,例如多個(gè)單元或組件可以結(jié)合或者可以集成到另一個(gè)系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點(diǎn),所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口,裝置或單元的間接耦合或通信連接,可以是電性,機(jī)械或其它的形式。
所述該作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個(gè)地方,或者也可以分布到多個(gè)網(wǎng)絡(luò)單元上??梢愿鶕?jù)實(shí)際的需要選擇其中的部分或者全部單元來實(shí)現(xiàn)本實(shí)施例方案的目的。
另外,在本發(fā)明各個(gè)實(shí)施例中的各功能單元可以集成在一個(gè)處理單元中,也可以是各個(gè)單元單獨(dú)物理存在,也可以兩個(gè)或兩個(gè)以上單元集成在一個(gè)單元中。上述集成的單元既可以采用硬件的形式實(shí)現(xiàn),也可以采用硬件加軟件功能單元的形式實(shí)現(xiàn)。
上述以軟件功能單元的形式實(shí)現(xiàn)的集成的單元,可以存儲(chǔ)在一個(gè)計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中。上述軟件功能單元存儲(chǔ)在一個(gè)存儲(chǔ)介質(zhì)中,包括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備(可以是個(gè)人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)或處理器(processor)執(zhí)行本發(fā)明各個(gè)實(shí)施例所述方法的部分步驟。而前述的存儲(chǔ)介質(zhì)包括:u盤、移動(dòng)硬盤、只讀存儲(chǔ)器(read-onlymemory,rom)、隨機(jī)存取存儲(chǔ)器(randomaccessmemory,ram)、磁碟或者光盤等各種可以存儲(chǔ)程序代碼的介質(zhì)。
本領(lǐng)域技術(shù)人員可以清楚地了解到,為描述的方便和簡潔,僅以上述各功能單元的劃分進(jìn)行舉例說明,實(shí)際應(yīng)用中,可以根據(jù)需要而將上述功能分配由不同的功能單元完成,即將裝置的內(nèi)部結(jié)構(gòu)劃分成不同的功能單元,以完成以上描述的全部或者部分功能。上述描述的裝置的具體工作過程,可以參考前述方法實(shí)施例中的對(duì)應(yīng)過程,在此不再贅述。
最后應(yīng)說明的是:以上各實(shí)施例僅用以說明本發(fā)明的技術(shù)方案,而非對(duì)其限制;盡管參照前述各實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可以對(duì)前述各實(shí)施例所記載的技術(shù)方案進(jìn)行修改,或者對(duì)其中部分或者全部技術(shù)特征進(jìn)行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實(shí)施例技術(shù)方案的范圍。