一种虚拟机系统及被动硬件设备访问方法

文档序号:6619116阅读:135来源:国知局
专利名称:一种虚拟机系统及被动硬件设备访问方法
技术领域
本发明涉及虚拟机技术,特别是一种虚拟机系统及被动硬件设备访问方法。
背景技术
现有的虚拟机可以使用硬件直接访问、硬件模拟、驱动前后端等方式对硬件设备 进行访问。现有的虚拟机系统中,如果采用硬件模拟或驱动前后端的方式来实现对硬件的访 问,都存在对LINUX系统的驱动依赖性比较大和对新的硬件平台兼容性比较差等问题,详 细说明如下。采用硬件模拟的方式来实现对硬件的访问时,由于管理系统是LINUX,这样对 LINUX系统的驱动依赖性比较大,对新的硬件平台兼容性比较差,另外性能比较差。而采用驱动前后端的方式来实现对硬件的访问时,需要在Windows加入驱动,大 大加大了虚拟机产品的工作量,同时对LINUX系统的驱动依赖性也比较大,对新的硬件平 台兼容性比较差。因此,为了解决上述问题的存在,出现了使用硬件直接访问的方式来实现对硬件 的访问,这种方式不依赖于LINUX系统的驱动,而且对新的硬件平台兼容性比较好,然而, 发明人在实现本发明实施例的过程中发现,使用硬件直接访问的方式来实现对硬件的访问 存在如下的问题现有的虚拟机系统中,不管硬件是被动硬件设备还是主动设备,任意一个 GOS (Guest Operation System,客户操作系统)采用硬件直接访问的方式对硬件进行访问 时,GOS要求该设备是被其独占的,因此,在多个系统要求同时访问同一个硬件设备时,从操 作系统层面来看,除了一个操作系统,其它的操作系统都无法访问该硬件设备。

发明内容
本发明实施例的目的是提供一种一种虚拟机系统及被动硬件设备访问方法,使得 从操作系统层面上来看,虚拟机中的多个系统可以同时访问同一个被动硬件设备。为了实现上述目的,本发明实施例提供了一种虚拟机系统,包括至少两个客户操 作系统、虚拟机监视器和能被所述至少两个客户操作系统访问的被动硬件设备,所述虚拟 机监视器具体包括缓存模块;访问通道,用于所述至少两个客户操作系统与所述被动硬件设备之间进行交互;命令接收模块,用于接收从所述至少两个客户操作系统中的第一客户操作系统发 送来的第一访问命令;访问处理模块,用于判断所述访问通道的状态是否为空闲,在所述访问通道的状 态为空闲时,使所述第一客户操作系统通过所述访问通道与所述被动硬件设备交互,执行 所述第一访问命令,在所述访问通道的状态为占用时,将所述第一访问命令存储到所述缓存模块,并在所述访问通道的状态转变为空闲时,使所述第一客户操作系统通过所述访问 通道与所述被动硬件设备交互,执行存储在所述缓存模块中的所述第一访问命令。上述的虚拟机系统,其中,所述虚拟机监视器还包括通道状态设置模块,用于设置所述访问通道的状态为空闲或占用;从所述访问处理模块执行一条所述访问命令开始到所述访问命令执行完成期间, 所述通道状态设置模块设置所述访问通道的状态为占用状态,并在所述访问命令执行完成 之后,将所述访问通道的状态修改为空闲状态。上述的虚拟机系统,其中,所述虚拟机监视器还包括执行结果返回模块,用于将所述访问处理模块执行所述第一访问命令的执行结果 返回对应的客户操作系统。上述的虚拟机系统,其中,在从所述被动硬件设备同时接收到中断和设备状态空 闲指示时,所述通道状态设置模块判断所述访问命令执行完成。上述的虚拟机系统,其中,在所述第一访问命令包括两条或两条以上的指令时,所 述访问处理模块具体包括判断单元,用于判断所述访问通道的当前状态,获取一判断结果;第一执行单元,用于在所述判断结果指示所述访问通道为空闲状态或占用所述访 问通道的客户操作系统为所述第一客户操作系统时,通过所述访问通道与所述被动硬件设 备交互,执行当前接收到的所述指令;缓存处理单元,用于在所述判断结果指示所述访问通道为占用状态,且占用所述 访问通道的客户操作系统不是所述第一客户操作系统时,将当前接收到的所述指令存储到 所述缓存模块;第二执行单元,用于在所述访问通道的状态转变为空闲时,通过所述访问通道与 所述被动硬件设备交互,执行存储在所述缓存模块中的所述指令。为了实现上述目的,本发明实施例还提供了一种被动硬件设备访问方法,用于虚 拟机系统中,所述虚拟机系统包括至少两个客户操作系统和虚拟机监视器,所述被动硬件 设备访问方法包括接收所述至少两个客户操作系统中的第一客户操作系统发送来的第一访问命 令;判断所述虚拟机监视器与所述被动硬件设备之间的访问通道的状态是否为空闲 状态,获取一判断结果;在所述判断结果指示所述访问通道的状态为空闲状态时,使所述第一客户操作系 统通过所述访问通道与所述被动硬件设备交互,执行所述第一访问命令;在所述判断结果指示所述访问通道的状态为占用状态时,将所述第一访问命令存 储到缓存中,并在所述访问通道的状态转变为空闲时,使所述第一客户操作系统通过所述 访问通道与所述被动硬件设备交互,执行存储在所述缓存中的所述第一访问命令;上述的被动硬件设备访问方法,其中,从执行一条访问命令开始到命令执行完成 期间,所述访问通道的状态为占用状态,所述访问命令执行完成之后,所述访问通道的状态 修改为空闲状态。上述的被动硬件设备访问方法,其中,还包括
5
将所述第一访问命令的执行结果返回对应的客户操作系统。上述的被动硬件设备访问方法,其中,在从所述被动硬件设备同时接收到中断和 设备状态空闲指示时,表示所述访问命令执行完成。上述的被动硬件设备访问方法,其中,在所述第一访问命令包括两条或两条以上 的指令,在所述访问通道为空闲状态或占用所述访问通道的客户操作系统为所述第一客户 操作系统时,通过所述访问通道与所述被动硬件设备交互,执行当前接收到的所述指令;在 所述判断结果指示所述访问通道为占用状态,且占用所述访问通道的客户操作系统不是所 述第一客户操作系统时,将当前接收到的所述指令存储到所述缓存模块,并在所述访问通 道的状态转变为空闲时,通过所述访问通道与所述被动硬件设备交互,执行存储在所述缓 存模块中的所述指令。本发明实施例具有以下的有益效果而本发明实施例中,多个GOS可以同时发送对硬件设备的访问命令,并不会被拒 绝,所以从GOS端来看,所有发出访问命令的GOS都认为自己独占了该被动硬件设备,也就 是说,从操作系统层面上看,多个GOS可以同时访问硬件设备;同时,通过VMM端合理的调度,按一定顺序执行GOS发送的访问命令,使所有访问 命令都能被执行并返回访问结果,因此所有发出访问命令的GOS都能够顺利完成访问操 作,并得到正确的结果。相对于硬件模拟、驱动前后端等硬件设备访问方式,本发明不依赖于LINUX系统 的,硬件平台兼容性好。


