虚拟机系统及其显卡访问方法

文档序号:6558343阅读:275来源:国知局
专利名称:虚拟机系统及其显卡访问方法
技术领域
本发明涉及计算机领域,特别是涉及一种虚拟机系统及其显卡访问方法。
背景技术
随着计算机系统的发展,虚拟化技术在计算机领域得到广泛应用。现代计算机已经具有能力来利用虚拟化技术支持多个虚拟机,并在每个虚拟机上各自运行单独的操作系统。
在虚拟机系统中,各操作系统都需要对硬件进行访问,其中对显卡的访问相对来说是一个比较复杂的的问题,对显卡的不同使用方法是影响用户体验的一个重要因素。目前,VMWare,Virtual PC以及Xen等主流虚拟化技术所采用的方案大同小异,都是为客户操作系统(GOS)提供一个虚拟化了的显卡。该虚拟显卡是一个通用的显卡,只能实现基本的显示功能,与真实的显卡差别很大。
图1为现有技术的虚拟机系统的示意图。该虚拟机系统包括虚拟机监视器(VMM)、服务操作系统(SOS)和至少一个GOS。SOS启动时,扫描PCI总线,发现真实显卡,获取真实显卡信息,为真实显卡分配资源(IRQ、IO、MMIO),SOS通过真实显卡驱动对显卡进行访问。SOS包含一个设备模型(DM),DM为每个GOS提供一个虚拟显卡。GOS启动时,扫描虚拟PCI总线,发现虚拟显卡,获取虚拟显卡信息,为虚拟显卡分配资源(IRQ、IO、MMIO)。GOS通过虚拟显卡的驱动访问虚拟显卡时,通过VMM将访问数据发送到DM;DM对访问数据进行转换后,发送到真实显卡驱动;真实显卡驱动对接收到的数据进行处理后发送到显卡。
该虚拟机系统包括多个GOS,各个GOS操作系统都是通过SOS使用显卡。所以,除了SOS可以看到真实显卡,并利用真实显卡的驱动访问显卡外,每个GOS看到的都是由DM提供的虚拟显卡,利用虚拟显卡驱动对显卡进行访问,这样,显卡的硬件加速特性无法被用户使用,甚至不支持3D动画的功能,影响了显示性能,用户在显卡上的感受也大打折扣。

