CN109343929A - 一种基于虚拟化共享显存的多屏互动方法和系统 - Google Patents
一种基于虚拟化共享显存的多屏互动方法和系统 Download PDFInfo
- Publication number
- CN109343929A CN109343929A CN201811032560.XA CN201811032560A CN109343929A CN 109343929 A CN109343929 A CN 109343929A CN 201811032560 A CN201811032560 A CN 201811032560A CN 109343929 A CN109343929 A CN 109343929A
- Authority
- CN
- China
- Prior art keywords
- video memory
- framebuffer
- client
- screen
- shared
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45579—I/O management, e.g. providing access to device drivers or storage
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45595—Network integration; Enabling network access in virtual machine instances
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明实施例提供一种基于虚拟化共享显存的多屏互动方法和系统,该方法包括:在Hypervisor系统中构建一个共享显存share framebuffer,将产生数据流的进程作为server端,并将server端的数据流存入share framebuffer;将每一个支持与server端实现多屏互动的进程作为client端,并为每个client端构建一个私有显存framebuffer;创建共享显存管理列表,将所有client端注册到共享显存管理列表中,通过共享显存管理列表的标志指示将client端的显存调整为share framebuffer或framebuffer,以使client端从share framebuffer或framebuffer中获取数据流并显示,实现client端与server端的多屏互动。
Description
技术领域
本发明涉及多媒体数据播放技术领域,更具体地,涉及一种基于虚拟化共享显存的多屏互动方法和系统。
背景技术
Hypervisor是一种运行在物理服务器和操作系统之间的中间层软件,它可以允许多个操作系统和应用共享一套基础物理硬件,又称为虚拟机监视器(virtualmachinemonitor)。Hypervisor是所有虚拟化技术的核心,非中断的支持多工作负载迁移是hypervisor的基本功能。当硬件/操作系统上运行Hypervisor时,Hypervisor允许创建多个虚拟机,并且会给每一台虚拟机分配适量的内存,cpu,网络和磁盘资源,还会加载所有虚拟机的客户操作系统(guest OS),并使得这些客户操作系统(guest OS)运行。那么承载Hypervisor运行的操作系统被称为host OS,运行在Hypervisor提供的虚拟机上的操作系统被称为guest OS。
在运行Hypervisor系统的产品方案上,因为同一颗SOC上运行着一个host OS和多个guest OS,而每一个OS可能对应着一个或者多个显示屏,那么guest OS之间或者guestOS与host OS之间的显示屏的同步显示将面临巨大挑战。
对于多屏幕互动解决方案,目前现有的解决方案主要有两种:第一种是在同一个系统中,通过多个屏幕共用同一个framebuffe来实现多个屏幕之间的同步显示;第二种是在不同的系统中,通过网络流媒体传输的方式将显示数据流从服务端发送到客户端显示;第一种方案能够很好的实现多屏幕同步显示,理论上并不会有延迟,但是它只适用于在同一个系统中进行多屏互动显示,并不能跨操作系统;第二种方案主要用于远程流媒体通信,但是由于网络通信协议与带宽的限制,在进行流媒体传输时,都需要将流媒体数据进行压缩后再传输,会导致副屏显示有较大的延迟,且图形可能失真,或者无法保持原画面的分辨率,从而影响显示效果。
发明内容
本发明提供一种克服上述问题或者至少部分地解决上述问题的一种基于虚拟化共享显存的多屏互动方法和系统。
根据本发明的第一个方面,提供一种基于虚拟化共享显存的多屏互动方法,包括:
在Hypervisor系统中构建一个共享显存share framebuffer,将产生数据流的进程作为server端,并将server端的数据流存入shareframebuffer;
将每一个支持与server端实现多屏互动的进程作为client端,为每个client端构建一个私有显存framebuffer;
创建共享显存管理列表,将所有client端注册到共享显存管理列表中,通过共享显存管理列表将client端的显存调整为share framebuffer或framebuffer,以使client端从share framebuffer或framebuffer中获取数据流并显示,实现client端与server端的多屏互动。
作为优选的,若client端与server端没有产生多屏同显操作时,client端以framebuffer作为显存,所有数据流均从framebuffer中获取,实现多屏异显。
作为优选的,将所述client端注册到共享显存管理列表中,具体包括:
通过name字段、shfb_addr字段、index字段、status字段将client端注册到共享显存管理列表中,其中name字段表示client端的名称,index字段记录client端的索引,shfb_addr字段记录着share framebuffer的首地址,status字段表示当前client端是否支持多屏互动功能,其中,status字段值为1时表示支持多屏同显/多屏扩展功能,值为0时表示支持多屏异显功能。
作为优选的,通过共享显存管理列表将client端的显存调整为shareframebuffer或framebuffer,包括:
server端上产生一个与某一个或多个client端多屏同显操作,并将共享显存管理列表中对应client端的status字段置1,并通知所有client端;
对应client端在共享显存管理列表中检测到server端要求与本client端进行多屏同显时,将本client端的显存设置为share framebuffer。
作为优选的,通过共享显存管理列表将client端的显存调整为shareframebuffer或framebuffer,还包括:
若server端上产生一个与某一个或多个client端取消多屏同显的操作时,server端将共享显存管理列表中对应client端的status字段置0,并通知所有client端;
对应client端收到通知后,将本client端的显存设置为framebuffer,实现多屏异显。
作为优选的,通过共享显存管理列表将client端的显存调整为shareframebuffer或framebuffer,还包括:
client端将共享显存管理列表中对应自身的status字段置0,并将自身显存设置为framebuffer,以主动取消与server端的多屏同显。
作为优选的,通过共享显存管理列表将client端的显存调整为shareframebuffer或framebuffer,还包括:
server端产生一个使client端作为server端的扩展屏时,server端在共享显存管理列表中将对应client端的status字段置1,并通知所有client端;
对应client端将自身显存设置为share framebuffer,Client端从shareframebuffer获取数据流进行显示,而client端要显示的数据流由server端产生输入到share framebuffer;server端则重新申请一片私有内存作为自身的私有显存,并将server端显示的数据流均输入到本身的私有显存中。
根据本发明的第二个方面,提供一种基于虚拟化共享显存的多屏互动系统,包括:
server端,用于产生数据流,在Hypervisor系统中构建一个共享显存shareframebuffer,并将server端的数据流存入share framebuffer;
client端,用于与server端实现多屏互动,并在Hypervisor系统中构建一个私有显存framebuffer;
创建共享显存管理列表,用于将所述client端注册到共享显存管理列表中,通过共享显存管理列表将client端的显存调整为shareframebuffer或framebuffer,以使client端从share framebuffer或framebuffer中获取数据流并显示,实现client端与server端的多屏互动。
根据本发明的第三个方面,提供一种基于虚拟化共享显存的多屏互动设备,包括:
至少一个处理器;以及
与所述处理器通信连接的至少一个存储器,其中:
所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行如上述基于虚拟化共享显存的多屏互动方法。
根据本发明的第四个方面,提供一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行如上述基于虚拟化共享显存的多屏互动方法。
本发明提出一种基于虚拟化共享显存的多屏互动方法和系统,通过在共享内存上构建共享显存share framebuffer),host OS与每一个guest OS均可以申请访问,使得当不同OS对应的显示屏需要同步显示同一个画面时,只需要将显示画面的数据流存储在shareframebuffer中,而各个OS从此显存获取数据流显示在显示屏上即可。此发明将泛化系统之间的概念,抽象每一个显示屏驱动/进程为一个client端,而产生数据流的进程(可能是播发器/流媒体等)为server端;保证不同OS之间能够稳定和高效的实现同步显示互动。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为根据本发明实施例的基于虚拟化共享显存的多屏互动方法框图;
图2为根据本发明实施例的基于虚拟化共享显存的多屏互动方法具体流程示意图;
图3为根据本发明实施例的共享显存的使用示例图示意图;
图4为根据本发明实施例的基于虚拟化共享显存的多屏互动设备示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1所示,一种基于虚拟化共享显存的多屏互动方法,包括:
在Hypervisor系统中构建一个共享显存share framebuffer,将产生数据流的进程作为server端,并将server端的数据流存入shareframebuffer;
将每一个支持与server端实现多屏互动的进程作为client端,为每个client端构建一个私有显存framebuffer;
创建共享显存管理列表,将所述client端注册到共享显存管理列表中,通过共享显存管理列表将client端的显存调整为share framebuffer或framebuffer,以使client端从share framebuffer或framebuffer中获取数据流并显示,实现client端与server端的多屏互动。
在本实施例中,基于Hypervisor系统中,guest OS与guest OS之间,guest OS与host OS之间通过共享内存的方式解决多显示屏显示互动问题,通过在共享内存上构建共享显存(基于共享内存实现的显存,下文统称为share framebuffer),host OS与每一个guest OS均可以申请访问,使得当不同OS对应的显示屏需要同步显示同一个画面时,只需要将显示画面的数据流存储在share framebuffer中,而各个OS从此显存获取数据流显示在显示屏上即可。将泛化系统之间的概念,抽象每一个显示屏驱动/进程为一个client端,而产生数据流的进程(可能是播发器/流媒体等)为server端;保证不同OS之间能够稳定和高效的实现同步显示互动。
具体的,在Hypervisor上为各个OS实现share framebuffer(共享显存),在需要多屏幕同步显示的场景中,Hypervisor上的每一个OS都从share framebuffer中获取同步显示的流数据,然后在各自对应的显示屏中进行显示,这样可用保证跨系统的多个显示屏的同步显示。在需要实现主屏幕扩展的应用场景中,副屏同样将显存设置为shareframebuffer,而主屏再申请一个私有的内存作为framebuffer,存放主屏上显示的数据流,这样就可以实现主屏幕的扩展显示。而在多屏异显的场景中,主屏(在一个多屏幕显示的产品中,通常有且只有一个主屏,可以有多个副屏)所使用的显存还是shareframebuffer,但是其他所有副屏均使用自己的framebuffer,这样就可以实现跨系统多屏异显的场景。
本实施例在实现跨系统的多屏幕同步/扩展显示时,避免了对图像/视频流数据的拷贝、压缩和传输的过程,能够真正的实现同步显示,保证图像不失真,不延迟,并且也降低了CPU的占用,从而提高效率。
在上述实施例的基础上,若client端与server端没有产生多屏同显操作时,client端以framebuffer作为显存,所有数据流均从framebuffer中获取,实现多屏异显。
在上述各实施例的基础上,将所述client端注册到共享显存管理列表中,具体包括:
通过name字段、shfb_addr字段、index字段、status字段将client端注册到共享显存管理列表中,其中name字段表示client端的名称,index字段记录client端的索引,shfb_addr字段记录着share framebuffer的首地址,status字段表示当前client端是否支持多屏互动功能,其中,status字段值为1时表示支持多屏同显/多屏扩展功能,值为0时表示支持多屏异显功能。
在本实施例中,在Hypervidor的共享内存中的factory page中shmem字段获取共享内存起始地址,将第一页(4KB)中的前1KB共享内存分配作为共享显存管理列表区域,建立共享显存管理列表,标记为fb_m。通过在共享内存的factorypage中的shmem字段获取共享内存起始地址,将第一个页(4KB)的前1K内存空间作为管理列表,将其称为fb_m字段,由server端(主屏)端在其中建立管理列表,并初始化(将参与支持多屏互动的每一个client端的信息分别添加到管理列表中),并在共享内存上申请共享显存share framebuffer,并作为主屏的显存。当产生多屏互动操作时,server端将在对应client端的管理列表上将status字段进行操作,并产生中断通知client端。
统一由主屏端(即server端)的驱动程序建立共享显存管理列表,每个支持与主屏端进行多屏互动的OS的信息都被注册在管理列表中成为client端,而主屏作为server端。name字段表示OS的名称,index字段记录OS的索引,每个OS可用通过识别name与index来找到属于自己的管理区,shfb_addr字段记录着共享显存的首地址;status字段标志着当前本client是否支持多屏互动功能,值为1时标志当前支持多屏同显/多屏扩展功能,值为0时标志当前支持多屏异显功能。
对于fb_m管理列表,server端(主屏端)对所有client端的列表区域有可读可写属性;而每一个client端只能对自身的列表区域有可读可写属性,对其他所有列表区域只具有可读属性。
对于共享显存share framebuffer而言,server端(主屏端)对shareframebuffer有可读可写的属性;而所有的client端对于share framebuffer只有可读的属性。
在上述各实施例的基础上,如图2所示,通过共享显存管理列表将client端的显存调整为share framebuffer或framebuffer,包括:
通过共享显存管理列表的status字段值的指示可将client端的显存调整为shareframebuffer或framebuffer;具体为:
server端上产生一个与某一个或多个client端多屏同显操作,并将共享显存管理列表中对应client端的status字段置1,并通知所有client端;
对应client端在共享显存管理列表中检测到server端要求与本client端进行多屏同显时,将本client端的显存设置为share framebuffer。
即多屏同显操作为:
(1)server端将管理列表中对应client端的status字段置1;
(2)client端重新设置显存为share framebuffer;
(3)主屏(server端)将图像数据存放在share framebuffer中;
(4)client端从share framebuffer获取图像数据在副屏中显示。
主屏端取消多屏同显:
(1)server端将管理列表中对应client端的status字段置0;
(2)client端重新设置显存为私有的framebuffer。
副屏端取消多屏同显:
(1)client端将管理列表中对应自身的status字段置0;
(2)client端重新设置显存为私有的framebuffer。
如图3所示,在本实施例中,图3作为共享显存的使用示例图,图中,OSA作为server端,OS B与OS C均作为client端。
对于主屏A而言,当没有产生任何的多屏同显操作时,副屏B与副屏C都有自己私有的frambuffer作为显存,所有图像的显示均从私有的framebuffer中获取,这样属于多屏异显的情况。
当在主屏A上产生一个与副屏B实现多屏同显的操作时,OS A会将共享内存的fb_m管理列表中,属于OS B的列表区域的status字段置1,并产生中断通知所有的OS,列表信息有变动;而OS B会在共享内存的fb_m管理列表中检测到主屏A要求与副屏B实现多屏同显功能,此时OS B将暂时放弃副屏B的私有framebuffer,将副屏B的显存设置为shareframebuffer,此时副屏B显示的图像画面将和主屏A相同。相同操作,副屏C也是如此。
当在主屏A上产生与副屏B和副屏C都实现多屏同显的操作时,OS A同样会设置共享内存fb_m管理列表中对应与OS B和OS C的status字段为1,然后通知所有的client端,列表信息有变动。此时OSB与OS C会分别将副屏B与副屏C的显存设置为share framebuffer,实现主屏A、副屏B、副屏C同时实现多屏通信。
在上述各实施例的基础上,如图2所示,通过共享显存管理列表将client端的显存调整为share framebuffer或framebuffer,还包括:
若server端上产生一个与某一个或多个client端取消多屏同显的操作时,server端将共享显存管理列表中对应client端的status字段置0,并通知所有client端;
对应client端收到通知后,将本client端的显存设置为framebuffer,实现多屏异显。
同样,如图3所示,当在主屏A上产生一个取消与副屏B继续实现多屏同显的操作时,OS A会将共享内存的fb_m管理列表区中属于OS B的列表中的status字段置0,并产生中断通知所有的client。而OS B收到通知后,将会重新将副屏B的显存设置为其私有的framebuffer,重新恢复多屏异显的情况。
在上述各实施例的基础上,通过共享显存管理列表的status字段值的指示可将client端的显存调整为share framebuffer或framebuffer,还包括:
client端将共享显存管理列表中对应自身的status字段置0,并将自身显存设置为framebuffer,以主动取消与server端的多屏同显。
如图3所示,副屏B或者副屏C也可以主动的产生取消与主屏A实现多屏同显的操作,此时OS B/OS C只需要在共享内存中的显存管理列表fb_m中对应自身的status字段设置为0,并将副屏B/副屏C的显存设置为私有的framebuffer即可。
综上,多屏异显操作为:
(1)server端将管理列表中对应client端的status字段置0,或者client端主动将本身对应管理列表的status字段置0;
(2)client端中重新设置副屏的显存为自身OS提供的私有显存framebuffer,副屏的显示数据从私有显存中获取;
(3)server端的主屏的显示数据从共享显存share framebuffer中获取。
在上述各实施例的基础上,如图2所示,通过共享显存管理列表将client端的显存调整为share framebuffer或framebuffer,还包括:
server端产生一个使client端作为server端的扩展屏时,server端在共享显存管理列表中将对应client端的status字段置1,并通知所有client端;
对应client端将自身显存设置为share framebuffer,并将自身显示的所有数据流均输入到share framebuffer;server端则重新申请一片私有内存作为自身的私有显存,并将server端显示的数据流均输入到本身的私有显存中。
多屏扩展操作为:
(1)server端将管理列表中对应client端的status字段置1;
(2)server端重新申请一片私有的framebuffer并设置为主屏显存;
(3)client端重新设置显存为share framebuffer;
(4)server端将扩展屏显示的图像数据存放在share framebuffer中;
(5)server端将主屏显示的图像数据存放在私有的framebuffer中;
(6)client从share framebuffer获取图像数据在副屏中显示;
(7)server从私有的framebuffer获取图像数据在主屏中显示;
主屏端取消多屏扩展:
(1)server端将管理列表中对应client端的status字段置0;
(2)server端重新设置显存为share framebuffer;
(3)server端预留/释放私有显存frambuffer;
(4)client端重新设置显存为私有的framebuffer。
副屏取消多屏扩展:
(1)client端将管理列表中对应自身的status字段置0;
(2)client端重新设置显存为私有的framebuffer;
(3)server端对私有的framebuffer与share framebuffer进行图层叠加处理,然后显示;
如图3所示,假设在主屏A中产生一个使得副屏B作为主屏A的扩展屏时,此时OS A会在共享内存的fb_m列表中修改副屏B对应的列表的status字段为1,并中断通知所有client。对于OS B而言,会将副屏B的显存设置为share framebuffer;而对于OS A而言,需要重新申请一片私有内存作为主屏A的显存,在主屏A上显示的图像均输入到这片主屏A的私有显存中,而在副屏B显示的图像则输入到shareframebuffer中。
本实施例中,基于上述基于虚拟化共享显存的多屏互动方法,还提供一种基于虚拟化共享显存的多屏互动系统,包括:
server端,用于产生数据流,在Hypervisor系统中构建一个共享显存shareframebuffer,并将server端的数据流存入share framebuffer;
client端,用于与client端实现多屏互动,并在Hypervisor系统中构建一个私有显存framebuffer;
创建共享显存管理列表,用于将所有client端注册到共享显存管理列表中,通过共享显存管理列表的status字段值的指示可将client端的显存调整为share framebuffer或framebuffer,以使client端从shareframebuffer或framebuffer中获取数据流并显示,实现client端与server端的多屏互动。
图4是示出本发明实施例的基于虚拟化共享显存的多屏互动设备的结构框图。
参照图4,所述基于虚拟化共享显存的多屏互动设备,包括:处理器(processor)810、存储器(memory)830、通信接口(CommunicationsInterface)820和总线840;
其中,
所述处理器810、存储器830、通信接口820通过所述总线840完成相互间的通信;
所述处理器810用于调用所述存储器830中的程序指令,以执行上述各方法实施例所提供的基于虚拟化共享显存的多屏互动方法,例如包括:
在Hypervisor系统中构建一个共享显存share framebuffer,将产生数据流的进程作为server端,并将server端的数据流存入shareframebuffer;
将每一个支持与client端实现多屏互动的进程作为client端,为每个client端构建一个私有显存framebuffer;
创建共享显存管理列表,将所述client端注册到共享显存管理列表中,通过共享显存管理列表将client端的显存调整为share framebuffer或framebuffer,以使client端从share framebuffer或framebuffer中获取数据流并显示,实现client端与server端的多屏互动。
本实施例公开一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行如上述的基于虚拟化共享显存的多屏互动方法,例如包括:
在Hypervisor系统中构建一个共享显存share framebuffer,将产生数据流的进程作为server端,并将server端的数据流存入shareframebuffer;
将每一个支持与client端实现多屏互动的进程作为client端,为每个client端构建一个私有显存framebuffer;
创建共享显存管理列表,将所有client端注册到共享显存管理列表中,通过共享显存管理列表将client端的显存调整为share framebuffer或framebuffer,以使client端从share framebuffer或framebuffer中获取数据流并显示,实现client端与server端的多屏互动。
本实施例中还提供了一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行如上述的基于虚拟化共享显存的多屏互动方法,例如包括:
在Hypervisor系统中构建一个共享显存share framebuffer,将产生数据流的进程作为server端,并将server端的数据流存入shareframebuffer;
将每一个支持与client端实现多屏互动的进程作为client端,为每个client端构建一个私有显存framebuffer;
创建共享显存管理列表,将所述client端注册到共享显存管理列表中,通过共享显存管理列表将client端的显存调整为share framebuffer或framebuffer,以使client端从share framebuffer或framebuffer中获取数据流并显示,实现client端与server端的多屏互动。
综上所述,本发明实施例提出一种基于虚拟化共享显存的多屏互动方法和系统,通过在共享内存上构建共享显存share framebuffer),host OS与每一个guest OS均可以申请访问,使得当不同OS对应的显示屏需要同步显示同一个画面时,只需要将显示画面的数据流存储在share framebuffer中,而各个OS从此显存获取数据流显示在显示屏上即可。此发明将泛化系统之间的概念,抽象每一个显示屏驱动/进程为一个client端,而产生数据流的进程(可能是播发器/流媒体等)为server端;保证不同OS之间能够稳定和高效的实现同步显示互动。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (10)
1.一种基于虚拟化共享显存的多屏互动方法,其特征在于,包括:
在Hypervisor系统中构建一个共享显存share framebuffer,将产生数据流的进程作为server端,并将server端的数据流存入share framebuffer;
将每一个支持与server端实现多屏互动的进程作为client端,为每个client端构建一个私有显存framebuffer;
创建共享显存管理列表,将所有client端注册到共享显存管理列表中,通过共享显存管理列表将client端的显存调整为share framebuffer或framebuffer,以使client端从share framebuffer或framebuffer中获取数据流并显示,实现client端与server端的多屏互动。
2.根据权利要求1所述的基于虚拟化共享显存的多屏互动方法,其特征在于,若client端与server端没有产生多屏同显操作时,client端以framebuffer作为显存,所有数据流均从framebuffer中获取,实现多屏异显。
3.根据权利要求2所述的基于虚拟化共享显存的多屏互动方法,其特征在于,将所有client端注册到共享显存管理列表中,具体包括:
通过name字段、shfb_addr字段、index字段、status字段将client端注册到共享显存管理列表中,其中name字段表示client端的名称,index字段记录client端的索引,shfb_addr字段记录着share framebuffer的首地址,status字段表示当前client端是否支持多屏互动功能,其中,status字段值为1时表示支持多屏同显/多屏扩展功能,值为0时表示支持多屏异显功能。
4.根据权利要求3所述的基于虚拟化共享显存的多屏互动方法,其特征在于,通过共享显存管理列表将client端的显存调整为share framebuffer或framebuffer,包括:
server端上产生一个与某一个或多个client端多屏同显操作,并将共享显存管理列表中对应client端的status字段置1,并通知所有client端;
对应client端在共享显存管理列表中检测到server端要求与本client端进行多屏同显时,将本client端的显存设置为share framebuffer。
5.根据权利要求3所述的基于虚拟化共享显存的多屏互动方法,其特征在于,通过共享显存管理列表将client端的显存调整为share framebuffer或framebuffer,还包括:
若server端上产生一个与某一个或多个client端取消多屏同显的操作时,server端将共享显存管理列表中对应client端的status字段置0,并通知所有client端;
对应client端收到通知后,将本client端的显存设置为framebuffer,实现多屏异显。
6.根据权利要求3所述的基于虚拟化共享显存的多屏互动方法,其特征在于,通过共享显存管理列表将client端的显存调整为share framebuffer或framebuffer,还包括:
client端将共享显存管理列表中对应自身的status字段置0,并将自身显存设置为framebuffer,以主动取消与server端的多屏同显。
7.根据权利要求5所述的基于虚拟化共享显存的多屏互动方法,其特征在于,通过共享显存管理列表将client端的显存调整为share framebuffer或framebuffer,还包括:
server端产生一个使client端作为server端的扩展屏时,server端在共享显存管理列表中将对应client端的status字段置1,并通知所有client端;
对应client端将自身显存设置为share framebuffer,Server端将需要client端扩展显示的数据流均输入到share framebuffer;server端则重新申请一片私有内存作为自身的私有显存,并将server端显示的数据流均输入到本身的私有显存中。
8.一种基于虚拟化共享显存的多屏互动系统,其特征在于,包括:
server端,用于产生数据流,在Hypervisor系统中构建一个共享显存shareframebuffer,并将server端的数据流存入share framebuffer;
client端,用于与server端实现多屏互动,并在Hypervisor系统中构建一个私有显存framebuffer;
创建共享显存管理列表,用于将所有client端注册到共享显存管理列表中,通过共享显存管理列表将client端的显存调整为share framebuffer或framebuffer,以使client端从share framebuffer或framebuffer中获取数据流并显示,实现client端与server端的多屏互动。
9.一种基于虚拟化共享显存的多屏互动设备,其特征在于,包括:
至少一个处理器;以及
与所述处理器通信连接的至少一个存储器,其中:
所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行如权利要求1至7任一所述的方法。
10.一种非暂态计算机可读存储介质,其特征在于,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行如权利要求1至7任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811032560.XA CN109343929B (zh) | 2018-09-05 | 2018-09-05 | 一种基于虚拟化共享显存的多屏互动方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811032560.XA CN109343929B (zh) | 2018-09-05 | 2018-09-05 | 一种基于虚拟化共享显存的多屏互动方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109343929A true CN109343929A (zh) | 2019-02-15 |
CN109343929B CN109343929B (zh) | 2021-06-25 |
Family
ID=65292309
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811032560.XA Active CN109343929B (zh) | 2018-09-05 | 2018-09-05 | 一种基于虚拟化共享显存的多屏互动方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109343929B (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111114320A (zh) * | 2019-12-27 | 2020-05-08 | 深圳市众鸿科技股份有限公司 | 一种车载智能座舱共享显示方法及系统 |
CN111240626A (zh) * | 2020-01-09 | 2020-06-05 | 中瓴智行(成都)科技有限公司 | 一种基于Hypervisor智能座舱操作系统双屏互动的方法和系统 |
CN112218140A (zh) * | 2020-09-02 | 2021-01-12 | 中国第一汽车股份有限公司 | 视频同步播放方法、装置、系统和存储介质 |
CN112579014A (zh) * | 2019-09-27 | 2021-03-30 | 宝能汽车集团有限公司 | 基于Hypervisor的多屏显示方法、系统以及车辆、存储介质 |
CN112804410A (zh) * | 2019-11-14 | 2021-05-14 | 西安诺瓦星云科技股份有限公司 | 多显示屏同步显示方法及装置、视频处理设备和存储介质 |
CN113674133A (zh) * | 2021-07-27 | 2021-11-19 | 阿里巴巴新加坡控股有限公司 | Gpu集群共享显存系统、方法、装置及设备 |
CN113891146A (zh) * | 2021-09-23 | 2022-01-04 | 中汽创智科技有限公司 | 一种多屏互动系统、方法、驾驶设备及存储介质 |
CN114489543A (zh) * | 2022-01-25 | 2022-05-13 | 广州小鹏汽车科技有限公司 | 智能座舱的多屏幕处理方法、装置、芯片、车辆及介质 |
CN115857860A (zh) * | 2023-03-02 | 2023-03-28 | 麒麟软件有限公司 | Wayland合成器中的镜像屏优化方法 |
CN116301698A (zh) * | 2023-05-16 | 2023-06-23 | 佳瑛科技有限公司 | 一种基于多屏互动的文档共享操作显示方法、装置及系统 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN201489416U (zh) * | 2009-09-02 | 2010-05-26 | 上海芯动信息技术有限公司 | 一种多核一体双屏计算机 |
CN102243571A (zh) * | 2011-07-08 | 2011-11-16 | 西安交通大学 | 一种面向嵌入式Hypervisor的多视窗显示虚拟化操作方法 |
CN103136057A (zh) * | 2011-11-22 | 2013-06-05 | 中兴通讯股份有限公司 | 虚拟驱动的交互方法及装置 |
CN104038813A (zh) * | 2014-06-20 | 2014-09-10 | 深圳市九洲电器有限公司 | 一种多屏互动方法及系统 |
CN105334821A (zh) * | 2015-10-27 | 2016-02-17 | 深圳前海探鹿科技有限公司 | 一种车载多屏显示双向通讯装置及智能机车 |
CN105677315A (zh) * | 2015-12-28 | 2016-06-15 | 北京元心科技有限公司 | 多操作系统的界面显示方法及智能终端 |
EP2680129A3 (en) * | 2012-06-29 | 2017-01-11 | LG Electronics, Inc. | Mobile terminal and method of controlling the same |
CN206348723U (zh) * | 2017-01-09 | 2017-07-21 | 杭州冰特科技股份有限公司 | 一种多屏台式计算机 |
-
2018
- 2018-09-05 CN CN201811032560.XA patent/CN109343929B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN201489416U (zh) * | 2009-09-02 | 2010-05-26 | 上海芯动信息技术有限公司 | 一种多核一体双屏计算机 |
CN102243571A (zh) * | 2011-07-08 | 2011-11-16 | 西安交通大学 | 一种面向嵌入式Hypervisor的多视窗显示虚拟化操作方法 |
CN103136057A (zh) * | 2011-11-22 | 2013-06-05 | 中兴通讯股份有限公司 | 虚拟驱动的交互方法及装置 |
EP2680129A3 (en) * | 2012-06-29 | 2017-01-11 | LG Electronics, Inc. | Mobile terminal and method of controlling the same |
CN104038813A (zh) * | 2014-06-20 | 2014-09-10 | 深圳市九洲电器有限公司 | 一种多屏互动方法及系统 |
CN105334821A (zh) * | 2015-10-27 | 2016-02-17 | 深圳前海探鹿科技有限公司 | 一种车载多屏显示双向通讯装置及智能机车 |
CN105677315A (zh) * | 2015-12-28 | 2016-06-15 | 北京元心科技有限公司 | 多操作系统的界面显示方法及智能终端 |
CN206348723U (zh) * | 2017-01-09 | 2017-07-21 | 杭州冰特科技股份有限公司 | 一种多屏台式计算机 |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112579014A (zh) * | 2019-09-27 | 2021-03-30 | 宝能汽车集团有限公司 | 基于Hypervisor的多屏显示方法、系统以及车辆、存储介质 |
CN112804410A (zh) * | 2019-11-14 | 2021-05-14 | 西安诺瓦星云科技股份有限公司 | 多显示屏同步显示方法及装置、视频处理设备和存储介质 |
CN111114320A (zh) * | 2019-12-27 | 2020-05-08 | 深圳市众鸿科技股份有限公司 | 一种车载智能座舱共享显示方法及系统 |
CN111240626A (zh) * | 2020-01-09 | 2020-06-05 | 中瓴智行(成都)科技有限公司 | 一种基于Hypervisor智能座舱操作系统双屏互动的方法和系统 |
CN112218140A (zh) * | 2020-09-02 | 2021-01-12 | 中国第一汽车股份有限公司 | 视频同步播放方法、装置、系统和存储介质 |
CN113674133B (zh) * | 2021-07-27 | 2023-09-05 | 阿里巴巴新加坡控股有限公司 | Gpu集群共享显存系统、方法、装置及设备 |
CN113674133A (zh) * | 2021-07-27 | 2021-11-19 | 阿里巴巴新加坡控股有限公司 | Gpu集群共享显存系统、方法、装置及设备 |
CN113891146A (zh) * | 2021-09-23 | 2022-01-04 | 中汽创智科技有限公司 | 一种多屏互动系统、方法、驾驶设备及存储介质 |
CN113891146B (zh) * | 2021-09-23 | 2023-08-22 | 中汽创智科技有限公司 | 一种多屏互动系统、方法、驾驶设备及存储介质 |
CN114489543A (zh) * | 2022-01-25 | 2022-05-13 | 广州小鹏汽车科技有限公司 | 智能座舱的多屏幕处理方法、装置、芯片、车辆及介质 |
CN115857860A (zh) * | 2023-03-02 | 2023-03-28 | 麒麟软件有限公司 | Wayland合成器中的镜像屏优化方法 |
CN116301698A (zh) * | 2023-05-16 | 2023-06-23 | 佳瑛科技有限公司 | 一种基于多屏互动的文档共享操作显示方法、装置及系统 |
CN116301698B (zh) * | 2023-05-16 | 2023-08-22 | 佳瑛科技有限公司 | 一种基于多屏互动的文档共享操作显示方法、装置及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN109343929B (zh) | 2021-06-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109343929A (zh) | 一种基于虚拟化共享显存的多屏互动方法和系统 | |
US11595252B2 (en) | Composable edge device platforms | |
US9063793B2 (en) | Virtual server and virtual machine management method for supporting zero client by providing host interfaces from classified resource pools through emulation or direct connection modes | |
US8700946B2 (en) | Dynamic resource allocation in recover to cloud sandbox | |
US9225661B1 (en) | Remote console access in a scalable cloud computing environment | |
Doherty | SDN and NFV simplified: a visual guide to understanding software defined networks and network function virtualization | |
CN111556047B (zh) | 一种私有云环境下安全服务的部署方法 | |
CN105897946A (zh) | 一种访问地址的获取方法及系统 | |
CN105979007A (zh) | 加速资源处理方法、装置及网络功能虚拟化系统 | |
CN103595801B (zh) | 一种云计算系统及其虚拟机实时监控方法 | |
CN106790713B (zh) | 云计算环境下的跨数据中心虚拟机迁移方法 | |
CN112398687B (zh) | 云计算网络的配置方法、云计算网络系统以及存储介质 | |
CN103414712A (zh) | 一种分布式虚拟桌面管理系统和方法 | |
CN105635311A (zh) | 一种云管理平台中资源池信息同步的方法 | |
KR20150109692A (ko) | 가상 머신 이미지 파일을 제공하는 방법 및 그 장치 | |
CN105760210A (zh) | 一种voi系统和vdi系统的融合使用方法及系统 | |
CN102929769A (zh) | 一种基于代理服务的虚拟机内部数据采集方法 | |
CN108390956A (zh) | 一种为虚拟机配置互联网协议ip地址的方法和系统 | |
CN103501295B (zh) | 一种基于虚拟机迁移的远程访问方法和设备 | |
US20170371946A1 (en) | Replication groups for content libraries | |
CN112600903A (zh) | 一种弹性虚拟网卡迁移方法 | |
Chang et al. | Architecture design of datacenter for cloud english education platform | |
CN106850695B (zh) | 一种云计算环境下异地异构虚拟化管理方法、装置及系统 | |
CN110753069B (zh) | 云桌面离线管理的方法、设备和存储介质 | |
CN108063779A (zh) | 一种云存储和本地存储实现同步的方法和系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |