專利名稱:一種虛擬機系統(tǒng)及其顯卡使用方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計算機領(lǐng)域,特別是涉及一種虛擬機系統(tǒng)及其顯卡使用方法。
背景技術(shù):
隨著計算機系統(tǒng)的發(fā)展,虛擬化技術(shù)在計算機領(lǐng)域得到廣泛應(yīng)用?,F(xiàn)代 計算機已經(jīng)具有能力來利用虛擬化技術(shù)支持多個虛擬機,并在每個虛擬機上 各自運行單獨的操作系統(tǒng)。
在虛擬機系統(tǒng)中,各操作系統(tǒng)都需要對硬件進行訪問,其中對顯卡的訪 問相對來說是一個比較復(fù)雜的問題,對顯卡的不同使用方法是影響用戶體驗
的一個重要因素。目前,VMWare及Virtual PC等主流虛擬化技術(shù)所采用的方 案大同小異,都是為客戶操作系統(tǒng)(GOS)提供一個虛擬化了的顯卡。該虛 擬顯卡是一個通用的顯卡,只能實現(xiàn)基本的顯示功能,與真實的顯卡差別很 大。
圖l為現(xiàn)有技術(shù)的虛擬機系統(tǒng)中顯卡訪問的示意圖。該虛擬機系統(tǒng)包括 虛擬機監(jiān)視器(VMM)、服務(wù)操作系統(tǒng)(SOS)和至少一個GOS (圖1中以 l個GOS為例進行說明)。
SOS啟動時,掃描PCI總線,發(fā)現(xiàn)真實顯卡,獲取真實顯卡信息,為本 系統(tǒng)分配真實顯卡資源(IRQ、 10、 MMIO), SOS通過真實顯卡的驅(qū)動模塊 對顯卡進行訪問。
SOS包含至少一個設(shè)備模型(DM),每個DM對應(yīng)一個GOS,為GOS 提供一個虛擬顯卡。GOS啟動時,掃描PCI總線,其掃描操作被VMM攔截, 并轉(zhuǎn)發(fā)到DM里的虛擬PCI總線,DM給該GOS注冊虛擬顯卡。GOS發(fā)現(xiàn) 虛擬顯卡,獲取虛擬顯卡信息,為本GOS分配虛擬顯卡資源(IRQ、 10、 MMIO),并保存在DM的虛擬顯卡的PCI配置空間里,VMM從中獲得虛擬 顯卡的資源范圍(中斷號,各個IO段,各個MMIO段)。GOS通過虛擬顯卡 的驅(qū)動模塊訪問虛擬顯卡時,GOS在訪問虛擬顯卡時候,其對虛擬顯卡的訪
問操作(IO,MMIO)被VMM攔截,VMM將訪問數(shù)據(jù)發(fā)送到DM; DM對訪 問數(shù)據(jù)進行轉(zhuǎn)換后,發(fā)送到真實顯卡的驅(qū)動模塊;真實顯卡的驅(qū)動模塊對接 收到的數(shù)據(jù)進行處理后發(fā)送到顯卡。
該虛擬機系統(tǒng)包括一個或多個GOS,各個GOS操作系統(tǒng)都是通過SOS 訪問顯卡。所以,除了 SOS可以看到真實顯卡,并利用真實顯卡的驅(qū)動模塊 訪問顯卡外,每個GOS看到的都是由DM提供的虛擬顯卡,并利用虛擬顯卡 的驅(qū)動模塊對顯卡進行訪問,這樣,虛擬機系統(tǒng)的顯示是通過SOS來顯示的, 不具備2D, 3D等加速特性,顯卡的硬件加速特性無法被用戶使用,甚至不 支持3D動畫的功能,影響了顯示性能。此外各GOS在顯示時候,需用在GOS, SOS的DM, SOS的真實顯卡的驅(qū)動模塊,VMM之間來回傳遞數(shù)據(jù)和切換 環(huán)境,使整個系統(tǒng)的效率降低。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種虛擬機系統(tǒng)及其顯卡使用方法,其能使GOS 訪問真實顯卡的同時可以在多個虛擬機之間切換顯示。
為了實現(xiàn)上述目的,本發(fā)明提供了一種虛擬機系統(tǒng),包括服務(wù)操作系統(tǒng) SOS、 一個或多個客戶操作系統(tǒng)GOS、虛擬機監(jiān)視器VMM和顯卡,其中
所述VMM中設(shè)置有一資源轉(zhuǎn)換模塊,用于根據(jù)資源轉(zhuǎn)換表轉(zhuǎn)換處于前 臺的GOS的顯卡驅(qū)動模塊和顯卡之間交互的數(shù)據(jù),并用于攔截處于后臺的 GOS對真實顯卡的訪問后響應(yīng)其對顯卡的操作;
所述VMM中還設(shè)置有一切換模塊,用于根據(jù)切換VM的命令更改相應(yīng) VM的狀態(tài),并保存VM切換為后臺前的顯卡狀態(tài),并在所述VM重新切換 為前臺時將保存的顯卡狀態(tài)恢復(fù)到顯卡;
所述客戶操作系統(tǒng)包括一對應(yīng)于真實顯卡的顯卡驅(qū)動模塊,用于訪問真 實顯卡。
上述的虛擬機系統(tǒng),其中,所述資源轉(zhuǎn)換模塊還用于根據(jù)處于后臺的VM 對顯卡的操作相應(yīng)修改所述切換模塊中保存的顯卡狀態(tài)數(shù)據(jù)。
上述的虛擬機系統(tǒng),其中,所述資源轉(zhuǎn)換模塊還用于拋棄處于后臺的VM 對顯卡的操作中不影響顯卡狀態(tài)寄存器的操作。
上述的虛擬機系統(tǒng),其中,所述VMM還包括通信模塊,用于服務(wù)操作系統(tǒng)、客戶操作系統(tǒng)、VMM三者之間的通信。 上述的虛擬機系統(tǒng),其中,所述服務(wù)操作系統(tǒng)包括
設(shè)備模型DM,用于為GOS提供虛擬的PCI總線或PCI—E總線,并用 于在接收到VMM轉(zhuǎn)發(fā)的GOS掃描PCI總線的操作后,從真實顯卡的PCI 配置空間讀取真實顯卡的信息,并給GOS注冊包含真實顯卡信息的PCI設(shè)備 或PCI—E設(shè)備。
上述的虛擬機系統(tǒng),其中,所述資源轉(zhuǎn)換表保存在VMM的空間中,或 保存在GOS虛擬機的上下文環(huán)境中。
上述的虛擬機系統(tǒng),其中,所述資源轉(zhuǎn)換表具體包括虛擬機號,設(shè)備 號,GuestIO段,GuestMMIO段,Guest中斷號,Machine中斷號,MachineIO 段,MachineMMIO段,。
為了更好的實現(xiàn)上述目的,本發(fā)明還提供了一種虛擬機系統(tǒng)的顯卡使用 方法,其中,
VMM中的資源轉(zhuǎn)換模塊根據(jù)資源轉(zhuǎn)換表轉(zhuǎn)換處于前臺的GOS的顯卡驅(qū) 動模塊和顯卡之間交互的數(shù)據(jù),同時攔截處于后臺的GOS對真實顯卡的訪問 后響應(yīng)其對顯卡的操作;
VMM中的切換模塊根據(jù)切換VM的命令更改相應(yīng)VM的狀態(tài),并保存 VM切換為后臺前的顯卡狀態(tài),并在所述VM重新切換為前臺時將保存的顯 卡狀態(tài)恢復(fù)到顯卡;
所述客戶操作系統(tǒng)包含對應(yīng)于真實顯卡的顯卡驅(qū)動模塊。上述的方法, 其中,所述資源轉(zhuǎn)換模塊還根據(jù)處于后臺的VM對顯卡的操作相應(yīng)修改所述 切換模塊中保存的顯卡狀態(tài)數(shù)據(jù)。
上述的方法,其中,切換模塊通過調(diào)用標準BIOS,執(zhí)行VGABIOS,或 直接對顯卡進行操作將要切換到后臺的前臺GOS的顯卡狀態(tài)保存到對應(yīng) GOS的顯卡狀態(tài)數(shù)據(jù)里。
上述的方法,其中,切換模塊通過調(diào)用標準BIOS,執(zhí)行VGA BIOS,或 直接對顯卡進行操作將要切換到前臺的GOS的顯卡狀態(tài)恢復(fù)到真實顯卡。
上述的方法,其中,GOS處于前臺還是后臺通過為GOS所在的VM設(shè) 置的指定其處于前臺還是后臺的標識來判斷。
上述的方法,其中,所述資源轉(zhuǎn)換表保存在VMM的空間中,或保存在 GOS虛擬機的上下文環(huán)境中。
上述的方法,其中,所述資源轉(zhuǎn)換表具體包括虛擬機號,設(shè)備號,GuestIO 段,GuestMMIO段,Guest中斷號,Machine中斷號,MachineIO段, MachineMMIO段。
本發(fā)明的系統(tǒng)和方法,通過在VMM中設(shè)置有一資源轉(zhuǎn)換模塊,轉(zhuǎn)換處 于前臺的GOS的顯卡驅(qū)動模塊和顯卡之間交互的數(shù)據(jù),并用于攔截處于后臺 的GOS對真實顯卡的訪問后響應(yīng)其對顯卡的操作,能保證同一時間只有一個 GOS能訪問真實的顯卡,同時,由于GOS的PCI總線(PCI-E總線)包含的是 真實顯卡信息,GOS包含的是對應(yīng)于真實顯卡的顯卡驅(qū)動程序,因此在訪問 時是安裝對真實顯卡的方式訪問,能訪問真實顯卡。
同時,本發(fā)明的系統(tǒng)和方法,在切換時,保存切換前對應(yīng)于該GOS的顯 卡的狀態(tài),同時對應(yīng)更新處于后臺的GOS的顯卡操作造成的顯卡狀態(tài)的變 化,因此在GOS恢復(fù)到前臺后,將保存的顯卡狀態(tài)恢復(fù)到真實顯卡上即可保 持狀態(tài)的一致性,有效地解決了多虛擬機之間的切換顯示的問題。
圖1為現(xiàn)有技術(shù)的虛擬機系統(tǒng)中顯卡訪問的示意圖; 圖2為本發(fā)明的虛擬機系統(tǒng)的結(jié)構(gòu)示意圖;
具體實施例方式
本發(fā)明的虛擬機系統(tǒng)包括服務(wù)操作系統(tǒng)sos、 一個或多個客戶操作系統(tǒng)
GOS、虛擬機監(jiān)視器VMM和顯卡,其中 VMM包括
通信模塊,分別與SOS、 GOS連接,用于SOS、 GOS、 VMM三者之間 的通信;其中VMM通過中斷或事件通道(Event Channel)與SOS和GOS 通信,SOS通過hypercall與VMM通信,GOS通過vmcall與VMM通信;
資源轉(zhuǎn)換模塊,連接GOS的顯卡驅(qū)動模塊和顯卡,并根據(jù)資源轉(zhuǎn)換表轉(zhuǎn) 換處于前臺的GOS的顯卡驅(qū)動模塊和顯卡之間交互的數(shù)據(jù),同時還攔截處于 后臺的GOS對真實顯卡的訪問后響應(yīng)其對顯卡的操作,其中該轉(zhuǎn)換操作包 括
根據(jù)資源轉(zhuǎn)換表將將來自GOS的顯卡訪問數(shù)據(jù)進行IO地址地轉(zhuǎn)換或?qū)?MMIO映射到顯卡的物理MMIO后發(fā)送給真實顯卡;和
根據(jù)資源轉(zhuǎn)換表將接收到的顯卡的IRQ轉(zhuǎn)換成GOS的中斷號后發(fā)送給 GOS。
VMM中還設(shè)置有一切換模塊,用于根據(jù)切換VM的命令更改相應(yīng)VM 的狀態(tài),并保存VM切換為后臺前的顯卡狀態(tài),并在所述VM重新切換為前 臺時將保存的顯卡狀態(tài)恢復(fù)到顯卡;在本發(fā)明的圖2中,切換模塊通過資源 轉(zhuǎn)換模塊獲取顯卡狀態(tài),當然也可以直接從顯卡獲取其狀態(tài)。
服務(wù)操作系統(tǒng)SOS包括
設(shè)備模型DM,用于為GOS提供虛擬的PCI總線(PCI—E總線),,并 用于在接收到VMM轉(zhuǎn)發(fā)的GOS掃描PCI總線的操作后,從真實顯卡的PCI 配置空間讀取真實顯卡的信息,并給GOS注冊包含真實顯卡的信息的PCI (PCI—E)設(shè)備;
GOS包括
顯卡驅(qū)動模塊,對應(yīng)于真實顯卡,用于訪問真實顯卡;
GOS發(fā)現(xiàn)顯卡并獲取顯卡信息后,將顯卡資源(IRQ、 10、 MMIO)分 配給本系統(tǒng),并將顯卡資源配置信息保存在DM的虛擬PCI總線(PCI—E總 線)的PCI配置空間中;
其中,上面提到的資源轉(zhuǎn)換表是在對顯卡的資源配置過程中產(chǎn)生的。配 置過程為SOS啟動,掃描PCI總線,獲取顯卡信息,為顯卡分配資源(IRQ、 10、 MMIO); GOS啟動,掃描虛擬PCI總線,發(fā)現(xiàn)由DM提供的真實顯卡, 獲取顯卡信息,為顯卡分配資源(IRQ、 IO、 MMIO); GOS對顯卡的資源分 配由DM負責解析,DM根據(jù)SOS對顯卡的資源配置信息和GOS對顯卡的 資源配置信息生成資源轉(zhuǎn)換表。該資源轉(zhuǎn)換表中包括SOS和GOS分別對顯 卡分配的IO的對應(yīng)關(guān)系、IRQ的對應(yīng)關(guān)系和MMIO的對應(yīng)關(guān)系。
資源轉(zhuǎn)換表可以由VMM保存在自己的空間里,也可以保存在GOS虛擬 機的上下文環(huán)境中,具體包括-
虛擬機號,設(shè)備號,GuestIO段,GuestMMIO段,Guest中斷號,Machine 中斷號,MachineIO段,MachineMMIO段,其中
虛擬機號表示GOS所在的運行環(huán)境;
設(shè)備號用于標識顯卡,可以由顯卡在真實總線上的bus number, device number禾口 function number組成;
段可以包括起始地址和長度,也可以是起始地址和結(jié)束地址; GuestIO代表GOS掃描虛擬總線為顯卡分配的IO資源; GuestMMIO代表GOS掃描虛擬總線為顯卡分配的MMIO資源; Guest中斷號代表GOS掃描虛擬總線為顯卡分配的中斷號; Machine中斷號代表SOS掃描真實總線為顯卡分配的中斷號; MachinelO代表SOS掃描真實總線為顯卡分配的IO資源。 MachineMMIO代表SOS掃描真實總線為顯卡分配的MMIO資源。 上述的虛擬機系統(tǒng)對顯卡的訪問包括SOS對顯卡的操作和GOS對顯卡的 操作,其中
SOS啟動時,掃描PCI總線,發(fā)現(xiàn)真實顯卡,獲取真實顯卡信息,為本系 統(tǒng)分配真實顯卡分配資源(IRQ、 IO、 MMIO) , SOS通過真實顯卡的驅(qū)動模 塊對顯卡進行訪問;
GOS啟動時,掃描PCI總線,其掃描操作被VMM攔截,并通過通信模塊 轉(zhuǎn)發(fā)到DM里的虛擬PCI總線,DM從真實顯卡的PCI配置空間讀取真實顯卡的 信息,并給GOS注冊真實顯卡的信息。GOS發(fā)現(xiàn)顯卡,獲取顯卡信息,為顯 卡進行資源配置(IRQ、 IO、 MMIO),并保存在DM虛擬的PCI總線的虛擬 顯卡的PC頂己置空間里。VMM從中獲得虛擬顯卡的資源范圍(中斷號,各個 IO段,各個MMIO段),并建立GOS的顯卡資源和真實顯卡的資源轉(zhuǎn)換表。 GOS通過顯卡驅(qū)動模塊訪問顯卡時,其對顯卡的訪問操作(IO, MMIO)被 VMM的資源轉(zhuǎn)換模塊攔截,如果該GOS處于前臺,VMM根據(jù)資源轉(zhuǎn)換表, 把轉(zhuǎn)換后的操作發(fā)送給真實顯卡,并將顯卡返回的IRQ轉(zhuǎn)換成GOS的Guset中 斷號后發(fā)送給GOS,對于處于后臺的GOS,資源轉(zhuǎn)換模塊攔截其對真實顯卡 的訪問,不讓其訪問真實顯卡。
對于如何判別GOS處于前臺還是后臺,本發(fā)明通過以下方法來實現(xiàn)。
對于VMM來說,每個GOS所在的VM都設(shè)置一個標志,標識其為前臺還 是后臺。當該虛擬機獲得時間片運行時,資源轉(zhuǎn)換模塊根據(jù)VM的標識判別其
為前臺還是后臺,VMM保證最多只有一個VM (包括SOS所在的VM)是處于 前臺。
下面結(jié)合VM的切換對本發(fā)明的方法進行進一步詳細的說明。 切換就是把處于前臺的VM標識為后臺,把一個在后臺不顯示的GOS的標 識為前臺。對于每個處于后臺的VM, VMM攔截其對顯卡的操作后,不把操 作轉(zhuǎn)換到真實顯卡。只有標識為前臺的VM, VMM攔截其對顯卡的操作后, 由資源轉(zhuǎn)換模塊把操作轉(zhuǎn)換到真實顯卡。這樣保證同一時刻只有一個GOS訪 問真實顯卡。
因為顯卡是存在狀態(tài)的,比如有三個虛擬機VM1, VM2和VM3,當VM1 處于前臺時對顯卡進行操作,使得顯卡處于狀態(tài)statel,此后由于切換操作, VM1被標記為后臺,VM2被標記為前臺,因此VM1不能操作顯卡,顯卡由另 一個虛擬機VM2操作,VM2操作顯卡使得顯卡處于狀態(tài)state2。
如果此時再切換到VM1, VMl里的GOS認為顯卡還是statel狀態(tài),而實際 顯卡己經(jīng)是state2狀態(tài)。VMl的GOS還是按statel狀態(tài)操作顯卡,就會出現(xiàn)異 常和錯誤,因此需要進行保存和恢復(fù)顯卡狀態(tài)的操作。
另外,處于后臺的VM還是認為自己是獨占顯卡,雖然其操作不發(fā)送到真 實顯卡上,但它會認為它的操作已經(jīng)成功,并已經(jīng)改變了顯卡的狀態(tài)。當該 VM又重新處于前臺時候,其會按它在后臺對顯卡的操作狀態(tài)對真實顯卡繼續(xù) 進行操作,因此需要跟蹤處于后臺的VM對顯卡的操作所帶來的狀態(tài)變化。
下面分別對上面提到的問題進行說明。
對顯卡狀態(tài)的保存和恢復(fù)可以直接調(diào)用BIOS,如中斷l(xiāng)Oh的功能ah- 1C, al=l保存顯卡狀態(tài),ah=lC, al = 2恢復(fù)顯卡狀態(tài)。
如果顯卡廠商的VGA BIOS也提供保存和恢復(fù)顯卡的狀態(tài)操作,則也可以 直接調(diào)用VGA BIOS提供接口 。
此外還可以直接對顯卡編程讀出其顯卡寄存器保存起來,然后再寫回顯 卡寄存器。
因此本發(fā)明的方法中可以利用以下方式進行切換-
在VMM中設(shè)置一顯卡狀態(tài)保存模塊,用于保存前臺VM的顯卡狀態(tài),然 后停止該VM的執(zhí)行,當該VM被重新切換為前臺時候,將保存的顯卡狀態(tài)恢復(fù)到顯卡上,這樣能夠保證顯卡狀態(tài)的一致。
同時本發(fā)明的方法中還可以利用以下方式進行切換,可以在保證狀態(tài)一 致的同時,使后臺VM能繼續(xù)運行
在VMM中設(shè)置與GOS對應(yīng)的顯卡狀態(tài)寄存器,在GOS從前臺切換到后臺 時,首先,把當前真實顯卡的狀態(tài)保存到該VM對應(yīng)的顯卡狀態(tài)寄存器,此后 該VM處于后臺,它會繼續(xù)對顯卡操作,但此時資源轉(zhuǎn)換模塊不會把其操作轉(zhuǎn) 換到真實顯卡(即其不能操作到真實顯卡),而僅根據(jù)其對顯卡的操作,攔截 GOS對該顯卡的操作后,根據(jù)攔截的操作數(shù)據(jù)更新對應(yīng)的顯卡狀態(tài)寄存器, 而其中不影響顯卡狀態(tài)寄存器的操作(如對顯卡framebuffer的操作),則直 接拋棄。當該VM又切換為前臺后,資源轉(zhuǎn)換模塊將VM的顯卡狀態(tài)寄存器的 數(shù)據(jù)恢復(fù)到真實顯卡上。
同時,對于切換VM的操作,可以由VMM攔截鍵盤操作,當攔截的操作 是預(yù)定的切換操作命令(如Alt+F2切換VM2到前臺),也可以是SOS通過網(wǎng)絡(luò)獲 取的命令,然后發(fā)送給VMM。
同時,對于誰處于前臺還是后臺是動態(tài)變化的。 一種變化是用每啟動一 個VM,該VM就標記為前臺,而原來處于前臺的VM標識為后臺。VMM根據(jù) VM的標識來判斷是前臺還是后臺VM,并對顯卡的操作進行相應(yīng)的處理。
VMM把要切換到前臺的Guest OS的顯卡狀態(tài)恢復(fù)到真實顯卡上(調(diào)用標 準的BIOS,執(zhí)行VGABIOS,或直接對顯卡進行操作等),并讓該GuestOS直 接訪問真實顯卡,同時標記該GuestOS為前臺。
對于處于后臺的GuestOS, VMM攔截其對真實顯卡的訪問,并響應(yīng)其對 顯卡的操作,如模式切換,改變分辨率等,但不把具體的IO操作在真實顯卡 上執(zhí)行,而對于顯卡framebuffer的操作直接拋棄。即對于處于后臺的 GuestOS, VMM模擬GuestOS對真實顯卡的IO操作,并記錄GuestOS所看 見顯卡的狀態(tài);對于framebuffer的操作直接拋棄,不寫入真實的顯卡,這樣 后臺GuestOS以為自己對真實顯卡的操作,但實際上沒有影響真實的顯卡, 不會破壞前臺GuestOS的顯示。
虛擬機技術(shù)的所謂的攔截是,當GOS執(zhí)行一些不能由GOS執(zhí)行的操作 的時候,CPU的執(zhí)行陷入到VMM,由VMM執(zhí)行。VMM代替GOS執(zhí)行一
些操作后(也可以什么都不執(zhí)行),再切換回去到GOS執(zhí)行。
模式切換,改變分辨率是顯卡狀態(tài)的改變。所謂的模擬是VMM代替真 實顯卡響應(yīng)GOS對顯卡操作。如后臺GOS要讀取顯卡的狀態(tài),VMM返回 的是VM里的顯卡狀態(tài),而不是真實顯卡的狀態(tài)。而對于寫顯卡,僅更新VM 里的顯卡狀態(tài),不寫到真實顯卡上。
最后應(yīng)當說明的是,以上實施例僅用以說明本發(fā)明的技術(shù)方案而非限制, 本領(lǐng)域的普通技術(shù)人員應(yīng)當理解,可以對本發(fā)明的技術(shù)方案進行修改或者等 同替換,而不脫離本發(fā)明技術(shù)方案的精神范圍,其均應(yīng)涵蓋在本發(fā)明的權(quán)利 要求范圍當中。
權(quán)利要求
1.一種虛擬機系統(tǒng),包括服務(wù)操作系統(tǒng)SOS、一個或多個客戶操作系統(tǒng)GOS、虛擬機監(jiān)視器VMM和顯卡,其特征在于所述VMM中設(shè)置有一資源轉(zhuǎn)換模塊,用于根據(jù)資源轉(zhuǎn)換表轉(zhuǎn)換處于前臺的GOS的顯卡驅(qū)動模塊和顯卡之間交互的數(shù)據(jù),并用于攔截處于后臺的GOS對真實顯卡的訪問后響應(yīng)其對顯卡的操作;所述VMM中還設(shè)置有一切換模塊,用于根據(jù)切換VM的命令更改相應(yīng)VM的狀態(tài),并保存VM切換為后臺前的顯卡狀態(tài),并在所述VM重新切換為前臺時將保存的顯卡狀態(tài)恢復(fù)到顯卡;所述客戶操作系統(tǒng)包括一對應(yīng)于真實顯卡的顯卡驅(qū)動模塊,用于訪問真實顯卡。
2. 根據(jù)權(quán)利要求1所述的虛擬機系統(tǒng),其特征在于,所述資源轉(zhuǎn)換模塊 還用于根據(jù)處于后臺的VM對顯卡的操作相應(yīng)修改所述切換模塊中保存的顯 卡狀態(tài)數(shù)據(jù)。
3. 根據(jù)權(quán)利要求2所述的虛擬機系統(tǒng),其特征在于,所述資源轉(zhuǎn)換模塊 還用于拋棄處于后臺的VM對顯卡的操作中不影響顯卡狀態(tài)寄存器的操作。
4. 根據(jù)權(quán)利要求l、 2或3所述的虛擬機系統(tǒng),其特征在于,所述VMM 還包括通信模塊,用于服務(wù)操作系統(tǒng)、客戶操作系統(tǒng)、VMM三者之間的通信。
5. 根據(jù)權(quán)利要求1、 2或3所述的虛擬機系統(tǒng),其特征在于,所述服務(wù) 操作系統(tǒng)包括設(shè)備模型DM,用于為GOS提供虛擬的PCI總線或PCI—E總線,并用 于在接收到VMM轉(zhuǎn)發(fā)的GOS掃描PCI總線的操作后,從真實顯卡的PCI 配置空間讀取真實顯卡的信息,并給GOS注冊包含真實顯卡信息的PCI設(shè)備 或PCI—E設(shè)備。
6. 根據(jù)權(quán)利要求1、 2或3所述的虛擬機系統(tǒng),其特征在于,所述資源 轉(zhuǎn)換表保存在VMM的空間中,或保存在GOS虛擬機的上下文環(huán)境中。
7. 根據(jù)權(quán)利要求6所述的虛擬機系統(tǒng),其特征在于,所述資源轉(zhuǎn)換表具體包括虛擬機號,設(shè)備號,GuestIO段,GuestMMIO段,Guest中斷號, MachineIO段,MachineMMIO段,Machine中斷號。
8. —種虛擬機系統(tǒng)的顯卡使用方法,其特征在于,VMM中的資源轉(zhuǎn)換模塊根據(jù)資源轉(zhuǎn)換表轉(zhuǎn)換處于前臺的GOS的顯卡驅(qū)動模塊和顯卡之間交互的數(shù)據(jù),同時攔截處于后臺的GOS對真實顯卡的訪問 后響應(yīng)其對顯卡的操作;VMM中的切換模塊根據(jù)切換VM的命令更改相應(yīng)VM的狀態(tài),并保存 VM切換為后臺前的顯卡狀態(tài),并在所述VM重新切換為前臺時將保存的顯 卡狀態(tài)恢復(fù)到顯卡;所述客戶操作系統(tǒng)包括一對應(yīng)于真實顯卡的顯卡驅(qū)動模塊。
9. 根據(jù)權(quán)利要求8所述的方法,其特征在于,所述資源轉(zhuǎn)換模塊還根據(jù) 處于后臺的VM對顯卡的操作相應(yīng)修改所述切換模塊中保存的顯卡狀態(tài)數(shù) 據(jù)。
10. 根據(jù)權(quán)利要求8或9所述的方法,其特征在于,切換模塊通過調(diào)用 標準BIOS,執(zhí)行VGA BIOS,或直接對顯卡進行操作把要切換到后臺的前臺 GOS的顯卡狀態(tài)保存在該GOS的顯卡狀態(tài)數(shù)據(jù)里,并把要切換到前臺的后 臺GOS的顯卡狀態(tài)數(shù)據(jù)恢復(fù)到真實顯卡來執(zhí)行切換。
11. 根據(jù)權(quán)利要求8或9所述的方法,其特征在于,GOS處于前臺還是 后臺通過為GOS所在的VM設(shè)置的指定其處于前臺還是后臺的標識來判斷。
12. 根據(jù)權(quán)利要求8或9所述的方法,其特征在于,所述資源轉(zhuǎn)換表保 存在VMM的空間中,或保存在GOS虛擬機的上下文環(huán)境中。
13. 根據(jù)權(quán)利要求8或9所述的方法,其特征在于,所述資源轉(zhuǎn)換表具 體包括虛擬機號,設(shè)備號,GuestIO段,GuestMMIO段,Guest中斷號, MachineIO段,MachineMMIO段,Machine中斷號。
全文摘要
本發(fā)明公開了一種虛擬機系統(tǒng)及其顯卡使用方法,其中該虛擬機系統(tǒng)的VMM中設(shè)置有一資源轉(zhuǎn)換模塊,用于根據(jù)資源轉(zhuǎn)換表轉(zhuǎn)換處于前臺的GOS的顯卡驅(qū)動模塊和顯卡之間交互的數(shù)據(jù),并用于攔截處于后臺的GOS對顯卡的訪問后響應(yīng)其對顯卡的操作;所述VMM中還設(shè)置有一切換模塊,用于根據(jù)切換VM的命令更改相應(yīng)VM的狀態(tài),并保存VM切換為后臺前的顯卡狀態(tài),并在所述VM重新切換為前臺時將保存的顯卡狀態(tài)恢復(fù)到顯卡;所述客戶操作系統(tǒng)包括一對應(yīng)于真實顯卡的顯卡驅(qū)動模塊,用于訪問真實顯卡。本發(fā)明的系統(tǒng)和方法既能使GOS訪問真實顯卡,也可以在多個虛擬機之間切換顯示。
文檔編號G06F9/455GK101187880SQ20061014655
公開日2008年5月28日 申請日期2006年11月15日 優(yōu)先權(quán)日2006年11月15日
發(fā)明者劉春梅, 劉永鋒, 軍 陳 申請人:聯(lián)想(北京)有限公司