一种实现通用显示的计算机和方法

文档序号:6483777阅读:219来源:国知局
专利名称:一种实现通用显示的计算机和方法
技术领域
本发明涉及虚拟机技术,特别是指一种实现通用显示的计算机和方法。
背景技术
虚拟机的产生,使得在同一计算机上的多个操作系统需要共享一个显卡,在一般 的实现方案中,只有主操作系统(Sevice OS)能够访问真实的显卡,而客户操作系统(GUEST OS)所访问的显卡是由Service OS上的设备单元虚拟出来的;由于Guest OS的显卡是通 过Service OS模拟出来的,所以它不具备二维(2D),三维(3D)等加速特性,显示性能差。
为了解决这一问题,提出了显卡DHA和显存分离的方案,如图1所示,这样对于需 要高显示特性的GUEST OS可以利用显卡硬件直接访问(DHA, Direct Hardware Access), 让它能够获取真实的显卡设备,使得SERVICE OS的显卡状态恢复到真实显卡上,对于多 个GUEST OS的虚拟机来讲,由于其它的GUEST OS还是由Service OS的设备单元(Device Model)模拟出来的,所以对于GUEST OS可以分为两种直接显示的GUEST OS(称之为DGOS 和模拟显示的GUEST OS (称之为SGOS)。每次DGOS在前端显示的时候,如果SGOS想切换 到前端显示的时候,则必须先切断处于前台的DGOS对真实显卡的访问,保存该显示卡当时 的寄存器值,让Service OS直接访问真实显卡,最后让Service OS的Device Model显示 SG0S。反之如果SGOS在前台显示,而DGOS必须切换到前台的时候,必须先切断处于前台的 SGOS对真实显卡的访问,保存该显示卡当时的寄存器值,并把DGOS的显卡状态恢复到真实 显卡的上。 发明人在实现本发明的过程中,发现现有技术中至少存在如下问题在虚拟机系 统中,当DGOS在使用独立显卡的时候,如果另一个Guest OS需要使用模拟显卡,SOS都需 要将当前正在使用的DGOS的显示权限释放掉,由SOS对另一个Guest OS来进行模拟显卡, 这样,这就导致在不同Guest OS之间的切换显示非常耗时,而且在某些切换频繁的时候,由 于每次切换过程中对寄存器中数据的处理不完全会导致计算机显示出现异常。

发明内容
本发明的目的是提供一种实现通用显示的计算机和方法,用于接近现有技术中, 由于不同Guest OS之间的频繁切换,导致计算机显示过程缓慢甚至出现异常的缺陷。
为解决上述技术问题,本发明提供了一种实现通用显示的计算机,所述计算机包 括 虚拟机管理器,用于映射地址; 第二客户操作系统,运行在所述虚拟机管理器之上;包括有一个共享显存单元,用
于存放显示所需要的数据和所述第二客户操作系统有需要使用模拟显卡的信息; 伺服操作系统单元,运行在所述虚拟机管理器之上,用于当监听到所述第二客户
操作系统有需要使用所述模拟显卡的信息时,产生一命令; 第一客户操作系统,运行在所述虚拟机管理器之上,用于获取所述命令,根据所述命令从所述共享显存单元中读取数据,并将所述数据通过所述计算机的物理显卡进行显 示。
优选的,所述虚拟机管理器还包括 配置单元,用于将所述第二客户操作系统的机器地址映射成为所述第一客户操作
系统支持的物理地址。 优选的,还包括 初始化单元,用于将所述共享显存单元在所述第一客户操作系统中的物理地址转
换成一显示数据处理单元可识别的线性地址。
优选的,所述第一客户操作系统中包括 显示数据处理单元,用于获取到所述命令,根据所述命令,按照所述线性地址在所
述第二客户操作系统中找到所述数据并发送给所述物理显卡进行显示。
优选的,所述显示数据处理单元还包括 矩形重绘单元,用于根据所述命令,计算出需要进行重绘的矩形窗口的位置和尺 寸; 所述尺寸不超过所述计算机的显示屏的尺寸。
优选的,所述显示数据处理单元还包括 命令解析模块,用于对所述命令解析为至少三种重绘屏幕事件中的一种
显示内容发生变化;
显示窗口的尺寸发生变化;
显示的分辨率发生变化; 且所述命令解析模块根据任意一所述重绘屏幕事件触发所述矩形重绘单元。 为解决上述技术问题,本发明还提供了一种显示方法,应用于至少包括有一伺服
操作系统、第一客户操作系统、第二客户操作系统及物理显卡的计算机,在所述第一客户操
作系统拥有所述物理显卡的控制权时,所述第一客户操作系统执行如下步骤 获取到来自所述伺服操作系统的命令,所述命令是所述伺服操作系统监听到所述
第二客户操作系统有需要使用模拟显卡的需求时产生的命令; 根据所述命令从所述第二客户操作系统管理的共享显示内存中读取数据;
将所述数据通过所述物理显卡进行显示。 优选的,所述第一客户操作系统获取到来自所述伺服操作系统的命令,之前还包 括 所述第二客户操作系统产生一重绘事件,并将所述重绘事件发送给所述第二客户 操作系统管理的一共享显示内存,当所述伺服操作系统监听到所述重绘事件之后,根据所 述重绘事件向所述第一客户操作系统发出命令。 优选的,根据所述命令从所述第二客户操作系统管理的共享显示内存中读取数 据,进一步包括 计算出需要进行重绘的矩形窗口的位置和尺寸;所述尺寸不超过所述计算机的显 示屏的尺寸; 对所述命令解析为至少三种重绘屏幕事件中的一种
显示内容发生变化;
显示窗口的尺寸发生变化;
显示的分辨率发生变化。 优选的,根据所述命令从所述第二客户操作系统管理的共享显示内存中读取数据 之前,还包括 将所述共享显示内存的物理地址转换成在所述第一客户操作系统中可识别的线 性地址。 本发明的实施例具有以下有益效果,在使前台的客户操作系统享用高性能的同 时,由于不需要对物理显卡进行直接操作和切换,可以大为縮短客户操作系统之间的切换 时间。


图1为本发明现有技术方案示意图; 图2为本发明实现通用显示的计算机结构示意图; 图3为本发明实施例基于虚拟技术的通用显示方案的原理框图; 图4为本发明实施例显示单元工作原理流程示意图; 图5为本发明实施例方法流程示意图。
具体实施例方式
为使本发明的目的、技术特征和实施效果更加清楚,下面将结合附图及具体实施 例对本发明的技术方案进行详细描述。本发明提供的实施例中,在多个不同的操作系统之 间,提供了一个共享的显存区域,以存放刷新显卡时所需的数据。 本实施例提供一种实现通用显示的计算机,如图2所示,所述计算机包括
虚拟机管理器401,用于映射地址; 第二客户操作系统300,运行在所述虚拟机管理器之上;包括有一个共享显存单 元301,用于存放显示所需要的数据和所述第二客户操作系统有需要使用模拟显卡的信 息; 伺服操作系统单元100,运行在所述虚拟机管理器之上,用于当监听到所述第二客 户操作系统有需要使用所述模拟显卡的信息时,产生一命令; 第一客户操作系统200,运行在所述虚拟机管理器之上,用于获取所述命令,根据 所述命令从所述共享显存单元301中读取数据,并将所述数据通过所述计算机的物理显卡 402进行显示。 本实施例中,第二客户操作系统300和第一客户操作系统200均是GuestOS,可以 是同一个或同一类型的Guest OS,例如均可以是微软公司的Windows (视窗)操作系统;也 可以其中一个是Windows操作系统,另一个是Li皿x。伺服操作系统单元100可以是任意的 操作系统,例如Windows、 Linux或者Unix等等。 应用本实施例提供的技术,由于所有的重绘的数据均存放在同一个共享显存单元 301中,该共享显存单元301在各个操作系统中均可以访问,由不同的操作系统中的相应的 单元模块进行共享,因此每次在不同Guest OS之间进行切换时,不再需要每次切换过程中 均对寄存器中数据进行处理,提高了计算机的运行速度。
6
其中,如图3所示,虚拟机管理器401还包括 配置单元403,将第二客户操作系统300的机器地址映射成为所述第一客户操作 系统200支持的物理地址。
计算机还可以包括 初始化单元202,用于将所述共享显存单元301在所述第一客户操作系统200中的 物理地址转换成一显示数据处理单元201可识别的线性地址。该初始化单元202通常在第 一客户操作系统200中。
第一客户操作系统200中包括 显示数据处理单元201,用于获取到所述命令,根据所述命令,按照所述线性地址 在所述第二客户操作系统300中找到所述数据并发送给所述物理显卡402进行显示。由于 物理显卡402是由一显卡驱动进行管理,因此在计算机中,所述数据实际上发送给第一客 户操作系统200中的显卡驱动即可。
显示数据处理单元201还包括 矩形重绘单元,用于根据所述命令,计算出需要进行重绘的矩形窗口的位置和尺 寸;所述尺寸不超过所述计算机的显示屏的尺寸。
显示数据处理单元201还包括 命令解析模块,用于对所述命令解析为至少三种重绘屏幕事件中的一种显示内 容发生变化;显示窗口的尺寸发生变化;显示的分辨率发生变化;且所述命令解析模块根 据任意一所述重绘屏幕事件触发所述矩形重绘单元。 计算机上运行的所述虚拟机管理器401,承载了一个配置单元403 ;所述配置单元 403用于当截获到伺服操作系统单元100对第二客户操作系统300的共享显存单元301进 行分配和映射的时候,它会把这一共享显存单元301的真实机器地址映射为第一客户操作 系统200支持的物理地址;并对在虚拟机管理器401上建立所述第一客户操作系统200和 第二客户操作系统300的过程中,所需要进行设置初始值的一些变量、寄存器值、堆栈等进 行配置。 虚拟机管理器401提供各个操作系统之间的通道,至少包括命令通道和数据通 道;如图2所示,伺服操作系统单元100和第一客户操作系统200之间的命令通道,用以传 输各种命令,包括重绘显示屏时的命令;伺服操作系统单元100和第二客户操作系统300之 间的前后端通道,可以具体是一个数据通道,用以传输各种数据。
显示数据处理单元201还包括 命令解析模块,用于对所述命令解析为至少三种重绘屏幕事件中的一种
显示内容发生变化;
显示窗口的尺寸发生变化;
显示的分辨率发生变化。 对于前两个重绘屏幕事件中的任意一个,伺服操作系统单元100均会生成一重绘 屏幕的命令,该命令会将需要在屏幕上进行重绘的矩形的尺寸一起传送给显示数据处理单 元201。对于最后一个重绘屏幕事件,伺服操作系统单元IOO均会生成一重绘屏幕的命令, 该命令应当至少包含有新的分辨率,显示数据处理单元201根据该命令需要更新当前相对 应的模拟显示分辨率,然后重绘整个第二客户操作系统300的显示区域。
在一个矩形等待重绘的时候,如果又一个需要重绘矩形的命令通过伺服操作系统 单元100中的设备单元101发送给显示数据处理单元201,这时候就需要把两个重绘矩形合 并。合并的原则是把两个矩形替换成一个更大的矩形,这两个矩形中的任何一点都包含在 这个大矩形中。因此,显示数据处理单元201还包括 矩形合并单元,用于在存在第一矩形等待重绘的过程中,当需要重绘第二矩形时, 将所述第一矩形、第二矩形合并为第三矩形,所述第三矩形包含所述第一矩形和所述第二 矩形中的任意一点。 在计算机的运行过程中,当一个GUEST OS启动的时候,伺服操作系统单元100会 通过虚拟机管理器401对该GUEST OS进行配置,虚拟机管理器401中的配置单元403的作 用是当截获到伺服操作系统单元100对第二客户操作系统300的共享显存单元301进行分 配和映射的时候,该配置单元403会把这一共享显存单元301的真实机器地址映射为第一 客户操作系统200支持的物理地址。这样,第二客户操作系统300,伺服操作系统单元100 和第一客户操作系统200共享这一共享显存单元301。第一客户操作系统200中的显示数 据处理单元201监控是否有需要重新绘制屏幕的命令,该命令来自伺服操作系统单元100, 如果需要重新绘制屏幕,则从共享显存单元301中读取需要重绘的数据,然后把该数据刷 新到物理显卡402。 如图4所示,描述了第一客户操作系统200中的显示数据处理单元201工作原理, 包括 步骤501.初始化过程中,把第二客户操作系统300中的共享显存单元301相对应 第一客户操作系统200的物理地址转换成显示数据处理单元201可识别的线性地址;
然后获取第二客户操作系统300当前的显示分辨率和显示窗口大小。
步骤502.显示数据处理单元201监听到需要重绘屏幕的命令,发送命令的是伺服 操作系统单元100中的设备单元101。 —般的引起重绘屏幕的主要由三个重绘屏幕事件触发
l)显示的内容变化;
2)显示窗口的大小的变化;
3)显示的分辨率变化。 伺服操作系统单元100的设备单元101在截获到这三个重绘屏幕事件时,会给第 一客户操作系统200发送命令。 步骤503.计算出需要进行重绘的矩形窗口的位置和尺寸;所述尺寸不超过所述 计算机的显示屏的尺寸。 需要说明的是在存在第一矩形等待重绘的过程中,当需要重绘第二矩形时,将所 述第一矩形、第二矩形合并为第三矩形,所述第三矩形包含所述第一矩形和所述第二矩形 中的任意一点。 步骤504.返回步骤502。 与所提供的计算机对应,本实施例则提供一种显示方法,应用于至少包括有一伺 服操作系统100、第一客户操作系统200、第二客户操作系统300及物理显卡的计算机,在所 述第一客户操作系统200拥有所述物理显卡的控制权时,如图5所示,所述第一客户操作系 统200执行如下步骤
8
步骤601.获取到来自所述伺服操作系统100的命令,所述命令是所述伺服操作系 统100监听到所述第二客户操作系统300有需要使用模拟显卡的需求时产生的命令;
步骤602.根据所述命令从所述第二客户操作系统300管理的共享显示内存中读 取数据; 步骤603.将所述数据通过所述物理显卡402进行显示。 应用本实施例提供的技术,由于所有的重绘的数据均存放在同一个共享显存单元 301中,并由不同的操作系统中的相应的单元模块进行共享,因此每次在不同Guest 0S之 间进行切换时,不再需要每次切换过程中均对寄存器中数据进行处理,提高了计算机的运 行速度。 可以进一步对所提供的方法进行完善;本实施中,第一客户操作系统200获取到 来自所述伺服操作系统100的命令,之前还包括所述第二客户操作系统300产生一重绘 事件,并将所述重绘事件发送给所述第二客户操作系统300管理的共享显示内存,当所述 伺服操作系统100监听到所述重绘事件之后,根据所述重绘事件向所述第一客户操作系统 200发出命令。 本实施中,根据所述命令从所述第二客户操作系统300管理的共享显示内存中读 取数据,进一步包括计算出需要进行重绘的矩形窗口的位置和尺寸;所述尺寸不超过所 述计算机的显示屏的尺寸; 对所述命令解析为至少三种重绘屏幕事件中的一种显示内容发生变化;显示窗 口的尺寸发生变化;显示的分辨率发生变化。 并且,在存在第一矩形等待重绘的过程中,当需要重绘第二矩形时,将所述第一矩 形、第二矩形合并为第三矩形,所述第三矩形包含所述第一矩形和所述第二矩形中的任意一点。 本实施中,根据所述命令从所述第二客户操作系统300管理的共享显示内存中 读取数据之前,还包括将所述共享显示内存的物理地址转换成在所述第一客户操作系统 200中可识别的线性地址。 应用以上实施例提供的技术,可以让处于前台的一客户操作系统直接访问计算机 的物理显卡402,获得接近于本地显卡的性能和各种显卡特性,增强了例如3D加速等特性。 各个实施例中的第二客户操作系统300和第一客户操作系统200均是Guest 0S,可以是同 一个或同一类型的Guest 0S,例如均可以是微软公司的Windows (视窗)操作系统;也可以 其中一个是Windows操作系统,另一个是Li皿x。伺服操作系统单元100可以是任意的操作 系统,例如Windows、 Linux或者Unix等等。 本发明的实施例具有以下有益效果,在使前台的客户操作系统享用高性能的同 时,由于不需要对物理显卡进行直接操作和切换,可以大为縮短客户操作系统之间的切换 时间。 应当说明的是,以上实施例仅用以说明本发明的技术方案而非限制,所有的参数 取值可以根据实际情况调整,且在该权利保护范围内。本领域的普通技术人员应当理解,可 以对本发明的技术方案进行修改或者等同替换,而不脱离本发明技术方案的精神范围,其 均应涵盖在本发明的权利要求范围当中。
权利要求
一种实现通用显示的计算机,所述计算机包括虚拟机管理器,用于映射地址;第二客户操作系统,运行在所述虚拟机管理器之上;包括有一个共享显存单元,用于存放显示所需要的数据和所述第二客户操作系统有需要使用模拟显卡的信息;伺服操作系统单元,运行在所述虚拟机管理器之上,用于当监听到所述第二客户操作系统有需要使用所述模拟显卡的信息时,产生一命令;第一客户操作系统,运行在所述虚拟机管理器之上,用于获取所述命令,根据所述命令从所述共享显存单元中读取数据,并将所述数据通过所述计算机的物理显卡进行显示。
2. 根据权利要求1所述的计算机,其特征在于,所述虚拟机管理器还包括 配置单元,用于将所述第二客户操作系统的机器地址映射成为所述第一客户操作系统支持的物理地址。
3. 根据权利要求2所述的计算机,其特征在于,还包括初始化单元,用于将所述共享显存单元在所述第一客户操作系统中的物理地址转换成 一显示数据处理单元可识别的线性地址。
4. 根据权利要求3所述的计算机,其特征在于,所述第一客户操作系统中包括 显示数据处理单元,用于获取到所述命令,根据所述命令,按照所述线性地址在所述第二客户操作系统中找到所述数据并发送给所述物理显卡进行显示。
5. 根据权利要求4所述的计算机,其特征在于,所述显示数据处理单元还包括矩形重绘单元,用于根据所述命令,计算出需要进行重绘的矩形窗口的位置和尺寸; 所述尺寸不超过所述计算机的显示屏的尺寸。
6. 根据权利要求5所述的计算机,其特征在于,所述显示数据处理单元还包括 命令解析模块,用于对所述命令解析为至少三种重绘屏幕事件中的一种 显示内容发生变化;显示窗口的尺寸发生变化; 显示的分辨率发生变化;且所述命令解析模块根据任意一所述重绘屏幕事件触发所述矩形重绘单元。
7. —种显示方法,应用于至少包括有一伺服操作系统、第一客户操作系统、第二客户操 作系统及物理显卡的计算机,在所述第一客户操作系统拥有所述物理显卡的控制权时,所 述第一客户操作系统执行如下步骤获取到来自所述伺服操作系统的命令,所述命令是所述伺服操作系统监听到所述第二 客户操作系统有需要使用模拟显卡的需求时产生的命令;根据所述命令从所述第二客户操作系统管理的共享显示内存中读取数据; 将所述数据通过所述物理显卡进行显示。
8. 根据权利要求7所述的方法,其特征在于,所述第一客户操作系统获取到来自所述 伺服操作系统的命令,之前还包括所述第二客户操作系统产生一重绘事件,并将所述重绘事件发送给所述第二客户操作 系统管理的一共享显示内存,当所述伺服操作系统监听到所述重绘事件之后,根据所述重 绘事件向所述第一客户操作系统发出命令。
9. 根据权利要求8所述的方法,其特征在于,根据所述命令从所述第二客户操作系统管理的共享显示内存中读取数据,进一步包括计算出需要进行重绘的矩形窗口的位置和尺寸;所述尺寸不超过所述计算机的显示屏 的尺寸;对所述命令解析为至少三种重绘屏幕事件中的一种显示内容发生变化;显示窗口的尺寸发生变化;显示的分辨率发生变化。
10.根据权利要求7所述的方法,其特征在于,根据所述命令从所述第二客户操作系统 管理的共享显示内存中读取数据之前,还包括将所述共享显示内存的物理地址转换成在所述第一客户操作系统中可识别的线性地址。
全文摘要
本发明提供一种实现通用显示的计算机和方法,计算机包括虚拟机管理器,用于映射地址;第二客户操作系统,运行在虚拟机管理器之上;包括有一个共享显存单元,用于存放显示所需要的数据和第二客户操作系统有需要使用模拟显卡的信息;伺服操作系统单元,运行在虚拟机管理器之上,用于当监听到第二客户操作系统有需要使用模拟显卡的信息时,产生一命令;第一客户操作系统,运行在虚拟机管理器之上,用于获取命令,根据命令从共享显存单元读取数据,并将数据通过物理显卡进行显示。采用本发明,可以不需要对物理显卡进行直接操作和切换,可以大为缩短客户操作系统之间的切换时间。
文档编号G06F9/455GK101794237SQ200910077888
公开日2010年8月4日 申请日期2009年2月2日 优先权日2009年2月2日
发明者刘春梅, 席振新, 陈军, 陈博 申请人:联想(北京)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1