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

文档序号:6573292阅读:410来源:国知局
专利名称:虚拟机系统及其访问显卡的方法
技术领域
本发明涉及计算机虚拟技术领域,特别是一种虚拟机系统及其显卡访问 方法。
技术背景随着计算机系统的发展,虚拟化技术在计算机领域得到广泛应用。现代计算机己经具有能力来利用虚拟化技术支持多个虚拟机,并在每个虚拟机上 各自运行单独的操作系统。在虚拟机系统中,各操作系统都需要对硬件进行访问,其中对显卡的访 问相对来说是一个比较复杂的的问题,对显卡的不同使用方法是影响用户体验的一个重要因素。目前,VMWare、 Virtual PC等主流虚拟化技术所采用的 方案大同小异,都是为客户操作系统(Guest Operation System, GOS)提供 一个虚拟化了的显卡。该虚拟显卡是一个通用的显卡,只能实现基本的显示 功能,与真实的显卡差别很大。图1为现有技术的虚拟机系统的示意图。该虚拟机系统包括虚拟机监视 器(Virtual Monitor Machine, VMM)、服务操作系统(Service Operation System, SOS)和至少一个GOS。 SOS启动时,扫描PCI总线,发现真实显卡,获取 真实显卡信息,为真实显卡分配资源(IRQ、 IO、 MMIO), SOS通过真实显 卡驱动对显卡进行访问。SOS包含一个设备模型(Device Module, DM), DM为每个GOS提供 一个虚拟显卡。GOS启动时,扫描虚拟PCI总线,发现虚拟显卡,获取虚拟 显卡信息,为虚拟显卡分配资源(IRQ、 10、 MMIO)。 GOS通过虚拟显卡的 驱动访问虚拟显卡时,通过VMM将访问数据发送到DM; DM对访问数据 进行转换后,发送到真实显卡驱动;真实显卡驱动对接收到的数据进行处理 后发送到显卡。该虚拟机系统包括至少一个GOS,当GOS为多个时,各个GOS操作系统都是通过sos使用显卡。所以,餘了 sos可以看到真实显卡,并利用真实显卡的驱动访问显卡外,每个GOS看到的都是由DM提供的虚拟显卡,利用 虚拟显卡驱动对显卡进行访问,这样,显卡的硬件加速特性无法被用户使用, 甚至不支持3D动画的功能,影响了显示性能,用户在显卡上的感受也大打 折扣。 发明内容本发明的目的在于提供一种虚拟机系统及其访问显卡的方法,其中多个 虚拟操作系统共享一个真实的物理显卡,使每个GOS都拥有接近于真实显卡 的性能和特性。为了实现上述目的,本发明提供了一种虚拟机系统,包括虚拟机监视器 VMM、服务操作系统SOS和至少一个客户操作系统GOS,其中,所述VMM 中包括通信模块,所述SOS中包括设备模型DM,所述虚拟机系统还包括资源转换模块,用于根据资源转换表对来自GOS的显卡帧缓存访问数据 进行10地址地转换或将MMO映射到显卡的物理MMO,并将处理后的数 据发送到显卡;帧缓存分配模块,用于将显卡的帧缓存资源分成多块,分别分配给对应 的GOS;所述资源转换表记录有SOS和GOS对显卡资源配置的对应关系; 所述GOS为显卡分配的帧缓存MMO资源为帧缓存分配模块给其分配 的帧缓存。上述的虚拟机系统,其中,所述资源转换模块还用于将接收到的显卡的 IRQ转换成GOS的中断号后发送给对应GOS。上述的虚拟机系统,其中,所述资源转换表包括SOS和GOS分别对显 卡资源配置后的IO对应关系、IRQ对应关系和MMIO对应关系。上述的虚拟机系统,其中,所述VMM运行在高端内存,所述GOS运行 在低端内存。上述的虚拟机系统,其中,还包括寄存器访问控制模块,用于设置显卡的显示起始地址寄存器的值为当前 处于前台的GOS对应的帧缓存的起始地址,同时将当前处于前台操作系统的对显卡控制寄存器的访问发送到显卡控制寄存器,并将其他操作系统的对显 卡控制寄存器的访问发送到寄存器模拟保存模块;寄存器模拟保存模块,用于根据GOS对显卡控制寄存器的访问和显卡控制寄存器的处理流程模拟显卡控制寄存器的变化,并保存显卡控制寄存器的 值。上述的虚拟机系统,其中,所述寄存器访问控制模块还用于在切换发生时,将切换到前台的第一 GOS对应的显卡控制寄存器的模拟值恢复到显卡控 制寄存器后,将该第一 GOS的对显卡控制寄存器的访问发送到显卡控制寄存 器,同时修改显卡的显示起始地址寄存器的值为分配给该第一GOS的帧缓存 的起始地址。为了更好的实现上述目的,本发明还提供了一种虚拟机系统访问显卡的 方法,其中,包括帧缓存分配步骤,将显卡的帧缓存资源分成多块,分别分配给对应的GOS;显卡帧缓存访问处理步骤,VMM根据资源转换表对来自GOS的显卡帧 缓存访问数据进行10地址地转换或将MMIO映射到显卡的物理MMIO后发 送到显卡;所述资源转换表记录有SOS和GOS对显卡资源配置的对应关系; 所述GOS为显卡分配的帧缓存MMIO资源为帧缓存分配模块给其分配 的帧缓存。上述的方法,其中,还包括显卡控制寄存器访问处理步骤,VMM将处于前台的GOS的对显卡控制 寄存器的访问发送到显卡控制寄存器,并将其他GOS的对显卡控制寄存器的 访问根据真实显卡控制寄存器的处理流程进行模拟并保存。上述的方法,其中,还包括-显示切换步骤,设置显卡的显示起始地址寄存器的值为当前处于前台的 GOS对应的帧缓存的起始地址,在切换发生时,将切换到前台的第一 GOS 对应的显卡控制寄存器的模拟值恢复到显卡控制寄存器后,将该第一 GOS的 对显卡控制寄存器的访问发送到显卡控制寄存器,同时修改显卡的显示起始地址寄存器的值为分配给该第一 GOS的帧缓存的起始地址。上述的方法,其中,还包括将接收到的显卡的IRQ转换成GOS的中断 号后发送给对应GOS的步骤。上述的方法,其中,所述资源转换表包括SOS和GOS分别对显卡资源 配置后的IQ对应关系、IRQ对应关系和MMIO对应关系。本发明的虚拟机系统和方法具有以下的有益效果-通过使用资源转换表来记录SOS和GOS对显卡资源配置的对应关系, 同时将显卡的帧缓存分成多块分配给GOS,这样在多个GOS共同访问显卡 时,既可通过该资源转换表访问真实显卡,又解决了多GOS共同访问真实显 卡时带来的显示混乱问题;同时,本发明将处于前台的GOS的对显卡控制寄存器的访问发送到显卡 控制寄存器,而拦截并模拟其他GOS的对显卡控制寄存器的访问,这样可以 支持多个GOS显示模式不同的情形,同时在切换发生时,将显卡的显示起始 地址寄存器的值修改为分配给处于前台的GOS的帧缓存的起始地址,有效的 解决了显示切换的问题。


