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