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

文档序号:6562246阅读:164来源:国知局
专利名称:一种虚拟机系统及其显卡访问方法
技术领域
本发明涉及计算机领域,特别是涉及一种虚拟机系统及其显卡访问方法。
技术背景随着计算机系统的发展,虚拟化技术在计算机领域得到广泛应用。现代 计算机已经具有能力来利用虚拟化技术在一台计算机上支持多个虚拟机,并在每个虚拟机上各自运行单独的客户操作系统(GOS)。将包括有虚拟机的计算机系统称为虚拟机系统。在虚拟机系统中,各操 作系统都需要对硬件进行访问,其中对显卡的访问相对来说是一个比较复杂 的的问题,对显卡的不同使用方法是影响用户体验的一个重要因素。目前, VMWare, Virtual PC以及Xen等主流虚拟化技术所采用的方案大同小异,都 是为客户操作系统提供一个虚拟化了的显卡。该虚拟显卡是一个通用的显卡, 只能实现基本的显示功能,与真实的显卡差别很大。图l为现有技术中虚拟机系统的示意图。如图1所示,该虚拟机系统包 括虚拟机监视器(VMM)、服务操作系统(SOS)、至少一个GOS,及显卡, 其中,VMM包括通信模块,VMM通过所述通信模块和SOS及各个GOS进 行通信,SOS包括真实显卡驱动和设备模型(DM), GOS包括虚拟显卡驱动。现参照图1描述GOS对显卡的访问过程。在GOS访问显卡之前,SOS和GOS要为显卡分配资源,具体如下 SOS在启动时,扫描周边元件扩展接口 (PCI)总线,发现真实显卡,在 获取真实显卡信息后,为真实显卡分配资源,包括中断请求(IRQ)资源、 输入输出(10)资源和存储器映射输入输出(MMIO)资源,这样,SOS就 可以通过真实显卡驱动对显卡进行访问。SOS中的DM为每个GOS分配一个 虚拟显卡,GOS在启动时,扫描虚拟PCI总线,发现虚拟显卡,在获取虚拟 显卡信息后,为虚拟显卡分配资源,包括IRQ资源、IO资源、MM0资源, 这样,GOS就可以通过虚拟显卡驱动对虚拟显卡进行访问。 GOS通过虚拟显卡驱动访问虚拟显卡时,虚拟显卡驱动将GOS的显卡 访问数据通过VMM中的通信模块发送到DM; DM对显卡访问数据进行转 换后,通过真实显卡驱动发送到显卡,从而实现了GOS对显卡的访问。可以看出,GOS直接访问的是由DM提供的虚拟显卡,利用的是虚拟显 卡驱动。由于虚拟显卡只是一个通用的显卡,只能实现基本的显示功能,这 样,真实显卡的硬件加速特性无法被用户使用,不支持2D、 3D动画等功能, 显示性能很差。 发明内容本发明的目的在于提供一种虚拟机系统。本发明的另一目在于提供一种虚拟机系统显卡访问方法。在本发明的虚拟机系统中VMM进一步包括资源转换模块,SOS进一步包括显示切换驱动,GOS 进一步包括显示切换驱动和真实显卡驱动;GOS中的真实显卡驱动用于将GOS的显卡访问数据发送到VMM中的 资源转换模块;VMM中的资源转换模块用于存储SOS为显卡分配的资源与GOS为显卡 分配的资源二者之间的对应关系,并根据所述对应关系对来自GOS的显卡访 问数据的10地址以及MMIO地址进行转换后发送到显卡;SOS中的显示切换驱动用于在接收到显示切换消息时,通过VMM中的 通信模块发送切换到前台的消息到要切换到前台的GOS中的显示切换驱动;GOS中的显示切换驱动用于在接收到包含切换到后台的指令的消息时, 启用虚拟显卡驱动,并禁用真实显卡驱动;以及在接收到SOS中的显示切换 驱动通过VMM中的通信模块发送来的切换到前台的消息时,禁用虚拟显卡 驱动,并启用真实显卡驱动-,GOS中的虚拟显卡驱动用于将GOS的显卡访问数据通过所述通信模块 发送到DM。虚拟机系统中的DM进一步用于在接收到虚拟显卡驱动通过VMM中的 通信模块发送来的显卡访问数据时,丢弃该显卡访问数据。所述VMM中的资源转换模块进一步用于接收显卡的中断请求IRQ,并 根据所存储的对应关系将所述IRQ转换为GOS的中断号后发送给GOS中的 真实显卡驱动;所述GOS中的真实显卡驱动进一步用于对所述IRQ进行相 应的处理。所述SOS中的显示切换驱动接收到的显示切换消息为外部触发的切换消 息;SOS中的显示切换驱动进一步用于通过VMM中的通信模块发送切换到 后台的消息到要切换到后台的GOS。所述GOS中的显示切换驱动接收到的包含切换到后台的指令的消息为 GOS中的应用程序发送来的显示切换消息;GOS中的显示切换驱动进一步 用于将该显示切换消息通过VMM中的通信模块发送到SOS中的显示切换驱 动。本发明的虚拟机系统显卡访问方法,包括将真实显卡分配给GOS,且为所述GOS分配虚拟显卡,并加载相应的 真实显卡驱动和虚拟显卡驱动;在进行显示切换时,禁用后台GOS的真实显卡驱动,并启用后台GOS 的虚拟显卡驱动,以及禁用前台GOS的虚拟显卡驱动,并启用前台GOS的 真实显卡驱动;后台GOS通过虚拟显卡驱动访问虚拟显卡,并由SOS丢弃GOS的显卡 访问数据;前台GOS通过真实显卡驱动访问真实显卡,具体为-a) 前台GOS的显卡访问数据通过真实显卡驱动发送到VMM;b) VMM根据SOS为显卡分配的资源与前台GOS为显卡分配的资源二 者之间的对应关系,对所述显卡访问数据的IO地址以及MMIO地址进行转 换后发送到显卡。进一步,在步骤b)后还包括步骤-VMM接收显卡的IRQ,根据所述对应关系将该IRQ转换为前台GOS的 中断号后发送给前台GOS中的真实显卡驱动,并由所述真实显卡驱动对所述 IRQ进行相应的处理。与现有技术相比,本发明的有益效果是为每个GOS分配两个显卡, 一个为真实显卡, 一个为虚拟显卡,对于位
于前台的GOS,其通过真实显卡驱动直接访问真实显卡,可以用到真实显卡 的硬件加速特性,保证了显示性能;对于位于后台的GOS,其通过虚拟显卡 驱动访问虚拟显卡,并由DM丢弃显卡访问数据,这样既保证了后台系统中 需要访问显卡的应用程序的正常运行,又保证了不千扰前台系统的正常显示。