图1为本发明实施例的VMM的结构示意图;图2为本发明实施例的被动硬件设备访问方法的命令层级的流程示意图;图3为本发明实施例的被动硬件设备访问方法的指令层级的详细流程示意图;图4为本发明实施例的被动硬件设备访问方法的详细流程示意图。
具体实施例方式本发明实施例的虚拟机系统及被动硬件设备访问方法中,通过在虚拟机中设置缓 存和通道分配模块,使得虚拟机中的多个系统可以同时访问同一个被动硬件设备。在对本发明实施例进行详细说明之前,先对涉及到的几个概念进行说明,以便于 更好的理解本发明。被动硬件设备,区别于主动硬件设备,被动硬件设备基于对其的访问操作向操作 系统返回数据或命令,不会主动向操作系统发送数据或命令。访问命令,由一条或多条指令组成的命令,通过该一系列指令实现对硬件的访问。本发明实施例的虚拟机系统包括至少两个GOS,VMM以及包括被动硬件设备的真 实硬件平台,其中,该VMM如图1所示,包括缓存模块;通道建立模块,用于建立对所述被动硬件设备进行访问的访问通道;通道状态设置模块,用于设置所述访问通道的状态为占用或空闲;
6
命令接收模块,用于接收所述至少两个GOS发送的访问命令;访问处理模块,用于在所述访问通道的状态为空闲时,通过所述访问通道与所述 被动硬件设备交互,执行当前接收到的所述访问命令,否则将当前接收到的所述访问命令 存储到所述缓存模块,并在所述访问通道的状态转变为空闲时,通过所述访问通道与所述 被动硬件设备交互,执行存储在所述缓存模块中的一个所述访问命令;所述通道状态设置模块在所述访问处理模块从执行一条所述访问命令到所述访 问命令执行完成期间,设置所述访问通道的状态为占用状态,并在所述访问命令执行完成 之后,将所述访问通道的状态修改为空闲状态。在从所述被动硬件设备同时接收到中断和设备状态空闲指示时,所述通道状态设 置模块判断所述访问命令执行完成。以其中一个GOS为例,该VMM包括缓存模块;通道建立模块,用于建立对所述被动硬件设备进行访问的访问通道;通道状态设置模块,用于设置所述访问通道的状态为占用或空闲;命令接收模块,用于接收第一 G0S发送的第一访问命令;访问处理模块,用于在所述访问通道的状态为空闲时,使所述第一客户操作系统 通过所述访问通道与所述被动硬件设备交互,执行第一访问命令,否则将第一访问命令存 储到所述缓存模块,并在所述访问通道的状态转变为空闲时,使所述第一客户操作系统通 过所述访问通道与所述被动硬件设备交互,执行存储在所述缓存模块中的第一访问命令;所述通道状态设置模块在所述访问处理模块从执行一条所述访问命令到所述访 问命令执行完成期间,设置所述访问通道的状态为占用状态,并在所述访问命令执行完成 之后,将所述访问通道的状态修改为空闲状态。在从所述被动硬件设备同时接收到中断和设备状态空闲指示时,所述通道状态设 置模块判断所述访问命令执行完成。同时,上述的VMM还包括第一结果返回模块,用于将所述访问处理模块与所述被动硬件设备交互以执行所 述访问命令的执行结果返回对应的G0S。同时,为了及时给操作系统响应,上述的VMM还包括第二结果返回模块,在所述访问通道的状态为占用的情况下接收到所述访问命令 时,向发送所述访问命令的GOS返回访问响应,指示硬件设备忙。上述是从访问命令层级对本发明实施例的VMM进行了说明,在所述的访问命令包括两条或两条以上的指令时,所述访问处理模块具体包括判断单元,用于判断所述访问通道的当前状态,获取一判断结果;第一执行单元,用于在所述判断结果指示所述访问通道为空闲状态或占用所述访 问通道的GOS为发送当前接收到的指令的GOS时,通过所述访问通道与所述被动硬件设备 交互,执行当前接收到的所述指令;缓存处理单元,用于在所述判断结果指示所述访问通道为占用状态,且占用所述 访问通道的GOS不是发送当前接收到的指令的GOS时,将当前接收到的所述指令存储到所 述缓存模块;
7
第二执行单元,用于在所述访问通道的状态转变为空闲时,通过所述访问通道与 所述被动硬件设备交互,执行存储在所述缓存模块中的所述指令;本发明实施例的被动硬件设备访问方法,用于虚拟机系统中,所述虚拟机系统包 括至少两个客户操作系统GOS和虚拟机监视器VMM,其中如图2所示,该访问方法包括步骤21,接收GOS发送的访问命令;步骤22,判断虚拟机监视器与硬件设备之间的访问通道的状态是否为空闲状态, 如果是,进入步骤23,否则进入步骤24 ;步骤23,通过所述访问通道与所述被动硬件设备交互,执行当前接收到的访问命 令;步骤24,将所述当前接收到的访问命令存储到缓存中,并在所述访问通道的状态 转变为空闲时,通过所述访问通道与所述被动硬件设备交互,执行存储在所述缓存中的一 个所述访问命令;在与所述被动硬件设备交互以执行任意访问命令期间,所述访问通道的状态为占 用,否则为空闲状态。同时,本发明实施例的方法还包括步骤25,将执行所述访问命令的执行结果返回对应的G0S。步骤26,在所述访问通道的状态为占用的情况下接收到所述访问命令时,向发送 所述访问命令的GOS返回访问响应,指示硬件设备忙,所述访问命令需要等待。本发明实施例的被动硬件设备访问方法,用于虚拟机系统中,所述虚拟机系统包 括至少两个客户操作系统GOS和虚拟机监视器VMM,从指令层级而言,如图3所示,该访问方 法包括步骤31,接收GOS发送的访问指令;步骤32,判断所述访问通道的当前状态;步骤33,在所述判断结果指示所述访问通道为空闲状态或占用所述访问通道的 GOS为发送当前接收到的指令的GOS时,通过所述访问通道与所述被动硬件设备交互,执行 当前接收到的所述指令;步骤34,在所述判断结果指示所述访问通道为占用状态,且占用所述访问通道的 GOS不是发送当前接收到的指令的GOS时,将当前接收到的所述指令存储到所述缓存模块;步骤35,在所述访问通道的状态转变为空闲时,通过所述访问通道与所述被动硬 件设备交互,执行存储在所述缓存模块中的所述指令。从开始执行一条所述访问命令到一条所述访问命令执行完成期间,所述访问通道 的状态为占用状态,并在所述访问命令执行完成之后,将所述访问通道的状态修改为空闲 状态。下面对上述的装置和方法进行进一步详细说明。下面仅以读指令为例对其处理过程进行解释说明,如图4所示,包括步骤401,接收第一 GOS发送的对被动硬件设备的访问指令,进入步骤402 ;步骤402,判断访问命令是否为读指令,如果是进入步骤403,否则进入步骤408 ;步骤403,判断与所述被动硬件设备之间的访问通道的状态是否为空闲状态,如果 是,进入步骤404,否则进入步骤407 ;
步骤404,设置所述访问通道的状态为占用状态,进入步骤405 ;步骤405,通过所述访问通道执行所述读指令,进入步骤406 ;步骤406,判断是否同时收到被动硬件设备返回的中断和设备空闲指示,如果是, 进入步骤407,否则返回步骤401 ;步骤407,设置所述访问通道的状态为空闲状态后结束;步骤408,占用访问通道的GOS是否为第一 G0S,如果是,进入步骤405,否则进入步 骤 409 ;步骤409,将所述读命令保存到缓存,进入步骤410 ;步骤410,在所述访问通道的状态转变为空闲状态后,设置所述访问通道的状态为 占用状态,进入步骤411 ;步骤411,通过所述访问通道执行所述缓存中的读指令,进入步骤406 ;从上述的详细流程可以看到,对于任意指令,如果通道没占用,就占用该通道(将 空闲状态设置为占用),并直接对被动硬件设备进行访问,并在完成之后将状态设置为空 闲,而通道被占用的情况下,则将访问命令暂时保存到缓存中,并等待通道释放,一旦检测 到通道处于空闲状态,则占用该通道(将空闲状态设置为占用),并直接对被动硬件设备进 行访问,以执行暂时保存到缓存中的访问命令。现有技术的硬件直接发访问方式中,多个系统要求同时访问同一个硬件设备时, 除了当前正在访问硬件设备的操作系统A,其它的操作系统都无法访问硬件设备,也就是说 其他操作系统只有在硬件设备被操作系统A访问完之后才能发送访问指令,相当于在时间 段X只有一个操作系统能够向硬件发送访问指令。而本发明实施例中,多个GOS可以同时发送对硬件设备的访问命令,由VMM进行 调配,实现最终的访问,因此,本发明实施例中,从GOS端来看,所有发出访问命令的GOS都 认为自己独占了该被动硬件设备,而通过VMM端合理的调度(按序执行GOS发送的访问命 令),使得所有发出访问命令的GOS都能够顺利完成访问操作,并得到正确的结果。相对于硬件模拟、驱动前后端等虚拟机系统的硬件设备访问方式,本发明不依赖 于LINUX系统的,硬件平台兼容性好。下面对执行所述访问命令的执行结果返回对应的GOS详细说明如下。VMM直接将接收到的或缓存中的访问命令(10命令)发送给硬盘控制器,当硬盘控 制器完成这个命令后,会返回中断给VMM,由VMM将中断转发给相应的GOS。上述的被动硬件设备可以是ATA (Advanced Technology Attachment,高级技术附 加)设备,如光驱、硬盘等硬件设备,当然还可以是其它的被动硬件设备。以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人 员来说,在不脱离本发明原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应 视为本发明的保护范围。
权利要求
一种虚拟机系统,其特征在于,包括至少两个客户操作系统、虚拟机监视器和能被所述至少两个客户操作系统访问的被动硬件设备,所述虚拟机监视器具体包括缓存模块;访问通道,用于所述至少两个客户操作系统与所述被动硬件设备之间进行交互;命令接收模块,用于接收从所述至少两个客户操作系统中的第一客户操作系统发送来的第一访问命令;访问处理模块,用于判断所述访问通道的状态是否为空闲,在所述访问通道的状态为空闲时,使所述第一客户操作系统通过所述访问通道与所述被动硬件设备交互,执行所述第一访问命令,在所述访问通道的状态为占用时,将所述第一访问命令存储到所述缓存模块,并在所述访问通道的状态转变为空闲时,使所述第一客户操作系统通过所述访问通道与所述被动硬件设备交互,执行存储在所述缓存模块中的所述第一访问命令。
2.根据权利要求1所述的虚拟机系统,其特征在于,所述虚拟机监视器还包括通道状态设置模块,用于设置所述访问通道的状态为空闲或占用;从所述访问处理模块执行一条所述访问命令开始到所述访问命令执行完成期间,所 述通道状态设置模块设置所述访问通道的状态为占用状态,并在所述访问命令执行完成之 后,将所述访问通道的状态修改为空闲状态。
3.根据权利要求2所述的虚拟机系统,其特征在于,所述虚拟机监视器还包括执行结果返回模块,用于将所述访问处理模块执行所述第一访问命令的执行结果返回 对应的客户操作系统。
4.根据权利要求1或2或3所述的虚拟机系统,其特征在于,在从所述被动硬件设备 同时接收到中断和设备状态空闲指示时,所述通道状态设置模块判断所述访问命令执行完 成。
5.根据权利要求1或2或3所述的虚拟机系统,其特征在于,在所述第一访问命令包括 两条或两条以上的指令时,所述访问处理模块具体包括判断单元,用于判断所述访问通道的当前状态,获取一判断结果;第一执行单元,用于在所述判断结果指示所述访问通道为空闲状态或占用所述访问通 道的客户操作系统为所述第一客户操作系统时,通过所述访问通道与所述被动硬件设备交 互,执行当前接收到的所述指令;缓存处理单元,用于在所述判断结果指示所述访问通道为占用状态,且占用所述访问 通道的客户操作系统不是所述第一客户操作系统时,将当前接收到的所述指令存储到所述 缓存模块;第二执行单元,用于在所述访问通道的状态转变为空闲时,通过所述访问通道与所述 被动硬件设备交互,执行存储在所述缓存模块中的所述指令。
6.一种被动硬件设备访问方法,用于虚拟机系统中,所述虚拟机系统包括至少两个客 户操作系统和虚拟机监视器,其特征在于,所述被动硬件设备访问方法包括接收所述至少两个客户操作系统中的第一客户操作系统发送来的第一访问命令;判断所述虚拟机监视器与所述被动硬件设备之间的访问通道的状态是否为空闲状态, 获取一判断结果;在所述判断结果指示所述访问通道的状态为空闲状态时,使所述第一客户操作系统通 过所述访问通道与所述被动硬件设备交互,执行所述第一访问命令;在所述判断结果指示所述访问通道的状态为占用状态时,将所述第一访问命令存储到 缓存中,并在所述访问通道的状态转变为空闲时,使所述第一客户操作系统通过所述访问 通道与所述被动硬件设备交互,执行存储在所述缓存中的所述第一访问命令;
7.根据权利要求6所述的被动硬件设备访问方法,其特征在于,从执行一条访问命令 开始到命令执行完成期间,所述访问通道的状态为占用状态,所述访问命令执行完成之后, 所述访问通道的状态修改为空闲状态。
8.根据权利要求7所述的被动硬件设备访问方法,其特征在于,还包括将所述第一访问命令的执行结果返回对应的客户操作系统。
9.根据权利要求6、7或8所述的被动硬件设备访问方法,其特征在于,在从所述被动硬 件设备同时接收到中断和设备状态空闲指示时,表示所述访问命令执行完成。
10.根据权利要求6、7或8所述的被动硬件设备访问方法,其特征在于,在所述第一访 问命令包括两条或两条以上的指令,在所述访问通道为空闲状态或占用所述访问通道的客 户操作系统为所述第一客户操作系统时,通过所述访问通道与所述被动硬件设备交互,执 行当前接收到的所述指令;在所述判断结果指示所述访问通道为占用状态,且占用所述访 问通道的客户操作系统不是所述第一客户操作系统时,将当前接收到的所述指令存储到所 述缓存模块,并在所述访问通道的状态转变为空闲时,通过所述访问通道与所述被动硬件 设备交互,执行存储在所述缓存模块中的所述指令。
全文摘要
本发明提供一种虚拟机系统及被动硬件设备访问方法,该虚拟机系统的虚拟机监视器具体包括缓存模块;访问通道;命令接收模块,用于接收第一客户操作系统发送来的第一访问命令;访问处理模块,用于判断所述访问通道的状态是否为空闲,在所述访问通道的状态为空闲时,使第一客户操作系统通过访问通道与被动硬件设备交互,执行第一访问命令,在访问通道的状态为占用时,将第一访问命令存储到缓存模块,并在访问通道的状态转变为空闲时,使第一客户操作系统通过访问通道与被动硬件设备交互,执行存储在缓存模块中的第一访问命令。本发明使得操作系统层面上,多个操作系统能同时访问硬件设备,而且不依赖于LINUX系统,对硬件平台的兼容性较好。
文档编号G06F13/12GK101937407SQ20091008678
公开日2011年1月5日 申请日期2009年6月30日 优先权日2009年6月30日
发明者昌盛, 林洋, 汤良 申请人:联想(北京)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1