專利名稱:一種設(shè)備驅(qū)動域的實現(xiàn)方法、系統(tǒng)及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及通信技術(shù)領(lǐng)域,特別是涉及一種設(shè)備驅(qū)動域的實現(xiàn)方法、系 統(tǒng)及裝置。
背景技術(shù):
虛擬機是允許多個操作系統(tǒng)共享底層硬件資源的一種機制,通過軟件模 擬的具有完整硬件系統(tǒng)功能并運行在 一個完全的隔離環(huán)境中的完整計算機系 統(tǒng),隨著計算機硬件的飛速發(fā)展,虛擬機技術(shù)也得到了很好的發(fā)展。在虛擬
機技術(shù)中,I/O (Input/Output,輸入/輸出)子系統(tǒng)的虛擬化是虛擬機技術(shù)的重 要組成部分,I/O子系統(tǒng)的性能對系統(tǒng)整體性能的提高非常重要。
現(xiàn)有技術(shù)中,提出了 一種分離的I/O模型框架,即將傳統(tǒng)的I/O驅(qū)動框架 分成兩部分,分別位于無1/0訪問特權(quán)級的虛擬機中和位于有1/0訪問特權(quán)的 虛擬機中,當(dāng)位于無I/O訪問特權(quán)級的虛擬機中時為DomU,多個DomU之 間可同時運行各自的客戶操作系統(tǒng),當(dāng)位于有I/O訪問特權(quán)的虛擬機中時為 Dom0,該Dom0用于為DomU提供硬件訪問支持。
在實現(xiàn)本發(fā)明過程中,發(fā)明人發(fā)現(xiàn)現(xiàn)有技術(shù)中至少存在如下問題 現(xiàn)有的分離I/O模型中,Dom0需要支持DomU的所有硬件訪問,所有訪 問均需Dom0對I/O進行處理,在Dom0對I/O進行處理時,需要通過XEN 轉(zhuǎn)發(fā)請求,并且會帶來虛擬才幾之間、虛擬;〖幾與虛擬才幾監(jiān)控器之間的上下文切 換開銷,而上下文切換越頻繁,1/0性能便越差,從而給I/0性能帶來了較大 的性能折損。
發(fā)明內(nèi)容
本發(fā)明實施例提供一種設(shè)備驅(qū)動域的實現(xiàn)方法、系統(tǒng)及裝置,以提升I/0 性能。
4為了達到上述目的,本發(fā)明實施例提出了 一種設(shè)備驅(qū)動域的實現(xiàn)方法,
包括:
將所述相同驅(qū)動類型的設(shè)備驅(qū)動組合形成設(shè)備驅(qū)動域,以使所述設(shè)備驅(qū)
動域控制所述設(shè)備驅(qū)動域所對應(yīng)驅(qū)動類型的設(shè)備。
本發(fā)明實施例還提出了一種設(shè)備驅(qū)動域的實現(xiàn)系統(tǒng),包括 虛擬機監(jiān)控器,用于4艮據(jù)設(shè)備的驅(qū)動類型將有I/O訪問特權(quán)的虛擬機中的
設(shè)備驅(qū)動進行分離,并將所述相同驅(qū)動類型的設(shè)備驅(qū)動組合形成設(shè)備驅(qū)動域; 所述設(shè)備驅(qū)動域,用于對來自操作系統(tǒng)的請求進行響應(yīng),并根據(jù)所述響
應(yīng)結(jié)果控制所述設(shè)備驅(qū)動域所對應(yīng)驅(qū)動類型的設(shè)備。
本發(fā)明實施例還提出了 一種設(shè)備驅(qū)動域的實現(xiàn)裝置,包括
分離模塊,用于根據(jù)設(shè)備的驅(qū)動類型將有I/O訪問特權(quán)的虛擬機中的設(shè)備
驅(qū)動進行分離;
組合模塊,用于將所述相同驅(qū)動類型的設(shè)備驅(qū)動組合形成設(shè)備驅(qū)動域, 以使所述設(shè)備驅(qū)動域控制所述設(shè)備驅(qū)動域所對應(yīng)驅(qū)動類型的設(shè)備。 與現(xiàn)有技術(shù)相比,本發(fā)明實施例具有以下優(yōu)點
通過從有I/O訪問特權(quán)的虛擬機中分離出設(shè)備驅(qū)動域,所述分離出的設(shè)備 驅(qū)動域只控制該設(shè)備驅(qū)動域所對應(yīng)驅(qū)動類型的設(shè)備,從而減少了虛擬機之間、 虛擬機與虛擬機監(jiān)控器之間的上下文切換開銷,提高了 !/0性能。
為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實 施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面 描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講, 在不付出創(chuàng)造性勞動性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。 圖1為本發(fā)明實施例一提出的一種設(shè)備驅(qū)動域的實現(xiàn)方法流程圖; 圖2為本發(fā)明實施例二提出的一種設(shè)備驅(qū)動域的實現(xiàn)方法流程圖; 圖3為本發(fā)明實施例二提出的將設(shè)備驅(qū)動按設(shè)備的驅(qū)動類型進行分離前
520081 的框架示意圖4為本發(fā)明實施例二提出的將設(shè)備驅(qū)動按設(shè)備的驅(qū)動類型進行分離后 的框架示意圖5為本發(fā)明實施例二提出的分離的邏輯結(jié)構(gòu)示意圖6為本發(fā)明實施例三提出的一種設(shè)備驅(qū)動域的實現(xiàn)裝置結(jié)構(gòu)圖。
具體實施例方式
下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進 行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例, 而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒 有作出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的 范圍。
本發(fā)明實施例一提出的一種設(shè)備驅(qū)動域的實現(xiàn)方法,如圖1所示,包括 步驟SlOl,根據(jù)設(shè)備的驅(qū)動類型將有I/O訪問特權(quán)的虛擬機中的設(shè)備驅(qū) 動進行分離;
步驟S102,將所述相同驅(qū)動類型的設(shè)備驅(qū)動組合形成設(shè)備驅(qū)動域,以使 所述設(shè)備驅(qū)動域控制所述設(shè)備驅(qū)動域所對應(yīng)驅(qū)動類型的設(shè)備。
可見,本發(fā)明實施例中,通過從有I/0訪問特權(quán)的虛擬機中分離出設(shè)備驅(qū) 動域,所述分離出的設(shè)備驅(qū)動域只控制該設(shè)備驅(qū)動域所對應(yīng)驅(qū)動類型的設(shè)備, 從而減少了虛擬機之間、虛擬機與虛擬機監(jiān)控器之間的上下文切換開銷,提 高了I/0性能。
本發(fā)明實施例二提出的一種設(shè)備驅(qū)動域的實現(xiàn)方法,如圖2所示,包括 步驟S201, VMM (Virtual Machine Monitor,虛擬機監(jiān)控器)將DomO
中的設(shè)備驅(qū)動按設(shè)備的驅(qū)動類型進行分離,并形成獨自運行的虛擬機實體,
該從DomO中分離出的獨自運行的虛擬機實體為設(shè)備驅(qū)動域,該設(shè)備驅(qū)動域
只負責(zé)該設(shè)備驅(qū)動域所對應(yīng)類型的設(shè)備的操作。
具體的,該設(shè)備驅(qū)動域包括但不限于塊設(shè)備驅(qū)動域、網(wǎng)卡設(shè)備驅(qū)動域。
例如,將塊設(shè)備所對應(yīng)的驅(qū)動從DomO中其他類型的設(shè)備驅(qū)動中分離出來時,
6該設(shè)備驅(qū)動域為塊設(shè)備驅(qū)動域;將網(wǎng)卡設(shè)備所對應(yīng)的驅(qū)動從DomO中其他類 型的設(shè)備驅(qū)動中分離出來時,該設(shè)備驅(qū)動域為網(wǎng)卡設(shè)備驅(qū)動域。本實施例中, 該設(shè)備驅(qū)動即設(shè)備所對應(yīng)的驅(qū)動,包括但不限于設(shè)備管理器、設(shè)備后端驅(qū)動、 設(shè)備驅(qū)動,例如,該塊設(shè)備所對應(yīng)的驅(qū)動包括但不限于塊設(shè)備管理器、塊設(shè) 備后端驅(qū)動、塊設(shè)備驅(qū)動,該網(wǎng)卡設(shè)備所對應(yīng)的驅(qū)動包括但不限于網(wǎng)卡設(shè)備 管理器、網(wǎng)卡設(shè)備后端驅(qū)動、網(wǎng)卡設(shè)備驅(qū)動。
如圖3所示,在將設(shè)備驅(qū)動按設(shè)備的驅(qū)動類型進行分離前的框架中,可 以直接對I/0設(shè)備進行訪問的驅(qū)動模塊稱為后端驅(qū)動121,不能直接對I/0設(shè) 備進行訪問的驅(qū)動才莫塊稱為前端驅(qū)動111。該前端驅(qū)動111用于4妄收DomU 11 中上層發(fā)來的I/0請求,并通過事件通道機制傳遞給后端驅(qū)動121;后端驅(qū)動 將處理來自該前端驅(qū)動111的請求,并4艮據(jù)該請求調(diào)用相應(yīng)i殳備驅(qū)動程序訪
問該i/o設(shè)備。
本實施例中,該I/O設(shè)備以塊設(shè)備和網(wǎng)卡設(shè)備為例,該塊設(shè)備為存儲設(shè)備, 包括但不限于硬盤設(shè)備。在該將設(shè)備驅(qū)動按設(shè)備的驅(qū)動類型進行分離前的框 架中,該DomUll位于無I/0訪問特權(quán)級的虛擬機中,多個DomUll之間可 同時運行各自的客戶操作系統(tǒng),該Dom0 12位于有1/0訪問特權(quán)的虛擬機中, 該Dom0 12用于為DomU 11提供硬件訪問支持。本實施例中,前端驅(qū)動111 位于DomU 11中,當(dāng)接收到來自DomU 11上層發(fā)來的I/O請求后,通過XEN 傳遞給后端驅(qū)動121,該后端驅(qū)動121位于DomO 12中,才艮據(jù)該請求調(diào)用相 應(yīng)設(shè)備驅(qū)動程序訪問該I/0設(shè)備,例如,當(dāng)前端驅(qū)動111的請求為硬盤設(shè)備的 操作請求時,后端驅(qū)動121調(diào)用硬盤設(shè)備的驅(qū)動程序訪問該硬盤設(shè)備,當(dāng)前 端驅(qū)動111的請求為網(wǎng)卡設(shè)備的操作請求時,后端驅(qū)動121調(diào)用網(wǎng)卡設(shè)備的 驅(qū)動程序訪問該網(wǎng)卡i殳備。
如圖4所示,在將設(shè)備驅(qū)動按設(shè)備的驅(qū)動類型進行分離后的框架中,將 Dom0 12中的設(shè)備所對應(yīng)的驅(qū)動按設(shè)備的驅(qū)動類型從后端驅(qū)動中121分離, 形成獨自運行的虛擬機實體,該獨自運行的虛擬機實體為設(shè)備驅(qū)動域,本實 施例中,以塊設(shè)備驅(qū)動域和網(wǎng)卡設(shè)備驅(qū)動域為例。在后端驅(qū)動中121中,設(shè) 備所對應(yīng)的驅(qū)動包括但不限于網(wǎng)卡設(shè)備管理器12111、網(wǎng)卡設(shè)備后端驅(qū)動
712112、網(wǎng)卡設(shè)備驅(qū)動12113、塊設(shè)備管理器12121、塊i殳備后端驅(qū)動12122、 塊設(shè)備驅(qū)動12123,將上述設(shè)備所對應(yīng)的驅(qū)動按照設(shè)備的驅(qū)動類型進行分離, 上述的網(wǎng)卡設(shè)備管理器12111、網(wǎng)卡設(shè)備后端驅(qū)動12112、網(wǎng)卡設(shè)備驅(qū)動12113 是網(wǎng)卡設(shè)備類型的驅(qū)動,上述的塊設(shè)備管理器12121、塊設(shè)備后端驅(qū)動12122、 塊設(shè)備驅(qū)動12123是塊設(shè)備類型的驅(qū)動,通過將網(wǎng)卡設(shè)備所對應(yīng)的驅(qū)動和塊 i殳備所對應(yīng)的驅(qū)動從后端驅(qū)動中121進行分離, -使形成兩組獨自運行的虛擬
1211,該塊設(shè)備驅(qū)動域1212中包括塊設(shè)備管理器12121、塊設(shè)備后端驅(qū)動 12122、塊設(shè)備驅(qū)動12123,該網(wǎng)卡設(shè)備驅(qū)動域1211包括網(wǎng)卡設(shè)備管理器12111、 網(wǎng)卡設(shè)備后端驅(qū)動12112、網(wǎng)卡設(shè)備驅(qū)動12113。
各個設(shè)備驅(qū)動域負責(zé)各自設(shè)備驅(qū)動域所對應(yīng)類型的設(shè)備的操作,即該塊 i殳備驅(qū)動域1212與塊i殳備連接,該網(wǎng)卡i殳備驅(qū)動域1211與網(wǎng)卡i殳備連接, 上述塊設(shè)備驅(qū)動域1212和網(wǎng)卡設(shè)備驅(qū)動域1211通過XEN與前端驅(qū)動111相 連接,即可以通過塊設(shè)備驅(qū)動域1212和網(wǎng)卡設(shè)備驅(qū)動域1211處理來自前端 驅(qū)動111的請求,該來自前端驅(qū)動111的請求是客戶操作系統(tǒng)的訪問請求,并 根據(jù)該請求調(diào)用相應(yīng)的設(shè)備驅(qū)動程序訪問塊設(shè)備和網(wǎng)卡設(shè)備。
當(dāng)前端驅(qū)動111的請求為硬盤設(shè)備的操作請求時,塊設(shè)備驅(qū)動域1212將 直接對該硬盤設(shè)備的操作請求進行處理,并訪問該硬盤設(shè)備;當(dāng)前端驅(qū)動lll 的請求為網(wǎng)卡設(shè)備的操作請求時,網(wǎng)卡設(shè)備驅(qū)動域1211直接對該網(wǎng)卡設(shè)備的 操作請求進行處理,并訪問該網(wǎng)卡設(shè)備。
在網(wǎng)卡設(shè)備驅(qū)動域1211中,包括網(wǎng)卡設(shè)備管理器12111、網(wǎng)卡設(shè)備后端 驅(qū)動12112、網(wǎng)卡設(shè)備驅(qū)動12113,該網(wǎng)卡設(shè)備驅(qū)動12113可以初始化網(wǎng)卡設(shè) 備,該網(wǎng)卡設(shè)備后端驅(qū)動12112可以驅(qū)動網(wǎng)卡設(shè)備,該網(wǎng)卡設(shè)備管理器12111 可以為網(wǎng)卡設(shè)備配置IP地址。同樣的,在塊設(shè)備驅(qū)動域1212中,包括塊設(shè)備 管理器12121 、塊設(shè)備后端驅(qū)動12122、塊設(shè)備驅(qū)動12123,該塊設(shè)備驅(qū)動12123 可以初始化塊設(shè)備,該塊設(shè)備后端驅(qū)動12122可以驅(qū)動塊設(shè)備,該塊設(shè)備管 理器12121可以為塊設(shè)備配置存儲條件。
上述的將設(shè)備所對應(yīng)的驅(qū)動按設(shè)備的驅(qū)動類型進行分離的邏輯結(jié)構(gòu)如圖
85所示,本實施例中,以網(wǎng)卡設(shè)備驅(qū)動域為例,該網(wǎng)卡設(shè)備驅(qū)動域并不向用戶 暴露使用接口,負責(zé)提供網(wǎng)絡(luò)數(shù)據(jù)的傳輸,在該網(wǎng)卡設(shè)備驅(qū)動域的內(nèi)核中, 保留鏈路層以下的后端驅(qū)動。在按設(shè)備的驅(qū)動類型進行分離的邏輯結(jié)構(gòu)中, 還包含了負責(zé)對設(shè)備驅(qū)動域進行管理的客戶管理域,當(dāng)設(shè)備驅(qū)動域出現(xiàn)故障 時,該出現(xiàn)故障的設(shè)備驅(qū)動域通過XEN向客戶管理域發(fā)送消息,系統(tǒng)管理員 通過客戶管理域?qū)υO(shè)備驅(qū)動域進行維護,例如重新啟動設(shè)備驅(qū)動域。
在上述邏輯結(jié)構(gòu)中,PCI (Peripheral Component Interconnection,夕卜設(shè)組 件互連標準)對PCI設(shè)備定義了基準的配置空間,該基準的配置空間為配置 寄存器組。其中,PCI設(shè)備的每個設(shè)備的配置寄存器組中固化了信息,例如, 設(shè)備的I/0地址空間。XEN通過限制驅(qū)動域掃描的地址空間,使得每個設(shè)備 驅(qū)動域只能看到其對應(yīng)類型的硬件設(shè)備,即通過修改設(shè)備驅(qū)動域的配置寄存 器組,使設(shè)備驅(qū)動域通過XEN進行設(shè)備的掃描,每個設(shè)備驅(qū)動域只能看到其 對應(yīng)類型的硬件設(shè)備。例如,塊設(shè)備驅(qū)動域啟動時,XEN只向塊設(shè)備驅(qū)動域 暴露塊設(shè)備而不暴露其它設(shè)備,例如,不暴露網(wǎng)卡設(shè)備。同樣的,網(wǎng)卡設(shè)備 驅(qū)動域在啟動、運行時也無法看到塊設(shè)備。
步驟S202,設(shè)備驅(qū)動域?qū)碜钥蛻舨僮飨到y(tǒng)的與該設(shè)備驅(qū)動域?qū)?yīng)的設(shè) 備類型的操作請求進行響應(yīng),并根據(jù)響應(yīng)結(jié)果對設(shè)備驅(qū)動域所對應(yīng)驅(qū)動類型 的設(shè)備進行控制。
具體的,來自其他客戶操作系統(tǒng)的塊設(shè)備操作請求由塊設(shè)備驅(qū)動域完成 處理,來自其他客戶操作系統(tǒng)的網(wǎng)絡(luò)數(shù)據(jù)的傳輸請求由網(wǎng)卡設(shè)備驅(qū)動域完成 處理。即在VMM啟動時,將會啟動塊設(shè)備驅(qū)動域,例如,可以啟動塊設(shè)備 驅(qū)動域、網(wǎng)卡設(shè)備驅(qū)動域等客戶虛擬機運行時需要進行I/O服務(wù)的設(shè)備驅(qū)動 域,每個客戶虛擬機對塊設(shè)備的訪問統(tǒng)一通過塊設(shè)備驅(qū)動域進行,而每個客 戶虛擬機對網(wǎng)卡設(shè)備的訪問統(tǒng)一通過網(wǎng)卡設(shè)備驅(qū)動域與真實網(wǎng)卡設(shè)備進行交 互完成。
在該設(shè)備驅(qū)動域中,對I/0寄存器的處理具體為在每個設(shè)備驅(qū)動域進行 地址空間更新時,通過檢查設(shè)備驅(qū)動域的有效性保證多個設(shè)備驅(qū)動域之間的 內(nèi)存隔離,每個設(shè)備驅(qū)動域?qū)?yīng)著獨立的內(nèi)存,即設(shè)備驅(qū)動域與內(nèi)存頁面之
9間具有--對應(yīng)的映射關(guān)系,而內(nèi)存頁面之間不能相互重疊,當(dāng)設(shè)備驅(qū)動域
有效時,該設(shè)備驅(qū)動域所對應(yīng)的內(nèi)存便是隔離的。即通過擴展有效性檢查, 當(dāng)設(shè)備驅(qū)動域有效時,允許設(shè)備驅(qū)動域通過訪問已經(jīng)與設(shè)備寄存器建立映射 關(guān)系的內(nèi)存頁面來訪問設(shè)備,不同的設(shè)備寄存器對應(yīng)的內(nèi)存數(shù)據(jù)塊不會跨越
內(nèi)存頁邊界,從而保證了保護機制的高效性。VMM利用硬件機制,在設(shè)備驅(qū) 動域間進行切換的時候?qū)⒏露丝谂c位圖的對應(yīng)關(guān)系。該硬件機制為CPU支 持16位的I/O訪問空間,通過16位的地址空間按照端口對設(shè)備進行訪問, CPU利用位圖機制為上述訪問提供了嚴格的訪問控制。而設(shè)備驅(qū)動域機制對 各類設(shè)備進行了隔離,例如所有的網(wǎng)卡設(shè)備均由網(wǎng)卡設(shè)備驅(qū)動域進行操作和 管理,從而保證了多個設(shè)備驅(qū)動域通過網(wǎng)卡設(shè)備進行數(shù)據(jù)傳輸操作的安全性。
在該設(shè)備驅(qū)動域中,對中斷機制的處理具體為當(dāng)設(shè)備發(fā)生中斷后,VMM 接管所有設(shè)備的中斷,當(dāng)VMM接收到不同設(shè)備的中斷后,將該中斷按照該 中斷設(shè)備的類型轉(zhuǎn)發(fā)給該設(shè)備類型所對應(yīng)的設(shè)備驅(qū)動域。VMM需要對設(shè)備驅(qū) 動域的中斷服務(wù)程序的執(zhí)行進行控制,例如對設(shè)備驅(qū)動域中的中斷服務(wù)程序 進行調(diào)度,在設(shè)備驅(qū)動域被調(diào)度執(zhí)行時,VMM通過向該設(shè)備驅(qū)動域發(fā)送事件 通知,來引發(fā)該設(shè)備驅(qū)動域內(nèi)中斷服務(wù)程序的正確執(zhí)行。VMM通過直接管理 系統(tǒng)中的中斷控制器,使得VMM在接管設(shè)備中斷時,能夠在中斷允許的時 間范圍內(nèi)對中斷控制器作出響應(yīng),當(dāng)多個設(shè)備驅(qū)動域需要進行切換時,VMM 能夠?qū)ι舷挛倪M行保護。
VMM還可以通過XEN向每個設(shè)備驅(qū)動域發(fā)送異步的事件通知,例如發(fā) 送異步的硬件中斷事件通知。具體的,VMM可以為每個設(shè)備驅(qū)動域最多分配 1024個事件通道,在每個事件通道所對應(yīng)的VMM和設(shè)備驅(qū)動域之間共享的 內(nèi)存頁中,包含一對標志位,VMM可以通過設(shè)置第一個標志位來表示一個事 件被pending (待定),并向上層設(shè)備驅(qū)動域發(fā)送事件通知。當(dāng)設(shè)備驅(qū)動域阻 塞時,VMM將該設(shè)備驅(qū)動域掛入運行隊列,使得該設(shè)備驅(qū)動域可以被調(diào)度執(zhí) 行。當(dāng)多個相同的事件(如同一塊網(wǎng)卡連續(xù)發(fā)生多次發(fā)送中斷)發(fā)生時,事 件通知只發(fā)生一次,后面的事件被自動丟棄。第二個標志位由上層設(shè)備驅(qū)動 域進行設(shè)置,在該第二個標志位被設(shè)置并且有事件處于pending狀態(tài)時,其他
10的事件通知將自動被該設(shè)備驅(qū)動域忽略,在該第二個標志位;故清除后,對應(yīng) 的設(shè)備驅(qū)動域才能重新讀取pending標志位來判斷是否有一個事件正在被等 待處理。
每個設(shè)備驅(qū)動域通過唯一的事件處理程序處理來自VMM的事件通知。 該設(shè)備驅(qū)動域通過選擇器數(shù)據(jù)結(jié)構(gòu)表示最多32個事件一組中的哪個具體事件 的發(fā)生,從而避免在接收到事件通知后該域掃描所有的pending標志位。在設(shè) 備驅(qū)動域執(zhí)行完對所有事件的處理程序后,需要通過VMM將對應(yīng)的中斷屏 蔽打開,以避免未解開中斷屏蔽位的中斷再次進入中斷處理程序。此外,當(dāng) 一條中斷線被多個設(shè)備共享時,VMM需在所有對硬件進行操縱的設(shè)備驅(qū)動域 全部進行完中斷事件處理后,才能清除對應(yīng)的中斷屏蔽。
可見,本實施例中,通過從DomO中分離出設(shè)備驅(qū)動域,對DomU的硬 件訪問由不同的設(shè)備驅(qū)動域分別進行I/O處理,設(shè)備驅(qū)動域只控制該設(shè)備驅(qū)動 域所對應(yīng)驅(qū)動類型的設(shè)備,從而減少了虛擬機之間、虛擬機與虛擬機監(jiān)控器 之間的上下文切換開銷,顯著提高了 1/0性能。通過將一類的驅(qū)動部署在一個 含有后端驅(qū)動的設(shè)備驅(qū)動域中,可以達到驅(qū)動間的安全隔離,并提高系統(tǒng)的 可靠性、可維護性和可控性,當(dāng)驅(qū)動代碼出現(xiàn)問題時,可以將驅(qū)動代碼隔離 在該驅(qū)動代碼所在的虛擬機中,不會影響到其他客戶操作系統(tǒng)的正確執(zhí)行。 通過設(shè)備驅(qū)動域?qū)O寄存器的處理,將各類設(shè)備進行了隔離,從而保證了多 個設(shè)備驅(qū)動域通過硬件(例如網(wǎng)卡設(shè)備)進行數(shù)據(jù)傳輸?shù)炔僮鲿r的安全性。 通過設(shè)備驅(qū)動域?qū)χ袛鄼C制的處理,從而保證了設(shè)備驅(qū)動域內(nèi)中斷服務(wù)程序 的正確執(zhí)行。通過引入設(shè)備驅(qū)動域,將驅(qū)動代碼造成的安全隱患封閉在對應(yīng) 的設(shè)備驅(qū)動域內(nèi),提高了系統(tǒng)的穩(wěn)定性、可靠性、可用性和可控性。通過將 Dom0進行拆分,原有的Dom0的性能、帶寬、負載、CPU占用率等約束被 一個個設(shè)備驅(qū)動域所分擔(dān),減小甚至消除了 1/0路徑中的問題。
本發(fā)明實施例還提出一種設(shè)備驅(qū)動域的實現(xiàn)系統(tǒng),包括虛擬機監(jiān)控器、 設(shè)備驅(qū)動域和虛擬機;該虛擬機監(jiān)控器用于根據(jù)設(shè)備的驅(qū)動類型將有I/O訪問 特權(quán)的虛擬機中的設(shè)備驅(qū)動進行分離,并將該相同驅(qū)動類型的設(shè)備驅(qū)動組合 形成設(shè)備驅(qū)動域。該設(shè)備驅(qū)動域用于對來自操作系統(tǒng)的請求進行響應(yīng),并根
ii據(jù)響應(yīng)結(jié)果控制該設(shè)備驅(qū)動域所對應(yīng)驅(qū)動類型的設(shè)備。
本發(fā)明實施例三提出的一種虛擬機監(jiān)控器6,如圖6所示,包括
分離模塊61,用于根據(jù)設(shè)備的驅(qū)動類型將有I/O訪問特權(quán)的虛擬機中的 設(shè)備驅(qū)動進行分離;
組合模塊62,用于將分離模塊61分離后的實體中的相同驅(qū)動類型的設(shè)備 驅(qū)動組合形成設(shè)備驅(qū)動域,以使所述設(shè)備驅(qū)動域控制所述設(shè)備驅(qū)動域所對應(yīng) 驅(qū)動類型的設(shè)備。
進一步的,該分離模塊61包括
第 一分離單元611 ,用于將塊設(shè)備所對應(yīng)的驅(qū)動從有I/O訪問特權(quán)的虛擬 機中的設(shè)備驅(qū)動中分離;
第二分離單元612,用于將網(wǎng)卡設(shè)備所對應(yīng)的驅(qū)動從有1/0訪問特權(quán)的虛 擬機中的設(shè)備驅(qū)動中分離。
進一步的,該虛擬機監(jiān)控器還包括
處理才莫塊63,用于對I/0寄存器進行處理;和/或?qū)χ袛噙M行處理。該對 I/O寄存器進行處理具體為在設(shè)備驅(qū)動域進行地址空間更新時檢查設(shè)備驅(qū)動 域的有效性,當(dāng)設(shè)備驅(qū)動域有效時允許設(shè)備驅(qū)動域通過訪問已經(jīng)與設(shè)備寄存 器建立映射關(guān)系的內(nèi)存頁面來訪問設(shè)備;該對中斷進行處理具體為當(dāng)設(shè)備發(fā) 生中斷后,接管所述設(shè)備的中斷,并通過發(fā)送事件通知的方式將所述中斷通 知給所述設(shè)備對應(yīng)的設(shè)備驅(qū)動域。
可見,本實施例中,通過從有I/O訪問特權(quán)的虛擬機中分離出設(shè)備驅(qū)動域, 所述分離出的設(shè)備驅(qū)動域只控制該設(shè)備驅(qū)動域所對應(yīng)驅(qū)動類型的設(shè)備,從而 減少了虛擬機之間、虛擬機與虛擬機監(jiān)控器之間的上下文切換開銷,提高了 1/0性能。
通過以上的實施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到本發(fā) 明可以通過硬件實現(xiàn),也可以可借助軟件加必要的通用硬件平臺的方式來實 現(xiàn)?;谶@樣的理解,本發(fā)明的技術(shù)方案可以以軟件產(chǎn)品的形式體現(xiàn)出來, 該軟件產(chǎn)品可以存儲在一個非易失性存儲介質(zhì)(可以是CD-ROM, U盤,移 動硬盤等)中,包括若干指令用以使得一臺計算機設(shè)備(可以是個人計算機,
12服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個實施例所述的方法。
以上所述僅是本發(fā)明的優(yōu)選實施方式,應(yīng)當(dāng)指出,對于本技術(shù)領(lǐng)域的普 通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進和潤 飾,這些改進和潤飾也應(yīng)視本發(fā)明的保護范圍。
權(quán)利要求
1、一種設(shè)備驅(qū)動域的實現(xiàn)方法,其特征在于,包括根據(jù)設(shè)備的驅(qū)動類型將有I/O訪問特權(quán)的虛擬機中的設(shè)備驅(qū)動進行分離;將所述相同驅(qū)動類型的設(shè)備驅(qū)動組合形成設(shè)備驅(qū)動域,以使所述設(shè)備驅(qū)動域控制所述設(shè)備驅(qū)動域所對應(yīng)驅(qū)動類型的設(shè)備。
2、 如權(quán)利要求l所述的方法,其特征在于,在所述將相同驅(qū)動類型的設(shè) 備驅(qū)動組合形成設(shè)備驅(qū)動域之后,還包括所述設(shè)備驅(qū)動域?qū)碜圆僮飨到y(tǒng)的請求進行響應(yīng),并根據(jù)所述響應(yīng)結(jié)果 對所述設(shè)備驅(qū)動域所對應(yīng)驅(qū)動類型的設(shè)備進行控制。
3、 如權(quán)利要求1或2所述的方法,其特征在于,所述設(shè)備驅(qū)動域包括 塊設(shè)備驅(qū)動域和/或網(wǎng)卡設(shè)備驅(qū)動域;所述根據(jù)設(shè)備的驅(qū)動類型將有I/O訪問特權(quán)的虛擬機中的設(shè)備驅(qū)動進行 分離包括將塊設(shè)備所對應(yīng)的驅(qū)動從有I/O訪問特權(quán)的虛擬機中的設(shè)備驅(qū)動中分離; 和/或?qū)⒕W(wǎng)卡設(shè)備所對應(yīng)的驅(qū)動從有I/O訪問特權(quán)的虛擬機中的設(shè)備驅(qū)動中分離。
4、 如權(quán)利要求l所述的方法,其特征在于,在所述將相同驅(qū)動類型的設(shè) 備驅(qū)動組合形成設(shè)備驅(qū)動域之后,還包括在設(shè)備驅(qū)動域進行地址空間更新時檢查設(shè)備驅(qū)動域的有效性,當(dāng)設(shè)備驅(qū) 動域有效時允許設(shè)備驅(qū)動域通過訪問已經(jīng)與設(shè)備寄存器建立映射關(guān)系的內(nèi)存 頁面來訪問設(shè)備。
5、 如權(quán)利要求l所述的方法,其特征在于,在所述將相同驅(qū)動類型的設(shè) 備驅(qū)動組合形成設(shè)備驅(qū)動域之后,還包括當(dāng)設(shè)備發(fā)生中斷后,接管所述設(shè)備的中斷,并通過發(fā)送事件通知的方式 將所述中斷通知給所述設(shè)備對應(yīng)的設(shè)備驅(qū)動域。
6、 一種設(shè)備驅(qū)動域的實現(xiàn)系統(tǒng),其特征在于,包括 虛擬機監(jiān)控器,用于根據(jù)設(shè)備的驅(qū)動類型將有1/0訪問特權(quán)的虛擬機中的設(shè)備驅(qū)動進行分離,并將所述相同驅(qū)動類型的設(shè)備驅(qū)動組合形成設(shè)備驅(qū)動域; 所述設(shè)備驅(qū)動域,用于對來自操作系統(tǒng)的請求進行響應(yīng),并根據(jù)所述響 應(yīng)結(jié)果控制所述設(shè)備驅(qū)動域所對應(yīng)驅(qū)動類型的設(shè)備。
7、 如權(quán)利要求6所述的系統(tǒng),其特征在于,所述虛擬機監(jiān)控器包括 分離模塊,用于根據(jù)設(shè)備的驅(qū)動類型將有1/0訪問特權(quán)的虛擬機中的設(shè)備驅(qū)動進行分離;組合模塊,用于將所述相同驅(qū)動類型的設(shè)備驅(qū)動組合形成設(shè)備驅(qū)動域, 以使所述設(shè)備驅(qū)動域控制所述設(shè)備驅(qū)動域所對應(yīng)驅(qū)動類型的設(shè)備。
8、 一種虛擬機監(jiān)控器,其特征在于,包括分離模塊,用于根據(jù)設(shè)備的驅(qū)動類型將有I/O訪問特權(quán)的虛擬機中的設(shè)備 驅(qū)動進行分離;組合模塊,用于將所述相同驅(qū)動類型的設(shè)備驅(qū)動組合形成設(shè)備驅(qū)動域, 以使所述設(shè)備驅(qū)動域控制所述設(shè)備驅(qū)動域所對應(yīng)驅(qū)動類型的設(shè)備。
9、 如權(quán)利要求8所述的虛擬機監(jiān)控器,其特征在于,所述分離模塊包括 第一分離單元,用于將塊設(shè)備所對應(yīng)的驅(qū)動從有I/O訪問特權(quán)的虛擬機中的設(shè)備驅(qū)動中分離;第二分離單元,用于將網(wǎng)卡設(shè)備所對應(yīng)的驅(qū)動從有1/0訪問特權(quán)的虛擬機中的設(shè)備驅(qū)動中分離。
10、 如權(quán)利要求8所述的虛擬機監(jiān)控器,其特征在于,還包括 處理模塊,用于在設(shè)備驅(qū)動域進行地址空間更新時檢查設(shè)備驅(qū)動域的有效性,當(dāng)設(shè)備驅(qū)動域有效時允許設(shè)備驅(qū)動域通過訪問已經(jīng)與設(shè)備寄存器建立 映射關(guān)系的內(nèi)存頁面來訪問設(shè)備; 和/或當(dāng)設(shè)備發(fā)生中斷后,接管所述設(shè)備的中斷,并通過發(fā)送事件通知的方式 將所述中斷通知給所述設(shè)備對應(yīng)的設(shè)備驅(qū)動域。
全文摘要
本發(fā)明實施例公開了一種設(shè)備驅(qū)動域的實現(xiàn)方法、系統(tǒng)及裝置,所述方法包括根據(jù)設(shè)備的驅(qū)動類型將有I/O訪問特權(quán)的虛擬機中的設(shè)備驅(qū)動進行分離;將所述相同驅(qū)動類型的設(shè)備驅(qū)動組合形成設(shè)備驅(qū)動域,以使所述設(shè)備驅(qū)動域控制所述設(shè)備驅(qū)動域所對應(yīng)驅(qū)動類型的設(shè)備。本發(fā)明實施例中,通過從有I/O訪問特權(quán)的虛擬機中分離出設(shè)備驅(qū)動域,所述分離出的設(shè)備驅(qū)動域只控制該設(shè)備驅(qū)動域所對應(yīng)驅(qū)動類型的設(shè)備,從而減少了虛擬機之間、虛擬機與虛擬機監(jiān)控器之間的上下文切換開銷,提高了I/O性能。
文檔編號G06F13/10GK101488113SQ20081018113
公開日2009年7月22日 申請日期2008年11月25日 優(yōu)先權(quán)日2008年11月25日
發(fā)明者強 付, 全小飛, 孔金珠 申請人:華為技術(shù)有限公司;中國人民解放軍國防科學(xué)技術(shù)大學(xué)