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

文档序号:6558342阅读:204来源:国知局
专利名称:一种虚拟机系统及其硬件设备访问方法
技术领域
本发明涉及一种虚拟机技术,特别是涉及一种虚拟机系统及其硬件设备访问方法。
背景技术
在现有的虚拟化过程中,都有一个通用的虚拟设备平台,包括虚拟声卡、虚拟显卡等,由虚拟机监视器(Virtual Machine Monitor,VMM)将客户操作系统(Guest OS)对虚拟设备平台中的虚拟设备的访问通过服务操作系统(Service OS)或者主机操作系统(Host OS)访问到真实的硬件上。
图1为现有的Xen虚拟机系统的示意图。如图1所示,Xen虚拟机系统包括客户操作系统、服务操作系统、虚拟机监视器以及硬件。其中,客户操作系统中提供有应用以及驱动模块,服务操作系统具有设备模块(DeviceModel,DM)、以及驱动模块。
以下将参照图2说明在上述Xen虚拟机系统中客户操作系统对硬件的访问过程。
在客户操作系统进行硬件访问之前,首先,服务操作系统在启动时,扫描PCI总线,为硬件分配资源,包括IRQ、IO和MMIO等,当创建客户操作系统时通过设备模块为客户操作系统生成虚拟硬件平台;客户操作系统在启动时,扫描虚拟PCI总线,为虚拟硬件分配资源。在客户操作系统为虚拟硬件分配资源之后,可以对设备IO进行访问。
下面具体描述客户操作系统进行设备IO访问时的过程客户操作系统在需要访问硬件IO空间时,通过虚拟硬件驱动模块发出相应的IO请求;虚拟机监视器截获客户操作系统的驱动模块发出的IO请求,并将IO请求发送给服务操作系统中的设备模块;设备模块分析IO请求后将其转换成相应的调用指令,由服务操作系统的驱动模块将调用指令转换成IO指令后调用相应的硬件;在获得硬件响应后,服务操作系统将该响应通过虚拟机监视器传给客户操作系统,从而完成客户操作系统对硬件的访问。
以上只是以Xen虚拟机系统为例说明客户操作系统对硬件设备的访问过程,对于其他虚拟机系统,如VMware虚拟机系统,也执行类似的访问过程,只是将Xen虚拟机系统的服务操作系统所做的工作由主机操作系统完成。
由于现有虚拟机系统无法解决多个客户操作系统对真实硬件的共享问题,因此,在上述通用的虚拟化平台中,不论真实的硬件平台是什么,虚拟化出来的设备都一致,虽然这样对于各个客户操作系统都适用,但会出现以下问题1)虚拟机系统显示的硬件设备与真实的硬件设备不一致,用户无法看到真实的硬件;2)此外,真实硬件的一些特性无法使用,如显卡的硬件加速特性,USB的新标准、声卡的高级特性等;3)由于客户操作系统需要通过虚拟机监视器、以及服务操作系统后才能访问到硬件,因此增加了相应的中间过程,这样将影响到硬件访问的性能。

发明内容
本发明的目的是,提供一种虚拟机系统。
本发明的另一目的是,提供一种虚拟机系统硬件设备访问方法。
一种虚拟机系统,包括服务操作系统、客户操作系统、虚拟机监视器以及硬件,服务操作系统包括设备模块和驱动模块,客户操作系统包括扫描模块和驱动模块,虚拟机监视器包括资源转换模块。所述资源转换模块用于存储服务操作系统为硬件设备分配的资源、客户操作系统对服务操作系统为其提供的硬件设备分配的资源二者之间的转换关系;以及,在客户操作系统发出访问硬件设备的请求时,所述资源转换模块用于根据上述转换关系将客户操作系统的访问地址转化成对应硬件设备的真实物理地址。
一种虚拟机系统硬件设备访问方法,包括步骤步骤600,客户操作系统访问硬件设备时,产生相应的访问请求;步骤610,虚拟机监视器截获所述访问请求,并根据预先存储的转换关系将客户操作系统的访问地址转化成对应硬件设备的真实物理地址;步骤620,在访问硬件设备后,虚拟机监视器将访问结果转给客户操作系统。
与现有技术相比,本发明的有益效果是1)虚拟机系统显示的硬件设备与真实的硬件设备一致,用户可以看到并使用真实的硬件;2)由于客户操作系统可以直接或者通过虚拟机监视器访问到真实硬件,这样提高了虚拟机系统硬件访问的效率。


图1为现有的Xen虚拟机系统的示意图;图2为图1所示的虚拟机系统中客户操作系统访问硬件设备的流程图;图3为本发明的虚拟机系统的结构示意图;图4为本发明虚拟机系统资源分配的流程图;图5为本发明虚拟机系统中硬件设备访问方法的流程图。
具体实施例方式
以下结合

