一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

适用于多虚拟机同屏显示的方法及系统与流程

2022-02-21 09:22:47 来源:中国专利 TAG:


1.本发明涉及虚拟化场景技术领域,具体地,涉及一种适用于多虚拟机同屏显示的方法及系统。


背景技术:

2.多个虚拟机同时进行屏幕显示,不论是在同一块屏幕还是多个屏幕上,都涉及到gpu的虚拟化。目前gpu的虚拟化主要有以下几种,第一种为设备直通技术,将gpu直接分配给一个特定的虚拟机,这种做法性能损耗小、兼容性好,缺点是不支持gpu资源的分割,多个虚拟机需要使用多个gpu。第二种技术为sriov,支持sriov的gpu可以将资源拆分成多份,其中每一份都可以通过vfio模块直通给虚拟机,这种技术可以将一个gpu的物理资源分享给多个虚拟机,并且性能损耗较小,缺点是目前支持sriov的gpu设备有限,只有个别gpu设备支持。第三种技术是gpu分片虚拟化,也就是基于vfio mediated透传框架的gpu虚拟化,把影响性能的访问直接透传给虚拟机,把性能无关的访问拦截在mdev模块内进行模拟,这种方法需要对gpu的驱动进行修改,而且一些厂商的gpu驱动不开源。另外还有一种方案是使用前后端分离设备驱动模型,将host端对渲染管理的访问请求通过前后端分离设备驱动模型传给guest来完成,该方案的优点是guest与host通过共享的数据结构直接通信,绕过了操作系统内核模块,缺点是对framebuffer的操作需要进出虚拟机,影响性能。
3.公开号为cn101398766a的专利文献公开了一种虚拟机系统中的显示处理方法和虚拟机系统,所述虚拟机系统中包括客户操作系统gos,所述方法包括:在gos中提供显示参数供用户选择;获取用户选择的gos的显示参数;gos与虚拟机和真实物理显卡配合,修改gos的显示参数为用户所选择的显示参数。但是该专利文献仍然存在多个虚拟机需要使用多个gpu的缺陷。


技术实现要素:

