專利名稱:一種虛擬機(jī)系統(tǒng)及其硬件設(shè)備訪問方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種虛擬機(jī)技術(shù),特別是涉及一種虛擬機(jī)系統(tǒng)及其硬件設(shè)備訪問方法。
背景技術(shù):
在現(xiàn)有的虛擬化過程中,都有一個通用的虛擬設(shè)備平臺,包括虛擬聲卡、虛擬顯卡等,由虛擬機(jī)監(jiān)視器(Virtual Machine Monitor,VMM)將客戶操作系統(tǒng)(Guest OS)對虛擬設(shè)備平臺中的虛擬設(shè)備的訪問通過服務(wù)操作系統(tǒng)(Service OS)或者主機(jī)操作系統(tǒng)(Host OS)訪問到真實的硬件上。
圖1為現(xiàn)有的Xen虛擬機(jī)系統(tǒng)的示意圖。如圖1所示,Xen虛擬機(jī)系統(tǒng)包括客戶操作系統(tǒng)、服務(wù)操作系統(tǒng)、虛擬機(jī)監(jiān)視器以及硬件。其中,客戶操作系統(tǒng)中提供有應(yīng)用以及驅(qū)動模塊,服務(wù)操作系統(tǒng)具有設(shè)備模塊(DeviceModel,DM)、以及驅(qū)動模塊。
以下將參照圖2說明在上述Xen虛擬機(jī)系統(tǒng)中客戶操作系統(tǒng)對硬件的訪問過程。
在客戶操作系統(tǒng)進(jìn)行硬件訪問之前,首先,服務(wù)操作系統(tǒng)在啟動時,掃描PCI總線,為硬件分配資源,包括IRQ、IO和MMIO等,當(dāng)創(chuàng)建客戶操作系統(tǒng)時通過設(shè)備模塊為客戶操作系統(tǒng)生成虛擬硬件平臺;客戶操作系統(tǒng)在啟動時,掃描虛擬PCI總線,為虛擬硬件分配資源。在客戶操作系統(tǒng)為虛擬硬件分配資源之后,可以對設(shè)備IO進(jìn)行訪問。
下面具體描述客戶操作系統(tǒng)進(jìn)行設(shè)備IO訪問時的過程客戶操作系統(tǒng)在需要訪問硬件IO空間時,通過虛擬硬件驅(qū)動模塊發(fā)出相應(yīng)的IO請求;虛擬機(jī)監(jiān)視器截獲客戶操作系統(tǒng)的驅(qū)動模塊發(fā)出的IO請求,并將IO請求發(fā)送給服務(wù)操作系統(tǒng)中的設(shè)備模塊;設(shè)備模塊分析IO請求后將其轉(zhuǎn)換成相應(yīng)的調(diào)用指令,由服務(wù)操作系統(tǒng)的驅(qū)動模塊將調(diào)用指令轉(zhuǎn)換成IO指令后調(diào)用相應(yīng)的硬件;在獲得硬件響應(yīng)后,服務(wù)操作系統(tǒng)將該響應(yīng)通過虛擬機(jī)監(jiān)視器傳給客戶操作系統(tǒng),從而完成客戶操作系統(tǒng)對硬件的訪問。
以上只是以Xen虛擬機(jī)系統(tǒng)為例說明客戶操作系統(tǒng)對硬件設(shè)備的訪問過程,對于其他虛擬機(jī)系統(tǒng),如VMware虛擬機(jī)系統(tǒng),也執(zhí)行類似的訪問過程,只是將Xen虛擬機(jī)系統(tǒng)的服務(wù)操作系統(tǒng)所做的工作由主機(jī)操作系統(tǒng)完成。
由于現(xiàn)有虛擬機(jī)系統(tǒng)無法解決多個客戶操作系統(tǒng)對真實硬件的共享問題,因此,在上述通用的虛擬化平臺中,不論真實的硬件平臺是什么,虛擬化出來的設(shè)備都一致,雖然這樣對于各個客戶操作系統(tǒng)都適用,但會出現(xiàn)以下問題1)虛擬機(jī)系統(tǒng)顯示的硬件設(shè)備與真實的硬件設(shè)備不一致,用戶無法看到真實的硬件;2)此外,真實硬件的一些特性無法使用,如顯卡的硬件加速特性,USB的新標(biāo)準(zhǔn)、聲卡的高級特性等;3)由于客戶操作系統(tǒng)需要通過虛擬機(jī)監(jiān)視器、以及服務(wù)操作系統(tǒng)后才能訪問到硬件,因此增加了相應(yīng)的中間過程,這樣將影響到硬件訪問的性能。
發(fā)明內(nèi)容
本發(fā)明的目的是,提供一種虛擬機(jī)系統(tǒng)。
本發(fā)明的另一目的是,提供一種虛擬機(jī)系統(tǒng)硬件設(shè)備訪問方法。
一種虛擬機(jī)系統(tǒng),包括服務(wù)操作系統(tǒng)、客戶操作系統(tǒng)、虛擬機(jī)監(jiān)視器以及硬件,服務(wù)操作系統(tǒng)包括設(shè)備模塊和驅(qū)動模塊,客戶操作系統(tǒng)包括掃描模塊和驅(qū)動模塊,虛擬機(jī)監(jiān)視器包括資源轉(zhuǎn)換模塊。所述資源轉(zhuǎn)換模塊用于存儲服務(wù)操作系統(tǒng)為硬件設(shè)備分配的資源、客戶操作系統(tǒng)對服務(wù)操作系統(tǒng)為其提供的硬件設(shè)備分配的資源二者之間的轉(zhuǎn)換關(guān)系;以及,在客戶操作系統(tǒng)發(fā)出訪問硬件設(shè)備的請求時,所述資源轉(zhuǎn)換模塊用于根據(jù)上述轉(zhuǎn)換關(guān)系將客戶操作系統(tǒng)的訪問地址轉(zhuǎn)化成對應(yīng)硬件設(shè)備的真實物理地址。
一種虛擬機(jī)系統(tǒng)硬件設(shè)備訪問方法,包括步驟步驟600,客戶操作系統(tǒng)訪問硬件設(shè)備時,產(chǎn)生相應(yīng)的訪問請求;步驟610,虛擬機(jī)監(jiān)視器截獲所述訪問請求,并根據(jù)預(yù)先存儲的轉(zhuǎn)換關(guān)系將客戶操作系統(tǒng)的訪問地址轉(zhuǎn)化成對應(yīng)硬件設(shè)備的真實物理地址;步驟620,在訪問硬件設(shè)備后,虛擬機(jī)監(jiān)視器將訪問結(jié)果轉(zhuǎn)給客戶操作系統(tǒng)。
與現(xiàn)有技術(shù)相比,本發(fā)明的有益效果是1)虛擬機(jī)系統(tǒng)顯示的硬件設(shè)備與真實的硬件設(shè)備一致,用戶可以看到并使用真實的硬件;2)由于客戶操作系統(tǒng)可以直接或者通過虛擬機(jī)監(jiān)視器訪問到真實硬件,這樣提高了虛擬機(jī)系統(tǒng)硬件訪問的效率。
圖1為現(xiàn)有的Xen虛擬機(jī)系統(tǒng)的示意圖;圖2為圖1所示的虛擬機(jī)系統(tǒng)中客戶操作系統(tǒng)訪問硬件設(shè)備的流程圖;圖3為本發(fā)明的虛擬機(jī)系統(tǒng)的結(jié)構(gòu)示意圖;圖4為本發(fā)明虛擬機(jī)系統(tǒng)資源分配的流程圖;圖5為本發(fā)明虛擬機(jī)系統(tǒng)中硬件設(shè)備訪問方法的流程圖。
具體實施例方式
以下結(jié)合
本發(fā)明的虛擬機(jī)系統(tǒng)及其硬件訪問方法。
圖3為本發(fā)明的虛擬機(jī)系統(tǒng)的結(jié)構(gòu)示意圖。如圖3所示,本發(fā)明的虛擬機(jī)系統(tǒng)包括服務(wù)操作系統(tǒng)、客戶操作系統(tǒng)、虛擬機(jī)監(jiān)視器以及硬件。其中,服務(wù)操作系統(tǒng)包括設(shè)備模塊和驅(qū)動模塊,客戶操作系統(tǒng)包括掃描模塊和驅(qū)動模塊,為了能夠?qū)崿F(xiàn)客戶操作系統(tǒng)直接訪問硬件,虛擬機(jī)監(jiān)視器包括資源轉(zhuǎn)換模塊,例如,IRQ轉(zhuǎn)換模塊、IO轉(zhuǎn)換模塊以及MMIO映射模塊。
以一個客戶操作系統(tǒng)為例,在本發(fā)明中,為了解決系統(tǒng)內(nèi)存與硬件作DMA(Direct Memory Access,直接存儲器訪問)操作的問題,將原來運(yùn)行在低端內(nèi)存的虛擬機(jī)監(jiān)視器的地址從低端內(nèi)存移到高端內(nèi)存,即,使客戶操作系統(tǒng)的物理內(nèi)存地址與機(jī)器的內(nèi)存地址一致。
在客戶操作系統(tǒng)訪問硬件之前,需要服務(wù)操作系統(tǒng)和客戶操作系統(tǒng)對硬件的IRQ、IO以及MMIO等資源進(jìn)行分配,圖4為本發(fā)明虛擬機(jī)系統(tǒng)資源分配的流程圖。
如圖4所示,服務(wù)操作系統(tǒng)在啟動時,掃描PCI總線,為硬件設(shè)備分配IRQ、IO和MMIO等資源,將分配的IRQ、IO、MMIO等寫入各硬件設(shè)備的PCI配置空間。
設(shè)備模塊根據(jù)配置文件的設(shè)置為客戶操作系統(tǒng)提供硬件設(shè)備,對于需要直接訪問的硬件設(shè)備,從服務(wù)操作系統(tǒng)獲得設(shè)備的真實信息,并把這些設(shè)備掛到虛擬的PCI總線上,在客戶操作系統(tǒng)啟動后掃描虛擬PCI總線時,將硬件設(shè)備的真實信息通知客戶操作系統(tǒng),讓客戶操作系統(tǒng)看到真實的硬件設(shè)備。
客戶操作系統(tǒng)在掃描虛擬PCI總線時,對服務(wù)操作系統(tǒng)為其提供的硬件設(shè)備分配IRQ、IO、MMIO等資源。
由于每個客戶操作系統(tǒng)都會對服務(wù)操作系統(tǒng)提供的硬件設(shè)備分配IRQ、IO、MMIO等資源,服務(wù)操作系統(tǒng)對所有的硬件設(shè)備分配IRQ、IO、MMIO等資源,這樣,當(dāng)客戶操作系統(tǒng)和服務(wù)操作系統(tǒng)對同一硬件設(shè)備進(jìn)行資源分配時,可能會產(chǎn)生沖突。
在存在沖突的情況下,為了防止沖突,在本發(fā)明中,在客戶操作系統(tǒng)掃描虛擬PCI總線為硬件設(shè)備分配IRQ、IO、MMIO資源時,設(shè)備模塊通過虛擬機(jī)監(jiān)視器截獲分配信息,對客戶操作系統(tǒng)的資源分配進(jìn)行解析,將客戶操作系統(tǒng)和服務(wù)操作系統(tǒng)對硬件設(shè)備的資源分配建立映射關(guān)系,也就是,將客戶操作系統(tǒng)對硬件設(shè)備的資源分配與服務(wù)操作系統(tǒng)對硬件設(shè)備的資源分配之間建立對應(yīng)關(guān)系。
然后,設(shè)備模塊將建立的映射關(guān)系下發(fā)到虛擬機(jī)監(jiān)視器中的資源轉(zhuǎn)換模塊,即,設(shè)備模塊將客戶操作系統(tǒng)分配的IO和IRQ的轉(zhuǎn)換關(guān)系分別下發(fā)到虛擬機(jī)監(jiān)視器的IO轉(zhuǎn)換模塊和IRQ轉(zhuǎn)換模塊,并將MMIO映射關(guān)系下發(fā)到虛擬機(jī)監(jiān)視器的MMIO映射模塊,使客戶操作系統(tǒng)分配的MMIO地址映射到服務(wù)操作系統(tǒng)分配給硬件設(shè)備的MMIO地址上。
以下參照圖5說明本發(fā)明虛擬機(jī)系統(tǒng)中硬件設(shè)備訪問方法。
當(dāng)客戶操作系統(tǒng)需要訪問硬件設(shè)備時,其驅(qū)動模塊產(chǎn)生相應(yīng)的IO請求;虛擬機(jī)監(jiān)視器截獲該IO請求,并將IO請求通過IO轉(zhuǎn)換模塊將客戶操作系統(tǒng)的IO地址(訪問地址)轉(zhuǎn)化成對應(yīng)硬件設(shè)備的真實IO地址(真實的物理地址)后,直接訪問硬件設(shè)備;在虛擬機(jī)監(jiān)視器訪問硬件設(shè)備后,將訪問結(jié)果轉(zhuǎn)給客戶操作系統(tǒng)。
另外,當(dāng)客戶操作系統(tǒng)訪問硬件時,也可以通過MMIO映射模塊將客戶操作系統(tǒng)分配的MMIO映射到物理MMIO(服務(wù)操作系統(tǒng)分配的MMIO地址)。當(dāng)發(fā)生頁表錯誤(Page Fault)時,虛擬機(jī)監(jiān)視器將MMIO對應(yīng)的真實地址寫入影子頁表(Shadow Page Tables)。這樣客戶服務(wù)系統(tǒng)通過VMM建立的影子頁表可以直接訪問到設(shè)備的MMIO地址。
當(dāng)硬件設(shè)備產(chǎn)生中斷時,虛擬機(jī)監(jiān)視器通過IRQ轉(zhuǎn)換模塊根據(jù)轉(zhuǎn)換關(guān)系將硬件設(shè)備產(chǎn)生的中斷轉(zhuǎn)化成客戶操作系統(tǒng)的中斷號再發(fā)給客戶操作系統(tǒng)。
這樣,通過設(shè)備模塊和虛擬機(jī)監(jiān)視器,客戶操作系統(tǒng)可以直接訪問到真實的硬件設(shè)備。
當(dāng)客戶操作系統(tǒng)和服務(wù)操作系統(tǒng)對同一硬件設(shè)備進(jìn)行資源分配時,如果二者分配的IO資源不沖突,那么可以通過修改VMCS(Virtual-Machine ControlStructure,虛擬機(jī)控制結(jié)構(gòu))中的數(shù)據(jù),使得客戶操作系統(tǒng)訪問硬件設(shè)備時不發(fā)生VM exit(虛擬機(jī)退出),也就是通過修改VMCS替換上述的IO轉(zhuǎn)換模塊,就可以直接訪問到硬件的IO地址。
從上述描述可以看出,相對于現(xiàn)有的虛擬機(jī)系統(tǒng)和硬件訪問方法,本發(fā)明具有以下優(yōu)點1)虛擬機(jī)系統(tǒng)顯示的硬件設(shè)備與真實的硬件設(shè)備一致,用戶可以看到并使用真實的硬件;2)由于客戶操作系統(tǒng)可以直接或者通過虛擬機(jī)監(jiān)視器訪問到真實硬件,這樣提高了虛擬機(jī)系統(tǒng)硬件訪問的效率。
以上所述,僅為本發(fā)明較佳的具體實施方式
,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到的變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)該以權(quán)利要求的保護(hù)范圍為準(zhǔn)。
權(quán)利要求
1.一種虛擬機(jī)系統(tǒng),包括服務(wù)操作系統(tǒng)、客戶操作系統(tǒng)、虛擬機(jī)監(jiān)視器以及硬件,服務(wù)操作系統(tǒng)包括設(shè)備模塊和驅(qū)動模塊,客戶操作系統(tǒng)包括掃描模塊和驅(qū)動模塊,其特征在于,虛擬機(jī)監(jiān)視器包括資源轉(zhuǎn)換模塊,所述資源轉(zhuǎn)換模塊用于存儲服務(wù)操作系統(tǒng)為硬件設(shè)備分配的資源、客戶操作系統(tǒng)對服務(wù)操作系統(tǒng)為其提供的硬件設(shè)備分配的資源二者之間的轉(zhuǎn)換關(guān)系,以及,在客戶操作系統(tǒng)發(fā)出訪問硬件設(shè)備的請求時,所述資源轉(zhuǎn)換模塊用于根據(jù)上述轉(zhuǎn)換關(guān)系將客戶操作系統(tǒng)的訪問地址轉(zhuǎn)化成對應(yīng)硬件設(shè)備的真實物理地址。
2.如權(quán)利要求1所述的虛擬機(jī)系統(tǒng),其特征在于,所述資源轉(zhuǎn)換模塊包括IO轉(zhuǎn)換模塊,用于存儲所述轉(zhuǎn)換關(guān)系中的IO轉(zhuǎn)換關(guān)系,并在客戶操作系統(tǒng)發(fā)出IO請求時,根據(jù)IO轉(zhuǎn)換關(guān)系將客戶操作系統(tǒng)的訪問地址轉(zhuǎn)化成對應(yīng)硬件設(shè)備的真實物理地址。
3.如權(quán)利要求1或2所述的虛擬機(jī)系統(tǒng),其特征在于,所述資源轉(zhuǎn)換模塊包括MMIO映射模塊,用于存儲所述轉(zhuǎn)換關(guān)系中的MMIO映射轉(zhuǎn)換關(guān)系,在客戶操作系統(tǒng)訪問硬件設(shè)備時,將客戶操作系統(tǒng)分配的MMIO映射到物理MMIO。
4.如權(quán)利要求1至3任一項所述的虛擬機(jī)系統(tǒng),其特征在于,所述資源轉(zhuǎn)換模塊進(jìn)一步包括IRQ轉(zhuǎn)換模塊,用于存儲所述轉(zhuǎn)換關(guān)系中的IRQ轉(zhuǎn)換關(guān)系,并在硬件設(shè)備產(chǎn)生中斷時,根據(jù)IRQ轉(zhuǎn)換關(guān)系將硬件設(shè)備產(chǎn)生的中斷轉(zhuǎn)化成客戶操作系統(tǒng)的中斷號后發(fā)給客戶操作系統(tǒng)。
5.如權(quán)利要求1至4任一項所述的虛擬機(jī)系統(tǒng),其特征在于,客戶操作系統(tǒng)的物理內(nèi)存地址與機(jī)器的內(nèi)存地址一致。
6.一種虛擬機(jī)系統(tǒng)硬件設(shè)備訪問方法,其特征在于,包括步驟步驟600,客戶操作系統(tǒng)訪問硬件設(shè)備時,產(chǎn)生相應(yīng)的訪問請求;步驟610,虛擬機(jī)監(jiān)視器截獲所述訪問請求,并根據(jù)預(yù)先存儲的轉(zhuǎn)換關(guān)系將客戶操作系統(tǒng)的訪問地址轉(zhuǎn)化成對應(yīng)硬件設(shè)備的真實物理地址;步驟620,在訪問硬件設(shè)備后,虛擬機(jī)監(jiān)視器將訪問結(jié)果轉(zhuǎn)給客戶操作系統(tǒng)。
7.如權(quán)利要求6所述的方法,其特征在于,生成所述預(yù)先存儲的轉(zhuǎn)換關(guān)系的步驟包括步驟700,服務(wù)操作系統(tǒng)在啟動時,掃描PCI總線,為硬件設(shè)備分配資源,將分配的資源寫入各硬件設(shè)備的PCI配置空間;步驟710,設(shè)備模塊根據(jù)配置文件的設(shè)置為客戶操作系統(tǒng)提供硬件設(shè)備,并在客戶操作系統(tǒng)啟動后掃描虛擬PCI總線時,將硬件設(shè)備的真實信息通知客戶操作系統(tǒng);步驟720,在客戶操作系統(tǒng)掃描虛擬PCI總線時,對服務(wù)操作系統(tǒng)中設(shè)備模塊為其提供的硬件設(shè)備分配資源;步驟730,設(shè)備模塊通過虛擬機(jī)監(jiān)視器截獲資源分配信息,將客戶操作系統(tǒng)和服務(wù)操作系統(tǒng)對硬件設(shè)備的資源分配建立轉(zhuǎn)換關(guān)系,并將建立的轉(zhuǎn)換關(guān)系下發(fā)到虛擬機(jī)監(jiān)視器中的資源轉(zhuǎn)換模塊。
8.如權(quán)利要求7所述的方法,其特征在于,所述轉(zhuǎn)換關(guān)系包括IO轉(zhuǎn)換關(guān)系和/或MMIO映射關(guān)系。
9.如權(quán)利要求8所述的方法,其特征在于,所述轉(zhuǎn)換關(guān)系進(jìn)一步包括IRQ轉(zhuǎn)換關(guān)系,并在硬件設(shè)備產(chǎn)生中斷時,虛擬機(jī)監(jiān)視器根據(jù)IRQ轉(zhuǎn)換關(guān)系將硬件設(shè)備產(chǎn)生的中斷轉(zhuǎn)化成客戶操作系統(tǒng)的中斷號后發(fā)給客戶操作系統(tǒng)。
10.如權(quán)利要求6至9任一項所述的方法,其特征在于,客戶操作系統(tǒng)的物理內(nèi)存地址與機(jī)器的內(nèi)存地址一致。
11.一種虛擬機(jī)系統(tǒng)硬件設(shè)備訪問方法,其特征在于,通過修改虛擬機(jī)控制結(jié)構(gòu)中的數(shù)據(jù),使得客戶操作系統(tǒng)訪問硬件設(shè)備時不發(fā)生虛擬機(jī)退出,從而直接訪問到硬件設(shè)備的IO地址。
全文摘要
本發(fā)明提供一種虛擬機(jī)系統(tǒng)以及硬件設(shè)備訪問方法。該虛擬機(jī)系統(tǒng)包括服務(wù)操作系統(tǒng)、客戶操作系統(tǒng)、虛擬機(jī)監(jiān)視器以及硬件,服務(wù)操作系統(tǒng)包括設(shè)備模塊和驅(qū)動模塊,客戶操作系統(tǒng)包括掃描模塊和驅(qū)動模塊。其中,虛擬機(jī)監(jiān)視器包括資源轉(zhuǎn)換模塊,該資源轉(zhuǎn)換模塊用于存儲服務(wù)操作系統(tǒng)為硬件設(shè)備分配的資源、客戶操作系統(tǒng)對服務(wù)操作系統(tǒng)為其提供的硬件設(shè)備分配的資源二者之間的轉(zhuǎn)換關(guān)系;以及,在客戶操作系統(tǒng)發(fā)出訪問硬件設(shè)備的請求時,所述資源轉(zhuǎn)換模塊用于根據(jù)上述轉(zhuǎn)換關(guān)系將客戶操作系統(tǒng)的訪問地址轉(zhuǎn)化成對應(yīng)硬件設(shè)備的真實物理地址。通過本發(fā)明,在使得用戶看到并使用真實硬件設(shè)備的同時,提高虛擬機(jī)系統(tǒng)硬件設(shè)備訪問的效率。
文檔編號G06F9/455GK101059761SQ200610076390
公開日2007年10月24日 申請日期2006年4月20日 優(yōu)先權(quán)日2006年4月20日
發(fā)明者劉春梅, 陳軍, 劉永鋒, 石勇 申請人:聯(lián)想(北京)有限公司