复用客户操作系统设备驱动的实现方法.pdf

上传人:b*** 文档编号:1036190 上传时间:2018-03-27 格式:PDF 页数:9 大小:374.18KB
返回 下载 相关 举报
摘要
申请专利号:

CN201110255829.2

申请日:

2011.09.01

公开号:

CN102339230A

公开日:

2012.02.01

当前法律状态:

终止

有效性:

无权

法律详情:

未缴年费专利权终止IPC(主分类):G06F 9/455申请日:20110901授权公告日:20140129终止日期:20160901|||授权|||实质审查的生效IPC(主分类):G06F 9/455申请日:20110901|||公开

IPC分类号:

G06F9/455; G06F9/48

主分类号:

G06F9/455

申请人:

西安交通大学

发明人:

李国辉; 梅魁志; 张磊; 李博良; 张恩阳; 展华益

地址:

710049 陕西省西安市咸宁西路28号

优先权:

专利代理机构:

西安通大专利代理有限责任公司 61200

代理人:

徐文权

PDF下载: PDF下载
内容摘要

本发明提供了一种复用客户操作系统设备驱动的实现方法,Hypervisor接管物理中断,客户操作系统中设置虚拟中断响应标志VIPending,客户操作系统以中断描述表table_vintr_desc描述所有中断;当外设中断产生后,Hypervisor首先屏蔽该外设中断,将客户操作系统中的虚拟中断响应标志VIPending设置为打开状态,接着将中断描述表table_vintr_desc中与该中断对应项的成员pending设置为表示该中断发生的状态,最后由客户操作系统调用该外设原有的中断服务程序对该中断事件进行处理。本发明方法复用了客户操作系统中已有的设备驱动,客户操作系统中的原有设备驱动框架保持不变,即访问设备时调用的程序,以及程序调用的流程都保持不变,这样使得设备的性能的损失最小。

权利要求书

1: 复用客户操作系统设备驱动的实现方法, 其特征在于 : 虚拟机 Hypervisor 接管物理 中断, 客户操作系统中设置有虚拟中断响应标志 VIPending, 同时, 客户操作系统以中断描 述表 table_vintr_desc 描述所有中断 ; 当外设中断产生后, 虚拟机 Hypervisor 首先屏蔽该 外设中断, 然后将客户操作系统中的虚拟中断响应标志 VIPending 设置为打开状态, 接着 将中断描述表 table_vintr_desc 中与该中断对应项的成员 pending 设置为表示该中断发 生的状态, 最后由客户操作系统调用该外设原有的中断服务程序对该中断事件进行处理。
2: 如权利要求 1 所述的复用客户操作系统设备驱动的实现方法, 其特征在于 : 所述虚 拟机 Hypervisor 通过控制和管理硬件中的中断控制器而接管物理中断, 当外设中断发生 后, 虚拟机 Hypervisor 通过操作中断控制器屏蔽该外设中断。
3: 如权利要求 1 所述的复用客户操作系统设备驱动的实现方法, 其特征在于 : 所述虚 拟中断响应标志 VIPending 是客户操作系统中的一个全局变量, 其被设置为 1 和 0 分别表 示打开和关闭客户操作系统中的中断响应。
4: 根据权利要求 1 所述的复用客户操作系统设备驱动的实现方法, 其特征在于 : 在客 户操作系统的中断服务程序执行完后, 将虚拟中断响应标志 VIPending 设置为 0, 以关闭客 户操作系统对中断的响应, 中断描述表 table_vintr_desc 中该中断对应项的成员 pending 设置为 0, 以向客户操作系统表示该中断已得到处理。最后 Hypervisor 操作中断控制器中 的相应中断标志位打开该外设中断, 以接受下一次外设中断。
5: 复用客户操作系统设备驱动的实现方法, 其特征在于 : 虚拟机 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 操作中断控制器打开该外设中断, 以接受下一次外设中断。

说明书