4.针对现有技术中的缺陷,本发明的目的是提供一种适用于多虚拟机同屏显示的方法及系统。
5.根据本发明提供的一种适用于多虚拟机同屏显示的方法,包括如下步骤:
6.步骤1:在hypervisor层面将dma区域同时映射给service vm与user vm;
7.步骤2:所述user vm通过前后端分离设备驱动模型在所述service vm侧申请framebuffer;
8.步骤3:所述user vm内部的图形应用对所述framebuffer的数据进行修改;
9.步骤4:在对所述framebuffer的修改结束后,所述user vm将所述framebuffer数据修改通过前后端分离设备驱动模型提交到所述service vm;
10.步骤5:所述service vm通过前后端分离设备驱动模型获取到所述user vm侧的所述framebuffer数据修改提交;
11.步骤6:在所述service vm内,在收到的所述framebuffer数据修改提交指令前插
入对所提交所述user vm显示的缩放指令,使得所述user vm显示只占据屏幕的一部分;
12.步骤7:在所述service vm内,将显示进行合成输出到屏幕。
13.优选的,所述步骤1中,所述dma区域由dts文件描述给出,多个vm的dts对dma的描述保持一致;
14.所述多个vm的dts对dma的描述由hypervisor映射到各个虚拟机,各个虚拟机看到的地址相同。
15.优选的,所述步骤2中,所述user vm通过所述service vm获取所述framebuffer,所述service vm侧分配framebuffer。
16.优选的,所述service vm侧是通过渲染管理模块分配所述framebuffer。
17.优选的,所述步骤3中,所述user vm内部图形应用得framebuffer的修改通过所述user vm内部接口在vm内部完成。
18.优选的,所述user vm内部图形应用得framebuffer的修改通过渲染管理模块的接口在vm内部完成。
19.优选的,所述步骤4中,所述user vm对所述framebuffer数据修改的提交为原子提交。
20.优选的,所述步骤6中,所述service vm与所述user vm的显示缩放能够任意比例调节。
21.优选的,所述适用于多虚拟机同屏显示的方法采用多虚拟机同屏显示装置;
22.所述多虚拟机同屏显示装置包括开发板、连接器、显示器以及多个虚拟机;
23.多个所述虚拟机通过type1的方式运行于所述开发板上,所述的显示器通过所述连接器与所述开发板连接,所述的显示器用于显示多个所述虚拟机的图形显示。
24.本发明还提供一种适用于多虚拟机同屏显示的系统,包括如下模块:
25.映射模块:在hypervisor层面将dma区域同时映射给service vm与user vm;
26.申请模块:所述user vm通过前后端分离设备驱动模型在所述service vm侧申请framebuffer;
27.修改模块:所述user vm内部的图形应用对所述framebuffer的数据进行修改;
28.提交模块:在对所述framebuffer的修改结束后,所述user vm将所述framebuffer数据修改通过前后端分离设备驱动模型提交到所述service vm;
29.获取模块:所述service vm通过前后端分离设备驱动模型获取到所述user vm侧的所述framebuffer数据修改提交;
30.插入模块:在所述service vm内,在收到的所述framebuffer数据修改提交指令前插入对所提交所述user vm显示的缩放指令,使得所述user vm显示只占据屏幕的一部分;
31.输出模块:在所述service vm内,将显示进行合成输出到屏幕。
32.与现有技术相比,本发明具有如下的有益效果:
33.1、本发明采用前后端分离设备驱动模型,适用范围广,不受限于gpu厂商的具体gpu设备;
34.2、本发明对framebuffer数据的操作在vm内部进行,减少了vm exit次数,提高了传统前后端分离设备驱动模型方法的性能;
35.3、本发明采用较为成熟的器件,例如通过普通开发板、连接器、显示器即可实现,
因此成本低、可靠性高;
36.4、本发明同屏显示的多个系统的显示可以通过缩放与平移调节大小与位置关系,有一定的灵活性;
37.5、本发明相比较现有方法更多注重于多屏幕显示,本发明聚焦于同屏显示;
38.6、本发明可以轻易扩展至多虚拟机多屏幕显示,具有很有的扩展性。
附图说明
39.通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
40.图1为本发明一实施例的多虚拟机同屏显示方法的流程图;
41.图2为本发明一实施例的硬件装置的结构示意图。
具体实施方式
42.下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变化和改进。这些都属于本发明的保护范围。
43.实施例1:
44.本实施例提供一种适用于多虚拟机同屏显示的方法,包括如下步骤:
45.步骤1:在hypervisor层面将dma区域同时映射给service vm与user vm。dma区域由dts文件描述给出,多个vm的dts对dma的描述保持一致,多个vm的dts对dma的描述由hypervisor映射到各个虚拟机,各个虚拟机看到的地址相同。
46.步骤2:user vm通过前后端分离设备驱动模型在service vm侧申请framebuffer。user vm通过service vm获取framebuffer,service vm侧分配framebuffer,service vm侧是通过渲染管理模块分配framebuffer。
47.步骤3:user vm内部的图形应用对framebuffer的数据进行修改。user vm内部图形应用得framebuffer的修改通过user vm内部接口在vm内部完成,user vm内部图形应用得framebuffer的修改通过渲染管理模块的接口在vm内部完成。
48.步骤4:在对framebuffer的修改结束后,user vm将framebuffer数据修改通过前后端分离设备驱动模型提交到service vm。user vm对framebuffer数据修改的提交为原子提交。
49.步骤5:service vm通过前后端分离设备驱动模型获取到user vm侧的framebuffer数据修改提交。
50.步骤6:在service vm内,在收到的framebuffer数据修改提交指令前插入对所提交user vm显示的缩放指令,使得user vm显示只占据屏幕的一部分。service vm与user vm的显示缩放能够任意比例调节。
51.步骤7:在service vm内,将显示进行合成输出到屏幕。
52.上述的适用于多虚拟机同屏显示的方法采用多虚拟机同屏显示装置,多虚拟机同屏显示装置包括开发板、连接器、显示器以及多个虚拟机,多个虚拟机通过type1的方式运
行于开发板上,的显示器通过连接器与开发板连接,的显示器用于显示多个虚拟机的图形显示。
53.实施例2:
54.本实施例提供一种适用于多虚拟机同屏显示的系统,包括如下模块:
55.映射模块:在hypervisor层面将dma区域同时映射给service vm与user vm;
56.申请模块:user vm通过前后端分离设备驱动模型在service vm侧申请framebuffer;
57.修改模块:user vm内部的图形应用对framebuffer的数据进行修改;
58.提交模块:在对framebuffer的修改结束后,user vm将framebuffer数据修改通过前后端分离设备驱动模型提交到service vm;
59.获取模块:service vm通过前后端分离设备驱动模型获取到user vm侧的framebuffer数据修改提交;
60.插入模块:在service vm内,在收到的framebuffer数据修改提交指令前插入对所提交user vm显示的缩放指令,使得user vm显示只占据屏幕的一部分;
61.输出模块:在service vm内,将显示进行合成输出到屏幕。
62.实施例3:
63.本领域技术人员可以将本实施例理解为实施例1、实施例2的更为具体的说明。
64.本实施例提供一种适用于多虚拟机同屏显示的方法,该方法基于type1虚拟机,使用前后端分离设备驱动模型作为控制通路,将应用对图形显示的控制命令通过前后端分离设备驱动模型发往service vm,使用service vm的驱动进行处理。其特征在于,将图形应用对framebuffer的数据操作命令直接在虚拟机内完成。的包括以下步骤:
65.(1)在hypervisor层面将dma区域同时映射给service vm与user vm;
66.(2)user vm通过前后端分离设备驱动模型在service vm侧申请framebuffer,这块framebuffer user vm与serivce vm都可以看到;
67.(3)user vm内部的图形应用对framebuffer的数据进行修改;
68.(4)在一系列针对framebuffer的修改结束后,user vm将framebuffer数据修改通过前后端分离设备驱动模型提交到service vm;
69.(5)service vm通过前后端分离设备驱动模型获取到user vm侧的framebuffer数据修改提交;
70.(6)在service vm内,在收到的framebuffer数据修改提交指令前插入对所提交user vm显示的缩放指令,使得该user vm显示只占据屏幕的一部分;
71.(7)在service vm内,将显示进行合成输出到屏幕。
72.步骤(1)中dma区域由dts文件描述给出,多个vm的dts对dma的描述需要保持一致,然后由hypervisor将其映射到各个虚拟机,并保证看到的地址相同。
73.步骤(2)中user vm需要通过service vm获取framebuffer,service vm侧来分配framebuffer。
74.步骤(3)中user vm内部图形应用得framebuffer的修改不需要vm exit,通过user vm内部接口在vm内部完成。
75.步骤(4)中user vm对framebuffer数据修改的提交为原子提交,来保证提交的原
子性。
76.步骤(6)中service vm与user vm的显示缩放可以任意比例调节,以满足多个系统的显示不互相覆盖。
77.上述方法采用一种多虚拟机同屏显示装置,包括一台开发板、连接器、显示器以及多个虚拟机。多个虚拟机通过type1的方式运行于开发板上,显示器通过连接器与开发板连接,用于显示多个虚拟机的图形显示。
78.实施例4:
79.本领域技术人员可以将本实施例理解为实施例1、实施例2的更为具体的说明。
80.如图1所示,为本实施例适用于多虚拟机同屏显示的具体流程,完成两个虚拟机同屏显示。下面以arm开发板上两个虚拟机使用opengl程序通过hdmi连线输出到lcd屏幕为例,结合图1对以下同步控制步骤进行详细描述:
81.在步骤401中,hypervisor将同一块dma区域同时映射给service vm与user vm,然后执行步骤402;
82.在步骤402中,user vm创建framebuffer时通过前后端分离设备驱动模型获取framebuffer的fd,该实例中为opengl程序调用libdrm库获取framebuffer的fd,然后执行步骤403;
83.在步骤403中,user vm的图形应用对framebuffer的数据进行修改,该实例中为opengl程序调用libdrm库对framebuffer进行修改,然后执行步骤404;
84.在步骤404中,user vm通过前后端分离设备驱动模型将atomic commit命令发往service vm,该实例中为user vm的opengl程序调用libdrm库来进行原子提交操作,然后执行步骤405;
85.在步骤405中,对service vm与user vm的显示缩放比例调节,要求两个系统的显示不互相覆盖,该实例中将两个系统的显示平行放置,互不覆盖,然后执行步骤406;
86.在步骤406中,图形显示经过drm的encoder与connect模块处理后显示在lcd屏幕上;
87.如图2所示,上述方法采用一种多虚拟机同屏显示装置包括多个虚拟机、一个开发板、连接器、显示器。多个虚拟机通过type1的方式运行于开发板上,显示器通过连接器与开发板连接,用于显示多个虚拟机的图形显示
88.本发明将控制与数据操作分离,控制操作使用前后端分离设备驱动模型,数据操作直接作用于虚拟机内部的framebuffer;在显示器显示上,多个系统可以通过缩放与平移调整其所占据的屏幕位置。与现有技术相比,本发明具有不依赖于具体gpu硬件、提高了传统前后端分离设备驱动模型方法的性能、显示有一定灵活性的优点。
89.本领域技术人员知道,除了以纯计算机可读程序代码方式实现本发明提供的系统及其各个装置、模块、单元以外,完全可以通过将方法步骤进行逻辑编程来使得本发明提供的系统及其各个装置、模块、单元以逻辑门、开关、专用集成电路、可编程逻辑控制器以及嵌入式微控制器等的形式来实现相同功能。所以,本发明提供的系统及其各项装置、模块、单元可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置、模块、单元也可以视为硬件部件内的结构;也可以将用于实现各种功能的装置、模块、单元视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
90.以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变化或修改,这并不影响本发明的实质内容。在不冲突的情况下,本技术的实施例和实施例中的特征可以任意相互组合。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献