虚拟桌面显示的实现方法和系统的制作方法

文档序号:8342818阅读:428来源:国知局
虚拟桌面显示的实现方法和系统的制作方法
【技术领域】
[0001]本发明涉及通讯领域,尤其涉及虚拟桌面显示的实现方法和系统。
【背景技术】
[0002]虚拟桌面是云计算技术的一个典型应用。它能够为用户提供远程的计算机桌面服务,用户桌面机所需要的操作系统和应用软件运行在数据中心服务器,用户的操作行为采用桌面显示协议将操作系统桌面视图以图像的方式传送到用户终端设备上。
[0003]桌面传输协议是核心,桌面传输协议的好坏直接决定了终端用户的云桌面用户体验,用户体验一般由两个因素决定:虚拟桌面的响应速度和网络带宽占用情况,而响应速度和网络带宽占用,决定于虚拟桌面获取,编码,传输所采用的算法和网络协议。
[0004]目前主流的桌面传输协议有三类:
[0005]一类以VNC(Virtual Network Computing,虚拟网络计算机)为代表,虚拟机屏幕数据的获取和编码以软件方式实现,所有计算都由CPU完成。在虚拟化环境下,CPU是非常宝贵的计算资源,用CPU处理图像获取,比较与编码,计算量巨大,非常耗费CPU,势必造成虚拟机内部可用的计算资源降低,用户体验较慢,另外,为了节省CPU资源,虚拟桌面的图像编码一般采用较少CPU资源的算法,如BMP或JPEG,这两数据压缩比率较低,造成在网络上传输的数据量大,带宽占用高。
[0006]第二类以Citrix 的 ICA(Independent Computing Architecture,独立计算结构)协议为代表,虚拟桌面的编码和数据压缩部分或全部由硬件实现,这样就将CPU从图形编解码中解放出来,由于数据编码用硬件实现,可以选用数据压缩率高的编码算法,这样网络带宽占用率可以显著的降低。微软的RDP(Remote Display Protocol,远程显示协议)协议、增强实现RemoteFX、VMWare的PCOIP协议属于这种类型。
[0007]第三类介于以上两种之间,屏幕获取和编码由软件实现,但是对软件做了优化,采用了优秀的图像及视频获取启发算法,对虚拟桌面尽量在源头上传输变化的数据,这样就不用传输整幅图片,尽量节省网络传输带宽,另外多采用Cache机制,将桌面数据划成小块放入cache中,尽量不传输没有变化的数据,也可以在一定程度上降低对图形的处理。本质上这类协议还是用CPU解码,但从技术上尽量优化,这类协议以SPICE(Simple Protocolfor Independent Computing Environment,简单协议独立计算环境)为代表。
[0008]从效果上来看,第二类效果最好,特别是ICA协议,虚拟机图形和视频应用,效果都不错。第三类次之,第一类效果最差。但第二类协议的核心技术基本上被各大虚拟化厂商所垄断,外界无从知道其实现细节。因此,传统桌面传输协议中存在的虚拟桌面数据传输响应速度慢以及网络带宽占用高,是一个亟待解决的问题。

【发明内容】