复用客户操作系统设备驱动的实现方法

    技术领域 本发明属于嵌入式虚拟化技术领域, 涉及一种复用客户操作系统设备驱动的实现 方法, 应用于 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 设置为表示该中断发生的状态, 最后由客户操作系统调用该外设原有的中断服务程序对该中断事件进行处理。
     作为本发明的优选实施例, 所述虚拟机 Hypervisor 通过控制和管理硬件中的中 断控制器而接管物理中断, 当外设中断发生后, 虚拟机 Hypervisor 通过操作中断控制器屏 蔽该外设中断 ;
     作为本发明的优选实施例, 所述虚拟中断响应标志 VIPending 是客户操作系统中 的一个全局变量, 其被设置为 1 和 0 分别表示打开和关闭客户操作系统中的中断响应 ;
     作为本发明的优选实施例, 在客户操作系统的中断服务程序执行完后, 将虚拟中 断响应标志 VIPending 设置为 0, 以关闭客户操作系统对中断的响应, 中断描述表 table_ vintr_desc 中该中断对应项的成员 pending 设置为 0, 以向客户操作系统表示该中断已得 到处理。最后 Hypervisor 操作中断控制器中的相应中断标志位打开该外设中断, 以接受下 一次外设中断 ;
     本发明复用客户操作系统设备驱动的实现方法至少具有以下优点 : 本发明通过虚 拟机 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 所示。
     以上所述仅为本发明的一种实施方式, 不是全部或唯一的实施方式, 本领域普通 技术人员通过阅读本发明说明书而对本发明技术方案采取的任何等效的变换, 均为本发明 的权利要求所涵盖。

复用客户操作系统设备驱动的实现方法.pdf_第1页
第1页 / 共9页
复用客户操作系统设备驱动的实现方法.pdf_第2页
第2页 / 共9页
复用客户操作系统设备驱动的实现方法.pdf_第3页
第3页 / 共9页
点击查看更多>>
资源描述

《复用客户操作系统设备驱动的实现方法.pdf》由会员分享,可在线阅读,更多相关《复用客户操作系统设备驱动的实现方法.pdf(9页珍藏版)》请在专利查询网上搜索。

1、10申请公布号CN102339230A43申请公布日20120201CN102339230ACN102339230A21申请号201110255829222申请日20110901G06F9/455200601G06F9/4820060171申请人西安交通大学地址710049陕西省西安市咸宁西路28号72发明人李国辉梅魁志张磊李博良张恩阳展华益74专利代理机构西安通大专利代理有限责任公司61200代理人徐文权54发明名称复用客户操作系统设备驱动的实现方法57摘要本发明提供了一种复用客户操作系统设备驱动的实现方法,HYPERVISOR接管物理中断,客户操作系统中设置虚拟中断响应标志VIPENDIN。

2、G,客户操作系统以中断描述表TABLE_VINTR_DESC描述所有中断;当外设中断产生后,HYPERVISOR首先屏蔽该外设中断,将客户操作系统中的虚拟中断响应标志VIPENDING设置为打开状态,接着将中断描述表TABLE_VINTR_DESC中与该中断对应项的成员PENDING设置为表示该中断发生的状态,最后由客户操作系统调用该外设原有的中断服务程序对该中断事件进行处理。本发明方法复用了客户操作系统中已有的设备驱动,客户操作系统中的原有设备驱动框架保持不变,即访问设备时调用的程序,以及程序调用的流程都保持不变,这样使得设备的性能的损失最小。51INTCL19中华人民共和国国家知识产权局1。

3、2发明专利申请权利要求书1页说明书3页附图4页CN102339243A1/1页21复用客户操作系统设备驱动的实现方法,其特征在于虚拟机HYPERVISOR接管物理中断,客户操作系统中设置有虚拟中断响应标志VIPENDING,同时,客户操作系统以中断描述表TABLE_VINTR_DESC描述所有中断;当外设中断产生后,虚拟机HYPERVISOR首先屏蔽该外设中断,然后将客户操作系统中的虚拟中断响应标志VIPENDING设置为打开状态,接着将中断描述表TABLE_VINTR_DESC中与该中断对应项的成员PENDING设置为表示该中断发生的状态,最后由客户操作系统调用该外设原有的中断服务程序对该中。

