[發明專利]X86計算機虛擬化的物理中斷處理方法無效
| 申請號: | 200910043829.9 | 申請日: | 2009-07-03 |
| 公開(公告)號: | CN101620547A | 公開(公告)日: | 2010-01-06 |
| 發明(設計)人: | 易曉東;劉曉建;張衛華;譚郁松;戴華東;吳慶波;孔金珠 | 申請(專利權)人: | 中國人民解放軍國防科學技術大學 |
| 主分類號: | G06F9/455 | 分類號: | G06F9/455;G06F13/24 |
| 代理公司: | 國防科技大學專利服務中心 | 代理人: | 郭 敏 |
| 地址: | 410073湖*** | 國省代碼: | 湖南;43 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | x86 計算機 虛擬 物理 中斷 處理 方法 | ||
1.一種X86計算機虛擬化的物理中斷處理方法,首先構建虛擬機系統,虛擬機系統由 三部分組成:最底層是X86計算機硬件與中斷;中間層是虛擬機監控器;最上層是同時 運行的多個虛擬化操作系統,包括一個dom0即0號域操作系統,一個或多個domU即用 戶域操作系統,虛擬機監控器由物理中斷處理模塊和虛擬中斷處理模塊、中央處理單元 CPU指令虛擬化模塊、內存管理單元MMU虛擬化模塊組成;其特征在于所述物理中斷處理 模塊由本地高級可編程中斷控制器LAPIC初始化子模塊、CPU運行模式配置子模塊、dom0 LAPIC初始化監視子模塊、dom0設備中斷接收輔助子模塊、處理器間中斷IPI發送與接 收子模塊、不可屏蔽中斷NMI接收和處理子模塊這六個子模塊組成;CPU運行模式配置 子模塊配置CPU的運行模式并接收從CPU發來的設備中斷信息,再調用dom0設備中斷接 收輔助子模塊,在dom0設備中斷接收輔助子模塊的控制下,設備中斷直接傳遞給dom0 操作系統;所有的NMI都傳遞給NMI接收和處理子模塊,該子模塊接收NMI后進行判斷, 如果NMI是IPI消息導致的,則將該NMI傳送給IPI發送與接收子模塊,否則將NMI轉 發至dom0操作系統;LAPIC初始化子模塊在X86計算機系統加電引導時對LAPIC進行部 分初始化,在dom0LAPIC初始化監視子模塊的監控下,dom0操作系統直接訪問經初始 化的LAPIC,當CPU指令虛擬化模塊檢測到dom0對LAPIC重新初始化時,CPU指令虛擬 化模塊通知dom0LAPIC初始化監視子模塊,由dom0LAPIC初始化監視子模塊調用LAPIC 初始化子模塊對LAPIC進行重配置;IPI發送與接收子模塊直接訪問LAPIC進行IPI消息 的發送與接收;構建好虛擬機系統后,由虛擬機系統對物理中斷進行處理,方法是:
第一步,NMI接收和處理子模塊構建接收和處理NMI所需要的軟件環境:構建NMI中 斷的中斷處理函數,將該中斷處理函數的地址放入中斷描述符表即IDT表的第2項中;
第二步,IPI發送與接收子模塊按如下方法初始化IPI發送與接收所需的軟件環境:
2.1選用不可屏蔽中斷NMI的中斷號2作為IPI的中斷號;
2.2為每個CPU都設置一個先進先出的隊列結構作為IPI消息隊列,同時為每個IPI 消息隊列設置一個消息隊列鎖;
第三步,LAPIC初始化子模塊對本地高級可編程中斷控制器LAPIC進行基本初始化, 方法如下:
3.1探測X86系統中是否配備了LAPIC,如果系統中不存在LAPIC,則轉第四步,否 則執行3.2;
3.2映射LAPIC的寄存器,為每個CPU的LAPIC的所有寄存器的物理地址區間映射 相應的虛擬地址;
3.3啟用LAPIC,即向LAPIC的寄存器中寫入數據;
第四步,CPU運行模式配置子模塊按如下方法分別配置dom0操作系統、domU操作系 統和虛擬機監控器的運行模式:
4.1對dom0操作系統,按如下方法配置CPU的運行模式:
●配置dom0操作系統的運行模式為CPU的虛擬化模式;
●配置dom0操作系統的中斷觸發模式為直接觸發和處理模式,即當dom0操作系統 運行時,到達的物理中斷不通知物理中斷處理模塊,而直接在dom0操作系統中被觸發和 處理;
●當dom0操作系統運行時,打開CPU的中斷允許標志;
4.2對domU操作系統,按如下方法配置CPU的運行模式:
●配置domU操作系統的運行模式為CPU的虛擬化模式;
●配置domU操作系統的中斷觸發模式為退出運行并通知物理中斷處理模塊這種模 式,即當domU操作系統運行時,到達的物理中斷將中斷domU操作系統的運行,并馬上 通知物理中斷處理模塊;
●當這些操作系統運行時,打開CPU的中斷允許標志;
4.3對虛擬機監控器,按如下方法配置CPU的運行模式:
●配置虛擬機監控器的運行模式為CPU的普通模式;
●在虛擬機監控器運行期間,始終關閉CPU的中斷允許標志;
第五步,當dom0LAPIC初始化監視子模塊監測到dom0操作系統對LAPIC進行初始化 操作時,轉5.1;當dom0設備中斷接收輔助子模塊監測到設備中斷到達時,轉5.2;當 NMI接收和處理子模塊監測到不可屏蔽中斷NMI到達時,轉5.3;當IPI發送與接收子模 塊檢測到虛擬機的其它模塊或上層操作系統請求發送和接收處理器間中斷IPI時,轉 5.4:
5.1CPU指令虛擬化模塊截獲dom0操作系統讀寫型號相關寄存器MSR的指令 rdmsr/wrmsr,并將結果交給dom0LAPIC初始化監視子模塊,dom0LAPIC初始化監視子 模塊判斷dom0操作系統是否訪問編號為0x1B的MSR,如果是則判斷LAPIC寄存器的內存 映射地址是否被改變,如果改變則將新地址記錄下來,并按3.2所示的方法重新映射 LAPIC的寄存器;如果不改變則轉第五步,進入下一次循環;
5.2dom0設備中斷接收輔助子模塊分下列三種情況輔助dom0操作系統接收設備中 斷:
●當設備中斷到達時,如果CPU正在運行domU操作系統,則CPU中斷domU操作系 統的運行,并將設備中斷到達情況通知dom0設備中斷接收輔助子模塊,dom0設備中斷接 收輔助子模塊馬上請求虛擬機監控器轉入運行dom0操作系統,等到dom0操作系統開始 運行時,設備中斷將立即被觸發并被dom0操作系統接收;
●當設備中斷到達時,如果CPU正在運行dom0操作系統,設備中斷直接在dom0操 作系統中被觸發;
●當設備中斷到達時,如果CPU正在運行虛擬機監控器自身,到達的設備中斷不會 被觸發;
上述處理完畢后,轉第五步進入下一次循環;
5.3NMI接收和處理子模塊接收和處理不可屏蔽中斷NMI,方法是判斷IPI發送與接 收子模塊是否正在發送IPI消息,如果正在發送IPI消息,則由IPI發送與接收子模塊 接收和處理IPI消息;否則,將NMI轉發到dom0操作系統,dom0操作系統異步處理該 NMI;上述兩種情況處理完成后,都轉第五步進入下一次循環;
5.4如果IPI發送與接收子模塊被請求發送IPI,轉5.4.1;如果NMI接收和處理子 模塊接收到NMI后調用IPI發送與接收子模塊,轉5.4.2:
5.4.1按下述方法向一個或多個目標CPU發送一個IPI消息:
5.4.1.1獲得目標CPU的消息隊列鎖,把IPI消息加入到該IPI消息的目標CPU的 IPI消息隊列中,再釋放目標CPU的消息隊列鎖;
5.4.1.2通過訪問LAPIC的寄存器,向對稱多處理SMP系統中的其它全部CPU發送 該IPI消息,發送參數中設置的IPI中斷號為NMI的中斷號2;
5.4.1.3轉第五步進入下一次循環;
5.4.2按下述方法接收和處理IPI消息:
5.4.2.1先獲得本CPU的消息隊列鎖,再判斷消息隊列是否為空,如果為空則釋放 本CPU的消息隊列鎖,轉5.4.2.3;如果消息隊列不為空,執行5.4.2.2;
5.4.2.2從本CPU的IPI消息隊列中取出一個IPI消息,釋放本CPU的消息隊列鎖, 調用IPI消息中包含的IPI接收和處理函數實現IPI通信,轉5.4.2.1。
5.4.2.3轉第五步進入下一次循環。
2.如權利要求1所述的X86計算機虛擬化的物理中斷處理方法,其特征在于探測X86 系統中是否配備LAPIC的方法是設置CPU的EAX寄存器為1,再執行CPUID這條CPU指令, 最后檢查EDX寄存器的第9位是否為1,如果為1則LAPIC存在。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于中國人民解放軍國防科學技術大學,未經中國人民解放軍國防科學技術大學許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/200910043829.9/1.html,轉載請聲明來源鉆瓜專利網。





