著录项信息
专利名称 | 移动虚拟化的基础设施以及基础平台 |
申请号 | CN200810204286.X | 申请日期 | 2008-12-10 |
法律状态 | 授权 | 申报国家 | 暂无 |
公开/公告日 | 2010-06-23 | 公开/公告号 | CN101754466A |
优先权 | 暂无 | 优先权号 | 暂无 |
主分类号 | H04W88/04 | IPC分类号 | H;0;4;W;8;8;/;0;4;;;H;0;4;W;8;0;/;1;2查看分类表>
|
申请人 | 运软网络科技(上海)有限公司;汤传斌 | 申请人地址 | 上海市长宁区江苏北路89号1301室
变更
专利地址、主体等相关变化,请及时变更,防止失效 |
权利人 | 运软网络科技(上海)有限公司,汤传斌 | 当前权利人 | 运软网络科技(上海)有限公司,汤传斌 |
发明人 | 汤传斌 |
代理机构 | 上海专利商标事务所有限公司 | 代理人 | 陈亮 |
摘要
本发明公开了一种移动虚拟化的基础设施及基础平台,在一基础平台上运行主机操作系统并在其上利用QEMU进程虚拟至少一个具有客户操作系统及内存的手机虚机,数据管理中心管理基础平台产生的手机虚机并向用户分派手机虚机。在手机客户端与服务器之间基于诸如RDP的移动终端协议进行通信。通过虚机交换机的特征,创建了一个机制可利用本发明的VMI移动虚拟化基础设施获取适配的手机屏幕以及廉价的虚机。在一个较佳实施例中,还可以套接第三方VDI开发商的产品(例如CitrixXenDesktop,LeoStream,etc.),从而获取PC虚机的屏幕。并且由于采用虚机管理方法,企业或移动电信管理员可管理成千上万虚机。
1.一种移动虚拟化的基础设施,其特征在于,包括:
基础平台,包括多个主机,其中每一主机上使用运行在主机操作系统上的QEMU进程虚拟至少一个具有客户操作系统及内存的手机虚机;
数据管理中心,管理所述基础平台产生的手机虚机并向用户分派所述手机虚机;
虚机交换机,连接所述基础平台及所述数据管理中心,所述虚机交换机根据来自手机客户端的用户请求,让用户选取手机虚机及运行在手机虚机上的手机应用;
手机客户端,运行于用户的手机上,以发送手机虚机及手机应用请求,以及基于移动终端协议的服务器,包含于所述基础平台内,用于与手机客户端交互。
2.根据权利要求1所述的移动虚拟化的基础设施,其特征在于,所述基础平台进一步包括:
使客户操作系统的QEMU进程与内核共享主机内存的装置。
3.根据权利要求1所述的移动虚拟化的基础设施,其特征在于,所述基础平台进一步包括:
用以获取子进程和/或主机的性能状态的性能代理器。
4.根据权利要求1所述的移动虚拟化的基础设施,其特征在于,所述基础平台还包括:
用以改善QEMU的软件MMU(Memory Management Unit,内存管理单元)的装置,其中页表查找到客户操作系统内存区虚拟地址所对应的物理地址,再将该物理地址当成偏移量来按位运算汇编指令中的地址。
5.根据权利要求1所述的移动虚拟化的基础设施,其特征在于,所述基础平台进一步包括:
以客户操作系统源码和平台调试工具的开放程度来处理虚拟化的I/O设备调试预处理器,其中如果完全源码开放就重新编译使能直接运行在x86平台上,如果平台调试工具开放则在QEMU上用工具进行I/O驱动调试,否则用硬件开发板及BSP辅助逆向工程。
6.根据权利要求1所述的移动虚拟化的基础设施,其特征在于,所述基于移动终端协议的服务器运行于所述基础平台的主机操作系统中。
7.根据权利要求1所述的移动虚拟化的基础设施,其特征在于,所述基于移动终端协议的服务器进一步包括:
在屏幕传送前将镜像按比例缩放、旋转、压缩以进行屏幕适配的装置;
在屏幕传送前将之辨识镜像改变、辨识文字,然后只传文字及改变方块区的装置。
8.根据权利要求1所述的移动虚拟化的基础设施,其特征在于,所述手机客户端包括:
将GPS经纬度从数据通道传给所述服务器,支持回音消除及按传收双方频宽、手机配备而从多种音频加码器谈判取得最优方法的装置。
9.根据权利要求1所述的移动虚拟化的基础设施,其特征在于,所述数据管理中心进一步包括:
虚机分派器,建立对话期、从虚机池取到最合适的虚机、分派虚机给手机客户端;
虚机池管理器,以多种服务来选取虚机池中的合适虚机、返回虚机到虚机池里、检查虚机状态,并以背景工作的不断检查虚机池状态来符合一规则引擎的规则,所述规则引擎包含用来控制虚机的生成与销毁,启动与停止的规则,其中所述规则能够由管理员以高等计算机语言创建、编辑、保存、删除;
虚机服务器管理器,管理多个主机并使用平台应用接口与所述基础平台交互;以及管理控制台,用以统一以下资源的任意组合:管理人员、组织、模板、虚机、应用、套餐和服务器。
10.根据权利要求1所述的移动虚拟化的基础设施,其特征在于,所述虚机交换机包括:
连接代理,提供手机客户端接入通道,并向手机客户端传输桌面屏幕与应用屏幕。
11.根据权利要求10所述的移动虚拟化的基础设施,其特征在于,所述连接代理的手机客户端接入进一步包括:统一认证与授权以完成kerberos安全协议与单点登录。
12.根据权利要求1所述的移动虚拟化的基础设施,其特征在于,所述虚机交换机包括:人员与团体管理数据库、应用与套餐管理数据库、以及虚机服务器与模板管理数据库。
13.根据权利要求1所述的移动虚拟化的基础设施,其特征在于,还包括用以进行模板管理的装置,其使用模板绑定以下设置信息的一种或几种:虚机与内存、CPU、应用、主机、手机操作系统。
14.根据权利要求1所述的移动虚拟化的基础设施,其特征在于,还包括VDI(Virtual Desktop Infrastructure,桌面虚拟化基础设施)套接器,其中所述虚机交换机经由所述VDI套接器套接至外部VDI产品,以让用户选取运行在外部VDI产品中的PC虚机及PC应用。
15.根据权利要求14所述的移动虚拟化的基础设施,其特征在于,所述VDI套接器进一步包括:
PC连接代理,告知外部VDI产品用户登录后所取得的虚机要运行什么应用,等待PC应用代理激活了该应用后,再通知手机客户端准备用移动终端协议接收应用屏幕;
PC应用代理,预先安装在外部VDI产品的虚机上,当虚机被启动,应用代理自己被激活,再激活所指定的PC应用,然后告诉PC连接代理应用成功与否;若成功,则将应用屏幕传至手机客户端;当手机客户端断开,PC应用代理就关闭应用。
16.一种移动虚拟化的基础平台,包括:
多个主机,其中每一主机包括:
运行在主机操作系统上的至少一QEMU模拟器,以虚拟至少一个具有客户操作系统及内存的手机虚机;
使客户操作系统的QEMU进程与内核共享主机内存的装置;
获取子进程和/或主机的性能状态的性能代理器;
基于移动终端协议的服务器,用于与手机客户端交互。
17.根据权利要求16所述的移动虚拟化的基础平台,其特征在于,还包括:
用以改善QEMU的软件MMU的装置,其中页表查找到客户操作系统内存区虚拟地址所对应的物理地址,再将该物理地址当成偏移量来按位运算汇编指令中的地址。
18.根据权利要求16所述的移动虚拟化的基础平台,其特征在于,还包括:
以客户操作系统源码和平台调试工具的开放程度来处理虚拟化的I/O设备调试预处理器,其中如果完全源码开放就重新编译使能直接运行在x86平台上,如果平台调试工具开放则在QEMU上用工具进行I/O驱动调试,否则用硬件开发板及BSP辅助逆向工程。
移动虚拟化的基础设施以及基础平台\n技术领域\n[0001] 本发明涉及一种移动虚拟化的基础设施,该移动虚拟化的基础设施涉及手机用户如何获取在机房里的虚机(包括手机虚机及PC虚机)及其上应用的屏幕,尤其是手机虚机如何经由模拟器QEMU在机房服务器上产生及如何运用虚机池来管理大量虚机。\n背景技术\n[0002] 随着计算机和互联网技术的进步,出现了个人电脑操作系统虚拟化的趋势,即个人电脑的操作系统不是真实地在本地运行,而是集中在一个可虚拟大量操作系统的远端机房运行,再将操作系统的界面通过网络发送到各个终端。在个人电脑操作系统虚拟化的应用领域中有所谓桌面虚拟化基础设施(Virtual Desktop Infrastructure)的技术,简称为VDI。VDI是一款连接哑终端和虚拟机的管理软件。通过该管理软件能掌控在机房里大量的虚机所形成的虚机池,而利用RDP把各虚拟机的桌面传到哑终端上。VMWare公司的ESXi、思杰公司的Xen、和微软的Hyper-V都可用做VDI的基础虚拟技术。\n[0003] 而另一方面,当今高端的智能手机已经越来越像个人电脑(PC)了,例如黑莓或苹果iphone都可浏览互联网、检查电子邮件、听音乐、看电影、照相、导航、或者就是打电话。\n手机性能需求的不断提升,导致手机制作成本一直居高不下,因此近年来提出了移动虚拟化(virtual mobile)的概念,即在机房里用固网资源虚拟大量虚机,再将屏幕传输至手机终端。\n[0004] QEMU是一款软件,能模拟多种CPU主板,而QEMU本身运行于Linux操作系统之上。\n例如手机操作系统如果运行在模拟ARM主板的QEMU上,则QEMU就可以将运行在ARM上的手机操作系统转换为运行在英特尔CPU的服务器上,这是因为Linux可以运行在英特尔CPU的服务器上。\n[0005] MMU是内存管理单元(Memory Management Unit)的简称,负责将虚拟内存地址翻译为物理内存地址。\n[0006] Kerboros是一种安全协议,利用“单据(Ticket)”来验证各网络节点的身份,特别是客户端和服务器的身份,因而形成两者之间的互信。该协议是基于美国麻省理工学院提出的对称式密钥加密法。\n[0007] 与传统的手机技术相比,移动虚拟化的优势为:(1)将自动化扩充到任何会携带手机的人,他们可以经由屏幕传输,使用运行在机房里虚机上的PC老应用或手机新应用。\n(2)虚拟化可以增加手机安全性,例如无虞病毒攻击或手机遗失。(3)手机虚机更易适配客户端的真手机,且传屏数据量少,所需频宽低。(4)可利用到机房里大量廉价的CPU、内存、硬盘与固网资源。\n[0008] 在移动虚拟化的背景之下,提出一种可用的、高效的移动虚拟化的基础设施(Virtual Mobile infrastructure,VMI),成为本领域亟待解决的问题。\n发明内容\n[0009] 本发明的目的是提供一种移动虚拟化的基础设施,更确切地说是涉及企业或移动电信公司能将PC和/或手机虚机的屏幕传到手机上的基础设施。\n[0010] 通过虚机交换机的特征,创建了一个机制可利用本发明的VMI移动虚拟化基础设施获取适配的手机屏幕以及廉价的虚机。在一个较佳实施例中,还可以套接第三方VDI开发商的产品(例如Citrix XenDesktop,LeoStream,etc.),从而获取PC虚机的屏幕。并且由于采用虚机管理方法,企业或移动电信管理员可管理成千上万虚机。\n[0011] 为了实现上述目的,本发明采用了一种移动虚拟化的基础设施,其包括:\n[0012] 基础平台,包括多个主机,其中每一主机上使用运行在主机操作系统上的QEMU进程虚拟至少一个具有客户操作系统及内存的手机虚机;\n[0013] 数据管理中心,管理所述基础平台产生的手机虚机并向用户分派所述手机虚机;\n[0014] 虚机交换机,连接所述基础平台及所述数据管理中心,所述虚机交换机根据来自手机客户端的用户请求,让用户选取手机虚机及运行在手机虚机上的手机应用;以及[0015] 基于移动终端协议的服务器,用于与手机客户端交互。\n[0016] 在本发明的一实施例中,基础平台进一步包括:使客户操作系统的QEMU进程与内核共享主机内存的装置。\n[0017] 在本发明的一实施例中,所述基础平台进一步包括:用以获取子进程和/或主机的性能状态的性能代理器。\n[0018] 在本发明的一实施例中,所述移动虚拟化的基础设施进一步包括:用以改善QEMU的软件MMU的装置,其中页表查找到客户操作系统内存区虚拟地址所对应的物理地址,再将该物理地址当成偏移量来按位运算汇编指令中的地址。\n[0019] 在本发明的一实施例中,所述基础平台进一步包括:以客户操作系统源码和平台调试工具的开放程度来处理虚拟化的I/O设备调试预处理器,其中如果完全源码开放就重新编译使能直接运行在x86平台上,如果平台调试工具开放则在QEMU上用工具进行I/O驱动调试,否则用硬件开发板及BSP辅助逆向工程。\n[0020] 在本发明的一实施例中,所述基于移动终端协议的服务器运行于所述基础平台的主机操作系统中。\n[0021] 在本发明的一实施例中,所述基于移动终端协议的服务器进一步包括:\n[0022] 在屏幕传送前将镜像按比例缩放、旋转、压缩以进行屏幕适配的装置;\n[0023] 在屏幕传送前将之辨识镜像改变、辨识文字,然后只传文字及改变方块区的装置。\n[0024] 在本发明的一实施例中,所述手机客户端包括:将GPS经纬度从数据通道传给所述服务器,支持回音消除及按传收双方频宽、手机配备而从多种音频加码器谈判取得最优方法的装置。\n[0025] 在本发明的一实施例中,所述数据管理中心进一步包括:\n[0026] 虚机分派器,建立对话期、从虚机池取到最合适的虚机、分派虚机给手机客户端;\n[0027] 虚机池管理器,以多种服务来选取虚机池中的合适虚机、返回虚机到虚机池里、检查虚机状态,并以背景工作的不断检查虚机池状态来符合一规则引擎的规则;\n[0028] 虚机服务器管理器,管理多个主机并使用平台应用接口与所述基础平台交互;以及\n[0029] 管理控制台,用以统一以下资源的任意组合:管理人员、组织、模板、虚机、应用、套餐和服务器。\n[0030] 在本发明的一实施例中,所述规则引擎包含用来控制虚机的生成与销毁,启动与停止的规则,其中所述规则可由管理员以高等计算机语言创建、编辑、保存、删除。\n[0031] 在本发明的一实施例中,所述虚机交换机包括:连接代理,提供手机客户端接入通道,并向手机客户端传输桌面屏幕与应用屏幕。\n[0032] 在本发明的一实施例中,所述连接代理的手机客户端接入进一步包括:统一认证与授权以完成kerberos安全协议与单点登录。\n[0033] 在本发明的一实施例中,所述虚机交换机包括:人员与团体管理数据库、应用与套餐管理数据库、以及虚机服务器与模板管理数据库。\n[0034] 在本发明的一实施例中,还包括用以进行模板管理的装置,其使用模板绑定以下设置信息的一种或几种:虚机与内存、CPU、应用、主机、手机操作系统。\n[0035] 在本发明的一实施例中,还包括VDI套接器,其中所述虚机交换机经由所述VDI套接器套接至外部VDI产品,以让用户选取运行在外部VDI产品中的PC虚机及PC应用。\n[0036] 在本发明的一实施例中,所述VDI套接器进一步包括:\n[0037] PC连接代理,告知外部VDI产品用户登录后所取得的虚机要运行什么应用,等待PC应用代理激活了该应用后,再通知手机客户端准备用移动终端协议接收应用屏幕;\n[0038] PC应用代理,预先安装在外部VDI产品的虚机上,当虚机被启动,应用代理自己被激活,再激活所指定的PC应用,然后告诉PC连接代理应用成功与否;若成功,则将应用屏幕传至手机客户端;当手机客户端断开,PC应用代理就关闭应用。\n[0039] 另一方面,本发明提出一种移动虚拟化的基础平台,包括:\n[0040] 多个主机,其中每一主机包括:\n[0041] 运行在主机操作系统上的至少一QEMU模拟器,以虚拟至少一个具有客户操作系统及内存的手机虚机;\n[0042] 使客户操作系统的QEMU进程与内核共享主机内存的装置;\n[0043] 获取子进程和/或主机的性能状态的性能代理器;\n[0044] 基于移动终端协议的服务器,用于与手机客户端交互。\n[0045] 在本发明的一实施例中,上述的移动虚拟化的基础平台还包括:\n[0046] 用以改善QEMU的软件MMU的装置,其中页表查找到客户操作系统内存区虚拟地址所对应的物理地址,再将该物理地址当成偏移量来按位运算汇编指令中的地址。\n[0047] 在本发明的一实施例中,上述的移动虚拟化的基础平台还包括:\n[0048] 以客户操作系统源码和平台调试工具的开放程度来处理虚拟化的I/O设备调试预处理器,其中如果完全源码开放就重新编译使能直接运行在x86平台上,如果平台调试工具开放则在QEMU上用工具进行I/O驱动调试,否则用硬件开发板及BSP辅助逆向工程。\n[0049] 本发明为企业和移动电信提供了一种在移动网上订阅应用软件的方法,该方法是在手机操作系统虚拟化的基础上,创建了移动终端协议的客户端,让用户可接入、取得虚机、运行应用、得到手机应用屏幕、因而可以运行任何手机操作系统及手机应用软件。另外,由于套接第三方VDI产品,也可在手机上运行任何PC操作系统及PC应用软件。\n[0050] 在本发明中,客户用的不是哑终端而是智能手机,通过远程桌面协议(Remote desktop protocol,RDP)或与RDP兼容的移动终端协议(Mobile Terminal protocol,MTP)来获取屏幕。屏幕不但来自于(a)PC虚机(后台与VDI一样,但附加手机屏幕适配器);且可来自于(b)机房里的手机虚机。\n附图说明\n[0051] 下面参照附图,对于熟悉本技术领域的人员而言,从对本发明方法的详细描述中,本发明的上述和其他目的、特征和优点将显而易见。\n[0052] 图1A是本发明的移动虚拟化的基础设施的系统组成框图;\n[0053] 图1B是本发明的移动虚拟化的基础设施的QVisor主机层状结构图;\n[0054] 图2是图1A中虚机交换机12的工作流程图;\n[0055] 图3是图1A中管理控制台142的流程图,也提供图1中人员与团体管理122、应用与套餐管理123、虚机服务器和模板管理124的管理界面;\n[0056] 图4是图3中步骤312模板管理的流程图;\n[0057] 图5是图1A中连接代理121的流程图;\n[0058] 图6是图5中步骤502的统一认证授权系统(UAAS)流程图;\n[0059] 图7是图1A中虚机分派器141的流程图;\n[0060] 图8是图1A中虚机池管理器143的流程图;\n[0061] 图9是图8中步骤802政策管理器的流程图;\n[0062] 图10是图1A中虚机服务器管理器145的流程图;\n[0063] 图11是图1A中QVisor应用接口146其中之“创建虚机”的流程图;\n[0064] 图12是图1A中QVisor应用接口146其中之“克隆虚机”的流程图;\n[0065] 图13是图1A中QVisor应用接口146其中之“启动虚机”的流程图;\n[0066] 图14是图1A中QVisor应用接口146其中之“停止虚机”的流程图;\n[0067] 图15是图1A中QVisor应用接口146其中之“删除虚机”的流程图;\n[0068] 图16是图1A中QVisor应用接口146其中之“取得虚机状态”的流程图;\n[0069] 图17是图1A中QVisor应用接口146其中之“取得虚机”的流程图;\n[0070] 图18是图1A中QVisor应用接口146其中之“取得虚机列表”的流程图;\n[0071] 图19是图1A中QVisor应用接口146其中之“取得运行虚机列表”的流程图;\n[0072] 图20是图1A中QVisor应用接口146其中之“取得停止虚机列表”的流程图;\n[0073] 图21是图1A中QVisor应用接口146其中之“取得虚机性能值”的流程图;\n[0074] 图22是图1B中虚机性能代理155的流程图;\n[0075] 图23是图1A中QVisor主机151的“共享QEMU和内核”部分流程图;\n[0076] 图24是图1A中QVisor主机151的“改进QEMU SoftMMU”部分流程图;\n[0077] 图25是图1A中QVisor主机151的“I/O设备调适预处理器”部分流程图;\n[0078] 图26是图1B中MTP服务器152的“适配手机屏幕”部分流程图;\n[0079] 图27是图1B中MTP服务器152的“智能传屏”部分流程图;\n[0080] 图28是图1A中MTP客户端111的“手机端音频与卫星定位数据处理器”部分流程图;\n[0081] 图29是图1B中应用代理154的流程图。\n[0082] 图30是应用启动与关闭时序图。\n具体实施方式\n[0083] 概述\n[0084] 图1A是本发明的移动虚拟化的基础设施的系统组成框图。此移动虚拟化的基础设施包括虚机交换机12、可选的第三方VDI产品13、数据管理中心14以及基础平台15(本发明中称为QVisor平台)。数据管理中心14的一个例子是申请人销售的VMI产品威宁数据中心。\n[0085] 图1A所示的系统中,手机客户端11通过虚机交换机12可以从数据管理中心14取得手机虚机的屏幕。其中,数据管理中心14会与QVisor平台15互动,而由QVisor主机\n151来提供多个手机虚机。在一个可选实施例中,手机客户端11还可以从第三方VDI的产品13取得PC虚机的屏幕。\n[0086] 虚机交换机12的作用是使应用屏幕可以从VDI的PC虚机和VMI的手机虚机两种后台传到手机客户端11上。典型的VMI设置是这样的:虚机交换机安装在一个地缘的节点上,同时掌控多个上述数据管理中心12和多个VDI产品13。这里,虚机交换机12可以让用户选择运行在VMI(手机虚机)或第三方VDI(PC虚机)管理系统之上的应用。\n[0087] 在一个例子中,VDI系统也可以和运软的专利申请“一种应用虚拟化在公网上的通用商务方法”相结合(美国专利公开号US 2008/0183641A1与中国专利公开号CN101231731A)。申请人的销售产品TRANSOD的客户端和服务器端都可运行在数据管理中心里,可以辅助应用的自动部署。\n[0088] 虚机交换机12的连接代理121负责与外部VDI产品13或VMI产品数据管理中心\n14的接入工作。连接代理121包括PC连接代理1211与手机连接代理1212。虚机交换机\n12还拥有人员与团体管理数据库122,应用与套餐管理数据库123,以及虚机服务器和模板管理数据库124。这些数据库是由数据管理中心14中的管理控制台142进行管理。虚机交换机12通过连接代理的统一认证授权系统决定用户是否有权取得所订阅应用的屏幕。虚机交换机12并能判断该应用是从第三方的VDI后台过来,还是从数据管理中心的QVisor后台过来,从而采取适当的手机屏幕适配措施。\n[0089] VDI第三方产品13是通过PC应用代理131、PC连接代理1211与VMI套接,形成“VDI套接器”。\n[0090] 数据管理中心14是手机虚机的管理系统,它包含了虚机分派器141、管理控制台\n142、虚机池管理器143、虚机性能监测器144、虚机管理服务器145和QVisor应用接口146。\n数据管理中心含有当前所有虚机的状态,能利用虚机池管理系统向QVisor获取虚机,加以分派。获取虚机时需要通过虚机服务器管理系统连接到QVisor应用接口。QVisor应用接口包含虚机的创建销毁,启动停止,虚机的获取,虚机列表的获取,活动虚机列表的获取,停止虚机列表的获取,以及性能数据接口。\n[0091] QVisor平台15是VMI的基础技术,可包含多个QVisor主机151,每个QVisor主机运行操作系统152,在操作系统上又可运行性能代理154、MTP服务器153及多个QEMU的子进程155。在QEMU上再运行某个移动操作系统156(OS),例如WinMobile,gPhone,iPhone等。当手机操作系统启动后,其上的应用代理157会自行启动。QVisor平台15的层状组织结构如图1B所示。QVisor平台执行性能监测,QEMU及内核共享,内存分页优化,输入输出设备调试的预处理的功能。\n[0092] 实现本发明的移动虚拟化的基础设施,需要MTP客户端111通过MTP协议与MTP服务器端153进行通信,其中MTP客户端是智能手机11的一个软件,而MTP的服务器153则是运行在QVisor主机151的操作系统上。MTP协议在下面将详细介绍。\n[0093] 移动终端协议(MTP)客户端安装在手机上(但如果WinMobile手机已有RDP(远程桌面)6.0客户端或iPhone手机已有Safari浏览器则不必)。该客户端上可以看见用户订阅的应用套餐。如果用户点击套餐里的应用,在虚机交换机12上存有用户专有信息以资验证,而后数据管理中心14会透过QVisor应用接口146去QVisor平台15取得虚机,这时应用代理157会激活应用并把第一个应用屏幕传到客户的手机上。\n[0094] 虚机交换机\n[0095] 图2给出了虚机交换机12的工作流程情况。虚机交换机工作流程具体包括:\n[0096] 步骤201,用户以登录请求(用户名和密码)与所订阅的应用进入虚机交换机;\n[0097] 步骤202,判断用户是否订阅了任何应用。如是,转入步骤204,否则必须先进行步骤203才能进行步骤209;\n[0098] 步骤203,在默认移动虚机上激活默认移动应用,实际是让用户得到移动虚机的操作系统桌面;\n[0099] 步骤204,判断用户所订阅的是否为PC应用。如是,转入步骤205,否则转入步骤\n207;\n[0100] 步骤205,进入PC连接代理1211,找到最佳PC虚机并将之启动;PC连接代理将在下文参照图5进一步说明;\n[0101] 步骤206,通知PC应用代理131激活PC应用,然后转入步骤209;PC应用代理将在下文参照图29进一步说明;在一例子中,如果第三方VDI产品可以套接,PC应用代理131可以用CN101231731A号专利公开的“一种应用虚拟化在公网上的通用商务方法及其迷你服务器”技术来激活并串流到PC虚机上;\n[0102] 步骤207,进入移动连接代理1212:找到最佳手机虚机并将之启动;并通知手机应用代理157在虚机上激活移动应用;移动连接代理的流程将在下文参照图5进一步说明;\n[0103] 步骤208,MTP服务器传输应用的第一屏给客户端。\n[0104] 图2开始了从用户的角度来看整个系统流程的说明。在步骤202判断用户是否订阅了任何应用的时候,必须要调用数据管理中心的人员组织、应用套餐数据库,因此下面的图3给出数据管理中心的说明。图4则是与图3有关的一个数据管理中心的功能(模板管理)。在说明的时候,插入了图3与图4这些管理员的操作,如果仍要以用户的角度来看整个系统流程,可直接跳到图5。\n[0105] 数据管理中心\n[0106] 图3给出了管理控制台142的工作流程情况。管理屏幕是实现资源管理系统(Resource management system,RMS)的一种方法。资源管理系统的概念就是统一管理人员、组织、模板、虚机、应用、套餐和服务器。在过去,微软的活动目录(Active Directory,AD)对人员管理相当风行,但游动四方的手机用户却无AD管理之必要。相反地“非AD”的轻量级电话簿接入协议(LDAP)可用来管理人员组织,甚至可实现多组织、多房客的数据库以符合电信公司的需求。VMI的管理控制台142把上述资源整合在单一系统中,而后台则用各资源数据库表来实现。流程包括:\n[0107] 步骤301,首先是管理员进入管理控制台142,该管理控制台提供一交互式界面让管理员进行操作;\n[0108] 步骤302,判断操作是否为管理人员及团体。若是,转入步骤303,否则转入步骤\n304;\n[0109] 步骤303,进行轻量级电话簿接入协议(LDAP),其中会操作虚机交换机12中的人员与团体管理数据库122;\n[0110] 步骤304,判断操作是否为管理应用及套餐。若是,转入步骤305,否则转入步骤\n306;\n[0111] 步骤305,操作虚机交换机12中的应用与套餐的数据库123;\n[0112] 步骤306,判断操作是否为管理虚机。若是,转入步骤307,否则转入步骤310;\n[0113] 步骤307,虚机服务器管理,细节见图10,其过程大致是先转入步骤308的QVisor应用接口146,再由步骤309在QVisor主机151里创建、启动、停止、删除虚机等;\n[0114] 步骤308,从步骤307而来的虚机服务器管理器的各个功能会通过网络服务(web services)的方式调用QVisor应用接口146来创建、启动、停止、删除虚机等;\n[0115] 步骤309,QVisor主机151里运行在QEMU 153上的客户操作系统会被启动或停止;\n[0116] 步骤310,判断操作是否为管理QVisor主机。若是,转入步骤311,否则转入步骤\n312;\n[0117] 步骤311,操作QVisor主机的数据库表;\n[0118] 步骤312,进行模板管理,细节见图4及下文的相关描述。\n[0119] 模板管理\n[0120] 图4是模板管理的处理流程图。模板管理的概念就是使用模板绑定了虚机与内存、CPU、应用、主机、手机操作系统等设置信息。与VDI不同的是,模板不再受限于活动目录(AD)或其他网络管理工具(例如不必顾忌AD的入域及出域)。多个虚机可以有相同模板。\n[0121] 步骤401,管理员进入模板管理;\n[0122] 步骤402,判断操作是否为建立模板。若是,转入步骤403,否则转入步骤404;\n[0123] 步骤403,从界面取得模板的名字、镜像ID(与镜像存储的路径有关)、模板类型(即不同的手机操作系统)、内存、CPU、应用、以及用户指定的那些会按模板信息来安装虚机的主机,并把这些信息在数据库模板表里建立一条模板记录;\n[0124] 步骤404,判断操作是否为查找模板。若是,转入步骤405,否则转入步骤408;\n[0125] 步骤405,判断用名字还是类型查找。若是用名字,转入步骤406,否则转入步骤\n407;\n[0126] 步骤406,用名字过滤数据库模板表;\n[0127] 步骤407,用类型查找数据库模板表;\n[0128] 步骤408,判断操作是否为更改内存及CPU。若是,转入步骤409,否则转入步骤\n412;\n[0129] 步骤409,虚机服务器管理,细节见图10及参照图10的描述,其过程大致是先转入步骤410的QVisor应用接口,再由步骤411在Qvisor主机151里更改虚机内存及CPU等;\n[0130] 步骤410,从步骤409而来的虚机服务器经理的更改虚机内存及CPU等功能会通过web services的方式调用QVisor应用接口来更改虚机内存及CPU;\n[0131] 步骤411,在QVisor主机151里更改虚机内存及CPU的设置;\n[0132] 步骤412,非法操作,报错。\n[0133] 连接代理\n[0134] 图5是连接代理(connection broker)的处理流程图。连接代理有两种,PC连接代理与手机连接代理。这里的流程图在观念上并无不同。但PC连接代理由于要接通各种第三方VDI产品,所以可能有不一样的需求。一般而言,移动连接代理由于手机应用启动快,所以等待后台应用屏幕不是太大的问题。PC连接代理1211是组成VDI套接器的一部分。\n[0135] 步骤501,首先用户以用户名/密码/应用名向服务器请求登录;\n[0136] 步骤502,判断用户是否通过UAAS认证授权,细节见图6。若是,转入步骤504,否则转入步骤503;\n[0137] 步骤503,告诉客户端显示错误信息;\n[0138] 步骤504,令虚机分派器141获取虚机IP,细节见图7;\n[0139] 步骤505,从应用列表查到应用ID;\n[0140] 步骤506,连接应用,包括:(a)告知虚机上的应用代理157用户所订阅的应用ID;\n(b)等待,直到应用启动或失败;(c)通知MTP客户端111应用已启动,准备接收应用的第一屏幕,或告以启动失败报错。\n[0141] 图6是统一认证授权系统(Unified Authentication and Authorization System,UAAS)的处理流程图。UAAS用来执行kerberos安全通讯协议以及单点登陆(Single Sign-On,SSO)。Kerberos主要用于计算机网络的身份鉴别(Authentication),其特点是用户只需输入一次身份验证信息就可以凭借此验证获得的票据(ticket-granting ticket,TGT)访问多个服务,即SSO。由于在每个客户端Client和服务Service之间建立了共享密钥,使得该协议具有相当的安全性。\n[0142] 步骤601,用户向服务器请求虚机;\n[0143] 步骤602,电信服务器得知用户没有票据于是向UAAS服务器询问客户公司代理服务器的URL;\n[0144] 步骤603,UAAS服务器告知客户公司代理服务器的URL(Uniform Resource Locator,统一资源位置);\n[0145] 步骤604,电信服务器要用户把UAAS代理服务器重定向为用户公司代理服务器的URL;\n[0146] 步骤605,用户提交他的授权的凭证(credential);\n[0147] 步骤606,UAAS代理服务器处理用户公司的授权;\n[0148] 步骤607,公司(即LDAP的域组件Domain Component,DC)传回用户的票据TGT;\nLDAP是轻量级电话簿接入协议的缩写。\n[0149] 步骤608,UAAS代理服务器将用户ID和TGT传到UAAS服务器以完成授权;\n[0150] 步骤609,UAAS服务器传回代理服务器的PGT;\n[0151] 步骤610,UAAS代理服务器传回用户的TGT和PGT;\n[0152] 步骤611,用户提交PGT给电信服务器;\n[0153] 步骤612,电信服务器传回虚机的RDP URL;\n[0154] 步骤613,用户提交TGT并且在虚机上登录。\n[0155] 虚机管理和分派\n[0156] 图7是虚机分派器的处理流程图。虚机分派器141建立对话期(session),指派虚机池管理器143取得最适合的虚机,并分派虚机给用户。流程如下:\n[0157] 步骤701,连接代理121把已认证授权了的用户送到虚机分派器141;\n[0158] 步骤702,虚机分派器141为用户建立一个对话期;\n[0159] 步骤703,判断所请求的虚机是静态或动态虚机。若是静态虚机,转入步骤704,否则转入步骤705;\n[0160] 步骤704,取得已指定给用户的静态虚机信息;\n[0161] 步骤705,从虚机池取到最合适的虚机,细节见图8;\n[0162] 步骤706,分派虚机给用户(虚机启动后,一个应用代理(如图1A)会在这个虚机上自动激活)。\n[0163] 图8给出虚机池管理器的处理流程图。由图可见,流程分为两部分:其一是不断循环的背景工作(background Worker),检查控制池的大小是否合乎政策管理器的要求。另一则是提供各种服务(Services)给虚机分派器取得虚机、返回虚机、检查虚机状态、检查池的大小。能这样做是因为手机虚机可以迅速从硬盘启动,所以在背景工作的循环里不会有长时间的等待。不像在VDI里的PC虚机,由于尺寸过大,其启动常需管理员手动处理。具体流程如下:\n[0164] 步骤801,判断虚机池管理器是否处于初始化时间。若是,转入步骤802,否则转入步骤806;\n[0165] 步骤802,启动一个背景工作线程不断检查控制池的大小;\n[0166] 步骤803,从政策管理器取到负荷平衡或节能的政策,细节见图9;\n[0167] 步骤804,判断虚机池是否符合政策。若是,转入步骤805,否则回到步骤804;\n[0168] 步骤805,新建、启动、停止或删除虚机(细节见图10)以符合政策;\n[0169] 步骤806,判断虚机池管理器的服务是否为取得虚机。若是,转入步骤807,否则转入步骤817;\n[0170] 步骤807,主机起始计数为0;\n[0171] 步骤808,模板起始计数为0;\n[0172] 步骤809,判断下个主机是否已超过范围。若是,转入步骤816,否则转入步骤810;\n[0173] 步骤810,虚机起始计数为0;\n[0174] 步骤811,判断下个模板是否已超过范围。若是,转入步骤808,否则转入步骤812;\n[0175] 步骤812,判断下个虚机是否已超过范围。若是,转入步骤810,否则转入步骤813;\n[0176] 步骤813,判断所予虚机特性是否符合所需。若是,转入步骤814,否则转入步骤\n812;\n[0177] 步骤814,已找到虚机、模板和主机,把该模板里的虚机减少一个;\n[0178] 步骤815,叫虚机管理服务器更新虚机状态;\n[0179] 步骤816,记录并报错“目前没有适当虚机”;\n[0180] 步骤817,判断虚机池管理器的服务是否为返回虚机。若是,转入步骤818,否则转入步骤819;\n[0181] 步骤818,把所予主机的模板增加一个虚机,并更新状态;\n[0182] 步骤819,判断虚机池管理器的服务是否为检查虚机状态。若是,转入步骤820,否则转入步骤821;\n[0183] 步骤820,虚机池检查员回报某个虚机状态;\n[0184] 步骤821,判断虚机池管理器的服务是否为检查虚机池。若是,转入步骤822,否则转入步骤823;\n[0185] 步骤822,虚机池检查员回报当前池的虚机数;\n[0186] 步骤823,非法服务,报错。\n[0187] 图9给出政策管理器(规则引擎)的处理流程图。虚机池政策就是由规则引擎来产生,而规则是程序员、客服人员或网管人员用高等语言(如Groovy)编写而成。\n[0188] 步骤901,进入规则引擎;\n[0189] 步骤902,判断操作是否为创建规则。若是,转入步骤903,否则转入步骤905;\n[0190] 步骤903,展示编辑屏幕;\n[0191] 步骤904,保存规则;\n[0192] 步骤905,判断操作是否为导入(load)规则。若是,转入步骤906,否则转入步骤\n908;\n[0193] 步骤906,展示规则列表;\n[0194] 步骤907,导入(load)规则至编辑屏幕;\n[0195] 步骤908,判断操作是否为修改规则。若是,转入步骤909,否则转入步骤913;\n[0196] 步骤909,展示规则列表;\n[0197] 步骤910,导入(load)规则至编辑屏幕;\n[0198] 步骤911,修改规则;\n[0199] 步骤912,保存规则;\n[0200] 步骤913,判断操作是否为删除规则。若是,转入步骤914,否则转入步骤917;\n[0201] 步骤914,展示规则列表;\n[0202] 步骤915,当用户选取某个规则,则高亮(Highlight)显示该规则;\n[0203] 步骤916,删除规则;\n[0204] 步骤917,非法操作,报错。\n[0205] 图10给出虚机服务器管理器的处理流程图。虽然QVisor平台会有多个主机同时运行,但管理这些主机的任务却属于虚机服务器管理器145。因此虚机服务器管理器145维护主机的数据库表,以及每个QVisor主机151所管辖的虚机,和这些虚机的状态。虚机服务器管理器提供许多虚机的操作,如下所述:\n[0206] 步骤1001,进入虚机的操作;\n[0207] 步骤1002,判断操作是否为克隆虚机。若是,转入步骤1003,否则转入步骤1006;\n[0208] 步骤1003,从数据库以虚机ID查找主机;\n[0209] 步骤1004,通过QVisor应用接口146来克隆虚机,细节见图12;\n[0210] 步骤1005,进行克隆好的虚机对用户的绑定;\n[0211] 步骤1006,判断操作是否为启动虚机。若是,转入步骤1007,否则转入步骤1011;\n[0212] 步骤1007,从数据库以虚机ID查找主机;\n[0213] 步骤1008,从数据库以用户名查找虚机;\n[0214] 步骤1009,通过QVisor应用接口146来启动虚机,细节见图13;\n[0215] 步骤1010,生成MTP传输地址;\n[0216] 步骤1011,判断操作是否为停止虚机。若是,转入步骤1012,否则转入步骤1015;\n[0217] 步骤1012,从数据库以虚机ID查找主机;\n[0218] 步骤1013,从数据库以用户名查找虚机;\n[0219] 步骤1014,通过QVisor应用接口146来停止虚机,细节见图14;\n[0220] 步骤1015,判断操作是否为销毁虚机。若是,转入步骤1016,否则转入步骤1020;\n[0221] 步骤1016,从数据库以虚机ID查找主机;\n[0222] 步骤1017,从数据库以用户名查找虚机;\n[0223] 步骤1018,删除虚机对用户的绑定;\n[0224] 步骤1019,通过QVisor应用接口146来删除虚机,细节见图15;\n[0225] 步骤1020,判断操作是否为创建虚机。若是,转入步骤1021,否则转入步骤1024;\n[0226] 步骤1021,从数据库选取可用的主机;\n[0227] 步骤1022,通过QVisor应用接口146来创建虚机,细节见图11;\n[0228] 步骤1023,进行创建好的虚机对用户的绑定;\n[0229] 步骤1024,进行其它虚机状态,虚机列表,虚机性能值的操作。\n[0230] 图11-21详述QVisor的应用接口。大部分的接口是数据库与数据结构操作,但启动虚机则是操作系统(如Linux或MS Windows)的指令去运行QEMU与客户操作系统;停止虚机则是杀掉该进程。\n[0231] 图11给出创建虚机的处理流程图。\n[0232] 步骤1101,取得镜像路径与虚机的平台名;\n[0233] 步骤1102,从数据库查找平台记录以取得内核、内存、机器和执行文件信息;\n[0234] 步骤1103,查找最大tapNumber(虚拟网卡的序列号);\n[0235] 步骤1104,生成uuid和MAC号码;UUID(Universal Unique Identifier)是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的。MAC(Media Access Control,介质访问控制)地址是烧录在Network Interface Card(网卡,NIC)里的,也叫硬件地址。\n[0236] 步骤1105,以下列参数:uuid、mac#、平台名、镜像路径、tapNumber、和虚机状态=POWERED-OFF(停止),把虚机加入数据库QVisor表中;\n[0237] 步骤1106,返回生成虚机。\n[0238] 图12给出克隆虚机的处理流程图。\n[0239] 步骤1201,如果要克隆的虚机没有uuid则报错;\n[0240] 步骤1202,如果要克隆的虚机状态为运行(running)则报错;\n[0241] 步骤1203,用镜像路径与虚机的平台名创建虚机;\n[0242] 步骤1204,如果虚机不能被创建则报错;\n[0243] 步骤1205,把创建好的虚机加入虚机列表;\n[0244] 步骤1206,返回。\n[0245] 图13给出启动虚机的处理流程图。\n[0246] 步骤1301,如果找不到虚机的uuid则报错;\n[0247] 步骤1302,如果虚机状态为运行(running)则报错;\n[0248] 步骤1303,取得执行指令名、机器名、内存大小、内核路径、镜像名、键盘鼠标驱动;\n[0249] 步骤1304,取得MAC地址、tap、国家、QEMU路径和MTP端口;\n[0250] 步骤1305,激活进程:用上述参数执行QEMU和其客户操作系统(guest OS);执行时使用Linux指令fork或Windows的createProcess()。这些指令为QEMU建立了一以个子进程,该子进程又以参数方式将客户操作系统运行起来。\n[0251] 步骤1306,把建好的虚机加入虚机列表;\n[0252] 步骤1307,返回。\n[0253] 图14给出停止虚机的处理流程图。\n[0254] 步骤1401,如果找不到虚机的uuid则报错;\n[0255] 步骤1402,如果虚机状态为停止(POWERED-OFF)则报错;\n[0256] 步骤1403,取得虚机的进程ID(PID);\n[0257] 步骤1404,杀掉PID的进程;执行时使用Linux指令kill。Kill会将QEMU连带客户操作系统一起杀死。对Windows操作系统则用指令TerminateProcess()。\n[0258] 步骤1405,等待到进程完全被杀死;\n[0259] 步骤1406,把虚机状态设为停止(POWERED-OFF);把MTP端口设为nil;\n[0260] 步骤1407,返回。\n[0261] 图15给出删除虚机的处理流程图。\n[0262] 步骤1501,如果虚机状态为运行(running)则报错;\n[0263] 步骤1502,如果找不到虚机的uuid则报错;\n[0264] 步骤1503,把所予uuid的虚机删除;\n[0265] 步骤1504,清理虚机内存空间;\n[0266] 步骤1505,从数据库QVisor表删除虚机纪录;\n[0267] 步骤1506,从虚机列表删除虚机;\n[0268] 步骤1507,返回。\n[0269] 图16给出取得虚机状态的处理流程图。\n[0270] 步骤1601,判断虚机是否在列表中。若是,转入步骤1603,否则转入步骤1602;\n[0271] 步骤1602,返回状态=N/A;\n[0272] 步骤1603,换到(switch to)找得虚机的状态。若状态是运行(RUNNING),转入步骤1604,若状态是停止(POWERED-OFF),转入步骤1605,若状态是N/A,转入步骤1606;\n[0273] 步骤1604,把虚机状态设为运行(RUNNING);\n[0274] 步骤1605,把虚机状态设为停止(POWERED-OFF);\n[0275] 步骤1606,把虚机状态设为N/A;\n[0276] 步骤1607,返回。\n[0277] 图17给出取得虚机的处理流程图。\n[0278] 步骤1701,用所予uuid把虚机从虚机列表中找到;\n[0279] 步骤1702,判断是否在列表中找到了。若是,转入步骤1703,否则转入步骤1704;\n[0280] 步骤1703,把找到的虚机改为适当Web service格式并返回;\n[0281] 步骤1704,返回空值。\n[0282] 图18给出取得虚机列表的处理流程图。\n[0283] 步骤1801,把当前指针设为内部虚机列表的头;\n[0284] 步骤1802,判断当前指针是否为空值。若是,转入步骤1806,否则转入步骤1803;\n[0285] 步骤1803,把当前虚机改为适当Web service格式;\n[0286] 步骤1804,把虚机加入连接列表;\n[0287] 步骤1805,把当前指针设为内部虚机列表的下一个,然后转入步骤1802;\n[0288] 步骤1806,返回连接列表。\n[0289] 图19给出取得运行虚机列表的处理流程图。\n[0290] 步骤1901,把当前指针设为内部虚机列表的头;\n[0291] 步骤1902,判断当前指针是否为空值。若是,转入步骤1907,否则转入步骤1903;\n[0292] 步骤1903,判断当前当前虚机状态是否为运行。若是,转入步骤1904,否则转入步骤1906;\n[0293] 步骤1904,把当前虚机改为适当Web service格式;\n[0294] 步骤1905,把虚机加入连接列表;\n[0295] 步骤1906,把当前指针设为内部虚机列表的下一个,然后转入步骤1902;\n[0296] 步骤1907,返回连接列表。\n[0297] 图20给出取得停止虚机列表的处理流程图。\n[0298] 步骤2001,把当前指针设为内部虚机列表的头;\n[0299] 步骤2002,判断当前指针是否为空值。若是,转入步骤2007,否则转入步骤2003;\n[0300] 步骤2003,判断当前当前虚机状态是否为停止。若是,转入步骤2004,否则转入步骤2006;\n[0301] 步骤2004,把当前虚机改为适当Web service格式;\n[0302] 步骤2005,把虚机加入连接列表;\n[0303] 步骤2006,把当前指针设为内部虚机列表的下一个,然后转入步骤2002;\n[0304] 步骤2007,返回连接列表。\n[0305] 图21给出取得虚机性能的处理流程图。\n[0306] 步骤2101,以请求的虚机或/和主机值进入;\n[0307] 步骤2102,判断虚机是否为运行状态。若是,转入步骤2103,否则转入步骤2106;\n[0308] 步骤2103,取得所予虚机的进程ID(PID);\n[0309] 步骤2104,用pid调用性能代理,细节见图22;\n[0310] 步骤2105,返回所予虚机或整体主机的CPU、内存、和心跳信息;\n[0311] 步骤2106,报错返回。\n[0312] QVisor平台\n[0313] 图22-25是QVisor平台的特性说明。由于本发明把手机操作系统运行在QEMU的模拟器上,所以优化QEMU或子进程来提高性能就非常重要。另一方面,本发明通过一些独特的调试工具组合,形成了手机操作系统虚拟化的预处理器(图25),具体说明如下:\n[0314] 图22给出性能代理的处理流程图。性能代理154运行在QVisor主机151的Linux操作系统平台上。手机操作系统本身可能没有相关CPU/内存使用率的系统接口。即使有,也只与模拟的CPU和内存有关,但不是物理的。因此在Linux上运行性能代理154以监测各个手机操作系统的性能以及虚机的心跳。性能代理执行Linux指令如:“free”,“top”,“vmstat”,“ps aux”以取得CPU和内存使用统计数字,还有进程状态。如果有进程没有回应,性能代理有能力将之杀死。流程如下:\n[0315] 步骤2201,以pid或主机值进入;\n[0316] 步骤2202,判断进程是否还在运行。若是,转入步骤2203,否则转入步骤2205;\n[0317] 步骤2203,执行Linux指令行ps,top,或vmstat;ps是Linux的指令,用来显示进程状态,类似于Windows的任务管理器。如果再附加参数ux可以得知运行进程的CPU与内存使用率。Top是Linux的另一指令,有类似显示进程状态的功能,可以互动方式动态显示。\nvmstat则能显示更多的内核线程、IO、虚拟内存、CPU Trap的统计信息;相对于Windows XP与Vista,进程状态则可用Windows Management Instrumentation(WMI)里的函数CollectingHighCPUUtilizationEvents()来取得。\n[0318] 步骤2204,返回所予进程或整体主机的CPU、内存、和心跳信息;\n[0319] 步骤2205,报错返回。\n[0320] 图23给出共享QEMU和内核的处理流程图。由于每个客户操作系统(guest OS)原本都有自身内核的内存及QEMU重复所占的内存,这些浪费的内存如能共享,则能将节省的内存用来给更多的客户操作系统。再加上手机操作系统不大,又可与系统数据完全分离,一个只能运行2-4个PC虚机的双核4G内存的X86主机,大约能运行60或更多个(由于共享)手机虚机。具体流程如下:\n[0321] 步骤2301,赋予QEMU和内核的物理内存;\n[0322] 步骤2302,判断能否打开内核和QEMU文件。若能,转入步骤2304,否则转入步骤\n2303;\n[0323] 步骤2303,文件打不开,报错;\n[0324] 步骤2304,利用lseek()找到两个文件的尺寸(size);并利用ffok()计算共享内存的键值(key);lseek()是C程序语言库的函数,可利用文件的位移量找出文件长度;\nftok()函数则为Linux的系统函数,用以获取key的值来创建或者打开信号量,共享内存和消息队列;\n[0325] 步骤2305,判断Key的值是否为-1。若是,转入步骤2306,否则转入步骤2307;\n[0326] 步骤2306,报ftok错;\n[0327] 步骤2307,计算Shmat()所要的参数:Loading_address=ram base+((physical_page_descriptor+start_loading_address)&target_page_mask)+kernel_QEMU_load_address;意即客户操作系统的绝对内存地址是下列三个量的总和:(1)ram的基础地址,(2)物理内存页的翻译过后的绝对地址,和(3)内核/QEMU的导入地址;\n[0328] 步骤2308,Shmget()是Linux的系统函数,用以获得或创建一个IPC共享内存区域,并返回相应的标识符。这里判断Shmget(key,size,IPC_Creat)的返回值是否EEXIST。\n若是,转入步骤2309,否则转入步骤2311;\n[0329] 步骤2309,共享内存已存在(主叫的子进程并非该主机上的第一个进程);\n[0330] 步骤2310,Shmat()是Linux的系统函数,为子进程附上(Attach)它的共享内存,这样主叫的子进程就可以利用Shmat(shm_id,loading_address)与第一个进程共享内存;\n[0331] 步骤2311,主叫的子进程是该主机上的第一个进程,返回。\n[0332] 步骤2301-2311给出的是Linux的内核共享解决方法。但如果主机是Windows XP或Vista,则要用到Win32开发环境里有关内存管理的系统服务,将客户操作系统及QEMU两个执行文件当成同一个子进程,利用CreateFileMapping()的函数取得文件的handle。此后,其它的子进程则以OpenFileMapping()的函数及第一次取得的handle来共享第一个子进程的内存。\n[0333] 图24给出改进QEMU SoftMMU的处理流程图。在QVisor的设置下,内存管理通常是用QEMU的软件内存管理单元(Memory Management Unit,MMU)。软件MMU模拟了MMU的功能,例如用软件来实施地址翻译和内存保护。当客户应用通过MMU翻译而使用到一个内存位置时,QEMU会替一个操作系统区域,按位运算(mask)列表检索的结果,把所需虚拟地址转换成物理地址。这样的改进可以使内存接入快十倍。具体流程如下:\n[0334] 步骤2401,进入QEMU SoftMMU;\n[0335] 步骤2402,判断操作是否为创建虚机。若是,转入步骤2403,否则转入步骤2404;\n[0336] 步骤2403,赋予客户操作系统(guest OS)一个内存区;\n[0337] 步骤2404,判断操作是否为客户操作系统地址翻译。若是,转入步骤2405,否则转入步骤2409;\n[0338] 步骤2405,页表查找该客户操作系统虚拟内存区的开始;\n[0339] 步骤2406,判断操作是否找到了虚拟内存区的地址。若是,转入步骤2408,否则转入步骤2407;\n[0340] 步骤2407,超出范围,报错;\n[0341] 步骤2408,把页表中与虚拟地址对应的物理地址设为Guest_OS_offset;\n[0342] 步骤2409,判断操作是否其它非区翻译操作。若是,转入步骤2411,否则转入步骤\n2410;\n[0343] 步骤2410,执行其它操作(例如内存保护);\n[0344] 步骤2411,把Guest_OS_offset“按位运算Mask”到汇编指令的目标地址(destination address)。\n[0345] 图25给出I/O设备调试预处理器的流程图。如果手机所支持的I/O device在数据中心太慢,可用数据中心的合适设备取代,例如手机SD card卡改为可挂起的硬盘,\n64M内存改为129M。如果客户操作系统的源码完全开放且以高等语言如C或java(像谷歌gPhone的Android)方式提供,则可以将之重新编译,调试I/O,使其直接运行在X86主机上而不经过QEMU模拟器,这样性能就可大幅提高。否则就需要安装业界提供的手机开发板及BSP (board support package例如Samsung 2410)做板上调试。I/O驱动与QEMU模拟的一般I/O硬件来调试的时候,通常是用WinCE或WinMobile Platform Builder,而对Android则是基本的“make”工具。调试的时候,I/O驱动与QEMU的周边设备模拟器都可能要修改。\n如果这些开发工具都不具备,则需述诸逆向工程。由此可见,这里的预处理器能适应不同开放程度的手机操作系统。具体流程如下:步骤2501,判断设备是否大小合适。若是,转入步骤2503,否则转入步骤2502;\n[0346] 步骤2502,改为数据中心的大型设备(例如SD卡改为硬盘,64M RAM改为128M等),然后进行步骤2503;\n[0347] 步骤2503,判断是否手机操作系统源码完全开放。若是,转入步骤2504,否则转入步骤2505;\n[0348] 步骤2504,将源码重新编辑,调试I/O设备,使该操作系统可直接运行在X86主机上;\n[0349] 步骤2505,安装手机板上(on-board)BSP工具和客户操作系统平台构建(platform building)工具(若有);\n[0350] 步骤2506,判断是否客户操作系统有平台构建工具。若有,转入步骤2507,否则转入步骤2508;\n[0351] 步骤2507,启动客户操作系统平台构建工具;\n[0352] 步骤2508,以逆向工程取得客户操作系统IO IRQ号码以及中断(interrupt)地址;\n[0353] 步骤2509,完成板上周边设备驱动调适过程;\n[0354] 步骤2510,调试QEMU所模拟的设备驱动;\n[0355] 步骤2511,判断是否QEMU能运行客户操作系统。若是,转入步骤2512,否则转入步骤2506;\n[0356] 步骤2512,QEMU调试完成。\n[0357] 图26,27,28是有关移动终端协议(Mobile Terminal Protocol,MTP)的部分流程图。MTP是基于VDI的终端协议技术(例如开源的VNC,微软的RDP,或思杰的ICA),并适应本发明的VMI的需求而改进。基本的终端协议技术在此不赘,但手机的需求是屏幕适配(图26),智能传屏(图27),与音频和GPS数据的传输(图28)。MTP客户端的实现较为繁复,例如WinMobile手机要用C++,J2ME手机要用java,而iPhone手机要用Safari脚本。\n[0358] 图26给出适配手机屏幕MTP服务器的部分流程图。镜像操作在服务器端进行,一方面是利用服务器的强大功能,另一方面,压缩必在传屏之先进行。\n[0359] 步骤2601,判断是PC虚机还是手机虚机。若是PC虚机,转入步骤2602,若是手机虚机,转入步骤2603;\n[0360] 步骤2602,屏幕可以是原始PC屏幕,或是申请人中国专利公开号CN101231731A所揭示技术所适配的PC屏幕,转入步骤2610;\n[0361] 步骤2603,取得手机请求http头;\n[0362] 步骤2604,判断是否数据库包含该手机的信息。若是,转入步骤2606,否则转入步骤2605;\n[0363] 步骤2605,报错并在服务器日志中记录,这样未来可以更新手机信息的数据库。目前无法适配。转入步骤2610;\n[0364] 步骤2606,在服务器的数据库里找到该款手机的屏幕的高度与宽度。比较虚机的高度与宽度;\n[0365] 步骤2607,判断是否需要旋转90度。若是,转入步骤2608,否则转入步骤2609;\n[0366] 步骤2608,changeDisplaySetting(高,宽)成为changeDisplaySetting(宽,高);\n[0367] 步骤2609,按比例缩放屏幕镜像;\n[0368] 步骤2610,将屏幕送给手机。\n[0369] 图27给出智能传屏的服务器端部分流程图。\n[0370] 步骤2701,取得屏幕镜像;\n[0371] 步骤2702,比较前一帧以识别镜像改变;\n[0372] 步骤2703,识别文本文字;\n[0373] 步骤2704,经由数据通道传送文字;\n[0374] 步骤2705,经由镜像通道传送其它方块区的改变镜像;\n[0375] 步骤2706,若是第一屏,则传送整屏;\n[0376] 步骤2707,返回。\n[0377] 图28给出音频与卫星定位(GPS)数据处理器的手机端部分流程图。至于服务器端的音频逻辑与手机端类似,在此不赘。服务器端只接收GPS数据。\n[0378] 步骤2801,判断是否卫星定位或音频数据。若是卫星定位数据,转入步骤2802,若是音频数据转入步骤2803;\n[0379] 步骤2802,经由数据通道传输GPS卫星定位经纬度数据,再转入步骤2808;\n[0380] 步骤2803,与服务器谈判(negotiate)音频标准(按传收双方频宽、手机配备而从多种音频加码器谈判取得最优方法);\n[0381] 步骤2804,判断是否谈判成功。若是,用协议后的标准,转入步骤2805,否则用G.722标准,再转入步骤2805;\n[0382] 步骤2805,判断是传出或传入。若是传出,转入步骤2806,若是传入,转入步骤\n2809;\n[0383] 步骤2806,用谈判后的标准来加码;\n[0384] 步骤2807,从音频通道传出加码后的音频;\n[0385] 步骤2808,经由多通道将数据传到服务器端;\n[0386] 步骤2809,从音频通道传入数据;\n[0387] 步骤2810,用谈判后的标准来解码;\n[0388] 步骤2811,消除回音。\n[0389] 图29给出应用代理的流程图。应用代理是一个运行在客户操作系统上的程序,掌控应用的启动。与连接代理相似,应用代理也有两种,PC应用代理131与移动应用代理157。\n流程图在观念上并无不同。但PC应用代理由于要接通各种第三方VDI产品,所以可能有不一样的需求。例如PC应用代理可以分别与思杰(Citrix)的XenApp,微软公司的App-V,申请人的TranSOD产品协同作业。PC应用代理是组成VDI套接器的一部分,可以通过申请人申请公开号为CN 101231731A的一种应用虚拟化在公网上的通用商务方法把PC应用虚拟化后以手机来点播。\n[0390] 步骤2901,虚机启动后,将自身初始化;\n[0391] 步骤2902,以已知虚机IP地址及用户ID,向连接代理请求应用的ID;\n[0392] 步骤2903,从连接代理收到应用的ID;\n[0393] 步骤2904,判断是否默认的应用。若是,转入步骤2905,否则转入步骤2906;\n[0394] 步骤2905,启动默认应用,呈现欢迎屏幕;\n[0395] 步骤2906,应用代理取得手机或PC应用执行文件路径并将之启动;\n[0396] 步骤2907,判断是否应用启动成功。若是,转入步骤2908,否则转入步骤2909;\n[0397] 步骤2908,通知连接代理应用已启动,连接代理再告诉MTP客户端111准备接收应用第一屏幕;\n[0398] 步骤2909,通知连接代理应用启动失败,连接代理再告诉MTP客户端111报错。\n[0399] 图30给出应用启动与关闭时序图。图30可用于解释PC应用和手机的应用。例如连接代理可看成是PC连接代理或手机连接代理;应用代理可看成是PC应用代理或手机应用代理,其余类推。如果从手机的角度来看,该时序图解释了MTP客户端111,手机连接代理1212,在QEMU里的MTP服务器153,手机虚机156,手机应用代理157之间的时序关系:\n[0400] 步骤3001,应用代理157启动连接某虚机的主机后,处于等待中;\n[0401] 步骤3002,MTP客户端111发送用户身份和应用名给手机连接代理1212;\n[0402] 步骤3003,手机连接代理1212验证用户身份后,取得该虚机,并向其主机发送应用名;\n[0403] 步骤3004,虚机的主机发送应用名给手机应用代理157;\n[0404] 步骤3005,手机应用代理157启动应用。若成功,转入3006。否则,转入3008;\n[0405] 步骤3006,应用启动成功,通知MTP服务器153传送应用界面;\n[0406] 步骤3007,MTP服务器153连接MTP客户端111成功,显示虚机上的应用界面;\n[0407] 步骤3008,应用启动失败,通知手机连接代理1212;\n[0408] 步骤3009,手机连接代理1212通知MTP客户端111应用启动失败;\n[0409] 步骤3010,客户端111断开,通知手机连接代理1212;\n[0410] 步骤3011,手机连接代理1212通知虚机的主机;\n[0411] 步骤3012,虚机的主机通知手机应用代理157;\n[0412] 步骤3013,手机应用代理157关闭应用。\n[0413] 在实际的部署环境中,完全有可能将虚机交换机12与数据管理中心14全部署于电信公司、或全部署于企业内、或将虚机交换机12部署于电信,数据管理中心14部署于企业。涉及本发明的I/O调试预处理器用于任何手机型号的操作系统虚拟化均可。\n[0414] 根据上述流程的描述可以得出,采用以上移动虚拟化的基础设施,一方面为企业和移动电信提供了一种在移动网上订阅应用软件的方法,该方法是在手机操作系统虚拟化的基础上,创建了移动终端协议的客户端,让用户可接入、取得虚机、运行应用、得到手机应用屏幕、因而可以运行任何手机操作系统及手机应用软件。另一方面,由于套接第三方VDI产品,也可在手机上运行任何PC操作系统及PC应用软件。\n[0415] 综上所述,本发明结合了手机板上调试及QEMU模拟技术,操作系统虚拟化技术和虚拟桌面的基础设施技术,为企业及电信运营商提供了一种移动虚拟化的基础设施。\n[0416] 前面提供了对较佳实施例的描述,以使本领域内的任何技术人员可使用或利用本发明。对这些实施例的各种修改对本领域内的技术人员是显而易见的,可把这里所述的总的原理应用到其他实施例而不使用创造性。因而,本发明将不限于这里所示的实施例,而应依据符合这里所揭示的原理和新特征的最宽范围。
法律信息
- 2021-11-19
未缴年费专利权终止
IPC(主分类): H04W 88/04
专利号: ZL 200810204286.X
申请日: 2008.12.10
授权公告日: 2012.09.05
- 2012-09-05
- 2010-08-18
实质审查的生效
IPC(主分类): H04W 88/04
专利申请号: 200810204286.X
申请日: 2008.12.10
- 2010-06-23
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 |
1
| |
2007-07-25
|
2007-01-29
| | |
2
| | 暂无 |
2000-03-30
| | |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |