專利名稱::復(fù)用客戶操作系統(tǒng)設(shè)備驅(qū)動(dòng)的實(shí)現(xiàn)方法
技術(shù)領(lǐng)域:
:本發(fā)明屬于嵌入式虛擬化
技術(shù)領(lǐng)域:
,涉及一種復(fù)用客戶操作系統(tǒng)設(shè)備驅(qū)動(dòng)的實(shí)現(xiàn)方法,應(yīng)用于Hypervisor中支持對外設(shè)的訪問。
背景技術(shù):
:現(xiàn)在日常生活中的嵌入式設(shè)備越來越普及,功能應(yīng)用也越發(fā)豐富。將不同的系統(tǒng)虛擬化為客戶操作系統(tǒng)后同時(shí)運(yùn)行在Hypervisor上,可避免不同系統(tǒng)之間的應(yīng)用移植而又能兼具各系統(tǒng)的應(yīng)用。IO虛擬化技術(shù)是虛擬化技術(shù)中的重要組成部分。Hypervisor采用IO虛擬化技術(shù)使運(yùn)行其上的客戶操作系統(tǒng)能夠使用外圍設(shè)備。目前應(yīng)用較廣泛的IO虛擬化技術(shù)主要有三種,分別是SplitI/O,DirectI/O和PassthroughI/O。(I)SplitI/O。將設(shè)備驅(qū)動(dòng)框架根據(jù)是否訪問硬件分為硬件相關(guān)部分和硬件無關(guān)部分。其中硬件相關(guān)部分放在具有I/O訪問權(quán)限的虛擬機(jī)中,而硬件無關(guān)部分位于無I/O訪問權(quán)限的虛擬機(jī)中,前者為后者提供硬件訪問支持。(2)DirectI/O。Hypervisor將相應(yīng)的物理設(shè)備抽象為虛擬設(shè)備。虛擬機(jī)中對設(shè)備的訪問是對虛擬設(shè)備的操作,Hypervisor將這些操作在具體的物理設(shè)備上實(shí)現(xiàn)。(3)PassthroughI/O。對物理設(shè)備,Hypervisor不進(jìn)行任何相應(yīng)的管理,而是由虛擬機(jī)利用系統(tǒng)中已有設(shè)備驅(qū)動(dòng)直接進(jìn)行物理設(shè)備的訪問操作這三種IO虛擬化技術(shù)相比較,SplitI/O提供較安全的IO訪問,DirectI/O擁有較好的移植性,PassthroughI/O的設(shè)備性能損失最小。對于復(fù)雜外設(shè),如果采用SplitI/O和DirectI/O實(shí)現(xiàn)客戶操縱系統(tǒng)對外設(shè)的訪問,都需要對系統(tǒng)中原有的設(shè)備驅(qū)動(dòng)框架進(jìn)行修改,這樣不僅實(shí)現(xiàn)復(fù)雜,而且設(shè)備的性能損失大。本發(fā)明采用本發(fā)明采用了PassthroughI/O的思想,不用修改系統(tǒng)中的設(shè)備驅(qū)動(dòng)框架,使Hypervisor上的客戶操作系統(tǒng)能夠復(fù)用其已有的設(shè)備驅(qū)動(dòng)完成對外設(shè)的訪問,可解決客戶操作系統(tǒng)訪問外設(shè)時(shí)設(shè)備性能損失大的問題。
發(fā)明內(nèi)容本發(fā)明所要解決的技術(shù)問題是提供一種復(fù)用客戶操作系統(tǒng)設(shè)備驅(qū)動(dòng)的實(shí)現(xiàn)方法,該方法能夠使Hypervisor中的客戶操作系統(tǒng)復(fù)用系統(tǒng)中原有設(shè)備驅(qū)動(dòng)對設(shè)備進(jìn)行訪問,以使設(shè)備的性能損失最小。為解決以上技術(shù)問題,本發(fā)明采用以下技術(shù)方案復(fù)用客戶操作系統(tǒng)設(shè)備驅(qū)動(dòng)的實(shí)現(xiàn)方法,虛擬機(jī)Hypervisor接管物理中斷,客戶操作系統(tǒng)中設(shè)置有虛擬中斷響應(yīng)標(biāo)志VIPending,同時(shí),客戶操作系統(tǒng)以中斷描述表table_Vintr_desC描述所有中斷;當(dāng)外設(shè)中斷產(chǎn)生后,虛擬機(jī)Hypervisor首先屏蔽該外設(shè)中斷,然后將客戶操作系統(tǒng)中的虛擬中斷響應(yīng)標(biāo)志VIPending設(shè)置為打開狀態(tài),接著將中斷描述表table_Vintr_desC中與該中斷對應(yīng)項(xiàng)的成員pending設(shè)置為表示該中斷發(fā)生的3狀態(tài),最后由客戶操作系統(tǒng)調(diào)用該外設(shè)原有的中斷服務(wù)程序?qū)υ撝袛嗍录M(jìn)行處理。作為本發(fā)明的優(yōu)選實(shí)施例,所述虛擬機(jī)Hypervisor通過控制和管理硬件中的中斷控制器而接管物理中斷,當(dāng)外設(shè)中斷發(fā)生后,虛擬機(jī)Hypervisor通過操作中斷控制器屏蔽該外設(shè)中斷;作為本發(fā)明的優(yōu)選實(shí)施例,所述虛擬中斷響應(yīng)標(biāo)志VIPending是客戶操作系統(tǒng)中的一個(gè)全局變量,其被設(shè)置為1和O分別表示打開和關(guān)閉客戶操作系統(tǒng)中的中斷響應(yīng);作為本發(fā)明的優(yōu)選實(shí)施例,在客戶操作系統(tǒng)的中斷服務(wù)程序執(zhí)行完后,將虛擬中斷響應(yīng)標(biāo)志VIPending設(shè)置為0,以關(guān)閉客戶操作系統(tǒng)對中斷的響應(yīng),中斷描述表table_vintr_desc中該中斷對應(yīng)項(xiàng)的成員pending設(shè)置為0,以向客戶操作系統(tǒng)表示該中斷已得到處理。最后Hypervisor操作中斷控制器中的相應(yīng)中斷標(biāo)志位打開該外設(shè)中斷,以接受下一次外設(shè)中斷;本發(fā)明復(fù)用客戶操作系統(tǒng)設(shè)備驅(qū)動(dòng)的實(shí)現(xiàn)方法至少具有以下優(yōu)點(diǎn)本發(fā)明通過虛擬機(jī)Hypervisor管理外設(shè)中斷的屏蔽與開啟,將外設(shè)中斷的具體處理工作交由客戶操作系統(tǒng)調(diào)用原有的中斷服務(wù)程序和外設(shè)驅(qū)動(dòng)處理。這種方法不僅復(fù)用了客戶操作系統(tǒng)中已有的設(shè)備驅(qū)動(dòng),而且客戶操作系統(tǒng)中的原有設(shè)備驅(qū)動(dòng)框架保持不變,即訪問設(shè)備時(shí)調(diào)用的程序,以及程序調(diào)用的流程都保持不變,這樣使得設(shè)備的性能的損失最小。圖1為本發(fā)明復(fù)用客戶操作系統(tǒng)設(shè)備驅(qū)動(dòng)示意圖;圖2為本發(fā)明Hypervisor總體結(jié)構(gòu);圖3為本發(fā)明GuestOS虛擬化前外設(shè)中斷處理過程;圖4為本發(fā)明Hypervisor處理USB中斷示意具體實(shí)施例方式下面結(jié)合附圖對本發(fā)明復(fù)用客戶操作系統(tǒng)設(shè)備驅(qū)動(dòng)的實(shí)現(xiàn)方法做詳細(xì)描述首先Hypervisor控制和管理硬件中的中斷控制器,接管物理中斷。在客戶操作系統(tǒng)中設(shè)置虛擬中斷響應(yīng)標(biāo)志VIPending。該虛擬中斷響應(yīng)標(biāo)志VIPending是客戶操作系統(tǒng)中的一個(gè)全局變量,其被設(shè)置為1和O分別表示打開和關(guān)閉客戶操作系統(tǒng)中的中斷響應(yīng)。在客戶操作系統(tǒng)中,以中斷描述表table_Vintr_deSC描述所有中斷。中斷描述表中每一項(xiàng)對應(yīng)一個(gè)中斷,其中成員pending表示該中斷是否發(fā)生。保持客戶操作系統(tǒng)中的原有設(shè)備驅(qū)動(dòng)不變,和對設(shè)備的訪問權(quán)限不變。在Hypervisor啟動(dòng)時(shí),Hypervisor將其內(nèi)的中斷寄存器中外設(shè)中斷的對應(yīng)位使能。而外設(shè)的初始化則在客戶操作系統(tǒng)中,且直接對物理硬件進(jìn)行操作。當(dāng)外設(shè)中斷產(chǎn)生后,先由Hypervisor處理。Hypervisor先通過操作中斷控制器中的相應(yīng)中斷標(biāo)志位屏蔽該外設(shè)中斷,然后將客戶操作系統(tǒng)中的虛擬中斷響應(yīng)標(biāo)志VIPending設(shè)置為1,并將中斷描述表table_vintr_desc中與該中斷對應(yīng)項(xiàng)的成員pending設(shè)置為1以向客戶操作系統(tǒng)表示該中斷發(fā)生。然后客戶操作系統(tǒng)調(diào)用該外設(shè)原有的中斷服務(wù)程序?qū)υ撝袛嗍录M(jìn)行處理。這樣客戶操作系統(tǒng)中的外設(shè)中斷處理函數(shù)和流程保持不變,外設(shè)原有的設(shè)備驅(qū)動(dòng)會(huì)得到調(diào)用,達(dá)到復(fù)用設(shè)備驅(qū)動(dòng)的目的。在客戶操作系統(tǒng)的中斷服務(wù)程序執(zhí)行完后,將虛擬中斷響應(yīng)標(biāo)志VIPending設(shè)置為0,以關(guān)閉客戶操作系統(tǒng)對中斷的響應(yīng),中斷描述表table_Vintr_desC中該中斷對應(yīng)項(xiàng)的成員pending設(shè)置為0,以向客戶操作系統(tǒng)表示該中斷已得到處理。最后Hypervisor操作中斷控制器中的相應(yīng)中斷標(biāo)志位打開該外設(shè)中斷,以接受下一次外設(shè)中斷??偟膩碚f,Hypervisor管理外設(shè)中斷的屏蔽與開啟,將外設(shè)中斷的具體處理工作交由客戶操作系統(tǒng)調(diào)用原有的中斷服務(wù)程序和外設(shè)驅(qū)動(dòng)處理。這種方法不僅復(fù)用了客戶操作系統(tǒng)中已有的設(shè)備驅(qū)動(dòng),而且客戶操作系統(tǒng)中的原有設(shè)備驅(qū)動(dòng)框架保持不變,即訪問設(shè)備時(shí)調(diào)用的程序,以及程序調(diào)用的流程都保持不變,這樣使得設(shè)備的性能的損失最小。本發(fā)明實(shí)際是通過將外設(shè)中斷交由客戶操作系統(tǒng)按照原有的中斷服務(wù)程序處理,以復(fù)用其已有設(shè)備驅(qū)動(dòng)。其過程大致如圖1所示。以下以Hypervisor中客戶操作系統(tǒng)支持USB設(shè)備為實(shí)例說明本
發(fā)明內(nèi)容。Hypervisor是虛擬機(jī)管理軟件,基于硬件的Hypervisor的總體結(jié)構(gòu)如圖2所示。其中Hypervisor操作硬件的中斷控制器,所有的物理中斷發(fā)生后先由Hypervisor處理。GuestOS是基于Iinux內(nèi)核的客戶操作系統(tǒng)。經(jīng)過修改,設(shè)置VIPending為客戶操作系統(tǒng)中的全局變量,其值為1和O分別表示打開和屏蔽客戶操作系統(tǒng)中的中斷響應(yīng)。以數(shù)據(jù)結(jié)構(gòu)table_vintr_desc描述客戶操作系統(tǒng)中處理的中斷,其中包含的成員pending為O表示中斷沒有發(fā)生或中斷已處理完,為1表示中斷發(fā)生需要處理或該中斷正在處理。當(dāng)GuestOS獨(dú)立運(yùn)行在硬件平臺(tái)上時(shí),對USB設(shè)備的初始化和讀寫等操作都是直接作用于物理硬件,對USB的中斷都是直接響應(yīng)和處理。在USB中斷發(fā)生后,GuestOS先屏蔽該中斷,再調(diào)用USB中斷服務(wù)程序USb_hcd_irq()處理該中斷,USB設(shè)備驅(qū)動(dòng)也將得到調(diào)用。該中斷事件處理完后,GuestOS再開啟USB中斷以響應(yīng)下一次USB中斷。具體過程如圖3所示。當(dāng)GuestOS運(yùn)行在Hypervisor上時(shí),保留GuestOS中USB設(shè)備驅(qū)動(dòng)不變,保留GuestOS對USB設(shè)備的直接操作和控制。當(dāng)插入U(xiǎn)SB設(shè)備后,觸發(fā)USB中斷。Hypervisor在接受到USB中斷后,先通過對中斷寄存器操作,將USB中斷對應(yīng)位置O以屏蔽該中斷,然后設(shè)置GuestOS中的虛擬中斷響應(yīng)標(biāo)志VIPending為1,中斷描述表table_vintr_desc中USB中斷對應(yīng)項(xiàng)的pending成員的值設(shè)為1。然后GuestOS將響應(yīng)USB中斷,調(diào)用與獨(dú)立運(yùn)行在硬件上時(shí)一樣的USB中斷服務(wù)程序USb_hcd_irq()完成該中斷的具體處理工作。具體處理該中斷的工作流程與獨(dú)立運(yùn)行在硬件上時(shí)一樣,USB設(shè)備驅(qū)動(dòng)將得調(diào)用。這樣達(dá)到復(fù)用USB設(shè)備驅(qū)動(dòng)的目的。在將該中斷處理完成后,GuestOS將中斷描述表table_Vintr_desc中USB中斷對應(yīng)項(xiàng)的pending成員值設(shè)置為0,中斷響應(yīng)標(biāo)志VIPending設(shè)置為0,然后Hypervisor將中斷寄存器中USB中斷對應(yīng)位設(shè)置為1以開啟USB中斷。以上Hypervisor中GuestOS復(fù)用USB設(shè)備驅(qū)動(dòng)的具體過程如圖4所示。以上所述僅為本發(fā)明的一種實(shí)施方式,不是全部或唯一的實(shí)施方式,本領(lǐng)域普通技術(shù)人員通過閱讀本發(fā)明說明書而對本發(fā)明技術(shù)方案采取的任何等效的變換,均為本發(fā)明的權(quán)利要求所涵蓋。權(quán)利要求1.復(fù)用客戶操作系統(tǒng)設(shè)備驅(qū)動(dòng)的實(shí)現(xiàn)方法,其特征在于虛擬機(jī)Hypervisor接管物理中斷,客戶操作系統(tǒng)中設(shè)置有虛擬中斷響應(yīng)標(biāo)志VIPending,同時(shí),客戶操作系統(tǒng)以中斷描述表table_Vintr_desC描述所有中斷;當(dāng)外設(shè)中斷產(chǎn)生后,虛擬機(jī)Hypervisor首先屏蔽該外設(shè)中斷,然后將客戶操作系統(tǒng)中的虛擬中斷響應(yīng)標(biāo)志VIPending設(shè)置為打開狀態(tài),接著將中斷描述表table_Vintr_desC中與該中斷對應(yīng)項(xiàng)的成員pending設(shè)置為表示該中斷發(fā)生的狀態(tài),最后由客戶操作系統(tǒng)調(diào)用該外設(shè)原有的中斷服務(wù)程序?qū)υ撝袛嗍录M(jìn)行處理。2.如權(quán)利要求1所述的復(fù)用客戶操作系統(tǒng)設(shè)備驅(qū)動(dòng)的實(shí)現(xiàn)方法,其特征在于所述虛擬機(jī)Hypervisor通過控制和管理硬件中的中斷控制器而接管物理中斷,當(dāng)外設(shè)中斷發(fā)生后,虛擬機(jī)Hypervisor通過操作中斷控制器屏蔽該外設(shè)中斷。3.如權(quán)利要求1所述的復(fù)用客戶操作系統(tǒng)設(shè)備驅(qū)動(dòng)的實(shí)現(xiàn)方法,其特征在于所述虛擬中斷響應(yīng)標(biāo)志VIPending是客戶操作系統(tǒng)中的一個(gè)全局變量,其被設(shè)置為1和O分別表示打開和關(guān)閉客戶操作系統(tǒng)中的中斷響應(yīng)。4.根據(jù)權(quán)利要求1所述的復(fù)用客戶操作系統(tǒng)設(shè)備驅(qū)動(dòng)的實(shí)現(xiàn)方法,其特征在于在客戶操作系統(tǒng)的中斷服務(wù)程序執(zhí)行完后,將虛擬中斷響應(yīng)標(biāo)志VIPending設(shè)置為0,以關(guān)閉客戶操作系統(tǒng)對中斷的響應(yīng),中斷描述表table_Vintr_desC中該中斷對應(yīng)項(xiàng)的成員pending設(shè)置為0,以向客戶操作系統(tǒng)表示該中斷已得到處理。最后Hypervisor操作中斷控制器中的相應(yīng)中斷標(biāo)志位打開該外設(shè)中斷,以接受下一次外設(shè)中斷。5.復(fù)用客戶操作系統(tǒng)設(shè)備驅(qū)動(dòng)的實(shí)現(xiàn)方法,其特征在于虛擬機(jī)Hypervisor控制和管理硬件中的中斷控制器,接管物理中斷,在客戶操作系統(tǒng)中設(shè)置有虛擬中斷響應(yīng)標(biāo)志VIPending,該虛擬中斷響應(yīng)標(biāo)志VIPending被設(shè)置為1和0分別表示打開和關(guān)閉客戶操作系統(tǒng)中的中斷響應(yīng),同時(shí),客戶操作系統(tǒng)以中斷描述表table_Vintr_desC描述所有中斷,具體包括以下步驟(1)當(dāng)外設(shè)中斷產(chǎn)生后,虛擬機(jī)Hypervisor通過操作中斷控制器屏蔽該外設(shè)中斷;(2)將客戶操作系統(tǒng)中的虛擬中斷響應(yīng)標(biāo)志VIPending設(shè)置為1,并將中斷描述表table_vintr_desc中與該中斷對應(yīng)項(xiàng)的成員pending設(shè)置為1以向客戶操作系統(tǒng)表示該中斷發(fā)生;(3)客戶操作系統(tǒng)調(diào)用該外設(shè)原有的中斷服務(wù)程序?qū)υ撝袛嗍录M(jìn)行處理;(4)將虛擬中斷響應(yīng)標(biāo)志VIPending設(shè)置為0,以關(guān)閉客戶操作系統(tǒng)對中斷的響應(yīng);(5)將中斷描述表table_Vintr_desC中該中斷對應(yīng)項(xiàng)的成員pending設(shè)置為0,以向客戶操作系統(tǒng)表示該中斷已得到處理;(6)虛擬機(jī)Hypervisor操作中斷控制器打開該外設(shè)中斷,以接受下一次外設(shè)中斷。全文摘要本發(fā)明提供了一種復(fù)用客戶操作系統(tǒng)設(shè)備驅(qū)動(dòng)的實(shí)現(xiàn)方法,Hypervisor接管物理中斷,客戶操作系統(tǒng)中設(shè)置虛擬中斷響應(yīng)標(biāo)志VIPending,客戶操作系統(tǒng)以中斷描述表table_vintr_desc描述所有中斷;當(dāng)外設(shè)中斷產(chǎn)生后,Hypervisor首先屏蔽該外設(shè)中斷,將客戶操作系統(tǒng)中的虛擬中斷響應(yīng)標(biāo)志VIPending設(shè)置為打開狀態(tài),接著將中斷描述表table_vintr_desc中與該中斷對應(yīng)項(xiàng)的成員pending設(shè)置為表示該中斷發(fā)生的狀態(tài),最后由客戶操作系統(tǒng)調(diào)用該外設(shè)原有的中斷服務(wù)程序?qū)υ撝袛嗍录M(jìn)行處理。本發(fā)明方法復(fù)用了客戶操作系統(tǒng)中已有的設(shè)備驅(qū)動(dòng),客戶操作系統(tǒng)中的原有設(shè)備驅(qū)動(dòng)框架保持不變,即訪問設(shè)備時(shí)調(diào)用的程序,以及程序調(diào)用的流程都保持不變,這樣使得設(shè)備的性能的損失最小。文檔編號(hào)G06F9/455GK102339230SQ201110255829公開日2012年2月1日申請日期2011年9月1日優(yōu)先權(quán)日2011年9月1日發(fā)明者展華益,張恩陽,張磊,李博良,李國輝,梅魁志申請人:西安交通大學(xué)