图1为现有的虚拟机系统的结构示意图;图2为GOS能看到真实显卡,并通过真实显卡驱动访问显卡的虚拟机系 统的结构示意图;图3为本发明的虚拟机系统的结构示意图;图4为本发明的虚拟机系统的显卡访问方法的流程示意图。
具体实施方式
以下将结合附图对本发明进行详细描述。本发明霈要提供一种虚拟机系统及其显卡访问方法,其中多个虚拟操作 系统共享一个真实的物理显卡,使每个GOS都拥有接近于真实显卡的性能和 特性,因此首先需要虚拟机系统中的每个OS都能访问到真实的显卡。因此本发明首先需要提供一个每个OS都能访问到真实的显卡的虚拟机 系统及其显卡访问方法。如图2所示,为GOS能看到真实显卡,并通过真实显卡驱动访问显卡的虚拟机系统的结构示意图,包括虚拟机监视器VMM、服务操作系统SOS、至少 一个客户操作系统GOS和显卡,其中VMM中设置有通信模块,该通信模块用于VMM和SOS及各个GOS之 间的通信;SOS中设置有用于获取显卡信息的DM;GOS通过通信模块访问DM,获取显卡信息,对显卡进行资源配置,并 将资源配置信息通过通信模块发送到DM,所述GOS还包括显卡驱动,用于 将GOS的显卡帧缓存访问数据发送到VMM;所述SOS中的DM还用于获取SOS对显卡的资源配置信息和GOS对显卡 的资源配置信息,并根据SOS对显卡的资源配置信息和GOS对显卡的资源配 置信息生成资源转换表发送到VMM;所述VMM中还包括资源转换模块,用于保存资源转换表,并根据资源 转换表对来自GOS的显卡帧缓存访问数据进行IO地址转换或将MMIO映射 到显卡的物理MMO,并将处理后的数据发送到显卡。进一步,所述资源转换模块将VMM接收到的显卡的IRQ转换成GOS 的中断号后发送给GOS;所述GOS通过显卡驱动处理由VMM发送过来的 显卡的IRQ。该资源转换表的数目与GOS的数目一致。同时,SOS的显卡驱动直接访问显卡,但不具备显卡加速特性,.也不修 改物理显卡的寄存器的值。其中,在通信模块中,VMM通过中断或事件通道(Event Channel)与 SOS和GOS通信,SOS通过hypercall与VMM通信,GOS通过vmcall与 VMM通信。由于GOS对显卡的资源配置可能与SOS对显卡的资源配置不一致,GOS 若要对显卡直接进行访问,就需要先进行资源转换,这一工作由资源转换模 块来完成,如下所述来自于GOS的显卡帧缓存访问数据到达VMM时,资源转换模块在资源 转换表中査找资源转换关系,将GOS的10请求地址转化成显卡的真实10地 址,同时把GOS对显卡分配的MMIO映射到显卡的物理MMIO上,并把VMM接收到的显卡的IRQ转换成GOS的中断号后发送给GOS。资源转换表是在对显卡的资源配置过程中产生的,如下所述-SOS启动,扫描PCI总线,获取显卡信息,为显卡分配资源(IRQ、 IO、 MMIO); GOS启动,扫描虚拟PCI总线,发现由DM提供的真实显卡,获 取显卡信息,为显卡分配资源(IRQ、 10、 MMIO); GOS对显卡的资源分配 由DM负责解析,DM根据SOS对显卡的资源配置信息和GOS对显卡的资 源配置信息生成资源转换表发送到VMM。该资源转换表中包括SOS和GOS 分别对显卡分配的IO的对应关系、IRQ的对应关系和MMIO的对应关系。这样,通过DM和VMM的协助,GOS可以直接访问到显卡硬件,同时, SOS按照原来的单一系统的方式访问显卡硬件。同时,为保证直接存储器访问(DMA),让VMM运行在高端内存,GOS 运行在低端内存。这样GOS的物理内存地址与机器的内存地址一致,GOS不 需要修改就能满足DMA的需要,并且由于SOS是修改过的系统,也可以满足 DMA的需要。本领域的普通技术人员应该容易理解,GOS也可以不运行在低 端内存,特别是同时运行多个GOS时,可以通过在VMM中拦截DMA指令, 修改内存地址来解决DMA问题,或者直接修改GOS中关于内存的处理。GOS能看到真实显卡,并通过真实显卡驱动访问显卡的虚拟机系统的显 卡访问方法包括如下步骤步骤11, GOS的显卡帧缓存访问数据通过显卡驱动发送到VMM;步骤12, VMM根据预先配置的资源转换表对来自GOS的显卡帧缓存访 问数据进行10地址地转换或将MMIO映射到显卡的物理MMIO;步骤13, VMM将处理后的数据发送到显卡;步骤14, VMM接收显卡的IRQ,并根据资源转换表将该IRQ转换成GOS 的中断号后发送给GOS。其中,资源转换表中包括SOS和GOS分别对显卡分配的10的对应关系、 IRQ的对应关系和MMO的对应关系。其中,资源转换表的配置过程为SOS获取显卡信息,为显卡分配资源;GOS通过SOS中的DM获取显卡信息,为显卡分配资源;DM根据SOS对显卡的资源配置信息和GOS对显卡的资源配置信息生成 资源转换表发送到VMM。在实现了虚拟机系统的所有OS都能直接访问到真实显卡之后,本发明 的虚拟机系统还包括帧缓存分配模块,用于将显卡的帧缓存资源分成多块,分别分配给对应 的GOS;同时,GOS启动,扫描虚拟PCI总线,发现由DM提供的真实显卡,获 取显卡信息,然而在为显卡分配资源时,对于帧缓存MMIO资源,其只能获 得帧缓存分配模块预先给其分配的帧缓存。该帧缓存分配模块可以通过利用DM实现,也可以通过在VMM中另外 设置独立的模块而实现。通过以上的处理,本发明的虚拟机系统中的每个GOS都能分配到到不同 的帧缓存,因此每个GOS都是访问的不同的帧缓存,有效地解决了多个GOS 共享同一个显卡时存在的显示混乱的问题。同时,由于存在多个OS,因此必然存在OS切换显示的问题,同时还可 能存在每个OS的显示模式不同的问题,因此本发明的虚拟机系统在图2所 示虚拟机系统的基础上增加了显示切换判断模块、寄存器访问控制模块及寄 存器模拟保存模块,如图3所示,其中显示切换判断模块,用于判断获取了焦点的操作系统,或者说是处于前 台的操作系统,所谓获得了焦点或处于前台的操作系统即拥有了输入设备(如 键盘、鼠标)的操作系统;寄存器访问控制模块,用于根据显示切换判断模块的判断结果将获取了 焦点的操作系统的对显卡控制寄存器的访问发送到显卡控制寄存器,并将其 他操作系统的对显卡控制寄存器的访问发送到寄存器模拟保存模块;寄存器模拟保存模块,与GOS对应,用于根据GOS的对显卡控制寄存 器的访问和显卡控制寄存器的处理流程模拟显卡控制寄存器的变化,并保存 显卡控制寄存器的值。这样可以防止处于后台的GOS动态修改显示起始地址寄存器,导致显示 混乱的问题。同时,在GOS发生切换时,所述寄存器访问控制模i与还用于将寄存器模 拟保存模块中保存的该切换到前台的GOS对应的显卡控制寄存器的模拟值 恢复到显卡控制寄存器后才将获取了焦点的操作系统的对显卡控制寄存器的 访问发送到显卡控制寄存器,同时修改显卡的显示起始地址寄存器的值为分 配给该切换到前台的GOS的帧缓存的起始地址,这样该切换到前台的GOS 的桌面即可显示到显示器。该寄存器模拟保存模块可以模拟保存显卡所有控制寄存器,然而,在实 际运用的时候,模拟显示模式寄存器即可。本发明的虚拟机系统的显卡访问方法如图4所示,包括如下步骤-帧缓存分配步骤,将显卡的帧缓存资源分成多块,分别分配给对应的GOS;显卡帧缓存访问处理步骤,VMM根据资源转换表对来自GOS的显卡帧 缓存访问数据进行10地址地转换或将MMO映射到显卡的物理MMIO后发 送到显卡;显卡控制寄存器访问处理步骤,VMM将处于前台的GOS的对显卡控制 寄存器的访问发送到显卡控制寄存器,并将其他GOS的对显卡控制寄存器的 访问进行模拟并保存;显示切换步骤,设置显卡的显示起始地址寄存器的值为当前处于前台的 GOS对应的帧缓存的起始地址,GOS发生切换时,VMM将切换到前台的 GOS对应的显卡控制寄存器的模拟值恢复到显卡控制寄存器,同时将显卡的 显示起始地址寄存器的值修改为分配给该切换到前台的GOS的帧缓存的起 始地址后返回显卡控制寄存器访问处理步骤;GOS启动,扫描虚拟PCI总线,发现由DM提供的真实显卡,获取显卡 信息,然而在为显卡分配资源时,对于帧缓存MMIO资源,其只能获得帧缓 存分配模块预先给其分配的帧缓存。显卡帧存访问处理步骤中还包括根据资源转换表将显卡发送的IRQ转 换成GOS的中断号后发送给对应的GOS的操作。下面对各个步骤进行进一步详细描述。显卡帧缓存访问处理步骤具体包括步骤S41, GOS的显卡帧缓存访问数据通过显卡驱动发送到VMM; 步骤S42, VMM根据预先配置的资源转换表对来自GOS的显卡帧缓存 访问数据进行IO地址地转换或将MMIO映射到显卡的物理MMIO; 步骤S43, VMM将处理后的数据发送到显卡;步骤S44, VMM接收显卡的IRQ,并根据资源转换表将该IRQ转换成 GOS的中断号后发送给GOS。显卡控制寄存器访问处理步骤具体包括-步骤S51, VMM判断处于前台的操作系统;步骤S52, VMM拦截所有GOS对显卡控制寄存器的访问;步骤S53,将处于前台的GOS对显卡控制寄存器的访问设置为有效,并 发送到显卡控制寄存器;步骤S54, VMM将其他GOS对显卡控制寄存器的访问按照实际显卡控 制寄存器的处理过程进行模拟并保存。最后应当说明的是,以上实施例仅用以说明本发明的技术方案而非限制, 本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等 同替换,而不脱离本发明技术方案的精神范围,其均应涵盖在本发明的权利 要求范围当中。
权利要求
1. 一种虚拟机系统,包括虚拟机监视器VMM、服务操作系统SOS和至少一个客户操作系统GOS,其中,所述VMM中包括通信模块,所述SOS中包括设备模型DM,其特征在于,所述虚拟机系统还包括资源转换模块,用于根据资源转换表对来自GOS的显卡帧缓存访问数据进行IO地址地转换或将MMIO映射到显卡的物理MMIO,并将处理后的数据发送到显卡;帧缓存分配模块,用于将显卡的帧缓存资源分成多块,分别分配给对应的GOS;所述资源转换表记录有SOS和GOS对显卡资源配置的对应关系;所述GOS为显卡分配的帧缓存MMIO资源为帧缓存分配模块给其分配的帧缓存。
2. 根据权利要求1所述的虚拟机系统,其特征在于,所述资源转换模块 还用于将接收到的显卡的IRQ转换成GOS的中断号后发送给对应GOS。
3. 根据权利要求1所述的虚拟机系统,其特征在于,所述资源转换表包 括SOS和GOS分别对显卡资源配置后的10对应关系、IRQ对应关系和MMIO对应关系。
4. 如权利要求1所述的系统,其特征在于,所述VMM运行在高端内存, 所述GOS运行在低端内存。
5. 根据权利要求l、 2、 3或4所述的虚拟机系统,其特征在于,还包括: 寄存器访问控制模块,用于设置显卡的显示起始地址寄存器的值为当前处于前台的GOS对应的帧缓存的起始地址,同时将当前处于前台操作系统的 对显卡控制寄存器的访问发送到显卡控制寄存器,并将其他操作系统的对显 卡控制寄存器的访问发送到寄存器模拟保存模块;寄存器模拟保存模块,用于根据GOS对显卡控制寄存器的访问和显卡控 制寄存器的处理流程模拟显卡控制寄存器的变化,并保存显卡控制寄存器的 值。
6. 根据权利要求5所述的虚拟机系统,其特征在于,所述寄存器访问控制模块还用于在切换发生时,将切换到前台的第一 GOS对应的显卡控制寄存 器的模拟值恢复到显卡控制寄存器后,将该第一 GOS的对显卡控制寄存器的 访问发送到显卡控制寄存器,同时修改显卡的显示起始地址寄存器的值为分 配给该第一 GOS的帧缓存的起始地址。
7. —种虚拟机系统访问显卡的方法,其特征在于,包括 帧缓存分配步骤,将显卡的帧缓存资源分成多块,分别分配给对应的GOS;显卡帧缓存访问处理步骤,VMM根据资源转换表对来自GOS的显卡帧 缓存访问数据进行10地址地转换或将MMIO映射到显卡的物理MMIO后发 送到显卡;所述资源转换表记录有SOS和GOS对显卡资源配置的对应关系; 所述GOS为显卡分配的帧缓存MMIO资源为帧缓存分配模块给其分配 的帧缓存。
8. 根据权利要求7所述的方法,其特征在于,还包括 显卡控制寄存器访问处理步骤,VMM将处于前台的GOS的对显卡控制寄存器的访问发送到显卡控制寄存器,并将其他GOS的对显卡控制寄存器的 访问根据真实显卡控制寄存器的处理流程进行模拟并保存。
9. 根据权利要求8所述的方法,其特征在于,还包括 显示切换步骤,设置显卡的显示起始地址寄存器的值为当前处于前台的GOS对应的帧缓存的起始地址,在切换发生时,将切换到前台的第一 GOS 对应的显卡控制寄存器的模拟值恢复到显卡控制寄存器后,将该第一GOS的 对显卡控制寄存器的访问发送到显卡控制寄存器,同时修改显卡的显示起始 地址寄存器的值为分配给该第一 GOS的帧缓存的起始地址。
10. 根据权利要求7、 8或9所述的方法,其特征在于,还包括将接收到 的显卡的IRQ转换成GOS的中断号后发送给对应GOS的步骤。
11. 根据权利要求7、 8或9所述的方法,其特征在于,所述资源转换表 包括SOS和GOS分别对显卡资源配置后的IO对应关系、IRQ对应关系和 MMIO对应关系。
全文摘要
本发明公开了一种虚拟机系统及其显卡访问方法,其中虚拟机系统,包括虚拟机监视器、服务操作系统和至少一个客户操作系统,还包括资源转换模块,用于根据资源转换表对来自GOS的显卡帧缓存访问数据进行IO地址的转换或将MMIO映射到显卡的物理MMIO,并将处理后的数据发送到显卡;帧缓存分配模块,用于将显卡的帧缓存资源分成多块,分别分配给对应的GOS;所述资源转换表记录有SOS和GOS对显卡资源配置的对应关系;所述GOS为显卡分配的帧缓存MMIO资源为帧缓存分配模块给其分配的帧缓存。本发明的虚拟机系统和方法既可通过该资源转换表访问真实显卡,又解决了多GOS共同访问真实显卡时带来的显示混乱问题,同时还能进行显示切换。
文档编号G06F12/10GK101241445SQ20071006375
公开日2008年8月13日 申请日期2007年2月8日 优先权日2007年2月8日
发明者刘春梅, 刘永锋, 克 柯, 军 陈 申请人:联想(北京)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1