2024年6月10日发(作者:)

(19)中华人民共和国国家知识产权局

(12)发明专利说明书

(21)申请号 CN2.0

(22)申请日 2006.04.20

(71)申请人 联想(北京)有限公司

地址 100085 北京市海淀区上地信息产业基地创业路6号

(72)发明人 刘春梅 刘永锋 陈军

(74)专利代理机构 北京银龙知识产权代理有限公司

代理人 许静

(51)

G06F9/455

G06F3/14

(10)申请公布号 CN 101059762 A

(43)申请公布日 2007.10.24

权利要求说明书 说明书 幅图

(54)发明名称

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

(57)摘要

本发明公开了一种虚拟机系统及其

显卡访问方法。该系统包括VMM、SOS

和至少一个GOS。GOS通过SOS中的DM

获取显卡信息,对显卡进行资源配置,将

资源配置信息发送到DM;DM根据SOS

对显卡的资源配置信息和GOS对显卡的资

源配置信息生成资源转换表发送到

VMM;VMM中的资源转换模块根据资源

转换表对来自GOS的显卡访问数据进行

IO地址地转换或将MMIO映射到显卡的物

理MMIO,并将处理后的数据发送到显

卡。本发明的虚拟机系统及其显卡访问方

法,每个操作系统看到的都是真实显卡,

各个操作系统之间通过切换的方式使用显

卡,可以利用显卡的硬件加速特性,保证

了显示性能。

法律状态

法律状态公告日

法律状态信息

法律状态

权 利 要 求 说 明 书

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)之前还包括步骤:

前台操作系统切换到后台时,保存显存的内容,后台操作系统切换到前台时,恢复

显存的内容。

说 明 书

技术领域

本发明涉及计算机领域,特别是涉及一种虚拟机系统及其显卡访问方法。

背景技术

随着计算机系统的发展,虚拟化技术在计算机领域得到广泛应用。现代计算机已经

具有能力来利用虚拟化技术支持多个虚拟机,并在每个虚拟机上各自运行单独的操

作系统。

在虚拟机系统中,各操作系统都需要对硬件进行访问,其中对显卡的访问相对来说

是一个比较复杂的的问题,对显卡的不同使用方法是影响用户体验的一个重要因素。

目前,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根据系统的切换控制,始终显示切

换到前台的系统内容,并可以使用硬件加速特性,保证了显示性能。

最后应当说明的是,以上实施例仅用以说明本发明的技术方案而非限制,本领域的

普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱

离本发明技术方案的精神范围,其均应涵盖在本发明的权利要求范围当中。