4、断事件进行处理。2如权利要求1所述的复用客户操作系统设备驱动的实现方法,其特征在于所述虚拟机HYPERVISOR通过控制和管理硬件中的中断控制器而接管物理中断,当外设中断发生后,虚拟机HYPERVISOR通过操作中断控制器屏蔽该外设中断。3如权利要求1所述的复用客户操作系统设备驱动的实现方法,其特征在于所述虚拟中断响应标志VIPENDING是客户操作系统中的一个全局变量,其被设置为1和0分别表示打开和关闭客户操作系统中的中断响应。4根据权利要求1所述的复用客户操作系统设备驱动的实现方法,其特征在于在客户操作系统的中断服务程序执行完后,将虚拟中断响应标志VIPENDING设置为0,以关闭客户操作。

5、系统对中断的响应,中断描述表TABLE_VINTR_DESC中该中断对应项的成员PENDING设置为0,以向客户操作系统表示该中断已得到处理。最后HYPERVISOR操作中断控制器中的相应中断标志位打开该外设中断,以接受下一次外设中断。5复用客户操作系统设备驱动的实现方法,其特征在于虚拟机HYPERVISOR控制和管理硬件中的中断控制器,接管物理中断,在客户操作系统中设置有虚拟中断响应标志VIPENDING,该虚拟中断响应标志VIPENDING被设置为1和0分别表示打开和关闭客户操作系统中的中断响应,同时,客户操作系统以中断描述表TABLE_VINTR_DESC描述所有中断,具体包括以下步骤1。

6、当外设中断产生后,虚拟机HYPERVISOR通过操作中断控制器屏蔽该外设中断;2将客户操作系统中的虚拟中断响应标志VIPENDING设置为1,并将中断描述表TABLE_VINTR_DESC中与该中断对应项的成员PENDING设置为1以向客户操作系统表示该中断发生;3客户操作系统调用该外设原有的中断服务程序对该中断事件进行处理;4将虚拟中断响应标志VIPENDING设置为0,以关闭客户操作系统对中断的响应;5将中断描述表TABLE_VINTR_DESC中该中断对应项的成员PENDING设置为0,以向客户操作系统表示该中断已得到处理;6虚拟机HYPERVISOR操作中断控制器打开该外设中断,以接受。

7、下一次外设中断。权利要求书CN102339230ACN102339243A1/3页3复用客户操作系统设备驱动的实现方法技术领域0001本发明属于嵌入式虚拟化技术领域,涉及一种复用客户操作系统设备驱动的实现方法,应用于HYPERVISOR中支持对外设的访问。背景技术0002现在日常生活中的嵌入式设备越来越普及,功能应用也越发丰富。将不同的系统虚拟化为客户操作系统后同时运行在HYPERVISOR上,可避免不同系统之间的应用移植而又能兼具各系统的应用。IO虚拟化技术是虚拟化技术中的重要组成部分。HYPERVISOR采用IO虚拟化技术使运行其上的客户操作系统能够使用外围设备。0003目前应用较广泛的I。

8、O虚拟化技术主要有三种,分别是SPLITI/O,DIRECTI/O和PASSTHROUGHI/O。00041SPLITI/O。将设备驱动框架根据是否访问硬件分为硬件相关部分和硬件无关部分。其中硬件相关部分放在具有I/O访问权限的虚拟机中,而硬件无关部分位于无I/O访问权限的虚拟机中,前者为后者提供硬件访问支持。00052DIRECTI/O。HYPERVISOR将相应的物理设备抽象为虚拟设备。虚拟机中对设备的访问是对虚拟设备的操作,HYPERVISOR将这些操作在具体的物理设备上实现。00063PASSTHROUGHI/O。对物理设备,HYPERVISOR不进行任何相应的管理,而是由虚拟机利用系。