本发明的虚拟机系统及其硬件访问方法。
图3为本发明的虚拟机系统的结构示意图。如图3所示,本发明的虚拟机系统包括服务操作系统、客户操作系统、虚拟机监视器以及硬件。其中,服务操作系统包括设备模块和驱动模块,客户操作系统包括扫描模块和驱动模块,为了能够实现客户操作系统直接访问硬件,虚拟机监视器包括资源转换模块,例如,IRQ转换模块、IO转换模块以及MMIO映射模块。
以一个客户操作系统为例,在本发明中,为了解决系统内存与硬件作DMA(Direct Memory Access,直接存储器访问)操作的问题,将原来运行在低端内存的虚拟机监视器的地址从低端内存移到高端内存,即,使客户操作系统的物理内存地址与机器的内存地址一致。
在客户操作系统访问硬件之前,需要服务操作系统和客户操作系统对硬件的IRQ、IO以及MMIO等资源进行分配,图4为本发明虚拟机系统资源分配的流程图。
如图4所示,服务操作系统在启动时,扫描PCI总线,为硬件设备分配IRQ、IO和MMIO等资源,将分配的IRQ、IO、MMIO等写入各硬件设备的PCI配置空间。
设备模块根据配置文件的设置为客户操作系统提供硬件设备,对于需要直接访问的硬件设备,从服务操作系统获得设备的真实信息,并把这些设备挂到虚拟的PCI总线上,在客户操作系统启动后扫描虚拟PCI总线时,将硬件设备的真实信息通知客户操作系统,让客户操作系统看到真实的硬件设备。
客户操作系统在扫描虚拟PCI总线时,对服务操作系统为其提供的硬件设备分配IRQ、IO、MMIO等资源。
由于每个客户操作系统都会对服务操作系统提供的硬件设备分配IRQ、IO、MMIO等资源,服务操作系统对所有的硬件设备分配IRQ、IO、MMIO等资源,这样,当客户操作系统和服务操作系统对同一硬件设备进行资源分配时,可能会产生冲突。
在存在冲突的情况下,为了防止冲突,在本发明中,在客户操作系统扫描虚拟PCI总线为硬件设备分配IRQ、IO、MMIO资源时,设备模块通过虚拟机监视器截获分配信息,对客户操作系统的资源分配进行解析,将客户操作系统和服务操作系统对硬件设备的资源分配建立映射关系,也就是,将客户操作系统对硬件设备的资源分配与服务操作系统对硬件设备的资源分配之间建立对应关系。
然后,设备模块将建立的映射关系下发到虚拟机监视器中的资源转换模块,即,设备模块将客户操作系统分配的IO和IRQ的转换关系分别下发到虚拟机监视器的IO转换模块和IRQ转换模块,并将MMIO映射关系下发到虚拟机监视器的MMIO映射模块,使客户操作系统分配的MMIO地址映射到服务操作系统分配给硬件设备的MMIO地址上。
以下参照图5说明本发明虚拟机系统中硬件设备访问方法。
当客户操作系统需要访问硬件设备时,其驱动模块产生相应的IO请求;虚拟机监视器截获该IO请求,并将IO请求通过IO转换模块将客户操作系统的IO地址(访问地址)转化成对应硬件设备的真实IO地址(真实的物理地址)后,直接访问硬件设备;在虚拟机监视器访问硬件设备后,将访问结果转给客户操作系统。
另外,当客户操作系统访问硬件时,也可以通过MMIO映射模块将客户操作系统分配的MMIO映射到物理MMIO(服务操作系统分配的MMIO地址)。当发生页表错误(Page Fault)时,虚拟机监视器将MMIO对应的真实地址写入影子页表(Shadow Page Tables)。这样客户服务系统通过VMM建立的影子页表可以直接访问到设备的MMIO地址。
当硬件设备产生中断时,虚拟机监视器通过IRQ转换模块根据转换关系将硬件设备产生的中断转化成客户操作系统的中断号再发给客户操作系统。
这样,通过设备模块和虚拟机监视器,客户操作系统可以直接访问到真实的硬件设备。
当客户操作系统和服务操作系统对同一硬件设备进行资源分配时,如果二者分配的IO资源不冲突,那么可以通过修改VMCS(Virtual-Machine ControlStructure,虚拟机控制结构)中的数据,使得客户操作系统访问硬件设备时不发生VM exit(虚拟机退出),也就是通过修改VMCS替换上述的IO转换模块,就可以直接访问到硬件的IO地址。
从上述描述可以看出,相对于现有的虚拟机系统和硬件访问方法,本发明具有以下优点1)虚拟机系统显示的硬件设备与真实的硬件设备一致,用户可以看到并使用真实的硬件;2)由于客户操作系统可以直接或者通过虚拟机监视器访问到真实硬件,这样提高了虚拟机系统硬件访问的效率。
以上所述,仅为本发明较佳的具体实施方式
,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。
权利要求
1.一种虚拟机系统,包括服务操作系统、客户操作系统、虚拟机监视器以及硬件,服务操作系统包括设备模块和驱动模块,客户操作系统包括扫描模块和驱动模块,其特征在于,虚拟机监视器包括资源转换模块,所述资源转换模块用于存储服务操作系统为硬件设备分配的资源、客户操作系统对服务操作系统为其提供的硬件设备分配的资源二者之间的转换关系,以及,在客户操作系统发出访问硬件设备的请求时,所述资源转换模块用于根据上述转换关系将客户操作系统的访问地址转化成对应硬件设备的真实物理地址。
2.如权利要求1所述的虚拟机系统,其特征在于,所述资源转换模块包括IO转换模块,用于存储所述转换关系中的IO转换关系,并在客户操作系统发出IO请求时,根据IO转换关系将客户操作系统的访问地址转化成对应硬件设备的真实物理地址。
3.如权利要求1或2所述的虚拟机系统,其特征在于,所述资源转换模块包括MMIO映射模块,用于存储所述转换关系中的MMIO映射转换关系,在客户操作系统访问硬件设备时,将客户操作系统分配的MMIO映射到物理MMIO。
4.如权利要求1至3任一项所述的虚拟机系统,其特征在于,所述资源转换模块进一步包括IRQ转换模块,用于存储所述转换关系中的IRQ转换关系,并在硬件设备产生中断时,根据IRQ转换关系将硬件设备产生的中断转化成客户操作系统的中断号后发给客户操作系统。
5.如权利要求1至4任一项所述的虚拟机系统,其特征在于,客户操作系统的物理内存地址与机器的内存地址一致。
6.一种虚拟机系统硬件设备访问方法,其特征在于,包括步骤步骤600,客户操作系统访问硬件设备时,产生相应的访问请求;步骤610,虚拟机监视器截获所述访问请求,并根据预先存储的转换关系将客户操作系统的访问地址转化成对应硬件设备的真实物理地址;步骤620,在访问硬件设备后,虚拟机监视器将访问结果转给客户操作系统。
7.如权利要求6所述的方法,其特征在于,生成所述预先存储的转换关系的步骤包括步骤700,服务操作系统在启动时,扫描PCI总线,为硬件设备分配资源,将分配的资源写入各硬件设备的PCI配置空间;步骤710,设备模块根据配置文件的设置为客户操作系统提供硬件设备,并在客户操作系统启动后扫描虚拟PCI总线时,将硬件设备的真实信息通知客户操作系统;步骤720,在客户操作系统扫描虚拟PCI总线时,对服务操作系统中设备模块为其提供的硬件设备分配资源;步骤730,设备模块通过虚拟机监视器截获资源分配信息,将客户操作系统和服务操作系统对硬件设备的资源分配建立转换关系,并将建立的转换关系下发到虚拟机监视器中的资源转换模块。
8.如权利要求7所述的方法,其特征在于,所述转换关系包括IO转换关系和/或MMIO映射关系。
9.如权利要求8所述的方法,其特征在于,所述转换关系进一步包括IRQ转换关系,并在硬件设备产生中断时,虚拟机监视器根据IRQ转换关系将硬件设备产生的中断转化成客户操作系统的中断号后发给客户操作系统。
10.如权利要求6至9任一项所述的方法,其特征在于,客户操作系统的物理内存地址与机器的内存地址一致。
11.一种虚拟机系统硬件设备访问方法,其特征在于,通过修改虚拟机控制结构中的数据,使得客户操作系统访问硬件设备时不发生虚拟机退出,从而直接访问到硬件设备的IO地址。
全文摘要
本发明提供一种虚拟机系统以及硬件设备访问方法。该虚拟机系统包括服务操作系统、客户操作系统、虚拟机监视器以及硬件,服务操作系统包括设备模块和驱动模块,客户操作系统包括扫描模块和驱动模块。其中,虚拟机监视器包括资源转换模块,该资源转换模块用于存储服务操作系统为硬件设备分配的资源、客户操作系统对服务操作系统为其提供的硬件设备分配的资源二者之间的转换关系;以及,在客户操作系统发出访问硬件设备的请求时,所述资源转换模块用于根据上述转换关系将客户操作系统的访问地址转化成对应硬件设备的真实物理地址。通过本发明,在使得用户看到并使用真实硬件设备的同时,提高虚拟机系统硬件设备访问的效率。
文档编号G06F9/455GK101059761SQ200610076390
公开日2007年10月24日 申请日期2006年4月20日 优先权日2006年4月20日
发明者刘春梅, 陈军, 刘永锋, 石勇 申请人:联想(北京)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1