CN102339230B - 复用客户操作系统设备驱动的实现方法 - Google Patents
复用客户操作系统设备驱动的实现方法 Download PDFInfo
- Publication number
- CN102339230B CN102339230B CN201110255829.2A CN201110255829A CN102339230B CN 102339230 B CN102339230 B CN 102339230B CN 201110255829 A CN201110255829 A CN 201110255829A CN 102339230 B CN102339230 B CN 102339230B
- Authority
- CN
- China
- Prior art keywords
- operating system
- interrupt
- client operating
- interruption
- peripheral
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Bus Control (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明提供了一种复用客户操作系统设备驱动的实现方法,Hypervisor接管物理中断,客户操作系统中设置虚拟中断响应标志VIPending,客户操作系统以中断描述表table_vintr_desc描述所有中断;当外设中断产生后,Hypervisor首先屏蔽该外设中断,将客户操作系统中的虚拟中断响应标志VIPending设置为打开状态,接着将中断描述表table_vintr_desc中与该中断对应项的成员pending设置为表示该中断发生的状态,最后由客户操作系统调用该外设原有的中断服务程序对该中断事件进行处理。本发明方法复用了客户操作系统中已有的设备驱动,客户操作系统中的原有设备驱动框架保持不变,即访问设备时调用的程序,以及程序调用的流程都保持不变,这样使得设备的性能的损失最小。
Description
技术领域
本发明属于嵌入式虚拟化技术领域,涉及一种复用客户操作系统设备驱动的实现方法,应用于Hypervisor中支持对外设的访问。
背景技术
现在日常生活中的嵌入式设备越来越普及,功能应用也越发丰富。将不同的系统虚拟化为客户操作系统后同时运行在Hypervisor上,可避免不同系统之间的应用移植而又能兼具各系统的应用。IO虚拟化技术是虚拟化技术中的重要组成部分。Hypervisor采用IO虚拟化技术使运行其上的客户操作系统能够使用外围设备。
目前应用较广泛的IO虚拟化技术主要有三种,分别是Split I/O,Direct I/O和Passthrough I/O。
(1)Split I/O。将设备驱动框架根据是否访问硬件分为硬件相关部分和硬件无关部分。其中硬件相关部分放在具有I/O访问权限的虚拟机中,而硬件无关部分位于无I/O访问权限的虚拟机中,前者为后者提供硬件访问支持。
(2)Direct I/O。Hypervisor将相应的物理设备抽象为虚拟设备。虚拟机中对设备的访问是对虚拟设备的操作,Hypervisor将这些操作在具体的物理设备上实现。
(3)Passthrough I/O。对物理设备,Hypervisor不进行任何相应的管理,而是由虚拟机利用系统中已有设备驱动直接进行物理设备的访问操作
这三种IO虚拟化技术相比较,Split I/O提供较安全的IO访问,Direct I/O拥有较好的移植性,Passthrough I/O的设备性能损失最小。
对于复杂外设,如果采用Split I/O和Direct I/O实现客户操纵系统对外设的访问,都需要对系统中原有的设备驱动框架进行修改,这样不仅实现复杂,而且设备的性能损失大。本发明采用本发明采用了Passthrough I/O的思想,不用修改系统中的设备驱动框架,使Hypervisor上的客户操作系统能够复用其已有的设备驱动完成对外设的访问,可解决客户操作系统访问外设时设备性能损失大的问题。
发明内容
本发明所要解决的技术问题是提供一种复用客户操作系统设备驱动的实现方法,该方法能够使Hypervisor中的客户操作系统复用系统中原有设备驱动对设备进行访问,以使设备的性能损失最小。
为解决以上技术问题,本发明采用以下技术方案:
复用客户操作系统设备驱动的实现方法,虚拟机Hypervisor接管物理中断,客户操作系统中设置有虚拟中断响应标志VIPending,同时,客户操作系统以中断描述表table_vintr_desc描述所有中断;当外设中断产生后,虚拟机Hypervisor首先屏蔽该外设中断,然后将客户操作系统中的虚拟中断响应标志VIPending设置为打开状态,接着将中断描述表table_vintr_desc中与该中断对应项的成员pending设置为表示该中断发生的状态,最后由客户操作系统调用该外设原有的中断服务程序对该中断事件进行处理;在客户操作系统的中断服务程序执行完后,将虚拟中断响应标志VIPending设置为0,以关闭客户操作系统对中断的响应,中断描述表table_vintr_desc中该中断对应项的成员pending设置为0,以向客户操作系统表示该中断已得到处理,最后虚拟机Hypervisor操作中断控制器中的相应中断标志位打开该外设中断,以接受下一次外设中断。
作为本发明的优选实施例,所述虚拟机Hypervisor通过控制和管理硬件中的中断控制器而接管物理中断,当外设中断发生后,虚拟机Hypervisor通过操作中断控制器屏蔽该外设中断;
作为本发明的优选实施例,所述虚拟中断响应标志VIPending是客户操作系统中的一个全局变量,其被设置为1和0分别表示打开和关闭客户操作系统中的中断响应;
本发明复用客户操作系统设备驱动的实现方法至少具有以下优点:本发明通过虚拟机Hypervisor管理外设中断的屏蔽与开启,将外设中断的具体处理工作交由客户操作系统调用原有的中断服务程序和外设驱动处理。这种方法不仅复用了客户操作系统中已有的设备驱动,而且客户操作系统中的原有设备驱动框架保持不变,即访问设备时调用的程序,以及程序调用的流程都保持不变,这样使得设备的性能的损失最小。
附图说明
图1为本发明复用客户操作系统设备驱动示意图;
图2为本发明Hypervisor总体结构;
图3为本发明GuestOS虚拟化前外设中断处理过程;
图4为本发明Hypervisor处理USB中断示意图;
具体实施方式
下面结合附图对本发明复用客户操作系统设备驱动的实现方法做详细描述:
首先Hypervisor控制和管理硬件中的中断控制器,接管物理中断。在客户操作系统中设置虚拟中断响应标志VIPending。该虚拟中断响应标志VIPending是客户操作系统中的一个全局变量,其被设置为1和0分别表示打开和关闭客户操作系统中的中断响应。
在客户操作系统中,以中断描述表table_vintr_desc描述所有中断。中断描述表中每一项对应一个中断,其中成员pending表示该中断是否发生。
保持客户操作系统中的原有设备驱动不变,和对设备的访问权限不变。在Hypervisor启动时,Hypervisor将其内的中断寄存器中外设中断的对应位使能。而外设的初始化则在客户操作系统中,且直接对物理硬件进行操作。
当外设中断产生后,先由Hypervisor处理。Hypervisor先通过操作中断控制器中的相应中断标志位屏蔽该外设中断,然后将客户操作系统中的虚拟中断响应标志VIPending设置为1,并将中断描述表table_vintr_desc中与该中断对应项的成员pending设置为1以向客户操作系统表示该中断发生。然后客户操作系统调用该外设原有的中断服务程序对该中断事件进行处理。这样客户操作系统中的外设中断处理函数和流程保持不变,外设原有的设备驱动会得到调用,达到复用设备驱动的目的。在客户操作系统的中断服务程序执行完后,将虚拟中断响应标志VIPending设置为0,以关闭客户操作系统对中断的响应,中断描述表table_vintr_desc中该中断对应项的成员pending设置为0,以向客户操作系统表示该中断已得到处理。最后Hypervisor操作中断控制器中的相应中断标志位打开该外设中断,以接受下一次外设中断。
总的来说,Hypervisor管理外设中断的屏蔽与开启,将外设中断的具体处理工作交由客户操作系统调用原有的中断服务程序和外设驱动处理。这种方法不仅复用了客户操作系统中已有的设备驱动,而且客户操作系统中的原有设备驱动框架保持不变,即访问设备时调用的程序,以及程序调用的流程都保持不变,这样使得设备的性能的损失最小。
本发明实际是通过将外设中断交由客户操作系统按照原有的中断服务程序处理,以复用其已有设备驱动。其过程大致如图1所示。以下以Hypervisor中客户操作系统支持USB设备为实例说明本发明内容。
Hypervisor是虚拟机管理软件,基于硬件的Hypervisor的总体结构如图2所示。其中Hypervisor操作硬件的中断控制器,所有的物理中断发生后先由Hypervisor处理。GuestOS是基于linux内核的客户操作系统。经过修改,设置VIPending为客户操作系统中的全局变量,其值为1和0分别表示打开和屏蔽客户操作系统中的中断响应。以数据结构table_vintr_desc描述客户操作系统中处理的中断,其中包含的成员pending为0表示中断没有发生或中断已处理完,为1表示中断发生需要处理或该中断正在处理。
当GuestOS独立运行在硬件平台上时,对USB设备的初始化和读写等操作都是直接作用于物理硬件,对USB的中断都是直接响应和处理。在USB中断发生后,GuestOS先屏蔽该中断,再调用USB中断服务程序usb_hcd_irq()处理该中断,USB设备驱动也将得到调用。该中断事件处理完后,GuestOS再开启USB中断以响应下一次USB中断。具体过程如图3所示。
当GuestOS运行在Hypervisor上时,保留GuestOS中USB设备驱动不变,保留GuestOS对USB设备的直接操作和控制。当插入USB设备后,触发USB中断。Hypervisor在接受到USB中断后,先通过对中断寄存器操作,将USB中断对应位置0以屏蔽该中断,然后设置GuestOS中的虚拟中断响应标志VIPending为1,中断描述表table_vintr_desc中USB中断对应项的pending成员的值设为1。然后GuestOS将响应USB中断,调用与独立运行在硬件上时一样的USB中断服务程序usb_hcd_irq()完成该中断的具体处理工作。具体处理该中断的工作流程与独立运行在硬件上时一样,USB设备驱动将得调用。这样达到复用USB设备驱动的目的。在将该中断处理完成后,GuestOS将中断描述表table_vintr_desc中USB中断对应项的pending成员值设置为0,中断响应标志VIPending设置为0,然后Hypervisor将中断寄存器中USB中断对应位设置为1以开启USB中断。以上Hypervisor中GuestOS复用USB设备驱动的具体过程如图4所示。
以上所述仅为本发明的一种实施方式,不是全部或唯一的实施方式,本领域普通技术人员通过阅读本发明说明书而对本发明技术方案采取的任何等效的变换,均为本发明的权利要求所涵盖。
Claims (4)
1.复用客户操作系统设备驱动的实现方法,其特征在于:虚拟机Hypervisor接管物理中断,客户操作系统中设置有虚拟中断响应标志VIPending,同时,客户操作系统以中断描述表table_vintr_desc描述所有中断;当外设中断产生后,虚拟机Hypervisor首先屏蔽该外设中断,然后将客户操作系统中的虚拟中断响应标志VIPending设置为打开状态,接着将中断描述表table_vintr_desc中与该中断对应项的成员pending设置为表示该中断发生的状态,最后由客户操作系统调用该外设原有的中断服务程序对该中断事件进行处理;在客户操作系统的中断服务程序执行完后,将虚拟中断响应标志VIPending设置为0,以关闭客户操作系统对中断的响应,中断描述表table_vintr_desc中该中断对应项的成员pending设置为0,以向客户操作系统表示该中断已得到处理,最后虚拟机Hypervisor操作中断控制器中的相应中断标志位打开该外设中断,以接受下一次外设中断。
2.如权利要求1所述的复用客户操作系统设备驱动的实现方法,其特征在于:所述虚拟机Hypervisor通过控制和管理硬件中的中断控制器而接管物理中断,当外设中断发生后,虚拟机Hypervisor通过操作中断控制器屏蔽该外设中断。
3.如权利要求1所述的复用客户操作系统设备驱动的实现方法,其特征在于:所述虚拟中断响应标志VIPending是客户操作系统中的一个全局变量,其被设置为1和0分别表示打开和关闭客户操作系统中的中断响应。
4.复用客户操作系统设备驱动的实现方法,其特征在于:虚拟机Hypervisor控制和管理硬件中的中断控制器,接管物理中断,在客户操作系统中设置有虚拟中断响应标志VIPending,该虚拟中断响应标志VIPending被设置为1和0分别表示打开和关闭客户操作系统中的中断响应,同时,客户操作系统以中断描述表table_vintr_desc描述所有中断,具体包括以下步骤:
(1)当外设中断产生后,虚拟机Hypervisor通过操作中断控制器屏蔽该外设中断;
(2)将客户操作系统中的虚拟中断响应标志VIPending设置为1,并将中断描述表table_vintr_desc中与该中断对应项的成员pending设置为1以向客户操作系统表示该中断发生;
(3)客户操作系统调用该外设原有的中断服务程序对该中断事件进行处理;
(4)将虚拟中断响应标志VIPending设置为0,以关闭客户操作系统对中断的响应;
(5)将中断描述表table_vintr_desc中该中断对应项的成员pending设置为0,以向客户操作系统表示该中断已得到处理;
(6)虚拟机Hypervisor操作中断控制器打开该外设中断,以接受下一次外设中断。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110255829.2A CN102339230B (zh) | 2011-09-01 | 2011-09-01 | 复用客户操作系统设备驱动的实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110255829.2A CN102339230B (zh) | 2011-09-01 | 2011-09-01 | 复用客户操作系统设备驱动的实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102339230A CN102339230A (zh) | 2012-02-01 |
CN102339230B true CN102339230B (zh) | 2014-01-29 |
Family
ID=45514974
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110255829.2A Expired - Fee Related CN102339230B (zh) | 2011-09-01 | 2011-09-01 | 复用客户操作系统设备驱动的实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102339230B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106886429B (zh) * | 2015-12-16 | 2020-11-06 | 华为技术有限公司 | 一种加载驱动程序的方法和服务器 |
CN114047960A (zh) * | 2021-11-10 | 2022-02-15 | 北京鲸鲮信息系统技术有限公司 | 操作系统运行方法及装置、电子设备和存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7219241B2 (en) * | 2002-11-30 | 2007-05-15 | Intel Corporation | Method for managing virtual and actual performance states of logical processors in a multithreaded processor using system management mode |
CN101135997A (zh) * | 2006-08-29 | 2008-03-05 | 联想(北京)有限公司 | 一种虚拟机系统及其硬件设备中断处理方法 |
CN101140530A (zh) * | 2006-09-07 | 2008-03-12 | 环隆电气股份有限公司 | 应用程序截获与监控系统控制中断的方法 |
CN102105871A (zh) * | 2008-07-28 | 2011-06-22 | Arm有限公司 | 虚拟处理设备的中断控制 |
-
2011
- 2011-09-01 CN CN201110255829.2A patent/CN102339230B/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7219241B2 (en) * | 2002-11-30 | 2007-05-15 | Intel Corporation | Method for managing virtual and actual performance states of logical processors in a multithreaded processor using system management mode |
CN101135997A (zh) * | 2006-08-29 | 2008-03-05 | 联想(北京)有限公司 | 一种虚拟机系统及其硬件设备中断处理方法 |
CN101140530A (zh) * | 2006-09-07 | 2008-03-12 | 环隆电气股份有限公司 | 应用程序截获与监控系统控制中断的方法 |
CN102105871A (zh) * | 2008-07-28 | 2011-06-22 | Arm有限公司 | 虚拟处理设备的中断控制 |
Also Published As
Publication number | Publication date |
---|---|
CN102339230A (zh) | 2012-02-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101968746B (zh) | 一种内核虚拟机组织架构模式的实现方法 | |
US9164790B2 (en) | Live virtual machine template creation | |
EP3073373B1 (en) | Method for interruption affinity binding of virtual network interface card, and computer device | |
EP4296877A3 (en) | Secure arbitration mode to build and operate within trust domain extensions | |
US20110167422A1 (en) | Virtualization apparatus | |
US9201823B2 (en) | Pessimistic interrupt affinity for devices | |
US11157302B2 (en) | Idle processor management in virtualized systems via paravirtualization | |
US10169075B2 (en) | Method for processing interrupt by virtualization platform, and related device | |
CN102307208B (zh) | 基于云计算的虚拟机运行控制装置及其运行控制方法 | |
EP2881860B1 (en) | Method for implementing an interrupt between virtual processors, related device, and system | |
US9003094B2 (en) | Optimistic interrupt affinity for devices | |
CN104598294A (zh) | 用于移动设备的高效安全的虚拟化方法及其设备 | |
KR20160033517A (ko) | 인터럽트 컨트롤러를 위한 하이브리드 가상화 방법 | |
CN103996003B (zh) | 一种虚拟化环境中的数据擦除系统及方法 | |
CN101324852A (zh) | 实时操作系统及其实时化方法 | |
CN100561438C (zh) | 一种虚拟机系统及其显卡使用方法 | |
US20170024231A1 (en) | Configuration of a computer system for real-time response from a virtual machine | |
CN113806006A (zh) | 一种异构指令集架构下异常或中断的处理方法、装置 | |
WO2018040845A1 (zh) | 一种计算资源调度方法及装置 | |
US10452420B1 (en) | Virtualization extension modules | |
CN102339230B (zh) | 复用客户操作系统设备驱动的实现方法 | |
US20140068605A1 (en) | Hypervisor handling of processor hotplug requests | |
KR20110041087A (ko) | 서버 가상화 장치 | |
US10671425B2 (en) | Lazy timer programming for virtual machines | |
CN101097515A (zh) | 软件的系统架构及应用程序处理方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20140129 Termination date: 20160901 |