9、统中已有设备驱动直接进行物理设备的访问操作这三种IO虚拟化技术相比较,SPLITI/O提供较安全的IO访问,DIRECTI/O拥有较好的移植性,PASSTHROUGHI/O的设备性能损失最小。0007对于复杂外设,如果采用SPLITI/O和DIRECTI/O实现客户操纵系统对外设的访问,都需要对系统中原有的设备驱动框架进行修改,这样不仅实现复杂,而且设备的性能损失大。本发明采用本发明采用了PASSTHROUGHI/O的思想,不用修改系统中的设备驱动框架,使HYPERVISOR上的客户操作系统能够复用其已有的设备驱动完成对外设的访问,可解决客户操作系统访问外设时设备性能损失大的问题。发明内容00。

10、08本发明所要解决的技术问题是提供一种复用客户操作系统设备驱动的实现方法,该方法能够使HYPERVISOR中的客户操作系统复用系统中原有设备驱动对设备进行访问,以使设备的性能损失最小。0009为解决以上技术问题,本发明采用以下技术方案0010复用客户操作系统设备驱动的实现方法,虚拟机HYPERVISOR接管物理中断,客户操作系统中设置有虚拟中断响应标志VIPENDING,同时,客户操作系统以中断描述表TABLE_VINTR_DESC描述所有中断;当外设中断产生后,虚拟机HYPERVISOR首先屏蔽该外设中断,然后将客户操作系统中的虚拟中断响应标志VIPENDING设置为打开状态,接着将中断描述。

11、表TABLE_VINTR_DESC中与该中断对应项的成员PENDING设置为表示该中断发生的说明书CN102339230ACN102339243A2/3页4状态,最后由客户操作系统调用该外设原有的中断服务程序对该中断事件进行处理。0011作为本发明的优选实施例,所述虚拟机HYPERVISOR通过控制和管理硬件中的中断控制器而接管物理中断,当外设中断发生后,虚拟机HYPERVISOR通过操作中断控制器屏蔽该外设中断;0012作为本发明的优选实施例,所述虚拟中断响应标志VIPENDING是客户操作系统中的一个全局变量,其被设置为1和0分别表示打开和关闭客户操作系统中的中断响应;0013作为本发明的。

12、优选实施例,在客户操作系统的中断服务程序执行完后,将虚拟中断响应标志VIPENDING设置为0,以关闭客户操作系统对中断的响应,中断描述表TABLE_VINTR_DESC中该中断对应项的成员PENDING设置为0,以向客户操作系统表示该中断已得到处理。最后HYPERVISOR操作中断控制器中的相应中断标志位打开该外设中断,以接受下一次外设中断;0014本发明复用客户操作系统设备驱动的实现方法至少具有以下优点本发明通过虚拟机HYPERVISOR管理外设中断的屏蔽与开启,将外设中断的具体处理工作交由客户操作系统调用原有的中断服务程序和外设驱动处理。这种方法不仅复用了客户操作系统中已有的设备驱动,而。

13、且客户操作系统中的原有设备驱动框架保持不变,即访问设备时调用的程序,以及程序调用的流程都保持不变,这样使得设备的性能的损失最小。附图说明0015图1为本发明复用客户操作系统设备驱动示意图;0016图2为本发明HYPERVISOR总体结构;0017图3为本发明GUESTOS虚拟化前外设中断处理过程;0018图4为本发明HYPERVISOR处理USB中断示意图;具体实施方式0019下面结合附图对本发明复用客户操作系统设备驱动的实现方法做详细描述0020首先HYPERVISOR控制和管理硬件中的中断控制器,接管物理中断。在客户操作系统中设置虚拟中断响应标志VIPENDING。该虚拟中断响应标志VIP。

14、ENDING是客户操作系统中的一个全局变量,其被设置为1和0分别表示打开和关闭客户操作系统中的中断响应。0021在客户操作系统中,以中断描述表TABLE_VINTR_DESC描述所有中断。中断描述表中每一项对应一个中断,其中成员PENDING表示该中断是否发生。0022保持客户操作系统中的原有设备驱动不变,和对设备的访问权限不变。在HYPERVISOR启动时,HYPERVISOR将其内的中断寄存器中外设中断的对应位使能。而外设的初始化则在客户操作系统中,且直接对物理硬件进行操作。0023当外设中断产生后,先由HYPERVISOR处理。HYPERVISOR先通过操作中断控制器中的相应中断标志位屏。

