專(zhuān)利名稱(chēng):虛擬機(jī)系統(tǒng)及其顯卡訪問(wèn)方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算機(jī)領(lǐng)域,特別是涉及一種虛擬機(jī)系統(tǒng)及其顯卡訪問(wèn)方法。
背景技術(shù):
隨著計(jì)算機(jī)系統(tǒng)的發(fā)展,虛擬化技術(shù)在計(jì)算機(jī)領(lǐng)域得到廣泛應(yīng)用。現(xiàn)代計(jì)算機(jī)已經(jīng)具有能力來(lái)利用虛擬化技術(shù)支持多個(gè)虛擬機(jī),并在每個(gè)虛擬機(jī)上各自運(yùn)行單獨(dú)的操作系統(tǒng)。
在虛擬機(jī)系統(tǒng)中,各操作系統(tǒng)都需要對(duì)硬件進(jìn)行訪問(wèn),其中對(duì)顯卡的訪問(wèn)相對(duì)來(lái)說(shuō)是一個(gè)比較復(fù)雜的的問(wèn)題,對(duì)顯卡的不同使用方法是影響用戶(hù)體驗(yàn)的一個(gè)重要因素。目前,VMWare,Virtual PC以及Xen等主流虛擬化技術(shù)所采用的方案大同小異,都是為客戶(hù)操作系統(tǒng)(GOS)提供一個(gè)虛擬化了的顯卡。該虛擬顯卡是一個(gè)通用的顯卡,只能實(shí)現(xiàn)基本的顯示功能,與真實(shí)的顯卡差別很大。
圖1為現(xiàn)有技術(shù)的虛擬機(jī)系統(tǒng)的示意圖。該虛擬機(jī)系統(tǒng)包括虛擬機(jī)監(jiān)視器(VMM)、服務(wù)操作系統(tǒng)(SOS)和至少一個(gè)GOS。SOS啟動(dòng)時(shí),掃描PCI總線,發(fā)現(xiàn)真實(shí)顯卡,獲取真實(shí)顯卡信息,為真實(shí)顯卡分配資源(IRQ、IO、MMIO),SOS通過(guò)真實(shí)顯卡驅(qū)動(dòng)對(duì)顯卡進(jìn)行訪問(wèn)。SOS包含一個(gè)設(shè)備模型(DM),DM為每個(gè)GOS提供一個(gè)虛擬顯卡。GOS啟動(dòng)時(shí),掃描虛擬PCI總線,發(fā)現(xiàn)虛擬顯卡,獲取虛擬顯卡信息,為虛擬顯卡分配資源(IRQ、IO、MMIO)。GOS通過(guò)虛擬顯卡的驅(qū)動(dòng)訪問(wèn)虛擬顯卡時(shí),通過(guò)VMM將訪問(wèn)數(shù)據(jù)發(fā)送到DM;DM對(duì)訪問(wèn)數(shù)據(jù)進(jìn)行轉(zhuǎn)換后,發(fā)送到真實(shí)顯卡驅(qū)動(dòng);真實(shí)顯卡驅(qū)動(dòng)對(duì)接收到的數(shù)據(jù)進(jìn)行處理后發(fā)送到顯卡。
該虛擬機(jī)系統(tǒng)包括多個(gè)GOS,各個(gè)GOS操作系統(tǒng)都是通過(guò)SOS使用顯卡。所以,除了SOS可以看到真實(shí)顯卡,并利用真實(shí)顯卡的驅(qū)動(dòng)訪問(wèn)顯卡外,每個(gè)GOS看到的都是由DM提供的虛擬顯卡,利用虛擬顯卡驅(qū)動(dòng)對(duì)顯卡進(jìn)行訪問(wèn),這樣,顯卡的硬件加速特性無(wú)法被用戶(hù)使用,甚至不支持3D動(dòng)畫(huà)的功能,影響了顯示性能,用戶(hù)在顯卡上的感受也大打折扣。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種虛擬機(jī)系統(tǒng),在該虛擬機(jī)系統(tǒng)中的GOS能看到真實(shí)顯卡,并通過(guò)真實(shí)顯卡驅(qū)動(dòng)訪問(wèn)顯卡。
本發(fā)明的另一目在于提供一種虛擬機(jī)系統(tǒng)顯卡訪問(wèn)方法。
本發(fā)明的虛擬機(jī)系統(tǒng),包括虛擬機(jī)監(jiān)視器(VMM)、服務(wù)操作系統(tǒng)(SOS)和至少一個(gè)客戶(hù)操作系統(tǒng)(GOS),其中所述VMM包括通信模塊,該通信模塊用于VMM和SOS及各個(gè)GOS之間的通信;所述SOS包括DM,該DM用于獲取顯卡信息;所述GOS通過(guò)通信模塊訪問(wèn)DM,獲取顯卡信息,對(duì)顯卡進(jìn)行資源配置,并將資源配置信息通過(guò)通信模塊發(fā)送到DM,所述GOS還包括顯卡驅(qū)動(dòng),用于將GOS的顯卡訪問(wèn)數(shù)據(jù)發(fā)送到VMM;所述SOS中的DM還用于獲取SOS對(duì)顯卡的資源配置信息和GOS對(duì)顯卡的資源配置信息,并根據(jù)SOS對(duì)顯卡的資源配置信息和GOS對(duì)顯卡的資源配置信息生成資源轉(zhuǎn)換表發(fā)送到VMM;所述VMM還包括資源轉(zhuǎn)換模塊,用于根據(jù)資源轉(zhuǎn)換表對(duì)來(lái)自GOS的顯卡訪問(wèn)數(shù)據(jù)進(jìn)行IO地址地轉(zhuǎn)換或?qū)MIO映射到顯卡的物理MMIO,并將處理后的數(shù)據(jù)發(fā)送到顯卡。
所述資源轉(zhuǎn)換模塊進(jìn)一步將VMM接收到的顯卡的IRQ轉(zhuǎn)換成GOS的中斷號(hào)后發(fā)送給GOS;所述GOS進(jìn)一步通過(guò)顯卡驅(qū)動(dòng)處理由VMM發(fā)送過(guò)來(lái)的顯卡的IRQ。
所述資源轉(zhuǎn)換表中包括SOS和GOS分別對(duì)顯卡分配的IO的對(duì)應(yīng)關(guān)系、IRQ的對(duì)應(yīng)關(guān)系和MMIO的對(duì)應(yīng)關(guān)系。
所述VMM運(yùn)行在高端內(nèi)存,所述GOS運(yùn)行在低端內(nèi)存。
進(jìn)一步,所述SOS還包括鍵盤(pán)切換模塊,所述VMM還包括切換模塊和訪問(wèn)控制模塊,所述SOS和所述GOS還包括顯卡寄存器保存/恢復(fù)模塊,所述鍵盤(pán)切換模塊用于接收鍵盤(pán)輸入信號(hào),判斷該信號(hào)是否為系統(tǒng)切換信號(hào),并將系統(tǒng)切換信號(hào)對(duì)應(yīng)的切換信息通過(guò)通信模塊發(fā)送到切換模塊;所述切換模塊用于根據(jù)切換信息通過(guò)通信模塊發(fā)送顯卡寄存器保存/恢復(fù)信號(hào)到顯卡寄存器保存/恢復(fù)模塊,并且發(fā)送訪問(wèn)控制信號(hào)到訪問(wèn)控制模塊;所述訪問(wèn)控制模塊用于根據(jù)訪問(wèn)控制信號(hào)改變操作系統(tǒng)對(duì)顯卡的訪問(wèn)權(quán)限;所述顯卡寄存器保存/恢復(fù)模塊用于根據(jù)顯卡寄存器保存/恢復(fù)信號(hào)對(duì)顯卡寄存器的值進(jìn)行保存或恢復(fù),并通過(guò)通信模塊發(fā)送顯卡寄存器保存成功信號(hào)或顯卡寄存器恢復(fù)成功信號(hào)到切換模塊。
所述訪問(wèn)控制模塊在接收到訪問(wèn)控制信號(hào)時(shí),若前后臺(tái)狀態(tài)改變的操作系統(tǒng)是GOS,發(fā)送相應(yīng)控制信號(hào)到資源轉(zhuǎn)換模塊,資源轉(zhuǎn)換模塊根據(jù)控制信號(hào)禁用后臺(tái)操作系統(tǒng)的資源轉(zhuǎn)換表并啟用前臺(tái)操作系統(tǒng)的資源轉(zhuǎn)換表。
所述訪問(wèn)控制模塊在接收到訪問(wèn)控制信號(hào)時(shí),若前后臺(tái)狀態(tài)改變的操作系統(tǒng)是SOS,發(fā)送相應(yīng)控制信號(hào)到SOS中的顯卡驅(qū)動(dòng),由該顯卡驅(qū)動(dòng)打開(kāi)或關(guān)閉SOS對(duì)顯卡的訪問(wèn)權(quán)限。
所述切換模塊根據(jù)切換信息判斷前后臺(tái)狀態(tài)改變的操作系統(tǒng),發(fā)送顯卡寄存器保存信號(hào)到切換到后臺(tái)的操作系統(tǒng)的顯卡寄存器保存/恢復(fù)模塊,發(fā)送顯卡寄存器恢復(fù)信號(hào)到切換到前臺(tái)的操作系統(tǒng)的顯卡寄存器保存/恢復(fù)模塊。
進(jìn)一步,所述GOS和SOS還包括顯存保存/恢復(fù)模塊,所述切換模塊進(jìn)一步根據(jù)切換信息通過(guò)通信模塊發(fā)送顯存保存/恢復(fù)信號(hào)到顯存保存/恢復(fù)模塊;所述顯存保存/恢復(fù)模塊根據(jù)顯存保存/恢復(fù)信號(hào)對(duì)顯存的內(nèi)容進(jìn)行保存或恢復(fù)。
所述切換模塊根據(jù)切換信息判斷前后臺(tái)狀態(tài)改變的操作系統(tǒng),發(fā)送顯存保存信號(hào)到切換到后臺(tái)的操作系統(tǒng)的顯存保存/恢復(fù)模塊,發(fā)送顯存恢復(fù)信號(hào)到切換到前臺(tái)的操作系統(tǒng)的顯存保存/恢復(fù)模塊。
本發(fā)明的虛擬機(jī)系統(tǒng)顯卡訪問(wèn)方法,包括以下步驟a)GOS的顯卡訪問(wèn)數(shù)據(jù)通過(guò)顯卡驅(qū)動(dòng)發(fā)送到VMM;b)VMM根據(jù)預(yù)先配置的資源轉(zhuǎn)換表對(duì)來(lái)自GOS的顯卡訪問(wèn)數(shù)據(jù)進(jìn)行IO地址地轉(zhuǎn)換或?qū)MIO映射到顯卡的物理MMIO;c)VMM將處理后的數(shù)據(jù)發(fā)送到顯卡。
進(jìn)一步,在步驟c)后還包括步驟d)VMM接收顯卡的IRQ,并根據(jù)資源轉(zhuǎn)換表將該IRQ轉(zhuǎn)換成GOS的中斷號(hào)后發(fā)送給GOS。
所述資源轉(zhuǎn)換表的配置過(guò)程為1)SOS獲取顯卡信息,為顯卡分配資源;2)GOS通過(guò)SOS中的DM獲取顯卡信息,為顯卡分配資源;3)DM根據(jù)SOS對(duì)顯卡的資源配置信息和GOS對(duì)顯卡的資源配置信息生成資源轉(zhuǎn)換表發(fā)送到VMM。
進(jìn)一步,在步驟a)之前還包括步驟前臺(tái)操作系統(tǒng)切換到后臺(tái)時(shí),保存顯示模式,后臺(tái)操作系統(tǒng)切換到前臺(tái)時(shí),恢復(fù)顯示模式。
進(jìn)一步,在步驟a)之前還包括步驟前臺(tái)操作系統(tǒng)切換到后臺(tái)時(shí),保存顯存的內(nèi)容,后臺(tái)操作系統(tǒng)切換到前臺(tái)時(shí),恢復(fù)顯存的內(nèi)容。
與現(xiàn)有技術(shù)相比,本發(fā)明的虛擬機(jī)系統(tǒng)及其顯卡訪問(wèn)方法中,每個(gè)操作系統(tǒng)看到的都是真實(shí)顯卡,各個(gè)操作系統(tǒng)之間通過(guò)切換的方式使用顯卡,可以利用顯卡的硬件加速特性,保證了顯示性能。
圖1為現(xiàn)有技術(shù)的虛擬機(jī)系統(tǒng)的示意圖;圖2為本發(fā)明虛擬機(jī)系統(tǒng)的示意圖;圖3為對(duì)圖2所示的虛擬機(jī)系統(tǒng)的改進(jìn)的示意圖;圖4為改進(jìn)的虛擬機(jī)系統(tǒng)中鍵盤(pán)切換模塊的處理流程圖;圖5為改進(jìn)的虛擬機(jī)系統(tǒng)中切換模塊的處理流程圖;圖6為改進(jìn)的虛擬機(jī)系統(tǒng)中寄存器保存/恢復(fù)模塊的處理流程圖;圖7為改進(jìn)的虛擬機(jī)系統(tǒng)中訪問(wèn)控制模塊的處理流程圖。
具體實(shí)施例方式
以下將結(jié)合附圖對(duì)本發(fā)明進(jìn)行詳細(xì)描述。
如圖2所示,本發(fā)明的虛擬機(jī)系統(tǒng)包括虛擬機(jī)監(jiān)視器(VMM)、服務(wù)操作系統(tǒng)(SOS)和至少一個(gè)客戶(hù)操作系統(tǒng)(GOS),其中所述VMM包括通信模塊,該通信模塊用于VMM和SOS及各個(gè)GOS之間的通信;
所述SOS包括DM,該DM用于獲取顯卡信息;所述GOS通過(guò)通信模塊訪問(wèn)DM,獲取顯卡信息,對(duì)顯卡進(jìn)行資源配置,并將資源配置信息通過(guò)通信模塊發(fā)送到DM,所述GOS還包括顯卡驅(qū)動(dòng),用于將GOS的顯卡訪問(wèn)數(shù)據(jù)發(fā)送到VMM;所述SOS中的DM還用于獲取SOS對(duì)顯卡的資源配置信息和GOS對(duì)顯卡的資源配置信息,并根據(jù)SOS對(duì)顯卡的資源配置信息和GOS對(duì)顯卡的資源配置信息生成資源轉(zhuǎn)換表發(fā)送到VMM;所述VMM還包括資源轉(zhuǎn)換模塊,用于根據(jù)資源轉(zhuǎn)換表對(duì)來(lái)自GOS的顯卡訪問(wèn)數(shù)據(jù)進(jìn)行IO地址地轉(zhuǎn)換或?qū)MIO映射到顯卡的物理MMIO,并將處理后的數(shù)據(jù)發(fā)送到顯卡。
進(jìn)一步,所述資源轉(zhuǎn)換模塊將VMM接收到的顯卡的IRQ轉(zhuǎn)換成GOS的中斷號(hào)后發(fā)送給GOS;所述GOS通過(guò)顯卡驅(qū)動(dòng)處理由VMM發(fā)送過(guò)來(lái)的顯卡的IRQ。
在本發(fā)明中,為保證直接存儲(chǔ)器訪問(wèn)(DMA),讓VMM運(yùn)行在高端內(nèi)存,GOS運(yùn)行在低端內(nèi)存。這樣GOS的物理內(nèi)存地址與機(jī)器的內(nèi)存地址一致,GOS不需要修改就能滿(mǎn)足DMA的需要,并且,SOS是修改過(guò)的系統(tǒng),也可以滿(mǎn)足DMA的需要。本領(lǐng)域的普通技術(shù)人員應(yīng)該容易理解,GOS也可以不運(yùn)行在低端內(nèi)存,特別是同時(shí)運(yùn)行多個(gè)GOS時(shí),可以通過(guò)在VMM中攔截DMA指令,修改內(nèi)存地址來(lái)解決DMA問(wèn)題,或者直接修改GOS中關(guān)于內(nèi)存的處理。
其中,在通信模塊中,VMM通過(guò)中斷或事件通道(Event Channel)與SOS和GOS通信,SOS通過(guò)hypercall與VMM通信,GOS通過(guò)vmcall與VMM通信。
由于GOS對(duì)顯卡的資源配置可能與SOS對(duì)顯卡的資源配置不一致,GOS若要對(duì)顯卡直接進(jìn)行訪問(wèn),就需要先進(jìn)行資源轉(zhuǎn)換,這一工作由資源轉(zhuǎn)換模塊來(lái)完成。來(lái)自于GOS的顯卡訪問(wèn)數(shù)據(jù)到達(dá)VMM時(shí),資源轉(zhuǎn)換模塊在資源轉(zhuǎn)換表中查找資源轉(zhuǎn)換關(guān)系,將GOS的IO請(qǐng)求地址轉(zhuǎn)化成顯卡的真實(shí)IO地址,同時(shí)把GOS對(duì)顯卡分配的MMIO映射到顯卡的物理MMIO上,并把VMM接收到的顯卡的IRQ轉(zhuǎn)換成GOS的中斷號(hào)后發(fā)送給GOS。
資源轉(zhuǎn)換表是在對(duì)顯卡的資源配置過(guò)程中產(chǎn)生的。配置過(guò)程為SOS啟動(dòng),掃描PCI總線,獲取顯卡信息,為顯卡分配資源(IRQ、IO、MMIO);GOS啟動(dòng),掃描虛擬PCI總線,發(fā)現(xiàn)由DM提供的真實(shí)顯卡,獲取顯卡信息,為顯卡分配資源(IRQ、IO、MMIO);GOS對(duì)顯卡的資源分配由DM負(fù)責(zé)解析,DM根據(jù)SOS對(duì)顯卡的資源配置信息和GOS對(duì)顯卡的資源配置信息生成資源轉(zhuǎn)換表發(fā)送到VMM。該資源轉(zhuǎn)換表中包括SOS和GOS分別對(duì)顯卡分配的IO的對(duì)應(yīng)關(guān)系、IRQ的對(duì)應(yīng)關(guān)系和MMIO的對(duì)應(yīng)關(guān)系。
這樣,通過(guò)DM和VMM的協(xié)助,GOS可以直接訪問(wèn)到顯卡硬件,同時(shí),SOS按照原來(lái)的單一系統(tǒng)的方式訪問(wèn)顯卡硬件。
圖2所示的虛擬機(jī)系統(tǒng),可能會(huì)出現(xiàn)多個(gè)操作系統(tǒng)同時(shí)寫(xiě)屏幕的現(xiàn)象,后臺(tái)操作系統(tǒng)切換到前臺(tái)時(shí),顯示模式也可能會(huì)改變,需要重新設(shè)置顯示模式,這些都給使用帶來(lái)了不便。有鑒于此,以下提出一種改進(jìn)方案。
圖3是圖2所示的虛擬機(jī)系統(tǒng)的改進(jìn),在該虛擬機(jī)系統(tǒng)中,SOS進(jìn)一步包括鍵盤(pán)切換模塊,VMM進(jìn)一步包括切換模塊和訪問(wèn)控制模塊,SOS和GOS進(jìn)一步包括顯卡寄存器保存/恢復(fù)模塊,其中所述鍵盤(pán)切換模塊用于接收鍵盤(pán)輸入信號(hào),判斷該信號(hào)是否為系統(tǒng)切換信號(hào),并將系統(tǒng)切換信號(hào)對(duì)應(yīng)的切換信息通過(guò)通信模塊發(fā)送到切換模塊;所述切換模塊用于根據(jù)切換信息通過(guò)通信模塊發(fā)送顯卡寄存器保存/恢復(fù)信號(hào)到顯卡寄存器保存/恢復(fù)模塊,并且發(fā)送訪問(wèn)控制信號(hào)到訪問(wèn)控制模塊;所述訪問(wèn)控制模塊用于根據(jù)訪問(wèn)控制信號(hào)改變操作系統(tǒng)對(duì)顯卡的訪問(wèn)權(quán)限;所述顯卡寄存器保存/恢復(fù)模塊用于根據(jù)顯卡寄存器保存/恢復(fù)信號(hào)對(duì)顯卡寄存器的值進(jìn)行保存或恢復(fù),并通過(guò)通信模塊發(fā)送顯卡寄存器保存成功信號(hào)或顯卡寄存器恢復(fù)成功信號(hào)到切換模塊。
下面分別對(duì)上述各模塊的處理流程進(jìn)行具體描述。
如圖4所示,鍵盤(pán)切換模塊的處理流程為接收鍵盤(pán)輸入信號(hào),鍵盤(pán)中斷處理程序判斷該信號(hào)是否為系統(tǒng)切換信號(hào),若是,通過(guò)通信模塊發(fā)送對(duì)應(yīng)的切換信息到切換模塊,否則,進(jìn)行正常的輸入處理。
如圖5所示,切換模塊的處理流程為接收來(lái)自鍵盤(pán)切換模塊的切換信息后,根據(jù)切換信息判斷前后臺(tái)狀態(tài)改變的操作系統(tǒng),發(fā)送顯卡寄存器保存信號(hào)到切換到后臺(tái)的操作系統(tǒng)的顯卡寄存器保存/恢復(fù)模塊,接收到顯卡寄存器保存成功信號(hào)后,發(fā)送訪問(wèn)控制信號(hào)到訪問(wèn)控制模塊,然后,發(fā)送顯卡寄存器恢復(fù)信號(hào)到切換到前臺(tái)的操作系統(tǒng)的顯卡寄存器保存/恢復(fù)模塊,并接收顯卡寄存器恢復(fù)成功信號(hào)。
如圖6所示,顯卡寄存器保存/恢復(fù)模塊的處理流程為接收到顯卡寄存器保存/恢復(fù)信號(hào)后,判斷是否保存顯卡寄存器的值,若接收到顯卡寄存器保存信號(hào),調(diào)用VGA BIOS服務(wù)對(duì)顯卡寄存器的值進(jìn)行保存,并通過(guò)通信模塊發(fā)送顯卡寄存器保存成功信號(hào)到切換模塊;若接收到顯卡寄存器恢復(fù)信號(hào),調(diào)用VGA BIOS服務(wù)對(duì)顯卡寄存器的值進(jìn)行恢復(fù),并通過(guò)通信模塊發(fā)送顯卡寄存器恢復(fù)成功信號(hào)到切換模塊。
如圖7所示,訪問(wèn)控制模塊接收到訪問(wèn)控制信號(hào)后,首先判斷前后臺(tái)狀態(tài)改變的操作系統(tǒng)是GOS還是SOS,對(duì)GOS和SOS執(zhí)行不同的處理。
對(duì)于GOS,發(fā)送相應(yīng)控制信號(hào)到資源轉(zhuǎn)換模塊,資源轉(zhuǎn)換模塊根據(jù)控制信號(hào)禁用后臺(tái)操作系統(tǒng)的資源轉(zhuǎn)換表并啟用前臺(tái)操作系統(tǒng)的資源轉(zhuǎn)換表。對(duì)于SOS,發(fā)送相應(yīng)控制信號(hào)到SOS中的顯卡驅(qū)動(dòng),由該顯卡驅(qū)動(dòng)打開(kāi)或關(guān)閉SOS對(duì)顯卡的訪問(wèn)權(quán)限。若所述SOS切換到前臺(tái),該SOS的顯卡驅(qū)動(dòng)打開(kāi)其對(duì)顯卡的訪問(wèn)權(quán)限,若所述SOS切換到后臺(tái),該SOS的顯卡驅(qū)動(dòng)關(guān)閉其對(duì)顯卡的訪問(wèn)權(quán)限。
改進(jìn)的虛擬機(jī)系統(tǒng)解決了多個(gè)操作系統(tǒng)切換使用顯卡的問(wèn)題,即只有位于前臺(tái)的操作系統(tǒng)才能訪問(wèn)顯卡,不會(huì)出現(xiàn)多個(gè)操作系統(tǒng)同時(shí)寫(xiě)屏幕的情況。并且,通過(guò)顯卡寄存器的保存和恢復(fù),使得切換使用顯卡時(shí)各操作系統(tǒng)的顯示模式保持不變。
但是,在系統(tǒng)切換后,如果沒(méi)有進(jìn)行屏幕刷新,由于顯存的內(nèi)容沒(méi)有更新,顯示器顯示的內(nèi)容為切換前的內(nèi)容。同顯卡寄存器的保存和恢復(fù)類(lèi)似,通過(guò)顯存的保存和恢復(fù)可解決此問(wèn)題。
即在GOS中和SOS中,還可以進(jìn)一步包括顯存保存/恢復(fù)模塊,切換模塊發(fā)送顯存保存/恢復(fù)信號(hào)到顯存保存/恢復(fù)模塊,顯存保存/恢復(fù)模塊根據(jù)顯存保存/恢復(fù)信號(hào)對(duì)顯存的內(nèi)容進(jìn)行保存或恢復(fù)。切換模塊根據(jù)切換信息判斷前后臺(tái)狀態(tài)改變的操作系統(tǒng),發(fā)送顯存保存信號(hào)到切換到后臺(tái)的操作系統(tǒng)的顯存保存/恢復(fù)模塊,發(fā)送顯存恢復(fù)信號(hào)到切換到前臺(tái)的操作系統(tǒng)的顯存保存/恢復(fù)模塊。顯存保存/恢復(fù)模塊在接收到顯存保存信號(hào)時(shí),對(duì)顯存的內(nèi)容進(jìn)行保存,在接收到顯存恢復(fù)信號(hào)時(shí),對(duì)顯存的內(nèi)容進(jìn)行恢復(fù)。
本發(fā)明的虛擬機(jī)系統(tǒng)顯卡訪問(wèn)方法包括以下步驟a)GOS的顯卡訪問(wèn)數(shù)據(jù)通過(guò)顯卡驅(qū)動(dòng)發(fā)送到VMM;b)VMM根據(jù)預(yù)先配置的資源轉(zhuǎn)換表對(duì)來(lái)自GOS的顯卡訪問(wèn)數(shù)據(jù)進(jìn)行IO地址地轉(zhuǎn)換或?qū)MIO映射到顯卡的物理MMIO;c)VMM將處理后的數(shù)據(jù)發(fā)送到顯卡。
進(jìn)一步,在步驟c)后還包括步驟d)VMM接收顯卡的IRQ,并根據(jù)資源轉(zhuǎn)換表將該IRQ轉(zhuǎn)換成GOS的中斷號(hào)后發(fā)送給GOS。
其中,所述資源轉(zhuǎn)換表中包括SOS和GOS分別對(duì)顯卡分配的IO的對(duì)應(yīng)關(guān)系、IRQ的對(duì)應(yīng)關(guān)系和MMIO的對(duì)應(yīng)關(guān)系。為保證DMA,讓VMM運(yùn)行在高端內(nèi)存,GOS運(yùn)行在低端內(nèi)存,前面已經(jīng)介紹到GOS也可以不運(yùn)行在低端內(nèi)存,特別是同時(shí)運(yùn)行多個(gè)GOS時(shí),可以通過(guò)在VMM中攔截DMA指令,修改內(nèi)存地址來(lái)解決DMA問(wèn)題,或者直接修改GOS中關(guān)于內(nèi)存的處理。
所述資源轉(zhuǎn)換表的配置過(guò)程為1)SOS獲取顯卡信息,為顯卡分配資源;2)GOS通過(guò)SOS中的DM獲取顯卡信息,為顯卡分配資源;3)DM根據(jù)SOS對(duì)顯卡的資源配置信息和GOS對(duì)顯卡的資源配置信息生成資源轉(zhuǎn)換表發(fā)送到VMM。
進(jìn)一步,在步驟a)之前,還包括步驟前臺(tái)操作系統(tǒng)切換到后臺(tái)時(shí),保存顯示模式,后臺(tái)操作系統(tǒng)切換到前臺(tái)時(shí),恢復(fù)顯示模式。
進(jìn)一步,在步驟a)之前,還包括步驟前臺(tái)操作系統(tǒng)切換到后臺(tái)時(shí),保存顯存的內(nèi)容,后臺(tái)操作系統(tǒng)切換到前臺(tái)時(shí),恢復(fù)顯存的內(nèi)容。
使用本發(fā)明的方法,前臺(tái)操作系統(tǒng)對(duì)顯卡的操作完全與獨(dú)立的操作系統(tǒng)對(duì)顯卡的操作相當(dāng),能用到顯卡的全部硬件加速特性。一個(gè)操作系統(tǒng)發(fā)生故障的時(shí)候,不會(huì)影響其它操作系統(tǒng)的顯示??梢酝ㄟ^(guò)切換,使其它操作系統(tǒng)獲得對(duì)顯卡的控制權(quán)。
本發(fā)明的虛擬機(jī)系統(tǒng)及其顯卡使用方法,不再提供虛擬的顯卡類(lèi)型,GOS可以看到真實(shí)的物理顯卡,顯示器顯示的內(nèi)容由VMM根據(jù)系統(tǒng)的切換控制,始終顯示切換到前臺(tái)的系統(tǒng)內(nèi)容,并可以使用硬件加速特性,保證了顯示性能。
最后應(yīng)當(dāng)說(shuō)明的是,以上實(shí)施例僅用以說(shuō)明本發(fā)明的技術(shù)方案而非限制,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解,可以對(duì)本發(fā)明的技術(shù)方案進(jìn)行修改或者等同替換,而不脫離本發(fā)明技術(shù)方案的精神范圍,其均應(yīng)涵蓋在本發(fā)明的權(quán)利要求范圍當(dāng)中。
權(quán)利要求
1.一種虛擬機(jī)系統(tǒng),包括虛擬機(jī)監(jiān)視器VMM、服務(wù)操作系統(tǒng)SOS和至少一個(gè)客戶(hù)操作系統(tǒng)GOS,其中,所述VMM包括通信模塊,該通信模塊用于VMM和SOS及各個(gè)GOS之間的通信;所述SOS包括設(shè)備模型DM,該DM用于獲取顯卡信息;其特征在于所述GOS通過(guò)通信模塊訪問(wèn)DM,獲取顯卡信息,對(duì)顯卡進(jìn)行資源配置,并將資源配置信息通過(guò)通信模塊發(fā)送到DM,所述GOS還包括顯卡驅(qū)動(dòng),用于將GOS的顯卡訪問(wèn)數(shù)據(jù)發(fā)送到VMM;所述SOS中的DM還用于獲取SOS對(duì)顯卡的資源配置信息和GOS對(duì)顯卡的資源配置信息,并根據(jù)SOS對(duì)顯卡的資源配置信息和GOS對(duì)顯卡的資源配置信息生成資源轉(zhuǎn)換表發(fā)送到VMM;所述VMM還包括資源轉(zhuǎn)換模塊,用于根據(jù)資源轉(zhuǎn)換表對(duì)來(lái)自GOS的顯卡訪問(wèn)數(shù)據(jù)進(jìn)行IO地址地轉(zhuǎn)換或?qū)MIO映射到顯卡的物理MMIO,并將處理后的數(shù)據(jù)發(fā)送到顯卡。
2.如權(quán)利要求1所述的系統(tǒng),其特征在于所述資源轉(zhuǎn)換模塊進(jìn)一步將VMM接收到的顯卡的IRQ轉(zhuǎn)換成GOS的中斷號(hào)后發(fā)送給GOS;所述GOS進(jìn)一步通過(guò)顯卡驅(qū)動(dòng)處理由VMM發(fā)送過(guò)來(lái)的顯卡的IRQ。
3.如權(quán)利要求1或2所述的系統(tǒng),其特征在于所述資源轉(zhuǎn)換表中包括SOS和GOS分別對(duì)顯卡分配的IO的對(duì)應(yīng)關(guān)系、IRQ的對(duì)應(yīng)關(guān)系和MMIO的對(duì)應(yīng)關(guān)系。
4.如權(quán)利要求1或2所述的系統(tǒng),其特征在于所述VMM運(yùn)行在高端內(nèi)存,所述GOS運(yùn)行在低端內(nèi)存。
5.如權(quán)利要求1或2所述的系統(tǒng),其特征在于所述SOS進(jìn)一步包括鍵盤(pán)切換模塊,所述VMM進(jìn)一步包括切換模塊和訪問(wèn)控制模塊,所述SOS和所述GOS進(jìn)一步包括顯卡寄存器保存/恢復(fù)模塊,所述鍵盤(pán)切換模塊用于接收鍵盤(pán)輸入信號(hào),判斷該信號(hào)是否為系統(tǒng)切換信號(hào),并將系統(tǒng)切換信號(hào)對(duì)應(yīng)的切換信息通過(guò)通信模塊發(fā)送到切換模塊;所述切換模塊用于根據(jù)切換信息通過(guò)通信模塊發(fā)送顯卡寄存器保存/恢復(fù)信號(hào)到顯卡寄存器保存/恢復(fù)模塊,并且發(fā)送訪問(wèn)控制信號(hào)到訪問(wèn)控制模塊;所述訪問(wèn)控制模塊用于根據(jù)訪問(wèn)控制信號(hào)改變操作系統(tǒng)對(duì)顯卡的訪問(wèn)權(quán)限;所述顯卡寄存器保存/恢復(fù)模塊用于根據(jù)顯卡寄存器保存/恢復(fù)信號(hào)對(duì)顯卡寄存器的值進(jìn)行保存或恢復(fù),并通過(guò)通信模塊發(fā)送顯卡寄存器保存成功信號(hào)或顯卡寄存器恢復(fù)成功信號(hào)到切換模塊。
6.如權(quán)利要求5所述的系統(tǒng),其特征在于所述訪問(wèn)控制模塊在接收到訪問(wèn)控制信號(hào)時(shí),若前后臺(tái)狀態(tài)改變的操作系統(tǒng)是GOS,發(fā)送相應(yīng)控制信號(hào)到資源轉(zhuǎn)換模塊,資源轉(zhuǎn)換模塊根據(jù)控制信號(hào)禁用后臺(tái)操作系統(tǒng)的資源轉(zhuǎn)換表并啟用前臺(tái)操作系統(tǒng)的資源轉(zhuǎn)換表。
7.如權(quán)利要求5所述的系統(tǒng),其特征在于所述訪問(wèn)控制模塊在接收到訪問(wèn)控制信號(hào)時(shí),若前后臺(tái)狀態(tài)改變的操作系統(tǒng)是SOS,發(fā)送相應(yīng)控制信號(hào)到SOS中的顯卡驅(qū)動(dòng),由該顯卡驅(qū)動(dòng)打開(kāi)或關(guān)閉SOS對(duì)顯卡的訪問(wèn)權(quán)限。
8.如權(quán)利要求5所述的系統(tǒng),其特征在于所述切換模塊根據(jù)切換信息判斷前后臺(tái)狀態(tài)改變的操作系統(tǒng),發(fā)送顯卡寄存器保存信號(hào)到切換到后臺(tái)的操作系統(tǒng)的顯卡寄存器保存/恢復(fù)模塊,發(fā)送顯卡寄存器恢復(fù)信號(hào)到切換到前臺(tái)的操作系統(tǒng)的顯卡寄存器保存/恢復(fù)模塊。
9.如權(quán)利要求5所述的系統(tǒng),其特征在于所述GOS和SOS進(jìn)一步包括顯存保存/恢復(fù)模塊;所述切換模塊進(jìn)一步根據(jù)切換信息通過(guò)通信模塊發(fā)送顯存保存/恢復(fù)信號(hào)到顯存保存/恢復(fù)模塊;所述顯存保存/恢復(fù)模塊根據(jù)顯存保存/恢復(fù)信號(hào)對(duì)顯存的內(nèi)容進(jìn)行保存或恢復(fù)。
10.如權(quán)利要求9所述的系統(tǒng),其特征在于所述切換模塊根據(jù)切換信息判斷前后臺(tái)狀態(tài)改變的操作系統(tǒng),發(fā)送顯存保存信號(hào)到切換到后臺(tái)的操作系統(tǒng)的顯存保存/恢復(fù)模塊,發(fā)送顯存恢復(fù)信號(hào)到切換到前臺(tái)的操作系統(tǒng)的顯存保存/恢復(fù)模塊。
11.一種虛擬機(jī)系統(tǒng)顯卡訪問(wèn)方法,其特征在于,包括以下步驟a)GOS的顯卡訪問(wèn)數(shù)據(jù)通過(guò)顯卡驅(qū)動(dòng)發(fā)送到VMM;b)VMM根據(jù)預(yù)先配置的資源轉(zhuǎn)換表對(duì)來(lái)自GOS的顯卡訪問(wèn)數(shù)據(jù)進(jìn)行IO地址地轉(zhuǎn)換或?qū)MIO映射到顯卡的物理MMIO;c)VMM將處理后的數(shù)據(jù)發(fā)送到顯卡。
12.如權(quán)利要求11所述的方法,其特征在于,在步驟c)后還包括步驟d)VMM接收顯卡的IRQ,并根據(jù)資源轉(zhuǎn)換表將該IRQ轉(zhuǎn)換成GOS的中斷號(hào)后發(fā)送給GOS。
13.如權(quán)利要求11或12所述的方法,其特征在于所述資源轉(zhuǎn)換表中包括SOS和GOS分別對(duì)顯卡分配的IO的對(duì)應(yīng)關(guān)系、IRQ的對(duì)應(yīng)關(guān)系和MMIO的對(duì)應(yīng)關(guān)系。
14.如權(quán)利要求11或12所述的方法,其特征在于所述VMM運(yùn)行在高端內(nèi)存,所述GOS運(yùn)行在低端內(nèi)存。
15.如權(quán)利要求11或12所述的方法,其特征在于,所述資源轉(zhuǎn)換表的配置過(guò)程為1)SOS獲取顯卡信息,為顯卡分配資源;2)GOS通過(guò)SOS中的DM獲取顯卡信息,為顯卡分配資源;3)DM根據(jù)SOS對(duì)顯卡的資源配置信息和GOS對(duì)顯卡的資源配置信息生成資源轉(zhuǎn)換表發(fā)送到VMM。
16.如權(quán)利要求11或12所述的方法,其特征在于,在步驟a)之前還包括步驟前臺(tái)操作系統(tǒng)切換到后臺(tái)時(shí),保存顯示模式,后臺(tái)操作系統(tǒng)切換到前臺(tái)時(shí),恢復(fù)顯示模式。
17.如權(quán)利要求11或12所述的方法,其特征在于,在步驟a)之前還包括步驟前臺(tái)操作系統(tǒng)切換到后臺(tái)時(shí),保存顯存的內(nèi)容,后臺(tái)操作系統(tǒng)切換到前臺(tái)時(shí),恢復(fù)顯存的內(nèi)容。
全文摘要
本發(fā)明公開(kāi)了一種虛擬機(jī)系統(tǒng)及其顯卡訪問(wèn)方法。該系統(tǒng)包括VMM、SOS和至少一個(gè)GOS。GOS通過(guò)SOS中的DM獲取顯卡信息,對(duì)顯卡進(jìn)行資源配置,將資源配置信息發(fā)送到DM;DM根據(jù)SOS對(duì)顯卡的資源配置信息和GOS對(duì)顯卡的資源配置信息生成資源轉(zhuǎn)換表發(fā)送到VMM;VMM中的資源轉(zhuǎn)換模塊根據(jù)資源轉(zhuǎn)換表對(duì)來(lái)自GOS的顯卡訪問(wèn)數(shù)據(jù)進(jìn)行IO地址地轉(zhuǎn)換或?qū)MIO映射到顯卡的物理MMIO,并將處理后的數(shù)據(jù)發(fā)送到顯卡。本發(fā)明的虛擬機(jī)系統(tǒng)及其顯卡訪問(wèn)方法,每個(gè)操作系統(tǒng)看到的都是真實(shí)顯卡,各個(gè)操作系統(tǒng)之間通過(guò)切換的方式使用顯卡,可以利用顯卡的硬件加速特性,保證了顯示性能。
文檔編號(hào)G06F3/14GK101059762SQ20061007639
公開(kāi)日2007年10月24日 申請(qǐng)日期2006年4月20日 優(yōu)先權(quán)日2006年4月20日
發(fā)明者劉春梅, 劉永鋒, 陳軍 申請(qǐng)人:聯(lián)想(北京)有限公司