发明内容
本发明的目的在于提供一种虚拟机系统,在该虚拟机系统中的GOS能看到真实显卡,并通过真实显卡驱动访问显卡。
本发明的另一目在于提供一种虚拟机系统显卡访问方法。
本发明的虚拟机系统,包括虚拟机监视器(VMM)、服务操作系统(SOS)和至少一个客户操作系统(GOS),其中所述VMM包括通信模块,该通信模块用于VMM和SOS及各个GOS之间的通信;所述SOS包括DM,该DM用于获取显卡信息;所述GOS通过通信模块访问DM,获取显卡信息,对显卡进行资源配置,并将资源配置信息通过通信模块发送到DM,所述GOS还包括显卡驱动,用于将GOS的显卡访问数据发送到VMM;所述SOS中的DM还用于获取SOS对显卡的资源配置信息和GOS对显卡的资源配置信息,并根据SOS对显卡的资源配置信息和GOS对显卡的资源配置信息生成资源转换表发送到VMM;所述VMM还包括资源转换模块,用于根据资源转换表对来自GOS的显卡访问数据进行IO地址地转换或将MMIO映射到显卡的物理MMIO,并将处理后的数据发送到显卡。
所述资源转换模块进一步将VMM接收到的显卡的IRQ转换成GOS的中断号后发送给GOS;所述GOS进一步通过显卡驱动处理由VMM发送过来的显卡的IRQ。
所述资源转换表中包括SOS和GOS分别对显卡分配的IO的对应关系、IRQ的对应关系和MMIO的对应关系。
所述VMM运行在高端内存,所述GOS运行在低端内存。
进一步,所述SOS还包括键盘切换模块,所述VMM还包括切换模块和访问控制模块,所述SOS和所述GOS还包括显卡寄存器保存/恢复模块,所述键盘切换模块用于接收键盘输入信号,判断该信号是否为系统切换信号,并将系统切换信号对应的切换信息通过通信模块发送到切换模块;所述切换模块用于根据切换信息通过通信模块发送显卡寄存器保存/恢复信号到显卡寄存器保存/恢复模块,并且发送访问控制信号到访问控制模块;所述访问控制模块用于根据访问控制信号改变操作系统对显卡的访问权限;所述显卡寄存器保存/恢复模块用于根据显卡寄存器保存/恢复信号对显卡寄存器的值进行保存或恢复,并通过通信模块发送显卡寄存器保存成功信号或显卡寄存器恢复成功信号到切换模块。
所述访问控制模块在接收到访问控制信号时,若前后台状态改变的操作系统是GOS,发送相应控制信号到资源转换模块,资源转换模块根据控制信号禁用后台操作系统的资源转换表并启用前台操作系统的资源转换表。
所述访问控制模块在接收到访问控制信号时,若前后台状态改变的操作系统是SOS,发送相应控制信号到SOS中的显卡驱动,由该显卡驱动打开或关闭SOS对显卡的访问权限。
所述切换模块根据切换信息判断前后台状态改变的操作系统,发送显卡寄存器保存信号到切换到后台的操作系统的显卡寄存器保存/恢复模块,发送显卡寄存器恢复信号到切换到前台的操作系统的显卡寄存器保存/恢复模块。
进一步,所述GOS和SOS还包括显存保存/恢复模块,所述切换模块进一步根据切换信息通过通信模块发送显存保存/恢复信号到显存保存/恢复模块;所述显存保存/恢复模块根据显存保存/恢复信号对显存的内容进行保存或恢复。
所述切换模块根据切换信息判断前后台状态改变的操作系统,发送显存保存信号到切换到后台的操作系统的显存保存/恢复模块,发送显存恢复信号到切换到前台的操作系统的显存保存/恢复模块。
本发明的虚拟机系统显卡访问方法,包括以下步骤a)GOS的显卡访问数据通过显卡驱动发送到VMM;b)VMM根据预先配置的资源转换表对来自GOS的显卡访问数据进行IO地址地转换或将MMIO映射到显卡的物理MMIO;c)VMM将处理后的数据发送到显卡。
进一步,在步骤c)后还包括步骤d)VMM接收显卡的IRQ,并根据资源转换表将该IRQ转换成GOS的中断号后发送给GOS。
所述资源转换表的配置过程为1)SOS获取显卡信息,为显卡分配资源;2)GOS通过SOS中的DM获取显卡信息,为显卡分配资源;3)DM根据SOS对显卡的资源配置信息和GOS对显卡的资源配置信息生成资源转换表发送到VMM。
进一步,在步骤a)之前还包括步骤前台操作系统切换到后台时,保存显示模式,后台操作系统切换到前台时,恢复显示模式。
进一步,在步骤a)之前还包括步骤前台操作系统切换到后台时,保存显存的内容,后台操作系统切换到前台时,恢复显存的内容。
与现有技术相比,本发明的虚拟机系统及其显卡访问方法中,每个操作系统看到的都是真实显卡,各个操作系统之间通过切换的方式使用显卡,可以利用显卡的硬件加速特性,保证了显示性能。