15、蔽该外设中断,然后将客户操作系统中的虚拟中断响应标志VIPENDING设置为1,并将中断描述表TABLE_VINTR_DESC中与该中断对应项的成员PENDING设置为1以向客户操作系统表示该中断发生。然后客户操作系统调用该外设原有的中断服务程序对该中断事件进行处理。这样客户操作系统中的外设中断处理函数和流程保持不变,外设原有的设备驱动会得到调用,达到复用设备驱动的目的。在客户操作系统的中断服说明书CN102339230ACN102339243A3/3页5务程序执行完后,将虚拟中断响应标志VIPENDING设置为0,以关闭客户操作系统对中断的响应,中断描述表TABLE_VINTR_DESC中该。

16、中断对应项的成员PENDING设置为0,以向客户操作系统表示该中断已得到处理。最后HYPERVISOR操作中断控制器中的相应中断标志位打开该外设中断,以接受下一次外设中断。0024总的来说,HYPERVISOR管理外设中断的屏蔽与开启,将外设中断的具体处理工作交由客户操作系统调用原有的中断服务程序和外设驱动处理。这种方法不仅复用了客户操作系统中已有的设备驱动,而且客户操作系统中的原有设备驱动框架保持不变,即访问设备时调用的程序,以及程序调用的流程都保持不变,这样使得设备的性能的损失最小。0025本发明实际是通过将外设中断交由客户操作系统按照原有的中断服务程序处理,以复用其已有设备驱动。其过程大。

17、致如图1所示。以下以HYPERVISOR中客户操作系统支持USB设备为实例说明本发明内容。0026HYPERVISOR是虚拟机管理软件,基于硬件的HYPERVISOR的总体结构如图2所示。其中HYPERVISOR操作硬件的中断控制器,所有的物理中断发生后先由HYPERVISOR处理。GUESTOS是基于LINUX内核的客户操作系统。经过修改,设置VIPENDING为客户操作系统中的全局变量,其值为1和0分别表示打开和屏蔽客户操作系统中的中断响应。以数据结构TABLE_VINTR_DESC描述客户操作系统中处理的中断,其中包含的成员PENDING为0表示中断没有发生或中断已处理完,为1表示中断发。

18、生需要处理或该中断正在处理。0027当GUESTOS独立运行在硬件平台上时,对USB设备的初始化和读写等操作都是直接作用于物理硬件,对USB的中断都是直接响应和处理。在USB中断发生后,GUESTOS先屏蔽该中断,再调用USB中断服务程序USB_HCD_IRQ处理该中断,USB设备驱动也将得到调用。该中断事件处理完后,GUESTOS再开启USB中断以响应下一次USB中断。具体过程如图3所示。0028当GUESTOS运行在HYPERVISOR上时,保留GUESTOS中USB设备驱动不变,保留GUESTOS对USB设备的直接操作和控制。当插入USB设备后,触发USB中断。HYPERVISOR在接受。

19、到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成员值设置为。

20、0,中断响应标志VIPENDING设置为0,然后HYPERVISOR将中断寄存器中USB中断对应位设置为1以开启USB中断。以上HYPERVISOR中GUESTOS复用USB设备驱动的具体过程如图4所示。0029以上所述仅为本发明的一种实施方式,不是全部或唯一的实施方式,本领域普通技术人员通过阅读本发明说明书而对本发明技术方案采取的任何等效的变换,均为本发明的权利要求所涵盖。说明书CN102339230ACN102339243A1/4页6图1说明书附图CN102339230ACN102339243A2/4页7图2说明书附图CN102339230ACN102339243A3/4页8图3说明书附图CN102339230ACN102339243A4/4页9图4说明书附图CN102339230A。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1