[0009]本发明的主要目的在于提供一种虚拟桌面显示的实现方法和系统,旨在解决传统桌面传输协议中存在的虚拟桌面数据传输响应速度慢以及网络带宽占用高的问题。
[0010]为实现上述目的,本发明提供一种虚拟桌面显示的实现方法,所述虚拟桌面显示方法包括步骤:
[0011]虚拟机利用在宿主机中共享的图形处理器GPU,截取虚拟桌面上的屏幕数据,并对截取的屏幕数据进行编码;
[0012]宿主机对编码的屏幕数据进行相应的分析处理;
[0013]协议客户端对分析处理后的屏幕数据解码后进行显示。
[0014]优选地,所述虚拟机利用在宿主机中共享的GPU,截取虚拟桌面上的屏幕数据,并对截取的屏幕数据进行编码的步骤包括:
[0015]按照设定的频率定时截取虚拟桌面上的屏幕数据;
[0016]判断当前帧的屏幕数据与上一帧的屏幕数据是否发生变化,若有变化,则传输当前帧的屏幕数据中变化的增量数据;若无变化,则只传输当前帧的屏幕数据中的更新消息;
[0017]将判断后的待传输的屏幕数据编码成H264格式;
[0018]设置外设部件MEMPCI驱动模式,将编码后的屏幕数据通过MEMPCI驱动的读写接口发送给宿主机。
[0019]优选地,所述宿主机对编码的屏幕数据进行相应的分析处理的步骤包括:
[0020]MEMPCI设备接收从虚拟机发送过来的编码后的屏幕数据,并将接收的屏幕数据保存至缓存中;
[0021]协议服务器读取缓存中的屏幕数据,按预先配置的协议规则对缓存中的屏幕数据打包处理后发送给协议客户端。
[0022]优选地,所述宿主机的协议服务器读取缓存中的屏幕数据,按预先配置的协议规则对缓存中的屏幕数据打包处理后发送给协议客户端的步骤包括:
[0023]设置虚拟桌面数据队列和当前数据缓冲区;
[0024]对读取的屏幕数据进行运算;
[0025]将运算后的屏幕数据加入虚拟桌面数据队列并更新到当前数据缓冲区中;
[0026]对运算后的屏幕数据添加帧索引和时间戳,并打包发送给协议客户端。
[0027]优选地,所述屏幕数据包括原始数据和增量数据,所述对读取的屏幕数据进行运算的步骤包括:
[0028]判断读获的屏幕数据的类型;
[0029]若是原始数据,则按FIFO方式加入虚拟桌面数据队列中;若是增量数据,则根据增量数据的当前帧数据和上一帧数据,通过运算后还原成一帧数据。
[0030]为了解决上述的技术问题,本发明进一步提供一种虚拟桌面显示的实现系统,包括虚拟机、宿主机和协议客户端,其中,
[0031]所述虚拟机,用于利用在宿主机中共享的GPU,截取虚拟桌面上的屏幕数据,并对截取的屏幕数据进行编码;
[0032]所述宿主机,用于对编码的屏幕数据进行相应的分析处理;
[0033]所述协议客户端,用于对分析处理后的屏幕数据解码后进行显示。
[0034]优选地,所述虚拟机包括:
[0035]截取模块,用于按照设定的频率定时截取虚拟桌面上的屏幕数据;
[0036]判断模块,用于判断当前帧的屏幕数据与上一帧的屏幕数据是否发生变化,若有变化,则传输当前帧的屏幕数据中变化的增量数据;若无变化,则只传输当前帧的屏幕数据中的更新消息;
[0037]编码模块,用于将判断后的待传输的屏幕数据编码成H264格式;
[0038]传输模块,用于设置MEMPCI驱动模式,将编码后的屏幕数据通过MEMPCI驱动的读写接口发送给所述宿主机。
[0039]优选地,所述宿主机还包括MEMPCI设备和协议服务器,
[0040]所述MEMPCI设备,用于接收从虚拟机发送过来的编码后的屏幕数据,并将接收的屏幕数据保存至缓存中;
[0041]所述协议服务器,用于读取缓存中的屏幕数据,按预先配置的协议规则对缓存中的屏幕数据打包处理后发送给协议客户端。
[0042]优选地,所述协议服务器包括:
[0043]设置模块,用于设置虚拟桌面数据队列和当前数据缓冲区;
[0044]运算模块,用于对读取的屏幕数据进行运算;
[0045]加入模块,用于将运算后的屏幕数据加入虚拟桌面数据队列并更新到当前数据缓冲区中;
[0046]发送模块,用于对运算后的屏幕数据添加帧索引和时间戳,并打包发送给协议客户端。
[0047]优选地,所述运算模块包括:
[0048]判断单元,用于判断读获的屏幕数据的类型;
[0049]执行单元,用于若是原始数据,则按FIFO方式加入虚拟桌面数据队列中;若是增量数据,则根据增量数据的当前帧数据和上一帧数据,通过运算后还原成一帧数据。
[0050]本发明提供的虚拟桌面显示的实现方法,通过虚拟机利用在宿主机中共享的图形处理器GPU,截取虚拟桌面上的屏幕数据,并对截取的屏幕数据进行编码;宿主机对编码的屏幕数据进行相应的分析处理;协议客户端对分析处理后的屏幕数据解码后进行显示。本发明可在开源桌面云协议如SPICE或VNC上实现,作为开源桌面云协议的一个增强组件,对传统桌面传输协议进行加速,起到了提升虚拟机响应速度和节省网络带宽的双重目的。
【附图说明】
[0051]图1为本发明虚拟桌面显示的实现方法一实施例的流程示意图;
[0052]图2为图1中所述虚拟机利用在宿主机中共享的GPU,截取虚拟桌面上的屏幕数据,并对截取的屏幕数据进行编码的步骤的细化流程示意图;
[0053]图3为图1中所述宿主机对编码的屏幕数据进行相应的分析处理的步骤的细化流程不意图;
[005
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1