图1为现有技术的虚拟机系统的示意图;图2为本发明虚拟机系统的示意图;图3为对图2所示的虚拟机系统的改进的示意图;图4为改进的虚拟机系统中键盘切换模块的处理流程图;图5为改进的虚拟机系统中切换模块的处理流程图;图6为改进的虚拟机系统中寄存器保存/恢复模块的处理流程图;图7为改进的虚拟机系统中访问控制模块的处理流程图。
具体实施例方式
以下将结合附图对本发明进行详细描述。
如图2所示,本发明的虚拟机系统包括虚拟机监视器(VMM)、服务操作系统(SOS)和至少一个客户操作系统(GOS),其中所述VMM包括通信模块,该通信模块用于VMM和SOS及各个GOS之间的通信;
所述SOS包括DM,该DM用于获取显卡信息;所述GOS通过通信模块访问DM,获取显卡信息,对显卡进行资源配置,并将资源配置信息通过通信模块发送到DM,所述GOS还包括显卡驱动,用于将GOS的显卡访问数据发送到VMM;所述SOS中的DM还用于获取SOS对显卡的资源配置信息和GOS对显卡的资源配置信息,并根据SOS对显卡的资源配置信息和GOS对显卡的资源配置信息生成资源转换表发送到VMM;所述VMM还包括资源转换模块,用于根据资源转换表对来自GOS的显卡访问数据进行IO地址地转换或将MMIO映射到显卡的物理MMIO,并将处理后的数据发送到显卡。
进一步,所述资源转换模块将VMM接收到的显卡的IRQ转换成GOS的中断号后发送给GOS;所述GOS通过显卡驱动处理由VMM发送过来的显卡的IRQ。
在本发明中,为保证直接存储器访问(DMA),让VMM运行在高端内存,GOS运行在低端内存。这样GOS的物理内存地址与机器的内存地址一致,GOS不需要修改就能满足DMA的需要,并且,SOS是修改过的系统,也可以满足DMA的需要。本领域的普通技术人员应该容易理解,GOS也可以不运行在低端内存,特别是同时运行多个GOS时,可以通过在VMM中拦截DMA指令,修改内存地址来解决DMA问题,或者直接修改GOS中关于内存的处理。
其中,在通信模块中,VMM通过中断或事件通道(Event Channel)与SOS和GOS通信,SOS通过hypercall与VMM通信,GOS通过vmcall与VMM通信。
由于GOS对显卡的资源配置可能与SOS对显卡的资源配置不一致,GOS若要对显卡直接进行访问,就需要先进行资源转换,这一工作由资源转换模块来完成。来自于GOS的显卡访问数据到达VMM时,资源转换模块在资源转换表中查找资源转换关系,将GOS的IO请求地址转化成显卡的真实IO地址,同时把GOS对显卡分配的MMIO映射到显卡的物理MMIO上,并把VMM接收到的显卡的IRQ转换成GOS的中断号后发送给GOS。
资源转换表是在对显卡的资源配置过程中产生的。配置过程为SOS启动,扫描PCI总线,获取显卡信息,为显卡分配资源(IRQ、IO、MMIO);GOS启动,扫描虚拟PCI总线,发现由DM提供的真实显卡,获取显卡信息,为显卡分配资源(IRQ、IO、MMIO);GOS对显卡的资源分配由DM负责解析,DM根据SOS对显卡的资源配置信息和GOS对显卡的资源配置信息生成资源转换表发送到VMM。该资源转换表中包括SOS和GOS分别对显卡分配的IO的对应关系、IRQ的对应关系和MMIO的对应关系。
这样,通过DM和VMM的协助,GOS可以直接访问到显卡硬件,同时,SOS按照原来的单一系统的方式访问显卡硬件。
图2所示的虚拟机系统,可能会出现多个操作系统同时写屏幕的现象,后台操作系统切换到前台时,显示模式也可能会改变,需要重新设置显示模式,这些都给使用带来了不便。有鉴于此,以下提出一种改进方案。
图3是图2所示的虚拟机系统的改进,在该虚拟机系统中,SOS进一步包括键盘切换模块,VMM进一步包括切换模块和访问控制模块,SOS和GOS进一步包括显卡寄存器保存/恢复模块,其中所述键盘切换模块用于接收键盘输入信号,判断该信号是否为系统切换信号,并将系统切换信号对应的切换信息通过通信模块发送到切换模块;所述切换模块用于根据切换信息通过通信模块发送显卡寄存器保存/恢复信号到显卡寄存器保存/恢复模块,并且发送访问控制信号到访问控制模块;所述访问控制模块用于根据访问控制信号改变操作系统对显卡的访问权限;所述显卡寄存器保存/恢复模块用于根据显卡寄存器保存/恢复信号对显卡寄存器的值进行保存或恢复,并通过通信模块发送显卡寄存器保存成功信号或显卡寄存器恢复成功信号到切换模块。
下面分别对上述各模块的处理流程进行具体描述。
如图4所示,键盘切换模块的处理流程为接收键盘输入信号,键盘中断处理程序判断该信号是否为系统切换信号,若是,通过通信模块发送对应的切换信息到切换模块,否则,进行正常的输入处理。
如图5所示,切换模块的处理流程为接收来自键盘切换模块的切换信息后,根据切换信息判断前后台状态改变的操作系统,发送显卡寄存器保存信号到切换到后台的操作系统的显卡寄存器保存/恢复模块,接收到显卡寄存器保存成功信号后,发送访问控制信号到访问控制模块,然后,发送显卡寄存器恢复信号到切换到前台的操作系统的显卡寄存器保存/恢复模块,并接收显卡寄存器恢复成功信号。
如图6所示,显卡寄存器保存/恢复模块的处理流程为接收到显卡寄存器保存/恢复信号后,判断是否保存显卡寄存器的值,若接收到显卡寄存器保存信号,调用VGA BIOS服务对显卡寄存器的值进行保存,并通过通信模块发送显卡寄存器保存成功信号到切换模块;若接收到显卡寄存器恢复信号,调用VGA BIOS服务对显卡寄存器的值进行恢复,并通过通信模块发送显卡寄存器恢复成功信号到切换模块。
如图7所示,访问控制模块接收到访问控制信号后,首先判断前后台状态改变的操作系统是GOS还是SOS,对GOS和SOS执行不同的处理。
对于GOS,发送相应控制信号到资源转换模块,资源转换模块根据控制信号禁用后台操作系统的资源转换表并启用前台操作系统的资源转换表。对于SOS,发送相应控制信号到SOS中的显卡驱动,由该显卡驱动打开或关闭SOS对显卡的访问权限。若所述SOS切换到前台,该SOS的显卡驱动打开其对显卡的访问权限,若所述SOS切换到后台,该SOS的显卡驱动关闭其对显卡的访问权限。
改进的虚拟机系统解决了多个操作系统切换使用显卡的问题,即只有位于前台的操作系统才能访问显卡,不会出现多个操作系统同时写屏幕的情况。并且,通过显卡寄存器的保存和恢复,使得切换使用显卡时各操作系统的显示模式保持不变。
但是,在系统切换后,如果没有进行屏幕刷新,由于显存的内容没有更新,显示器显示的内容为切换前的内容。同显卡寄存器的保存和恢复类似,通过显存的保存和恢复可解决此问题。
即在GOS中和SOS中,还可以进一步包括显存保存/恢复模块,切换模块发送显存保存/恢复信号到显存保存/恢复模块,显存保存/恢复模块根据显存保存/恢复信号对显存的内容进行保存或恢复。切换模块根据切换信息判断前后台状态改变的操作系统,发送显存保存信号到切换到后台的操作系统的显存保存/恢复模块,发送显存恢复信号到切换到前台的操作系统的显存保存/恢复模块。显存保存/恢复模块在接收到显存保存信号时,对显存的内容进行保存,在接收到显存恢复信号时,对显存的内容进行恢复。
本发明的虚拟机系统显卡访问方法包括以下步骤a)GOS的显卡访问数据通过显卡驱动发送到VMM;b)VMM根据预先配置的资源转换表对来自GOS的显卡访问数据进行IO地址地转换或将MMIO映射到显卡的物理MMIO;c)VMM将处理后的数据发送到显卡。
进一步,在步骤c)后还包括步骤d)VMM接收显卡的IRQ,并根据资源转换表将该IRQ转换成GOS的中断号后发送给GOS。
其中,所述资源转换表中包括SOS和GOS分别对显卡分配的IO的对应关系、IRQ的对应关系和MMIO的对应关系。为保证DMA,让VMM运行在高端内存,GOS运行在低端内存,前面已经介绍到GOS也可以不运行在低端内存,特别是同时运行多个GOS时,可以通过在VMM中拦截DMA指令,修改内存地址来解决DMA问题,或者直接修改GOS中关于内存的处理。
所述资源转换表的配置过程为1)SOS获取显卡信息,为显卡分配资源;2)GOS通过SOS中的DM获取显卡信息,为显卡分配资源;3)DM根据SOS对显卡的资源配置信息和GOS对显卡的资源配置信息生成资源转换表发送到VMM。
进一步,在步骤a)之前,还包括步骤前台操作系统切换到后台时,保存显示模式,后台操作系统切换到前台时,恢复显示模式。
进一步,在步骤a)之前,还包括步骤前台操作系统切换到后台时,保存显存的内容,后台操作系统切换到前台时,恢复显存的内容。
使用本发明的方法,前台操作系统对显卡的操作完全与独立的操作系统对显卡的操作相当,能用到显卡的全部硬件加速特性。一个操作系统发生故障的时候,不会影响其它操作系统的显示。可以通过切换,使其它操作系统获得对显卡的控制权。
本发明的虚拟机系统及其显卡使用方法,不再提供虚拟的显卡类型,GOS可以看到真实的物理显卡,显示器显示的内容由VMM根据系统的切换控制,始终显示切换到前台的系统内容,并可以使用硬件加速特性,保证了显示性能。
最后应当说明的是,以上实施例仅用以说明本发明的技术方案而非限制,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明技术方案的精神范围,其均应涵盖在本发明的权利要求范围当中。
权利要求
1.一种虚拟机系统,包括虚拟机监视器VMM、服务操作系统SOS和至少一个客户操作系统GOS,其中,所述VMM包括通信模块,该通信模块用于VMM和SOS及各个GOS之间的通信;所述SOS包括设备模型DM,该DM用于获取显卡信息;其特征在于所述GOS通过通信模块访问DM,获取显卡信息,对显卡进行资源配置,并将资源配置信息通过通信模块发送到DM,所述GOS还包括显卡驱动,用于将GOS的显卡访问数据发送到VMM;所述SOS中的DM还用于获取SOS对显卡的资源配置信息和GOS对显卡的资源配置信息,并根据SOS对显卡的资源配置信息和GOS对显卡的资源配置信息生成资源转换表发送到VMM;所述VMM还包括资源转换模块,用于根据资源转换表对来自GOS的显卡访问数据进行IO地址地转换或将MMIO映射到显卡的物理MMIO,并将处理后的数据发送到显卡。
2.如权利要求1所述的系统,其特征在于所述资源转换模块进一步将VMM接收到的显卡的IRQ转换成GOS的中断号后发送给GOS;所述GOS进一步通过显卡驱动处理由VMM发送过来的显卡的IRQ。
3.如权利要求1或2所述的系统,其特征在于所述资源转换表中包括SOS和GOS分别对显卡分配的IO的对应关系、IRQ的对应关系和MMIO的对应关系。
4.如权利要求1或2所述的系统,其特征在于所述VMM运行在高端内存,所述GOS运行在低端内存。
5.如权利要求1或2所述的系统,其特征在于所述SOS进一步包括键盘切换模块,所述VMM进一步包括切换模块和访问控制模块,所述SOS和所述GOS进一步包括显卡寄存器保存/恢复模块,所述键盘切换模块用于接收键盘输入信号,判断该信号是否为系统切换信号,并将系统切换信号对应的切换信息通过通信模块发送到切换模块;所述切换模块用于根据切换信息通过通信模块发送显卡寄存器保存/恢复信号到显卡寄存器保存/恢复模块,并且发送访问控制信号到访问控制模块;所述访问控制模块用于根据访问控制信号改变操作系统对显卡的访问权限;所述显卡寄存器保存/恢复模块用于根据显卡寄存器保存/恢复信号对显卡寄存器的值进行保存或恢复,并通过通信模块发送显卡寄存器保存成功信号或显卡寄存器恢复成功信号到切换模块。
6.如权利要求5所述的系统,其特征在于所述访问控制模块在接收到访问控制信号时,若前后台状态改变的操作系统是GOS,发送相应控制信号到资源转换模块,资源转换模块根据控制信号禁用后台操作系统的资源转换表并启用前台操作系统的资源转换表。
7.如权利要求5所述的系统,其特征在于所述访问控制模块在接收到访问控制信号时,若前后台状态改变的操作系统是SOS,发送相应控制信号到SOS中的显卡驱动,由该显卡驱动打开或关闭SOS对显卡的访问权限。
8.如权利要求5所述的系统,其特征在于所述切换模块根据切换信息判断前后台状态改变的操作系统,发送显卡寄存器保存信号到切换到后台的操作系统的显卡寄存器保存/恢复模块,发送显卡寄存器恢复信号到切换到前台的操作系统的显卡寄存器保存/恢复模块。
9.如权利要求5所述的系统,其特征在于所述GOS和SOS进一步包括显存保存/恢复模块;所述切换模块进一步根据切换信息通过通信模块发送显存保存/恢复信号到显存保存/恢复模块;所述显存保存/恢复模块根据显存保存/恢复信号对显存的内容进行保存或恢复。
10.如权利要求9所述的系统,其特征在于所述切换模块根据切换信息判断前后台状态改变的操作系统,发送显存保存信号到切换到后台的操作系统的显存保存/恢复模块,发送显存恢复信号到切换到前台的操作系统的显存保存/恢复模块。
11.一种虚拟机系统显卡访问方法,其特征在于,包括以下步骤a)GOS的显卡访问数据通过显卡驱动发送到VMM;b)VMM根据预先配置的资源转换表对来自GOS的显卡访问数据进行IO地址地转换或将MMIO映射到显卡的物理MMIO;c)VMM将处理后的数据发送到显卡。
12.如权利要求11所述的方法,其特征在于,在步骤c)后还包括步骤d)VMM接收显卡的IRQ,并根据资源转换表将该IRQ转换成GOS的中断号后发送给GOS。
13.如权利要求11或12所述的方法,其特征在于所述资源转换表中包括SOS和GOS分别对显卡分配的IO的对应关系、IRQ的对应关系和MMIO的对应关系。
14.如权利要求11或12所述的方法,其特征在于所述VMM运行在高端内存,所述GOS运行在低端内存。
15.如权利要求11或12所述的方法,其特征在于,所述资源转换表的配置过程为1)SOS获取显卡信息,为显卡分配资源;2)GOS通过SOS中的DM获取显卡信息,为显卡分配资源;3)DM根据SOS对显卡的资源配置信息和GOS对显卡的资源配置信息生成资源转换表发送到VMM。
16.如权利要求11或12所述的方法,其特征在于,在步骤a)之前还包括步骤前台操作系统切换到后台时,保存显示模式,后台操作系统切换到前台时,恢复显示模式。
17.如权利要求11或12所述的方法,其特征在于,在步骤a)之前还包括步骤前台操作系统切换到后台时,保存显存的内容,后台操作系统切换到前台时,恢复显存的内容。
全文摘要
本发明公开了一种虚拟机系统及其显卡访问方法。该系统包括VMM、SOS和至少一个GOS。GOS通过SOS中的DM获取显卡信息,对显卡进行资源配置,将资源配置信息发送到DM;DM根据SOS对显卡的资源配置信息和GOS对显卡的资源配置信息生成资源转换表发送到VMM;VMM中的资源转换模块根据资源转换表对来自GOS的显卡访问数据进行IO地址地转换或将MMIO映射到显卡的物理MMIO,并将处理后的数据发送到显卡。本发明的虚拟机系统及其显卡访问方法,每个操作系统看到的都是真实显卡,各个操作系统之间通过切换的方式使用显卡,可以利用显卡的硬件加速特性,保证了显示性能。
文档编号G06F3/14GK101059762SQ20061007639
公开日2007年10月24日 申请日期2006年4月20日 优先权日2006年4月20日
发明者刘春梅, 刘永锋, 陈军 申请人:联想(北京)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1