專利名稱:一種面向嵌入式Hypervisor的多視窗顯示虛擬化操作方法
技術(shù)領(lǐng)域:
本發(fā)明屬于嵌入式虛擬機技術(shù)領(lǐng)域,涉及一種面向嵌入式Hypervisor的多視窗顯示虛擬化操作方法。
背景技術(shù):
在I型Hypervisor系統(tǒng)中,Hypervisor作為系統(tǒng)軟件直接運行在硬件平臺之上, 可以直接管理物理設(shè)備并支持運行在Hypervisor之上的操作系統(tǒng)GuestOS(客戶操作系統(tǒng)),通過Hypervisor提供的接口為GuestOS服務(wù)。硬件抽象層是位于操作系統(tǒng)內(nèi)核與硬件設(shè)備之間的接口層,其目的在于將硬件抽象化。它隱藏了特定平臺的硬件接口細節(jié),為操作系統(tǒng)提供虛擬硬件平臺,使其具有硬件無關(guān)性,可在多種平臺上進行移植。IXD虛擬化屬于1/0虛擬化,是嵌入式虛擬化的組成部分。對于IXD虛擬化顯示, 現(xiàn)在比較流行的虛擬化方案有VMware、Xen、Virtual Logic等,VMware屬于全虛擬化方案, 能夠運行不經(jīng)修改的Guest OS,即對原LCD設(shè)備驅(qū)動可以不加修改的應(yīng)用于虛擬機環(huán)境中,但其結(jié)構(gòu)復(fù)雜,對硬件要求非常高,不適合應(yīng)用于嵌入式。Xen有半虛擬化方案,Guest OS經(jīng)過修改后能運行于Xen之上,但它主要面向PC以及服務(wù)器領(lǐng)域,在嵌入式領(lǐng)域尚未推出成熟的產(chǎn)品。如今嵌入式中對IXD設(shè)備的管理更加靈活,如S3C6410平臺上IXD控制器有五層視窗,這樣可以把各層窗口分別用作不同的顯示,如windows用作OS窗口,windowl用作TV 屏幕,window2作為菜單窗口等等。
發(fā)明內(nèi)容
本發(fā)明解決的問題在于提供一種面向嵌入式Hypervisor的多視窗顯示虛擬化操作方法,通過虛擬硬件顯示,使多個GuestOS能夠分時共享使用硬件顯示,在Hypervisor層通過硬件抽象層對視窗進行統(tǒng)一管理,降低了系統(tǒng)之間的耦合度,系統(tǒng)的顯示更加穩(wěn)定。本發(fā)明是通過以下技術(shù)方案來實現(xiàn)一種面向嵌入式Hypervisor的多視窗顯示虛擬化操作方法,包括以下步驟1)對Hypervisor之上的GuestOS所在域創(chuàng)建受虛擬顯示驅(qū)動管理的虛擬顯示設(shè)備和虛擬顯示服務(wù);虛擬顯示設(shè)備是一結(jié)構(gòu)體,是對物理顯示設(shè)備的屬性的抽象;虛擬顯示服務(wù)是一組線程,是對物理顯示設(shè)備操作的抽象;2)在Hypervisor的硬件抽象層中設(shè)置顯示接口,顯示接口是對物理顯示設(shè)備視窗操作的一個封裝,在顯示接口被調(diào)用操作之后,完成對物理顯示設(shè)備控制器的視窗寄存器的操作;3)當(dāng)物理顯示設(shè)備需要被操作時,GuestOS中的虛擬顯示驅(qū)動訪問虛擬顯示設(shè)備,將顯示信息保存在虛擬顯示設(shè)備中,虛擬顯示驅(qū)動并通過發(fā)送消息喚醒虛擬顯示服務(wù)的執(zhí)行;當(dāng)虛擬顯示服務(wù)被喚醒執(zhí)行操作時,通過訪問虛擬顯示設(shè)備獲取設(shè)備信息;在獲取設(shè)備信息之后,虛擬顯示服務(wù)通過調(diào)用硬件抽象層中的顯示接口進行對物理顯示設(shè)備的操作; 4)顯示接口被調(diào)用后,根據(jù)執(zhí)行情況,返回操作結(jié)果給虛擬顯示服務(wù),虛擬顯示服務(wù)通過消息應(yīng)答的方式返回給虛擬顯示驅(qū)動。所述的虛擬顯示設(shè)備保存的對物理顯示設(shè)備的屬性信息或顯示信息包括屏幕位置信息、屏幕大小信息、窗口個數(shù)、顯存地址和像素及顯示特性;虛擬顯示驅(qū)動對虛擬顯示設(shè)備的管理為訪問虛擬顯示設(shè)備,將顯示信息保存在虛擬顯示設(shè)備當(dāng)中,以便虛擬顯示服務(wù)的訪問。所述的虛擬顯示服務(wù)被喚醒后,訪問虛擬顯示設(shè)備獲取設(shè)備信息后對顯示接口進行以下操作基于檢測可變參數(shù)設(shè)置可變參數(shù)、初始化顯示窗口、關(guān)閉顯示窗口和設(shè)置 Framebuffer0所述的顯示接口封裝的對物理顯示設(shè)備視窗的操作包括物理顯示設(shè)備初始化、 物理顯示設(shè)備關(guān)閉操作、激活物理顯示設(shè)備參數(shù)和設(shè)備顯存地址。所述的一個GuestOS對物理顯示設(shè)備的操作,通過顯示接口的調(diào)用完成物理顯示設(shè)備上一個視窗層的操作;當(dāng)不同系統(tǒng)需要被切換顯示時,通過顯示接口操作物理顯示設(shè)備的參數(shù),系統(tǒng)所對應(yīng)的視窗層被切換,系統(tǒng)顯示就被切換了。所述的顯示接口被調(diào)用后,完成對物理顯示設(shè)備控制器的視窗寄存器的操作,通過修改視窗疊加參數(shù),實現(xiàn)不同視窗的切換。所述的GuestOS為Linux,物理顯示設(shè)備為支持多視窗顯示的IXD。與現(xiàn)有技術(shù)相比,本發(fā)明具有以下有益的技術(shù)效果本發(fā)明提供的面向嵌入式Hypervisor的多視窗顯示虛擬化操作方法,在GuestOS 所在域創(chuàng)建受虛擬顯示驅(qū)動管理的虛擬顯示設(shè)備和虛擬顯示服務(wù),在Hypervisor的硬件抽象層中設(shè)置顯示接口進行物理操作,可以將一個物理設(shè)備映射為多個虛擬設(shè)備,從而使得多個Guest OS同時使用物理IXD設(shè)備,多個GuestOS能夠分時共享使用物理顯示設(shè)備, 同時便于不同系統(tǒng)的顯示切換。本發(fā)明提供的面向嵌入式Hypervisor的多視窗顯示虛擬化操作方法,在硬件抽象層中為每個Guest OS分配一個顯示窗口,當(dāng)進行系統(tǒng)切換顯示時進行的工作就是簡單的修改顯示控制器中的參數(shù),從而改變顯示的窗口。相對于多個Guest OS分時使用同一個窗口,此機制的主要特征是不同的系統(tǒng)在各自的視窗獨立進行操作,降低了系統(tǒng)之間的耦合度,同時在Hypervisor層通過硬件抽象層對視窗進行統(tǒng)一管理,易于移植,而且系統(tǒng)間的切換更加迅速、流暢,系統(tǒng)的顯示更加穩(wěn)定,系統(tǒng)的性能更加高效。同VMware和Xen相比具有較低的性能損耗、易于移植的特點。
圖 1 為 Hypervisor 結(jié)構(gòu)圖;圖2為支持多視窗顯示虛擬化的Hypervisor結(jié)構(gòu)圖;圖3為虛擬顯示驅(qū)動通過虛擬顯示服務(wù)執(zhí)行系統(tǒng)顯示的執(zhí)行機理示意圖;圖4為虛擬顯示服務(wù)獲取顯示信息后對顯示接口的操作示意圖;圖5為基于硬件多視窗的虛擬顯示系統(tǒng)及其執(zhí)行的示意圖。
具體實施例方式本發(fā)明提供的面向嵌入式Hypervisor的多視窗顯示虛擬化操作方法,通過虛擬物理顯示設(shè)備,多個GuestOS能夠分時共享使用物理顯示設(shè)備,同時便于不同系統(tǒng)的顯示切換。多視窗顯示虛擬化操作主要包括以下兩個方面=Hypervisor產(chǎn)生供上層GuestOS驅(qū)動的虛擬設(shè)備和通過硬件抽象層的顯示接口的操作實現(xiàn)虛擬顯示設(shè)備到不同視窗的映射。 下面結(jié)合GuestOS為Linux (2. 6. 28內(nèi)核),物理顯示設(shè)備為支持多視窗顯示的IXD,對本發(fā)明做進一步的詳細說明,所述是對本發(fā)明的解釋而不是限定。參見圖1所示的I型Hypervisor結(jié)構(gòu)圖,Hypervisor作為系統(tǒng)軟件直接運行在硬件平臺之上,可以直接管理物理設(shè)備并支持運行在Hypervisor之上的操作系統(tǒng)GuestOS, 通過Hypervisor提供的接口為GuestOS服務(wù)。參見圖2所示的支持多視窗顯示虛擬化的Hypervisor結(jié)構(gòu)圖,在GuestOS所在域創(chuàng)建受虛擬顯示驅(qū)動管理的虛擬顯示設(shè)備和虛擬顯示服務(wù),在Hypervisor的硬件抽象層中設(shè)置顯示接口。a)虛擬顯示驅(qū)動GuestOS中的虛擬顯示驅(qū)動的操作對象是虛擬顯示設(shè)備,通過發(fā)送消息喚醒虛擬顯示服務(wù)的執(zhí)行從而實現(xiàn)虛擬顯示設(shè)備的操作。虛擬顯示驅(qū)動通過發(fā)送消息喚醒虛擬顯示服務(wù)的執(zhí)行,進而通過虛擬顯示服務(wù)的執(zhí)行實現(xiàn)虛擬顯示設(shè)備的操作。虛擬顯示服務(wù)通過訪問保存在虛擬顯示設(shè)備中的顯示信息來進行對顯示接口的調(diào)用,從而完成對硬件的訪問。具體的在Linux中,將原有顯示設(shè)備驅(qū)動中對物理顯示設(shè)備的操作,放到硬件抽象層實現(xiàn),在Linux中只保留原有顯示驅(qū)動的框架,實現(xiàn)虛擬顯示驅(qū)動。虛擬顯示驅(qū)動對虛擬顯示設(shè)備的訪問,將顯示信息保存在虛擬顯示設(shè)備當(dāng)中,以便虛擬顯示服務(wù)的訪問。b)虛擬顯示設(shè)備虛擬顯示設(shè)備是對物理顯示設(shè)備的屬性的抽象,由一結(jié)構(gòu)體進行實現(xiàn)。GuestOS中的虛擬顯示驅(qū)動負責(zé)對虛擬顯示設(shè)備的操作,用于將設(shè)備信息保存在虛擬顯示設(shè)備中。當(dāng)虛擬顯示服務(wù)需要執(zhí)行操作時,通過訪問虛擬顯示設(shè)備來獲取設(shè)備信息。c)虛擬顯示服務(wù)虛擬顯示服務(wù)是用于對物理顯示設(shè)備操作的抽象的一組線程,它代表著虛擬顯示設(shè)備的執(zhí)行。虛擬顯示服務(wù)的執(zhí)行是由GuestOS中的虛擬顯示驅(qū)動所喚醒的。虛擬顯示服務(wù)通過調(diào)用Hypervisor所提供的硬件抽象層中的顯示接口進行對硬件的操作。虛擬顯示設(shè)備保存的對物理顯示設(shè)備的屬性信息或顯示信息包括1)屏幕位置信息;2)屏幕大小信息;3)窗口個數(shù);4)顯存地址,用于DMA讀取數(shù)據(jù);5)像素及顯示特性。虛擬顯示服務(wù)執(zhí)行的操作包括1)基于檢測可變參數(shù)設(shè)置可變參數(shù);2)初始化顯示窗口 ;3)關(guān)閉顯示窗口 ;4)設(shè)置 Framebuffer0上述保存于虛擬顯示設(shè)備的屬性和虛擬顯示服務(wù)執(zhí)行的操作都是基于LCD設(shè)備的共性提出來的,因此這些的屬性和操作都可以對應(yīng)到具體的物理設(shè)備之上。d)顯示接口顯示接口是對物理顯示設(shè)備視窗操作的一個封裝,以便虛擬顯示服務(wù)調(diào)用該接口對視窗進行操作。顯示接口的封裝包括LCD初始化、LCD關(guān)閉操作、激活LCD參數(shù)、設(shè)備顯存地址四個方面。顯示接口完成對IXD控制器的視窗寄存器的操作。通過修改視窗寄存器中疊加參數(shù),實現(xiàn)不同視窗層的切換,以此實現(xiàn)不同系統(tǒng)的切換顯示。顯示接口被調(diào)用后,根據(jù)執(zhí)行情況,返回操作結(jié)果給虛擬顯示服務(wù),虛擬顯示服務(wù)通過消息應(yīng)答的方式返回給虛擬顯示驅(qū)動。參見圖2、圖3、圖4,面向嵌入式Hypervisor的多視窗顯示虛擬化操作方法,包括以下步驟1)對Hypervisor之上的GuestOS所在域創(chuàng)建受虛擬顯示驅(qū)動管理的虛擬顯示設(shè)備和虛擬顯示服務(wù);虛擬顯示設(shè)備是一結(jié)構(gòu)體,是對物理顯示設(shè)備的屬性的抽象;虛擬顯示服務(wù)是一組線程,是對物理顯示設(shè)備操作的抽象;2)在Hypervisor的硬件抽象層中設(shè)置顯示接口,顯示接口是對物理顯示設(shè)備視窗操作的一個封裝,在顯示接口被調(diào)用操作之后,完成對物理顯示設(shè)備控制器的視窗寄存器的操作;3)當(dāng)物理顯示設(shè)備需要被操作時,GuestOS中的虛擬顯示驅(qū)動訪問虛擬顯示設(shè)備,將顯示信息保存在虛擬顯示設(shè)備中,虛擬顯示驅(qū)動并通過發(fā)送消息喚醒虛擬顯示服務(wù)的執(zhí)行;當(dāng)虛擬顯示服務(wù)被喚醒執(zhí)行操作時,通過訪問虛擬顯示設(shè)備獲取設(shè)備信息;在獲取設(shè)備信息之后,虛擬顯示服務(wù)通過調(diào)用硬件抽象層中的顯示接口進行對物理顯示設(shè)備的操作;4)顯示接口被調(diào)用后,根據(jù)執(zhí)行情況,返回操作結(jié)果給虛擬顯示服務(wù),虛擬顯示服務(wù)通過消息應(yīng)答的方式返回給虛擬顯示驅(qū)動。結(jié)合以上附圖和操作,可以看出處于Linux內(nèi)核態(tài)的虛擬顯示驅(qū)動需要訪問虛擬顯示設(shè)備時,通過發(fā)送消息請求給Hypervisor端的虛擬顯示服務(wù),虛擬顯示服務(wù)對該消息進行處理,每一消息對應(yīng)的是對物理顯示設(shè)備的操作,這里通過顯示接口對物理顯示設(shè)備進行訪問。完成對消息的處理后發(fā)送消息應(yīng)答給Linux端的虛擬顯示驅(qū)動,從而完成一次對虛擬設(shè)備的訪問?;谏鲜龅膶inux端虛擬顯示驅(qū)動的分析,可以得出在進行Linux端顯示程序設(shè)計時,針對的是虛擬顯示設(shè)備,而不是原有Linux中的物理顯示設(shè)備。對于虛擬顯示設(shè)備的操作最終要映射到物理設(shè)備操作的情況在Linux端通過發(fā)送消息給虛擬顯示服務(wù)來實現(xiàn)。參見圖5所示的基于硬件多視窗的虛擬顯示系統(tǒng)及其執(zhí)行的示意圖,一個 GuestOS對物理顯示設(shè)備的操作,通過顯示接口的調(diào)用完成物理顯示設(shè)備上一個視窗層的操作;當(dāng)不同系統(tǒng)需要被切換顯示時,通過顯示接口操作物理顯示設(shè)備的參數(shù),系統(tǒng)所對應(yīng)的視窗層被切換,系統(tǒng)顯示就被切換了。顯示接口被調(diào)用后,完成對物理顯示設(shè)備控制器的視窗寄存器的操作,具體是通過修改視窗疊加相關(guān)的寄存器(此寄存器是窗口位置控制c寄存器),實現(xiàn)不同視窗層的切
Hypervisor負責(zé)完成對IXD控制器的初始化操作,此時只初始化全局寄存器。而各個視窗層寄存器的配置,是由相應(yīng)的GuestOS來進行操作的。因此虛擬化LCD的多視窗顯示相當(dāng)于每個虛擬LCD使用其中一層視窗。如圖5所示的不同的GuestOS,使用不同路徑 (a或b),對不同的視窗進行操作,降低了系統(tǒng)之間的耦合度。虛擬化多視窗系顯示當(dāng)中是各個系統(tǒng)在各自的視窗單獨進行操作,降低了系統(tǒng)之間的耦合度。從硬件上,支持多視窗顯示的LCD控制器,可以把各層視窗用作不同的顯示, 為多視窗顯示創(chuàng)造了硬件基礎(chǔ);從軟件上,通過Hypervisor端的顯示接口,處于Linux內(nèi)核態(tài)的虛擬顯示驅(qū)動以消息的形式對物理顯示設(shè)備進行訪問,為多視窗顯示創(chuàng)造了軟件基石出。
權(quán)利要求
1.一種面向嵌入式Hypervisor的多視窗顯示虛擬化操作方法,其特征在于,包括以下步驟1)對Hypervisor之上的GuestOS所在域創(chuàng)建受虛擬顯示驅(qū)動管理的虛擬顯示設(shè)備和虛擬顯示服務(wù);虛擬顯示設(shè)備是一結(jié)構(gòu)體,是對物理顯示設(shè)備的屬性的抽象;虛擬顯示服務(wù)是一組線程,是對物理顯示設(shè)備操作的抽象;2)在Hypervisor的硬件抽象層中設(shè)置顯示接口,顯示接口是對物理顯示設(shè)備視窗操作的一個封裝,在顯示接口被調(diào)用操作之后,完成對物理顯示設(shè)備控制器的視窗寄存器的操作;3)當(dāng)物理顯示設(shè)備需要被操作時,GuestOS中的虛擬顯示驅(qū)動訪問虛擬顯示設(shè)備,將顯示信息保存在虛擬顯示設(shè)備中,虛擬顯示驅(qū)動并通過發(fā)送消息喚醒虛擬顯示服務(wù)的執(zhí)行;當(dāng)虛擬顯示服務(wù)被喚醒執(zhí)行操作時,通過訪問虛擬顯示設(shè)備獲取設(shè)備信息;在獲取設(shè)備信息之后,虛擬顯示服務(wù)通過調(diào)用硬件抽象層中的顯示接口進行對物理顯示設(shè)備的操作;4)顯示接口被調(diào)用后,根據(jù)執(zhí)行情況,返回操作結(jié)果給虛擬顯示服務(wù),虛擬顯示服務(wù)通過消息應(yīng)答的方式返回給虛擬顯示驅(qū)動。
2.如權(quán)利要求1所述的面向嵌入式Hypervisor的多視窗顯示虛擬化操作方法,其特征在于,所述的虛擬顯示設(shè)備保存的對物理顯示設(shè)備的屬性信息或顯示信息包括屏幕位置信息、屏幕大小信息、窗口個數(shù)、顯存地址和像素及顯示特性;虛擬顯示驅(qū)動對虛擬顯示設(shè)備的管理為訪問虛擬顯示設(shè)備,將顯示信息保存在虛擬顯示設(shè)備當(dāng)中,以便虛擬顯示服務(wù)的訪問。
3.如權(quán)利要求1所述的面向嵌入式Hypervisor的多視窗顯示虛擬化操作方法,其特征在于,所述的虛擬顯示服務(wù)被喚醒后,訪問虛擬顯示設(shè)備獲取設(shè)備信息后對顯示接口進行以下操作基于檢測可變參數(shù)設(shè)置可變參數(shù)、初始化顯示窗口、關(guān)閉顯示窗口和設(shè)置 Framebuffer0
4.如權(quán)利要求1所述的面向嵌入式Hypervisor的多視窗顯示虛擬化操作方法,其特征在于,所述的顯示接口封裝的對物理顯示設(shè)備視窗的操作包括物理顯示設(shè)備初始化、物理顯示設(shè)備關(guān)閉操作、激活物理顯示設(shè)備參數(shù)和設(shè)備顯存地址。
5.如權(quán)利要求1所述的面向嵌入式Hypervisor的多視窗顯示虛擬化操作方法,其特征在于,所述的一個GuestOS對物理顯示設(shè)備的操作,通過顯示接口的調(diào)用完成物理顯示設(shè)備上一個視窗層的操作;當(dāng)不同系統(tǒng)需要被切換顯示時,通過顯示接口操作物理顯示設(shè)備的參數(shù),系統(tǒng)所對應(yīng)的視窗層被切換,系統(tǒng)顯示就被切換了。
6.如權(quán)利要求1所述的面向嵌入式Hypervisor的多視窗顯示虛擬化操作方法,其特征在于,所述的顯示接口被調(diào)用后,完成對物理顯示設(shè)備控制器的視窗寄存器的操作,通過修改視窗疊加參數(shù),實現(xiàn)不同視窗的切換。
7.如權(quán)利要求1所述的面向嵌入式Hypervisor的多視窗顯示虛擬化操作方法,其特征在于,所述的GuestOS為Linux,物理顯示設(shè)備為支持多視窗顯示的IXD。
全文摘要
本發(fā)明公開了一種面向嵌入式Hypervisor的多視窗顯示虛擬化操作方法,對Hypervisor之上的GuestOS所在域創(chuàng)建受虛擬顯示驅(qū)動管理的虛擬顯示設(shè)備和虛擬顯示服務(wù);在Hypervisor的硬件抽象層中設(shè)置顯示接口,顯示接口是對物理顯示設(shè)備視窗操作的一個封裝,在顯示接口被調(diào)用操作之后,完成對物理顯示設(shè)備控制器的視窗寄存器的操作。通過虛擬硬件顯示,使多個GuestOS能夠分時共享使用硬件顯示,在Hypervisor層通過硬件抽象層對視窗進行統(tǒng)一管理,降低了系統(tǒng)之間的耦合度,系統(tǒng)的顯示更加穩(wěn)定。
文檔編號G06F3/048GK102243571SQ20111019164
公開日2011年11月16日 申請日期2011年7月8日 優(yōu)先權(quán)日2011年7月8日
發(fā)明者展華益, 張朋豐, 李國輝, 李鐵強, 梅魁志, 趙季中 申請人:西安交通大學(xué)