图1为现有技术中虚拟机系统的示意图; 图2为本发明虚拟机系统的示意图; 图3为对图2所示的虚拟机系统的改进的示意图。
具体实施方式
以下将结合附图对本发明进行详细描述。如图2所示,本发明的虚拟机系统包括VMM、 SOS、至少一个GOS,及 显卡,其中,VMM包括通信模块和资源转换模块,SOS包括真实显卡驱动、 DM和显示切换驱动,GOS包括真实显卡驱动、虚拟显卡驱动和显示切换驱动。其中,VMM通过所述通信模块和SOS及各个GOS进行通信。VMM通过 通信模块的中断或事件通道(EventChannel)向SOS或GOS发送数据,SOS 通过通信模块的hypercall向与VMM发送数据,GOS通过通信模块的vmcall向 VMM发送数据。GOS中的真实显卡驱动用于将GOS的显卡访问数据发送到VMM中的 资源转换模块。由于GOS对显卡的资源配置与SOS对显卡的资源配置不一致,GOS若 要直接访问真实显卡,就需要先进行资源转换,这一工作由资源转换模块来 完成。资源转换模块中存储有资源转换表,资源转换表中包括SOS为显卡分 配的资源与GOS为显卡分配的资源二者之间的对应关系,具体包括SOS和 GOS分别对显卡分配的10的对应关系和MMIO的对应关系。资源转换模块 根据资源转换表对来自GOS的显卡访问数据的IO地址以及MMIO地址进行 转换后发送到显卡。资源转换表中进一步包括SOS和GOS分别对显卡分配的IRQ的对应关 系。在显卡对GOS的访问进行响应时,需要向GOS发送IRQ。资源转换模 块根据资源转换表将VMM接收到的显卡的IRQ转换成GOS的中断号后发 送给GOS中的真实显卡驱动,并由所述真实显卡驱动对所述IRQ进行相应 的处理。资源转换表是在对显卡的资源配置过程中产生的。SOS和GOS启动时, 分别对显卡进行资源配置,DM获取SOS对显卡的资源配置信息和GOS对显 卡的资源配置信息,根据所述资源配置信息生成资源转换表,并将该资源转 换表通过通信模块发送到资源转换模块。这样,通过DM和VMM的协助,GOS可以通过真实显卡驱动直接访问 到显卡硬件,因而能够利用真实显卡的硬件加速特性,保证了显示性能。GOS中的虚拟显卡驱动用于将GOS的显卡访问数据通过所述通信模块 发送到DM。在本发明中,GOS中的真实显卡驱动和虚拟显卡驱动同一时刻只有一个 起作用,即GOS位于前台时,真实显卡驱动起作用,GOS位于后台时,虛 拟显卡驱动起作用。这是通过SOS以及GOS中的显示切换驱动来实现的。 其中,显示切换有两种触发方式, 一种为SOS接收外部的触发消息,例如用 户通过热键切换; 一种为前台GOS的应用程序发送切换消息到前台GOS的 显示切换驱动来触发。在外部触发的情况下,SOS中的显示切换驱动在接收到外部触发的显示 切换消息时,通过VMM中的通信模块发送切换到后台的消息到要切换到后 台的GOS中的显示切换驱动,以及发送切换到前台的消息到要切换到前台的 GOS中的显示切换驱动。GOS中的显示切换驱动在接收到切换到后台的消息 时,启用虚拟显卡驱动,并禁用真实显卡驱动。GOS中的显示切换驱动在接 收到切换到前台的消息时,启用真实显卡驱动,并禁用虚拟显卡驱动。在应用程序触发的情况下,前台GOS中的显示切换驱动接收到本GOS 中的应用程序发送来的显示切换消息时,启用虚拟显卡驱动,并禁用真实显 卡驱动。前台GOS进一步通过VMM中的通信模块将该显示切换消息发送到 SOS中的显示切换驱动,SOS中的显示切换驱动进一步通过VMM中的通信 模块发送切换到前台的消息到要切换到前台的GOS中的显示切换驱动。GOS 中的显示切换驱动在接收到切换到前台的消息时,启用真实显卡驱动,并禁 用虚拟显卡驱动。
本发明的虚拟机系统,有可能会出现多个GOS同时写显卡的情况,从而 造成显示器的显示混乱。这是因为前台GOS通过真实显卡驱动直接访问显 卡;后台GOS通过虚拟显卡驱动访问虚拟显卡,其显卡访问数据由DM转换 后通过SOS的真实显卡驱动也会发送到显卡。因此,本发明的虚拟机系统中 的DM进一步用于在接收到GOS中的虚拟显卡驱动通过VMM中的通信模块 发送来的显卡访问数据时,丢弃该显卡访问数据。这样,就解决了多个操作 系统共同写显卡的问题,同时,后台操作系统中的需要访问显卡的应用程序 也能继续正常运行。图2所示的虚拟机系统,GOS位于前台时,有可能对显卡寄存器的值进 行了修改,从而改变了显示模式,导致在后台GOS切换到前台时,需要重新 设置显示模式。并且,在显示切换后,如果还没有进行屏幕刷新,由于显存 的内容没有更新,显示器显示的内容为显示切换前的内容。这些都给使用带 来了不便。有鉴于此,以下提出一种改进方案。图3是图2所示的虚拟机系统的改进,在该虚拟机系统中,SOS进一步 包括显卡寄存器保存/恢复模块和/或显存保存/恢复模块。SOS中的显示切换驱动接收到显示切换消息时,发送显卡寄存器保存/ 恢复信号到显卡寄存器保存/恢复模块,由显卡寄存器保存/恢复模块将当前显 卡寄存器的值进行保存;以及在当前显卡寄存器的值保存成功后,将要切换 到前台的GOS对应的显卡寄存器的值进行恢复,即将所述对应的显卡寄存器 的值写入显卡寄存器。这样,在进行显示切换时,不需要重新设置显示模式。进一步,SOS中的显示切换驱动接收到显示切换消息时,发送显存保存/ 恢复信号到显存保存/恢复模块,由显存保存/恢复模块将当前显存的内容进行 保存;以及在当前显存的内容保存成功后,将要切换到前台的GOS对应的显 存的内容进行恢复,即将所述对应的显存的内容写入显存。这样,在进行显 示切换时,不需要进行屏幕刷新,就能保证显示正确的内容。在本发明中,GOS中的显示切换驱动进一步用于在本GOS位于前台,且 需要进行显示切换时,判断是否满足切换条件。只有在满足切换条件时,才 进行正常的切换。如果切换条件不满足,则不进行切换。前台GOS中的显示 切换驱动进一步提示用户当前切换条件不满足的原因和解决方法,比如可以
关闭相应的应用程序,在用户将不满足切换的条件原因消除后,再进行正常 的切换。其中,切换条件可以是本GOS没有应用程序独占使用显卡;和域本GOS没有应用程序用到虚拟显卡所不支持的显示特性;和/或 本GOS中的虚拟显卡驱动已经正确加载。在本发明中,为保证直接存储器访问(DMA),让VMM运行在高端内 存,GOS运行在低端内存。这样GOS的物理内存地址与机器的内存地址一致, GOS不需要修改就能满足DMA的需要,并且,SOS本身就是修改过的系统, 也能满足DMA的需要。本领域的普通技术人员应该容易理解,GOS也可以不 运行在低端内存,特别是同时运行多个GOS时,可以通过在VMM中拦截DMA 指令,修改内存地址来解决DMA问题,或者直接修改GOS中关于内存的处理。根据如上对本发明的虚拟机系统的描述,以下介绍本发明的虚拟机系统 显卡访问方法。本发明的虚拟机系统显卡访问方法包括将真实显卡分配给GOS,且为所述GOS分配虚拟显卡,并加载相应的 真实显卡驱动和虚拟显卡驱动;在进行显示切换时,禁用后台GOS的真实显卡驱动,并启用后台GOS 的虚拟显卡驱动,以及禁用前台GOS的虚拟显卡驱动,并启用前台GOS的 真实显卡驱动;前台GOS通过真实显卡驱动访问真实显卡;后台GOS通过虚拟显卡驱动访问虚拟显卡。为避免多个GOS同时写显卡,后台GOS通过虚拟显卡驱动访问虚拟显 卡时,由SOS丢弃GOS的显卡访问数据。其中,前台GOS通过真实显卡驱动访问真实显卡具体包括以下步骤a) 前台GOS的显卡访问数据通过真实显卡驱动发送到VMM;b) VMM根据SOS为显卡分配的资源与前台GOS为显卡分配的资源二 者之间的对应关系,对所述显卡访问数据的IO地址以及MMIO地址进行转 换后发送到显卡。
进一步,在步骤b)后还包括步骤-VMM接收显卡的IRQ,根据所述对应关系将该IRQ转换为前台GOS的 中断号后发送给前台GOS中的真实显卡驱动,并由所述真实显卡驱动对所述 IRQ进行相应的处理。其中,所述对应关系具体包括SOS和GOS分别对显卡分配的10的对应 关系、MMIO的对应关系和\或IRQ的对应关系。为保证显示切换后,不需要重新进行显示模式调整,在步骤a)之前,还 包括步骤前台GOS切换到后台时,保存该前台GOS对应的显示模式,后台GOS 切换到前台时,恢复该后台GOS对应的显示模式。为保证显示切换后,不需要进行屏幕刷新,在步骤a)之前,还包括步骤:前台GOS切换到后台时,保存该前台GOS对应的显存内容,后台GOS 切换到前台时,恢复该后台GOS对应的显存内容。本发明的虚拟机系统及其显卡使用方法,GOS可以访问真实的物理显卡, 显示器显示的内容由VMM根据系统的切换控制,始终显示切换到前台的系 统内容,并可以使用硬件加速特性,保证了显示性能。最后应当说明的是,以上实施例仅用以说明本发明的技术方案而非限制, 本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等 同替换,而不脱离本发明技术方案的精神范围,其均应涵盖在本发明的权利 要求范围当中。
权利要求
1.一种虚拟机系统,其特征在于虚拟机系统中的虚拟机监视器VMM进一步包括资源转换模块,服务操作系统SOS进一步包括显示切换驱动,客户操作系统GOS进一步包括显示切换驱动和真实显卡驱动;GOS中的真实显卡驱动用于将GOS的显卡访问数据发送到VMM中的资源转换模块;VMM中的资源转换模块用于存储SOS为显卡分配的资源与GOS为显卡分配的资源二者之间的对应关系,并根据所述对应关系对来自GOS的显卡访问数据的输入输出IO地址以及存储器映射输入输出MMIO地址进行转换后发送到显卡;SOS中的显示切换驱动用于在接收到显示切换消息时,通过VMM中的通信模块发送切换到前台的消息到要切换到前台的GOS中的显示切换驱动;GOS中的显示切换驱动用于在接收到包含切换到后台的指令的消息时,启用虚拟显卡驱动,并禁用真实显卡驱动;以及在接收到SOS中的显示切换驱动通过VMM中的通信模块发送来的切换到前台的消息时,禁用虚拟显卡驱动,并启用真实显卡驱动。
2. 如权利要求1所述的虚拟机系统,其特征在于 虚拟机系统中的设备模型DM进一步用于在接收到虚拟显卡驱动通过VMM中的通信模块发送来的显卡访问数据时,丢弃该显卡访问数据。
3. 如权利要求1或2所述的虚拟机系统,其特征在于所述VMM中的资源转换模块进一步用于接收显卡的中断请求IRQ,并 根据所存储的对应关系将所述IRQ转换为GOS的中断号后发送给GOS中的 真实显卡驱动;所述GOS中的真实显卡驱动进一步用于对所述IRQ进行相应的处理。
4. 如权利要求1或2所述的虚拟机系统,其特征在于所述SOS中的显示切换驱动接收到的显示切换消息为外部触发的切换消息; SOS中的显示切换驱动进一步用于通过VMM中的通信模块发送切换到 后台的消息到要切换到后台的G0S。
5. 如权利要求1或2所述的虚拟机系统,其特征在于-所述GOS中的显示切换驱动接收到的包含切换到后台的指令的消息为 GOS中的应用程序发送来的显示切换消息;GOS中的显示切换驱动进一步用于将该显示切换消息通过VMM中的通 信模块发送到SOS中的显示切换驱动。
6. 如权利要求1或2所述的虚拟机系统,其特征在于SOS进一步包括显卡寄存器保存/恢复模块,用于在接收到显卡寄存器保 存/恢复信号时,保存当前显卡寄存器的值,以及恢复由要切换到前台的GOS 对应的显卡寄存器的值;SOS中的显示切换驱动进一步用于在接收到显示切换消息时,发送显卡 寄存器保存/恢复信号到显卡寄存器保存/恢复模块。
7. 如权利要求1或2所述的虚拟机系统,其特征在于SOS进一步包括显存保存/恢复模块,用于在接收到显存保存/恢复信号 时,保存当前显存的内容,以及恢复要切换到前台的GOS对应的显存的内容;SOS中的显示切换驱动进一步用于在接收到显示切换消息时,发送显存 保存/恢复信号到显存保存/恢复模块。
8. 如权利要求1或2所述的虚拟机系统,其特征在于 GOS中的显示切换驱动进一步用于在本GOS位于前台,且需要进行显示切换时,判断是否满足切换条件,在满足切换条件时,进行正常的切换;以 及在切换条件不满足时,不进行切换。
9. 一种虚拟机系统显卡访问方法,其特征在于,包括 将真实显卡分配给GOS,且为所述GOS分配虚拟显卡,并加载相应的真实显卡驱动和虚拟显卡驱动;在进行显示切换时,禁用后台GOS的真实显卡驱动,并启用后台GOS 的虚拟显卡驱动,以及禁用前台GOS的虚拟显卡驱动,并启用前台GOS的 真实显卡驱动;后台GOS通过虚拟显卡驱动访问虚拟显卡,并由SOS丢弃GOS的显卡 访问数据;前台GOS通过真实显卡驱动访问真实显卡,具体为-a) 前台GOS的显卡访问数据通过真实显卡驱动发送到VMM;b) VMM根据SOS为显卡分配的资源与前台GOS为显卡分配的资源二 者之间的对应关系,对所述显卡访问数据的10地址以及MMIO地址进行转 换后发送到显卡。
10. 如权利要求9所述的方法,其特征在于,在步骤b)后还包括步骤 VMM接收显卡的IRQ,根据所述对应关系将该IRQ转换为前台GOS的中断号后发送给前台GOS中的真实显卡驱动,并由所述真实显卡驱动对所述 IRQ进行相应的处理。
11. 如权利要求9或10所述的方法,其特征在于,在步骤a)之前,还 包括步骤-前台GOS切换到后台时,保存该前台GOS对应的显示模式,后台GOS 切换到前台时,恢复该后台GOS对应的显示模式。
12. 如权利要求9或10所述的方法,其特征在于,在步骤a)之前,还 包括步骤前台GOS切换到后台时,保存该前台GOS对应的显存内容,后台GOS 切换到前台时,恢复该后台GOS对应的显存内容。
13. 如权利要求9或10所述的方法,其特征在于-在进行显示切换之前,进一步包括前台GOS判断是否满足切换条件,在满足切换条件时,进行正常的切换;在切换条件不满足时,不进行切换。
14. 如权利要求13所述的方法,其特征在于,所述切换条件为-本GOS没有应用程序独占使用显卡;禾口/或 本GOS没有应用程序用到虚拟显卡所不支持的显示特性;和/或 本GOS中的虚拟显卡驱动已经正确加载。
全文摘要
本发明公开了一种虚拟机系统及其显卡访问方法。该方法包括将真实显卡分配给GOS,且为所述GOS分配虚拟显卡,并加载相应的真实显卡驱动和虚拟显卡驱动;前台GOS通过真实显卡驱动访问真实显卡;后台GOS通过虚拟显卡驱动访问虚拟显卡。对于位于前台的GOS,其通过真实显卡驱动直接访问真实显卡,可以用到真实显卡的硬件加速特性,保证了显示性能;对于位于后台的GOS,其通过虚拟显卡驱动访问虚拟显卡,并由DM丢弃显卡访问数据,这样既保证了后台系统中需要访问显卡的应用程序的正常运行,又保证了不干扰前台系统的正常显示。
文档编号G06F9/455GK101154166SQ200610139360
公开日2008年4月2日 申请日期2006年9月25日 优先权日2006年9月25日
发明者刘春梅, 刘永锋, 克 柯, 军 陈 申请人:联想(北京)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1