一种基于磁盘的应用运行方法及系统与流程

文档序号:14554448阅读:150来源:国知局
一种基于磁盘的应用运行方法及系统与流程

本发明涉及信息处理技术领域,特别是涉及一种基于磁盘的应用运行方法及系统。



背景技术:

随着计算机技术的不断发展,各种应用程序的功能不断地被丰富完善如图片编辑软件(photoshop,ps)的工具栏所展现的各种功能,各种游戏软件的关卡的增加等等;以及部分应用程序为了增强视觉效果,将应用程序中的所有画面渲染成3d的效果,例如3d游戏,虚拟现实等应用对各种计算资源的占用要求越来越高,例如人工智能、数学计算等对cpu处理能力的要求,图形运算对图形处理器的处理能力的要求,图片、人物模型、地图模型、大规模数据库对存储空间的要求,这都使得应用程序的功能日益复杂,数据包越来越大。

由于用户在初次使用应用程序时,需要从服务器中下载应用程序完整的软件安装包和数据包,并且需要在终端上安装应用的软件安装包才能启动应用程序,这导致下载数据包和安装软件安装包的过程往往会耗费很长的时间。为了解决该问题,目前部分公司针对自身应用程序的特点将可执行程序与资源数据分开管理,并且将资源数据如:图片、模型、内置视频等,一般按照占程序数据包大小的绝大部分配额进行拆分,模块化处理,将必要的可执行程序以及资源模块数据打包,以制作微型客户端。

而在对应用程序进行拆分的过程中,往往需要(1)分析程序初步运行需要加载的可执行文件,以及可执行文件依赖的资源文件。(2)分析多个可执行文件之间的依赖关系,以及每个可执行文件同时依赖的资源,例如:某个功能接口会触发哪些资源,或者程序调用。(3)由于有的大型程序会依赖很多第三方的程序库,或者系统功能组件,例如3d图形引擎,数据传输库,图像视频压缩/解压库,本地操作系统硬件--cpu,显卡,磁盘,网络管理接口等,这些组件一般内部结构十分复杂,而且了解相关细节需要大量的背景知识;对第三方库的解析过程需要进行大量的学习工作,了解它们在运行时访问资源的方式和特点。但是常常由于对相关机制理解不完全,会导致大量兼容性和性能问题,处理起来费时费力;可见,上述对应用程序进行拆分操作较为复杂,会引入大量的额外的人力成本和时间成本。



技术实现要素:

本发明实施例所要解决的技术问题是提供一种基于磁盘的应用运行方法,一种基于磁盘的应用原始镜像包制作方法和一种基于磁盘的应用启动镜像包制作方法,以解决现有技术中为制作微型客户端对应用程序进行拆分,造成的效率低和成本高的问题。

相应的,本发明实施例针对上述方法还提供了对应的系统,分别为:一种基于磁盘的应用运行系统,一种基于磁盘的应用原始镜像包制作系统和一种基于磁盘的应用启动镜像包制作系统,用以保证上述方法的实现及应用。

本发明公开了一种基于磁盘的应用运行的方法,具体包括:预先在未安装目标应用时,获取所述目标应用的启动运行包和启动镜像包,其中,所述启动运行包用于启动所述目标应用,所述启动镜像包包括所述目标应用的启动数据;通过所述启动运行包启动所述目标应用时,建立本地缓存管理器,以及建立所述本地缓存管理器与启动镜像包的第一通路,和,建立本地缓存管理器与服务器的第二通路;在本地创建第一虚拟磁盘,建立所述本地缓存管理器与所述第一虚拟磁盘的第三通路;所述本地缓存管理器通过所述第三通路接收请求,所述请求是所述第一虚拟磁盘从所述目标应用接收的;当所述请求为读请求时,所述本地缓存管理器通过所述第一通路,从所述启动镜像包获取所述读请求的第一数据;和/或,所述本地缓存管理器通过所述第二通路,从所述服务器的原始镜像包中获取所述读请求的第一数据;其中,所述原始镜像包包括所述目标应用的启动数据和运行数据;通过所述第三通路将所述第一数据反馈给所述目标应用,以使所述目标应用运行。

对应的,本发明实施例还公开了一种基于磁盘的应用运行系统,具体包括:数据包获取模块,用于预先在未安装目标应用时,获取所述目标应用的启动运行包和启动镜像包,其中,所述启动运行包用于启动所述目标应用,所述启动镜像包包括所述目标应用的启动数据;本地缓存管理器建立模块,用于通过所述启动运行包启动所述目标应用时,建立本地缓存管理器,建立所述本地缓存管理器与启动镜像包的第一通路,和,建立本地缓存管理器与服务器的第二通路;第一虚拟磁盘建立模块,在本地创建第一虚拟磁盘,建立所述本地缓存管理器与所述第一虚拟磁盘的第三通路;第一数据请求接收模块,用于调用所述本地缓存管理器,通过所述第三通路接收数据请求,所述数据请求是所述第一虚拟磁盘从所述目标应用接收的;数据获取模块,用于当所述数据请求为读请求时,调用所述本地缓存管理器,通过所述第一通路,从所述启动镜像包获取所述读请求的第一数据;和/或,调用所述本地缓存管理器,通过所述第二通路,从所述服务器的原始镜像包中获取所述读请求的第一数据;其中,所述原始镜像包包括所述目标应用的启动数据和运行数据;数据反馈模块,用于通过所述第三通路将所述第一数据反馈给所述目标应用,以使所述目标应用运行。

本发明公开了一种基于磁盘的应用原始镜像包制作方法,具体包括:建立数据包制作管理器和创建空的原始镜像包,以及建立所述数据包制作管理器与所述原始镜像包的第八通路;在本地创建第二虚拟磁盘,建立所述第二虚拟磁盘与所述数据包制作管理器的第九通路;所述数据包制作管理器通过所述第九通路接收数据写请求,其中,所述数据写请求是所述第二虚拟磁盘从进程获取的;所述数据包制作管理器通过第八通路将所述数据写请求对应的第三数据写入所述原始镜像包中,其中,所述第三数据是目标应用的原始数据包含的数据。

对应的,本发明还公开了一种基于磁盘的应用原始镜像包制作系统,具体包括:数据包制作管理器建立模块,用于建立数据包制作管理器和创建空的原始镜像包,以及建立所述数据包制作管理器与所述原始镜像包的第八通路;第二虚拟磁盘建立模块,用于在本地创建第二虚拟磁盘,建立所述第二虚拟磁盘与所述数据包制作管理器的第九通路;第二数据请求接收模块,用于调用所述数据包制作管理器,通过所述第九通路接收数据写请求,其中,所述数据写请求是所述第二虚拟磁盘从进程获取的;原始镜像包数据写入模块,用于调用所述数据包制作管理器,通过第八通路将所述数据写请求对应的第三数据写入所述原始镜像包中,其中,所述第三数据是目标应用的原始数据包含的数据。

本发明公开了一种基于磁盘的应用启动镜像包制作方法,具体包括:在启动目标应用时,建立本地管理器,以及建立本地管理器与原始镜像包的第十通路;建立空的启动镜像包,以及建立所述本地管理器与启动镜像包的第十一通路;在本地创建第三虚拟磁盘,建立所述本地管理器与所述第三虚拟磁盘的第十二通路;所述本地管理器通过所述第十二通路接收数据请求,所述数据请求是所述第三虚拟磁盘从所述目标应用接收的;当所述请求为读请求时,所述本地管理器通过所述第十通路从所述原始镜像包中获取所述读请求对应的第四数据;以及通过所述第十一通路将所述第四数据写入所述启动镜像包中;在所述目标应用停止运行时,停止将所述第四数据写入所述启动镜像包。

对应的,本发明还公开了一种基于磁盘的应用启动镜像包制作系统,具体包括:本地管理器建立模块,用于在启动目标应用时,建立本地管理器,以及建立本地管理器与原始镜像包的第十通路;启动镜像包建立模块,建立空的所述启动镜像包,以及建立所述本地管理器与启动镜像包的第十一通路;第三虚拟磁盘建立模块,用于在本地创建第三虚拟磁盘,建立所述本地管理器与所述第三虚拟磁盘的第十二通路;第三数据请求接收模块,用于调用所述本地管理器,通过所述第十二通路接收数据请求,所述数据请求是所述第三虚拟磁盘从所述目标应用接收的;启动镜像包数据写入模块,用于当所述请求为读请求时,调用所述本地管理器,通过所述第十通路从所述原始镜像包中获取所述读请求对应的第四数据;以及通过所述第十一通路将所述第四数据写入所述启动镜像包中;在所述目标应用停止运行时,停止将所述第四数据写入所述启动镜像包。

与现有技术相比,本发明实施例包括以下优点:

本发明实施例在制作原始镜像包时,只需建立数据包制作管理器、第二虚拟磁盘,和建立空的原始镜像包,以及三者之间的通路;即可以在获取写请求时,通过对应的通路,将目标应用的原始数据包中的所有的数据,拷贝至原始镜像包中;同样,在制作启动镜像包时,也只需建立空的启动镜像包、本地管理器和第三虚拟磁盘;以及建立启动镜像包、原始镜像包、第三虚拟磁盘和本地管理器之间的通路,然后可以通过对应的通路,从原始镜像包中将目标应用的启动数据,拷贝至启动镜像包中,从而在制作原始镜像包和启动镜像包时,均免去对应用程序所依赖运行时环境的解析,以及模块化拆分工作,大大降低了人工成本和时间成本。

进一步的,本发明实施例在制作完成原始镜像包、启动镜像包和启动运行包之后,在用户初次使目标应用时,获取目标应用的启动运行包和启动镜像包;通过该启动运行包启动应用程序时,建立本地缓存管理器,以及建立本地缓存管理器、启动镜像包和原始镜像包之间的通路;建立第一虚拟磁盘,以及其与本地缓存管理器之间的通路;在本地缓存管理器接收到读请求时,可以通过对应的通路从启动镜像包,和/或,服务器的原始镜像包中获取所述读请求对应的数据,并反馈给所述目标应用,以使所述目标应用运行;从而实现在只获取启动运行包和启动镜像包的情况下,通过在目标应用运行的过程中,从启动镜像包和/或服务器的原始镜像包中获取目标应用所述需求的数据,保证目标应用的正常运行。此外,由于启动镜像包中包含的目标应用的启动数据量,远小于目标应用的原始数据量,从而大大节约了用户初次启动目标应用的时间,增强了用户的体验;另外,在目标应用长时间运行的过程中,一般情况下不会被使用到全部功能,进而只会下载部分程序数据,这样用户本地的设备存储系统的空间占用会大大降低。

附图说明

图1是本发明的一种基于磁盘的应用原始镜像包制作系统实施例的结构框图;

图2a是本发明的另一种基于磁盘的应用原始镜像包制作系统实施例的步骤流程图;

图2b是本发明的一种基于磁盘的应用原始镜像包制作系统实施例的结构框图;

图3是本发明的一种基于磁盘的应用启动镜像包制作系统实施例的结构框图;

图4a是本发明的另一种基于磁盘的应用启动镜像包制作方法实施例的步骤流程图;

图4b是本发明的一种基于磁盘的应用启动镜像包制作系统实施例的步结构框图;

图5是本发明的一种基于磁盘的应用运行系统实施例的结构框图;

图6a是本发明的另一种基于磁盘的应用运行方法实施例的步骤流程图;

图6b是本发明的一种基于磁盘的应用运行系统实施例的结构框图;

图7是本发明的另一种基于磁盘的应用运行方法实施例的步骤流程图。

具体实施方式

为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。

本发明实施例可以应用于终端的各种操作系统中,所述终端包括pc端和移动终端,操作系统包括pc端的操作系统如windows,linux,unix,以及虚拟机仿真系统等,还包括移动终端的操作系统如安卓、ios等。

本发明实施例中的目标应用是指软件安装包和数据包较大的应用程序,如3d游戏、ps等应用程序;其中,目标应用可以是pc端的应用程序,也可以是移动终端的应用程序(application,app);下面以移动终端为例,对本发明实施例的方法和系统进行说明。

本发明实施例提供了一种基于磁盘的应用运行系统,用于在获取目标应用对应的启动运行包和启动镜像包之后,在目标应用运行时,从启动镜像包和/或服务器中的原始镜像包中,获取目标应用所需求的数据,以使目标应用正常运行;因此,需要预先制作目标应用的启动镜像包和原始镜像包,以保证目标应用的正常运行;从而,本发明实施例还提供了一种基于磁盘的应用原始镜像包制作方法与系统,用于制作目标应用的原始镜像包,和一种基于磁盘的应用启动镜像包制作方法与系统,用于制作目标应用的启动镜像包。下面将对上述三种系统和对应的方法进行详细的说明。

实施例一

参照图1,示出了本发明的一种基于磁盘的应用原始镜像包制作系统实施例的结构框图,具体可以包括:数据包制作管理器建立模块101,第二虚拟磁盘建立模块102,第二数据请求接收模块103和原始镜像包数据写入模块104,其中,

数据包制作管理器建立模块101,用于建立数据包制作管理器和创建空的原始镜像包,以及建立所述数据包制作管理器与所述原始镜像包的第八通路。

第二虚拟磁盘建立模块102,用于在本地创建第二虚拟磁盘,建立所述第二虚拟磁盘与所述数据包制作管理器的第九通路。

第二数据请求接收模块103,用于调用所述数据包制作管理器,通过所述第九通路接收数据写请求,其中,所述数据写请求是所述第二虚拟磁盘从进程获取的。

原始镜像包数据写入模块104,用于调用所述数据包制作管理器,通过第八通路将所述数据写请求对应的第三数据写入所述原始镜像包中,其中,所述第三数据是目标应用的原始数据包含的数据。

本发明实施例中,第二虚拟磁盘建立模块102部署在移动终端中,数据包制作管理器建立模块101、第二数据请求接收模块103和原始镜像包数据写入模块104可以均部署在移动终端中,也可以均部署在服务器上,其中,所述移动终端中已安装目标应用和目标应用的原始数据包,且目标应用可以在所述移动终端中正常运行,如移动终端安装了游戏a的app;此外,本发明实施例提供的一种基于磁盘的应用原始镜像包制作系统,在所述移动终端中有对应的控制面板,控制面板启动后,可以通过控制对应的控制模块启动对应的进程,以控制上述四个模块。当接收用户在移动终端对所述控制面板的操作时,控制模块获取移动终端中目标应用的配置信息,其中,所述配置信息包括:目标应用名称、原始数据包大小等内容描述信息;并启动应用原始镜像包制作进程,该进程启动后,数据包制作管理器建立模块101建立数据包制作管理器;控制模块将获取的所述配置信息发送至所述数据包制作管理器,数据包制作管理器根据该配置信息,创建一个空的原始镜像包,该原始镜像包的容量大于目标应用的原始数据包的容量,如游戏a的原始数据包的容量为4gb,则游戏a的原始镜像包的容量可以为4.2gb;创建的空的原始镜像包中包括:空的镜像数据区,空的校验和数据库数据区,以及已设置好格式的配置数据区;数据包制作管理器再将配置信息添加至所述配置数据区中;然后建立原始镜像包与数据包制作管理器之间的第八通路。

然后,控制模块启动磁盘创建进程,通过第二虚拟磁盘建立模块102在该移动终端中创建第二虚拟磁盘,第二虚拟磁盘建立模块102再创建第二虚拟磁盘与数据包制作管理器之间的第九通路,并通过系统的应用程序接口(applicationprogramminginterface,api)通知操作系统对创建的虚拟磁盘进行识别,具体的,系统枚举各种文件系统--ext2,3,4\yaffs\jffs\fat\ntfs…,逐一校验磁盘设备,并尝试接管;识别虚拟磁盘设备后,为第二虚拟磁盘创建一个挂载点如/apps/app_id,此时,该第二虚拟磁盘可以被访问。

第八通路和第九通路建立完成后,控制模块启动数据拷贝进程,以将目标应用的原始数据包中的数据,包括资源文件和执行文件,拷贝至原始镜像包的空的镜像数据区中;具体的,拷贝进程启动后,向所述第二虚拟磁盘发送数据写请求,第二虚拟磁盘通过第九通路,将所述数据写请求发送至所述数据包制作管理器,第二数据请求接收模块103,则调用所述数据包制作管理器,接收所述数据写请求;原始镜像包数据写入模块104根据获取的数据写请求,调用所述数据包制作管理器将所述数据写请求对应的第三数据,写入该原始镜像包的空的镜像数据区中;直到将目标应用的原始数据全部拷贝至所述原始镜像包的镜像数据区中。

以上完成了原始镜像包的制作,若数据包制作管理器建立模块101、第二数据请求接收模块103和原始镜像包数据写入模块104均部署在服务器上,则移动终端中目标应用的原始数据包,被拷贝至服务器的原始镜像包中;若数据包制作管理器建立模块101、第二数据请求接收模块103和原始镜像包数据写入模块104均部署在移动终端上,则可以再将制作完成的原始镜像包上传至服务器中,以方便不同的用户在运行目标应用时使用。

实施例二

参照图2a和2b,在上述实施例一的基础上,对一种基于磁盘的应用原始镜像包制作系统对应的方法进行说明。

本发明实施例中的数据包制作管理器m2可以包括:第二应用管理器m2a和第二存储栈m2b,其中,第二应用管理器m2a可以包括第二配置管理器m20;第二存储栈m2b可以包括:第二磁盘模拟器m21,第二增量数据管理器m22和第二镜像缓存管理器m23,以下以上述数据包制作管理器m2包括的管理器和存储栈为例,对制作原始镜像包的方法进行详细的说明。

本发明实施例中,原始镜像包包括镜像数据区、配置数据区和校验和数据库数据区;其中,数据区的实现方式有多种,一种实现方式是为原始镜像包创建一个大文件,或者,为原始镜像包划分一块独立磁盘分区,将所述的文件,或者,独立磁盘分区划分三个区域分别实现镜像数据区、配置数据区和校验和数据库数据区,以实现相关数据存储的功能;另一种实现方式是,分别为原始镜像包中的镜像数据区、配置数据区和校验和数据库数据区,划分对应的一个独立普通文件,则对应的原始镜像包包括:镜像文件、配置文件和校验和数据库文件。

步骤201、建立数据包制作管理器和创建空的原始镜像包,以及建立所述数据包制作管理器与所述原始镜像包的第八通路。

由于原始镜像包的容量和数据的配置信息,是根据目标应用的原始数据包确定的;因此,在已安装目标应用的移动终端中,根据用户的操作,启动第二控制面板m24,第二控制模块m25通过启动配置信息获取进程,对移动终端的目标应用的原始数据包m26进行扫描,获取目标应用的原始数据包m26的配置信息,所述配置信息包括:目标应用的名称、原始数据包大小等内容描述信息。同时,第二控制模块m25还可以启动应用原始镜像包制作进程,调用数据包制作管理器建立模块101建立数据包制作管理器m2;具体的,数据包制作管理器建立模块101启动第二应用管理器m2a,以及建立第二磁盘模拟器m21、第二增量数据管理器m22和第二镜像缓存管理器m23;此时,第二应用管理器m2a中的第二配置管理器m20也被启动。数据包制作管理器m2建立完成后,第二应用管理器m2a获取目标应用对应的配置信息,并将获取的配置信息保存在第二配置管理器m20中;然后根据该配置信息,再创建一个空的原始镜像包m27,该原始镜像包m27的容量大于原始数据包m26的容量;其中,空的原始镜像包m27中包括:空的镜像数据区,空的校验和数据库数据区,以及已设置好格式的空的配置数据区;再调用第二配置管理器m20,将目标应用对应的配置信息,添加至已设置好格式的空的配置数据区中。然后,建立数据包制作管理器m2与原始镜像包m27之间的第八通路s8。

具体建立第八通路s8的过程如下:(1)第二镜像缓存管理器m23打开原始镜像包m27中的镜像数据区,并初始化配置数据区中相关的内容描述信息,其中,第二镜像缓存管理器m23是用于管理原始镜像包m27;(2)第二增量数据管理器m22创建一个文件流实例,建立与第二镜像缓存管理器m23之间的数据通路,以可以通过第二镜像缓存管理器m23打开原始镜像包m27中的镜像数据区;(3)第二磁盘模拟器m21打开第二增量数据管理器m22创建的文件流实例,建立与第二增量数据管理器m22之间的数据通路,其中,第二增量数据管理器m22将第二磁盘模拟器m21的请求直接转发至第二镜像缓存管理器m23。

步骤202、在本地创建第二虚拟磁盘,建立所述第二虚拟磁盘与所述数据包制作管理器的第九通路。

在建立完所述数据包制作管理器m2与所述原始镜像包m27的第八通路s8后,第二控制模块m25启动磁盘创建进程,通过第二虚拟磁盘建立模块102在该移动终端中创建第二虚拟磁盘m28,以及创建所述第二虚拟磁盘m28与上述第二磁盘模拟器m21的第九通路s9;然后移动终端的操作系统为第二虚拟磁盘创建挂载点,操作系统中的进程可以通过该挂载点,对第二虚拟磁盘m28进行访问。此外,操作系统中,存在与所述第二虚拟磁盘对应的第二虚拟磁盘io模拟器m29,用于识别针对第二虚拟磁盘m28的读写操作。

步骤203、所述数据包制作管理器通过所述第九通路接收数据写请求,其中,所述数据写请求是所述第二虚拟磁盘从进程获取的。

待第八通路s8和第九通路s9建立完成后,第二控制模块m25启动数据拷贝进程,以将目标应用的原始数据包m26中的数据,拷贝至原始镜像包m27的空的镜像数据区中;具体的,拷贝进程启动后,该拷贝进程向所述第二虚拟磁盘m28发送数据写请求,第二虚拟磁盘io模拟器m29接收到所述数据写请求后,通过第九通路s9,将所述数据写请求转发至所述第二磁盘模拟器m21,第二数据请求接收模块103调用所述第二磁盘模拟器m21通过第九通路s9,获取所述写请求。

步骤204、所述数据包制作管理器通过第八通路将所述数据写请求对应的第三数据写入所述原始镜像包中。

所述第二磁盘模拟器m21将所述写请求转发给第二增量数据管理器m22;原始镜像包数据写入模块104调用第二增量数据管理器m22,根据创建的文件流实例,通过第二镜像缓存管理器m23,打开原始镜像包m27中的镜像数据区,将所述写请求对应的第三数据写入所述镜像数据区中,直到将目标应用的原始数据全部拷贝至所述原始镜像包m27中,其中所述第三数据是目标应用的原始数据包含的数据。

此外,将目标应用的原始数据全部拷贝至所述原始镜像包后,第二虚拟磁盘建立模块102调用操作系统api关闭第二虚拟磁盘m28,并卸载挂载点,断开第二虚拟磁盘m28与数据包制作管理器m2之间的第九通路s9;数据包制作管理器建立模块101断开数据包制作管理器m2与所述原始镜像包m27的第八通路s8;并生成目标应用对应的启动运行包即启动运行器;其中,所述启动运行包中包含启动目标应用的最基本的文件,在终端利用所述启动运行包运行对应的应用时,所述启动运行包完成目标应用在安装过程中,基本的组件安装与配置及目标应用与终端的交互动作。同时,第二控制模块m25启动配置进程,使得数据包制作管理器建立模块101调用第二应用管理器m2a,逐块扫描原始镜像包中的镜像数据区,为镜像数据区中每个数据块生成对应的校验和,其中,数据块的大小可以是连续8kb、16kb、64kb,并将各数据块的校验和保存至校验和数据库数据区中;然后,扫描校验和数据库数据区,生成数据库的md5,将md5,以及制作原始镜像包时各数据块的特征信息如下载优先级,更新至配置数据区中。

上述提供的一种基于磁盘的应用原始镜像包制作系统及方法,可以用于制作各种大型的应用程序的原始镜像包,以减少应用程序的开发成本,例如例如3d游戏,ps等;以3d游戏为例,说明利用上述基于磁盘的应用原始镜像包制作系统,制作该3d游戏的原始镜像包的方法,具体的:移动终端上已经安装了该3d游戏,并且该移动终端中已存储支持该3d游戏运行的原始数据包,可以在该移动终端上创建3d游戏的原始镜像包,以及建立上述第八通路s8和第九通路s9;然后通过第八通路s8,将3d游戏的原始数据包中的所有的数据,包括资源文件和执行文件,均拷贝至3d游戏的原始镜像包的镜像数据区中;该原始镜像包中镜像数据区的数据包含支持3d游戏的启动与正常运行的数据;在数据拷贝完成之后,再为该3d游戏生成对应的applauncher;用户可以通过applauncher,启动该3d游戏。

本发明实施例在制作原始镜像包时,只需建立数据包制作管理器和第二虚拟磁盘,和建立空的原始镜像包;以及三者之间的通路;即可以在获取到写请求时,通过对应的通路,将目标应用的原始数据包中的所有的数据,拷贝至原始镜像包中;无需对目标应用的原始二进制代码以及数据进行分析,即可完成将目标应用的原始数据,拷贝至原始镜像包中;大大地降低了目标应用需要模块化拆分工作的开发时间与人工成本。

实施例三

目标应用的启动运行包和原始镜像包创建后,若移动终端中未存储目标应用的启动运行包,则可以从服务器中下载;若移动终端中存储了目标应用的启动运行包,则可以直接在本地获取所述启动运行包,然后通过该启动运行包启动目标应用;在目标应用的启动的过程中,目标应用所需要的数据可以从原始镜像包中获取,由于目标应用启动时需要的数据较多,且原始镜像包存储在服务器中,从而会导致用户在初次启动目标应用时需要等待较长的时间,为了减少用户初次启动目标应用时等待的时间,可以预先制作目标应用对应的启动镜像包,该启动镜像包包括目标应用的启动数据;移动终端在获取启动运行包的同时,获取该启动镜像包,则当目标应用启动时,可以直接在本地获取启动对应的数据,这大大减少了目标应用启动的时间。

参照图3,示出了本发明的一种基于磁盘的应用启动镜像包制作系统实施例的结构框图,具体可以包括:本地管理器建立模块301、启动镜像包建立模块302、第三虚拟磁盘建立模块303、第三数据请求接收模块304和启动镜像包数据写入模块305;其中,

本地管理器建立模块301,用于在启动目标应用时,建立本地管理器,以及建立本地管理器与原始镜像包的第十通路。

启动镜像包建立模块302,用于建立空的所述启动镜像包,以及建立所述本地管理器与启动镜像包的第十一通路。

第三虚拟磁盘建立模块303,用于在本地创建第三虚拟磁盘,建立所述本地管理器与所述第三虚拟磁盘的第十二通路。

第三数据请求接收模块304,用于调用所述本地管理器,通过所述第十二通路接收数据请求,所述数据请求是所述第三虚拟磁盘从所述目标应用接收的。

启动镜像包数据写入模块305,用于当所述请求为读请求时,调用所述本地管理器,通过所述第十通路从所述原始镜像包中获取所述读请求对应的第四数据;以及通过所述第十一通路将所述第四数据写入所述启动镜像包中;在所述目标应用停止运行时,停止将所述第四数据写入所述启动镜像包。

本发明实施例中,本地管理器建立模块301、启动镜像包建立模块302、第三虚拟磁盘建立模块303、第三数据请求接收模块304和启动镜像包数据写入模块305均部署在移动终端上。

本发明实施例可以通过启动运行包启动目标应用,也可以通过控制面板启动目标应用,其中控制面板和启动运行包均对应不同的控制模块;在目标应用启动时,控制模块从启动运行包中获取目标应用对应的标识如appid;并启动数据包制作进程,使得本地管理器建立模块301建立本地管理器,然后控制模块将目标应用的标识发送至本地管理器;若目标应用的原始镜像包存储在本地缓存中,则本地管理器查找与目标应用的标识对应的原始镜像包,再建立本地管理器与原始镜像包之间的第十通路;若目标应用的原始镜像包存储在服务器中,则本地管理器根据目标应用的标识,与服务器中与目标应用的标识对应的原始镜像包建立第十通路;然后启动镜像包建立模块302根据获取的配置信息创建空的启动镜像包;该启动镜像包的容量,等于原始镜像包的容量;然后将与目标应用的标识对应的校验和数据库数据区和配置信息拷贝至启动镜像包中;创建的空的启动镜像包中还包括镜像数据区和增量数据区。启动镜像包建立模块302再建立本地管理器与启动镜像包之间的第十一通路。第三虚拟磁盘建立模块303在本地创建第三虚拟磁盘,建立所述本地管理器与所述第三虚拟磁盘的第十二通路;第三数据请求接收模块304调用所述本地管理器,通过所述第十二通路接收数据请求;由于第三虚拟磁盘建立模块303和第三数据请求接收模块304的作用,与,上述第二虚拟磁盘建立模块102和第二数据请求接收模块103的作用相同,在此不再赘述。本地管理器获取所述数据请求后,当所述数据请求为读请求时,启动镜像包数据写入模块调用所述本地管理器,通过所述第十通路从所述原始镜像包中获取所述读请求对应的第四数据;以及通过所述第十一通路将所述第四数据写入所述启动镜像包中;同时,本地管理器将获取的第四数据,通过第十二通路,返回给目标应用。

在所述目标应用停止运行时,停止将所述第四数据写入所述启动镜像包中。本发明实施例中目标应用停止运行时,可以是目标应用刚刚启动时,也可以是目标应用启动后的较短时间内,以保证启动镜像包中的数据只占原始镜像包的小部分。优选的,所述启动镜像包的数据小于原始镜像包的数据的5%,如目标应用启动后30分钟;从而保证移动终端在获取启动镜像包时的时间较短。例如,在移动终端试玩20分钟的游戏a,可以玩到游戏a的第6关,则游戏a的启动镜像包中包含游戏a从启动到第6关的数据。例如,若启动镜像包存储的数据占原始镜像包的3%;如游戏a的原始镜像包为4.3gb,则游戏a的启动镜像包的容量为4.3gb,启动镜像包存储的数据占4.3gb的3%;即启动镜像包真正占用的存储空间只有4.3gb*3%=0.129gb,优选的,还可以对启动镜像包通过压缩算法进一步处理,使得启动镜像包更小。

实施例四

参照图4a和4b,在上述实施例三的基础上,对与一种基于磁盘的应用启动镜像包制作系统对应的一种基于磁盘的应用启动镜像包制作方法进行说明。

本发明实施例中的本地管理器m4可以包括:第三应用管理器m4a和第三存储栈m4b,其中,第三应用管理器可以包括第三配置管理器m40;第三存储栈m4b可以包括:第三磁盘模拟器m41,第三增量数据管理器m42、第三镜像缓存管理器m43和第三分流器m44;以下以上述本地管理器m4包括的管理器和存储栈为例,对制作启动镜像包的方法进行详细的说明。

本发明实施例中,启动镜像包包括镜像数据区、配置数据区、增量数据区和校验和数据库数据区;其中,数据区的实现方式有多种,一种实现方式是为启动镜像包创建一个大文件,或者,划分一块独立磁盘分区;在该文件或磁盘分区中划分四个区域,实现镜像数据区、配置数据区、增量数据区和校验和数据库数据区,以实现相关数据存储的功能;另一种实现方式是,分别为启动镜像包中的镜像数据区、增量数据区、配置数据区和校验和数据库数据区,划分对应的一个独立普通文件,则对应的启动镜像包包括:镜像文件、增量文件、配置文件和校验和数据库文件。

步骤401、在启动目标应用时,建立本地管理器,以及建立本地管理器与原始镜像包的第十通路。

步骤402、建立空的启动镜像包,以及建立所述本地管理器与启动镜像包的第十一通路。

本发明实施例通过目标应用的启动运行包,或,第三控制面板m45启动目标应用对应的启动程序p1时,本地管理器建立模块301建立本地管理器m4,具体的,第三控制模块m46启动第三应用管理器m4a,以及建立第三磁盘模拟器m41,第三增量数据管理器m42、第三镜像缓存管理器m43和第三分流器m44;其中,第三应用管理器m4a中的第三配置管理器m40也被启动。若目标应用的原始镜像包m47存储在本地,则建立本地管理器m4与本地的原始镜像包m47的第十通路。若目标应用的原始镜像包m47存储在服务器中,则建立本地管理器m4与服务器上原始镜像包m47的第十通路;优选的,服务器se包括配置服务器se1和数据服务器se2,建立本地管理器m4与服务器上原始镜像包m47的第十通路包括:建立第三应用管理器m4a与配置服务器se1的通路s101,以获取配置信息和校验和数据库数据区;以及建立第三分流器m44与数据服务器se2的通路s102,以获取原始镜像包中镜像数据区的数据。第三应用管理器m4a调用第三配置管理器m40将原始数据包m47中的配置信息和校验和数据库数据区,添加到空的启动镜像包中,此外,启动镜像包还包括空的增量数据区和空的镜像数据区。

然后启动镜像包建立模块302建立本地管理器m4与启动镜像包m48之间的第十一通路,即建立本地管理器m4与启动镜像包中镜像数据区的通路s111,具体的,(1)第三镜像缓存管理器m43打开启动镜像包m48中镜像数据区以及初始化内容描述信息。(2)第三分流器m44将初始化一个文件流实例,建立第三分流器m44与原始镜像包m47中镜像数据区的通路,以获取原始镜像包m47中镜像数据区的数据,并与第三镜像缓存管理器m43打开的启动镜像包m48的镜像数据区实例建立数据通路。(3)第三增量数据管理器m42将创建一个文件流实例,建立与第三分流器m44中文件流实例的通路,以及打开启动镜像包m48中增量数据区,检查初始化脏数据分布,在内存中建立描述信息。(4)第三磁盘模拟器m41打开第三增量数据管理器m42创建的文件流实例。

步骤403、在本地创建第三虚拟磁盘,建立所述本地管理器与所述第三虚拟磁盘的第十二通路。

在建立完第十一通路和第十通路后,第三控制模块m46启动磁盘创建进程,通过第三虚拟磁盘建立模块303在该移动终端中创建第三虚拟磁盘m49,以及创建所述第三虚拟磁盘m49与第三磁盘模拟器m41的第十二通路s12;然后移动终端的操作系统为第三虚拟磁盘m49创建挂载点,操作系统中的进程可以通过该挂载点,对第三虚拟磁盘进行访问。此外,操作系统中,存在与所述第三虚拟磁盘m49对应的第三虚拟磁盘io模拟器m410,用于识别针对第三虚拟磁盘m49的读写操作。

步骤404、所述本地管理器通过所述第十二通路接收数据请求,所述数据请求是所述第三虚拟磁盘从所述目标应用接收的。

目标应用运行的过程中,可以访问第三虚拟磁盘m49,以通过第三虚拟磁盘m49获取所述需要的数据;第三虚拟磁盘io模拟器m410获取到目标应用的请求后,通过第十二通路s12将所述请求转发给第三磁盘模拟器m41;第三数据请求接收模块304调用所述第三磁盘模拟器m41通过第十二通路s12,获取所述请求。

步骤405、当所述请求为读请求时,所述本地管理器通过所述第十通路从所述原始镜像包中获取所述读请求对应的第四数据;以及通过所述第十一通路将所述第四数据写入所述启动镜像包中;在所述目标应用停止运行时,停止将所述第四数据写入所述启动镜像包。

所述第三磁盘模拟器m41将所述请求转发给第三增量数据管理器m42;当所述第三增量数据管理器m42确定所述请求为读请求时,启动镜像包数据写入模块305调用第三增量数据管理器m42,根据创建的文件流实例,将所述读请求转发给所述第三分流器m44,所述第三分流器m44从原始镜像包m47的镜像数据区中,获取所述读请求对应的第四数据;获取所述第四数据后,为第四数据的数据块生成对应的校验和;并将第四数据对应的数据块的校验和,与第四数据在校验和数据库数据区中对应数据块的校验和进行对比;当两者匹配时,将所述第四数据保存在启动镜像包中,并将第四数据对应数据块的第二位标识设为第三状态;当两者不匹配时,重新从原始镜像包m47获取第四数据,并重复上述校验和匹配操作;若第四数据的校验和多次匹配不成功,可以先将第四数据保存在启动镜像包中,并将第四数据对应数据块的第二位标识设为第四状态;可待下次目标应用启动时,再次从原始镜像包中获取所述第四数据。其中,所述第二位标识是,镜像数据区中数据块的标识;所述第三状态是,所述镜像数据区中数据块的有效状态;所述第四状态是,所述镜像数据区中数据块的无效状态。

此外,第三分流器m44通过文件流实例,将数据块对应的第二位标识为第三状态的第四数据,返回至第三增量数据管理器m42,第三增量数据管理器m42将所述第四数据返回至第三磁盘模拟器m41,第三磁盘模拟器m41通过所述第十二通路s12,将所述第四数据返回至目标应用。

此外,在建立本地管理器m4与启动镜像包m48之间的通路时,还包括建立第三增量数据管理器m42与启动镜像包m48中增量数据区之间的通路s112,当所述第三增量数据管理器m42确定接收的请求为写请求时,直接将所写请求对应的数据写入启动镜像包m48的增量数据区中。

在所述目标应用运行一段时间后,停止运行时,停止将所述第四数据写入所述启动镜像包m48;此时,即完成了启动镜像包m48的制作;为了使更多的移动终端获取目标应用的启动镜像包m48,可以将制作完成的启动镜像包上传至数据服务器中。

上述提供的一种基于磁盘的应用启动镜像包制作系统及方法,可以用于为3d游戏,ps等应用程序制作启动镜像包;由于启动镜像包远小于原始镜像包,因此,可以减少用户在初次使用3d游戏、ps时等待时间;以3d游戏为例,说明利用上述基于磁盘的应用启动镜像包制作系统,制作该3d游戏的启动镜像包的方法,具体的:可以在已获取该3d游戏的applauncher的移动终端上,通过启动applauncher试玩该3d游戏;3d游戏启动后;系统将创建3d游戏的启动镜像包,然后建立上述第十通路、第十一通路和第十二通路;系统将通过第十通路从原始镜像包中获取该3d游戏所需要的数据;通过第十二通路返回该3d游戏,以保证3d游戏正常的运行;然后通过第十一通路,将从原始镜像包中获取的数据,写入启动镜像包中;待试玩20~30分钟左右,此时,3d游戏已被启动,且运行到前几个关卡;然后关闭3d游戏,此时,启动镜像包中包含了3d游戏的启动数据,和前几个关卡的数据;这样,app下次启动时,直接可以从本地启动镜像包获取启动数据以及前几个关卡的资源数据,试玩的时间以及内容可以根据3d游戏的大小或者游戏模式来确定,此外,对于不用类型的游戏,试玩的时间也可以不同,例如即时战略型游戏、人物角色扮演型游戏。

本发明实施例中在制作启动镜像包时,也只需建立空的启动镜像包、本地管理器;以及建立启动镜像包、原始镜像包和本地管理器之间的通路,然后可以通过对应的通路,从原始镜像包中将数据拷贝至启动镜像包中;由于目标应用运行的时间较短,因此,启动镜像包的数据量远小于原始镜像包的数据量,从而,移动终端在初次获取启动镜像包时,等待时间短。且在制作启动镜像包时,也可以免去对应用程序所依赖运行时环境的解析,以及模块化拆分工作,大大降低了人工成本和时间成本。

若通过同一个移动终端制作目标应用的原始镜像包和启动镜像包,则上述第二控制面板和第三控制面板为同一控制面板;若不在同一移动终端上制作,则第二控制面板与第三控制面板不同。

通过上述基于磁盘的应用原始镜像包制作系统,可以实现制作目标应用的原始镜像包和启动运行包,通过上述基于磁盘的应用启动镜像包制作系统,可以实现制作目标应用的启动镜像包。因此,在移动终端中通过启动运行包启动目标应用之前,本发明实施例提供的一种基于磁盘的应用运行系统,预先获取启动运行包和启动镜像包;在目标应用运行时,通过建立的通路,从启动镜像包和/或原始镜像包中获取目标应用运行所需的数据;以下对一种基于磁盘的应用运行系统进行说明。

实施例五

参照图5,示出了本发明的一种基于磁盘的应用运行系统实施例的结构框图,所述系统具体包括:数据包获取模块501、本地缓存管理器建立模块502、第一虚拟磁盘建立模块503、第一数据请求接收模块504、数据获取模块505和数据反馈模块506,其中,

数据包获取模块501,用于预先在未安装目标应用时,获取所述目标应用的启动运行包和启动镜像包,其中,所述启动运行包用于启动所述目标应用,所述启动镜像包包括所述目标应用的启动数据。

本地缓存管理器建立模块502,用于通过所述启动运行包启动所述目标应用时,建立本地缓存管理器,建立所述本地缓存管理器与启动镜像包的第一通路,和,建立本地缓存管理器与服务器的第二通路。

第一虚拟磁盘建立模块503,用于在本地创建第一虚拟磁盘,建立所述本地缓存管理器与所述第一虚拟磁盘的第三通路。

第一数据请求接收模块504,用于调用所述本地缓存管理器,通过所述第三通路接收数据请求,所述数据请求是所述第一虚拟磁盘从所述目标应用接收的。

数据获取模块505,用于当所述数据请求为读请求时,调用所述本地缓存管理器,通过所述第一通路,从所述启动镜像包获取所述读请求的第一数据;和/或,调用所述本地缓存管理器,通过所述第二通路,从所述服务器的原始镜像包中获取所述读请求的第一数据;其中,所述原始镜像包包括所述目标应用的启动数据和运行数据。

数据反馈模块506,用于通过所述第三通路将所述第一数据反馈给所述目标应用,以使所述目标应用运行。

本发明实施例中,数据包获取模块501、本地缓存管理器建立模块502、第一虚拟磁盘建立模块503、第一数据请求接收模块504、数据获取模块505和数据反馈模块506,均部署在移动终端上,且可以在各个不同的移动终端上部署基于磁盘的应用运行系统,即可以在各移动终端上运行目标应用。若运行目标应用的移动终端,与上述实施例三或实施例四中制作目标应用的启动镜像包的移动终端为同一个时,则本发明实施例中第一通路、第二通路和第三通路,分别与实施例三或实施例四的第十一通路、第十通路和第十二通路为同一通路,第一虚拟磁盘和第三虚拟磁盘为同一虚拟磁盘;若实施例五与实施例三的移动终端不同,则本发明实施例中第一通路、第二通路和第三通路,分别与实施例三或实施例四的第十一通路、第十通路和第十二通路不是同一通路,第一虚拟磁盘和第三虚拟磁盘都不是同一虚拟磁盘。

数据包获取模块501在预先在未安装目标应用时,可以从本地获取所述目标应用的启动运行包和启动镜像包;也可以从服务器中获取启动运行包和启动镜像包,由于目标应用的启动运行包和启动镜像包均比较小,因此,大大节约了用户的等待时间。用户在安装目标应用的启动运行包之后,可以通过启动运行包,启动目标应用程序;本地缓存管理器建立模块502在目标应用程序启动后,建立本地缓存管理器;然后调用本地缓存管理器查找与所述启动运行包对应的启动镜像包;再建立所述本地缓存管理器与启动镜像包的第一通路,和,建立本地缓存管理器与服务器的第二通路;在第一通路和第二通路建立完成后,第一虚拟磁盘建立模块503在本地创建第一虚拟磁盘,建立所述本地缓存管理器与所述第一虚拟磁盘的第三通路;第一数据请求接收模块504,用于调用所述本地缓存管理器,通过所述第三通路接收数据请求,所述数据请求是所述第一虚拟磁盘从所述目标应用接收的;这里本地缓存管理器建立模块502、第一虚拟磁盘建立模块503和第一数据请求接收模块504,分别与实施例三中本地管理器建立模块301、第三虚拟磁盘建立模块303和第三数据请求接收模块304的作用相同,在此不再赘述。数据获取模块505当所述数据请求为读请求时,调用所述本地缓存管理器,通过所述第一通路,从所述启动镜像包获取所述读请求的第一数据;或者,调用所述本地缓存管理器,通过所述第二通路,从所述服务器的原始镜像包中获取所述读请求的第一数据;或者,从启动镜像包和原始镜像包中获取所述第一数据;数据反馈模块506通过所述第三通路将所述第一数据反馈给所述目标应用,以使所述目标应用运行。

此外,可以是在目标应用初次启动时,也可以是在目标应用每次启动时,本地缓存管理器建立模块502建立本地缓存管理器,建立所述本地缓存管理器与启动镜像包的第一通路,和,建立本地缓存管理器与服务器的第二通路;以及第一虚拟磁盘建立模块503在本地创建第一虚拟磁盘,建立所述本地缓存管理器与所述第一虚拟磁盘的第三通路。

实施例六

参照图6a和6b,在上述实施例五的基础上,以下针对与一种基于磁盘的应用运行系统对应的方法进行说明。

本发明实施例中的本地缓存管理器m6可以包括:第一应用管理器m6a和第一存储栈m6b,其中,第一应用管理器m6a可以包括第一配置管理器m60;第一存储栈m6b可以包括:第一磁盘模拟器m61,第一增量数据管理器m62、第一镜像缓存管理器m63和第一分流器m64。

步骤601、预先在未安装目标应用时,获取所述目标应用的启动运行包和启动镜像包,其中,所述启动运行包用于启动所述目标应用,所述启动镜像包包括所述目标应用的启动数据。

在任一未安装目标应用的移动终端中运行目标应用,需要预先从本地获取所述目标应用的启动运行包m65和启动镜像包m68;若本地不存在所述目标应用的启动运行包m65和启动镜像包m68,则从服务器中获取启动运行包m65和启动镜像包m68,并保存在本地。获取启动运行包m65和启动镜像包m68成功后,当用户点击启动运行包m65时,移动终端直接打开启动运行包m65,完成启动目标应用所需要的基本组件的安装,以及运行对应的启动程序p2,以启动对应的目标应用。所述获取的启动镜像包m68包含的启动数据,可以是目标应用从关闭状态到完全启动状态的过程中,目标应用需要的数据;也可以是从关闭状态到完全启动状态后运行一段时间的过程中,目标应用需要的数据;这取决于上述实施例中目标应用的启动镜像包在制作时,目标应用运行的时间。

步骤602、通过所述启动运行包启动所述目标应用时,建立本地缓存管理器,以及建立所述本地缓存管理器与启动镜像包的第一通路,和,建立本地缓存管理器与服务器的第二通路。

本地缓存管理器建立模块502,在目标应用启动时,建立本地缓存管理器m6,具体的,第一控制模块m66调用建立本地缓存进程,启动第一应用管理器m6a,以及控制第一应用管理器m6a建立第一磁盘模拟器m61,第一增量数据管理器m62、第一镜像缓存管理器m63和第一分流器m64;其中,第一应用管理器m6a中的第一配置管理器m60也被启动。然后再建立本地缓存管理器m6与启动镜像包m68的第一通路,和建立本地缓存管理器m6与服务器的第二通路。

步骤603、在本地创建第一虚拟磁盘,建立所述本地缓存管理器与所述第一虚拟磁盘的第三通路。

步骤604、所述本地缓存管理器通过所述第三通路接收数据请求,所述数据请求是所述第一虚拟磁盘从所述目标应用接收的。

步骤603与步骤604,分别与上述步骤403和404相同,这里不再赘述。

步骤605、当所述数据请求为读请求时,所述本地缓存管理器通过所述第一通路,从所述启动镜像包获取所述读请求的第一数据;和/或,所述本地缓存管理器通过所述第二通路,从所述服务器的原始镜像包中获取所述读请求的第一数据;其中,所述原始镜像包包括所述目标应用的启动数据和运行数据。

在建立完第一通路和第二通路后,第一控制模块m66启动磁盘创建进程,通过第一虚拟磁盘建立模块503在该移动终端中创建第一虚拟磁盘m69,以及创建所述第一虚拟磁盘m69与第一磁盘模拟器m61的第三通路s3;然后移动终端的操作系统为第一虚拟磁盘m69创建挂载点,操作系统中的进程可以通过该挂载点,对第一虚拟磁盘进行访问。此外,操作系统中,存在与所述第一虚拟磁盘m69对应的第一虚拟磁盘io模拟器m610,用于识别针对第一虚拟磁盘m69的读写操作。

所述第一磁盘模拟器m61将所述请求转发给第一增量数据管理器m62;由第一增量数据管理器m62判断所述请求是读请求,还是写请求;当第一增量数据管理器m62确定所述请求为读请求时,则将该读请求发送给第一分流器m64;第一分流器m64接收到该读请求后,首先通过第一通路判断本地存储的启动镜像包的镜像数据区中,是否存在该读请求对应的第一数据;若存在,则判断第一数据是否是有效的;若该第一数据是有效的,则可以通过第一通路从本地启动镜像包m68中获取所述第一数据。若本地存储的启动镜像包m68中不存在第一数据,或者,所述第一数据在本地启动镜像包中的状态是无效的状态,则第一分流器可以通过第二通路从服务器的原始镜像包m67中获取所述第一数据。若本地存储的启动镜像包中存在所述第一数据中部分数据是有效的,则从启动镜像包中获取所述第一数据中的部分数据,再从服务器的原始镜像包m67中获取第一数据中其他部分的数据。

步骤606、通过所述第三通路将所述第一数据反馈给所述目标应用,以使所述目标应用运行。

第一分流器m64将获取的第一数据返回至第一增量数据管理器m62,第一增量数据管理器m62将所述第一数据,再转发给第一磁盘模拟器;第一磁盘模拟器m61通过第三通路s3返回至第一虚拟磁盘m69,第一虚拟磁盘m69将所述第一数据通过第一虚拟磁盘io模拟器m610反馈给目标应用。

本发明实施例在制作完成原始镜像包、启动镜像包和启动运行包之后,在用户初次使目标应用时,获取目标应用的启动运行包和启动镜像包;通过该启动运行包启动应用程序时,建立本地缓存管理器,以及建立本地缓存管理器、启动镜像包和原始镜像包之间的通路;在本地缓存管理器接收到读请求时,可以通过对应的通路从本地存储的启动镜像包,和/或服务器的原始镜像包中获取所述读请求对应的数据并反馈给所述目标应用,以使所述目标应用运行;从而实现在只获取启动运行包和启动镜像包的情况下,通过在目标应用运行的过程中,从启动镜像包和/或服务器的原始镜像包中获取目标应用所需求的数据,以保证目标应用的正常运行。此外,由于启动镜像包中包含的是目标应用的启动数据,远小于目标应用的原始数据包大小,从而大大节约了用户初次启动目标应用的时间,增强了用户的体验;另外,在目标应用长时间运行的过程中,一般情况下不会被使用到全部功能,进而只会下载部分程序数据,这样用户本地的设备存储系统的空间占用会大大降低。

实施例七

参照图7和6b,在上述实施例六的基础上,针对第一增量数据管理器获取到所述请求后的处理过程进行详细说明。

本发明实施例中,建立上述第一通路可以包括建立第一增量数据管理器m62与启动镜像包m68的增量数据区之间的数据通路s1a,以使第一增量数据管理器m62将数据写入启动镜像包m68的增量数据区中,和第一镜像缓存管理器m63与启动镜像包m68中镜像数据区的数据通路s1b。

步骤701、判断所述请求是否为读请求,若否,则执行步骤702;若是,则执行步骤703。

目标应用运行的过程中,会向第一虚拟磁盘m69发送数据请求,发送的数据请求可以是写请求,也可以是读请求;当所述数据请求为写请求时,为了不破坏启动镜像包m68的中的镜像数据区,第一增量数据管理器m62可以将写请求对应的第二数据写入启动镜像包m68的增量数据区中,即执行步骤702;当所述数据请求为读请求时,第一增量数据管理器m62可以将所述读请求发送至第一分流器m64,第一分流器m64执行步骤703。

步骤702、通过所述第一通路将所述写请求的第二数据写入所述增量数据区中;设置第二数据对应数据块的第一位标识为第一状态,然后执行结束的步骤。

第一增量数据管理器m62确定所述数据请求是写请求时,将所述写请求对应的数据确定为第二数据;第一增量数据管理器m62通过第一通路,从启动镜像包m68的镜像数据区中,和/或,通过第二通路,从服务器的原始镜像包中读取第二数据对应的数据块,将第二数据对应的数据块放在内存中,第一增量数据管理器m62根据所述写请求,更新所述第二数据对应的数据块中对应的数据,比如更改数据或增加数据;并当数据块更新成功时,则更新所述数据块的第一位标识为第一状态如1;当数据块更新失败时,则更新所述数据块的第一位标识为第二状态如0。然后通过通路s1a,将第二数据对应的数据块以及各数据块对应的第一位标识,写入启动镜像包m68的增量数据区中,然后执行结束的步骤;其中,第一位标识为增量数据区中数据块的标识,第一状态为第一位标识的成功状态,第二状态为第一位标识的失败状态。

当第一增量数据管理器m62确定所述请求为读请求时,将该读请求发送给所述第一分流器m64;第一分流器m64可以从本地启动镜像包m68中和/或数据服务器的原始镜像包m67中获取;其中,第一增量数据管理器m62从本地启动镜像包m68中获取第一数据,可以从启动镜像包m68的增量数据区中和/或启动镜像包m68的镜像数据区中获取,其中,启动镜像包包括:增量数据区、镜像数据区、配置数据区和校验和数据库数据区,具体的步骤如下:

步骤703、判断所述增量数据区中是否存在所述第一数据;若存在,则执行步骤704;若不存在,则执行步骤706。

第一增量数据管理器m62从启动镜像包m68中获取第一数据时,先判断启动镜像包m68的增量数据区中是否存在所述第一数据对应的数据块,当增量数据区中存在第一数据对应的数据块时,则执行步骤704;当增量数据区中不存在第一数据对应的数据块时,则执行步骤706。

步骤704、判断所述增量数据区中第一数据对应数据块的第一位标识的状态是否为第一状态,若是,则执行步骤705;若否,则执行步骤706。

当增量数据区中存在第一数据对应的数据块时,根据增量数据区中数据块对应第一位标识,确定第一数据对应的数据块是否被成功更新。当数据块的第一位标识的状态为第一状态时,确定该数据块中的数据被成功更新,执行步骤705;当数据块的第一位标识的状态为第二状态时,确定该数据块中的数据未被成功更新,执行步骤706。其中,第一数据对应的数据块可能是一个,也可能是多个;第一数据可能包括每个数据块的全部数据,也可能是每个数据块的部分数据。

步骤705、从所述增量数据区中获取所述第一数据,然后执行步骤714。

当第一位标识的状态为第一状态时,从所述增量数据区中获取所述第一数据。由于第一数据可能包括多个数据块,第一数据包括的多个数据块中的几个数据块,在增量数据区中的第一位标识为第一状态,则从增量数据区中获取这几个数据块的数据,执行步骤714;针对第一位标识的状态为第二状态的其他几个数据块,执行步骤706。

当第一位标识的状态为第二状态时,从所述镜像数据区中读取所述第一数据,具有步骤如下:

步骤706、判断所述镜像数据区中是否存在所述第一数据,当存在时,则执行步骤707,当不存在时,则执行步骤709。

第一分流器m64在从镜像数据区读取第一数据之前,需要先判断镜像数据区中是否存在所述第一数据,当存在时,则执行步骤707,当不存在时,则执行步骤709。

步骤707、判断所述第一数据对应的数据块的第二位标识的状态是否为第三状态,若是,则执行步骤708;若否,则执行步骤709。

当镜像数据区中存在第一数据对应的数据块时,需要判断第一数据对应数据块中的数据是否有效,以保证反馈至目标应用的第一数据,可以支持目标应用的正常运行。具体的,可以根据镜像数据区中数据块的第二位标识的状态,判断镜像数据区中第一数据对应的数据块是否有效;当第二位标识的状态为第三状态时,则确定对应数据块中数据有效;当第二位标识的状态为第四状态时,则确定对应数据块中数据无效;其中,第三状态为第二位标识的有效状态,第四状态为第二位标识的无效状态。

步骤708、从所述镜像数据区中获取所述第一数据,然后执行步骤714。

当数据块对应的第二位标识的状态为第三状态时,从所述镜像数据区中获取所述第一数据。由于第一数据可能包括多个数据块,第一数据包括的多个数据块中的几个数据块,在镜像数据区中的第二位标识为第三状态,则从镜像数据区中获取这几个数据块的数据,执行步骤714;针对第二位标识的状态为第四状态的其他几个数据块,执行步骤709。

步骤709、从所述服务器的原始镜像包中获取所述第一数据。

当第一分流器m64确定移动终端的本地缓存中,启动镜像包m68的增量数据区和镜像数据区中均不存在所述第一数据,或,存在部分所述第一数据,或,所述第一数据无效时,则可以从数据服务器的原始镜像包m67中获取所述第一数据。

步骤710、计算所述第一数据对应数据块的第一校验和,并在所述校验和数据库数据区中查询所述第一数据对应数据块的第二校验和。

步骤711、将所述第一校验和与第二校验和进行匹配。

由于网络的不稳定性,或者其他因素,可能导致从服务器中获取的第一数据可能是错误的,或者是不完整的;当从数据服务器的原始镜像包m67中获取到所述第一数据后,第一分流器m64需要对获取的第一数据进行校验,以判断从数据服务器中获取的第一数据是否正确;因此,计算获取的第一数据对应的数据块的第一校验和;并且在启动镜像包m68的校验和数据库数据区中查找,与所述第一数据对应的数据块的第二校验和。将第一校验和与第二校验和进行匹配,根据匹配的结果,判断从原始镜像包m67中获取的第一数据是否正确。

步骤712、判断第一校验和与第二校验和是否匹配成功,若成功,则执行步骤713;若不成功,则执行步骤709。

判断第一校验和与第二校验和是否匹配成功,若匹配成功,则可以执行步骤713,若匹配不成功,则需要执行步骤709,即再次从服务器中获取所述第一数据,若多次从服务器获取的第一数据的第一校验和,与第二校验和匹配不成功时,则返回失败的信息至目标应用,执行结束的步骤。

步骤713、将所述第一数据保存至所述镜像数据区中,并设置所述第一数据对应数据块的第二位标识为第三状态。

第一分流器m64将获取的第一数据返回至第一增量数据管理器m62之前,将第一数据保存至启动镜像包m68的镜像数据区中;并设置所述第一数据对应数据块的第二位标识为有效的状态,即第三状态。

步骤714、将所述第一数据反馈给所述目标应用。

若第一分流器m64获取的数据包括从启动镜像包m68中获取的数据,和,从原始镜像包m67中获取的数据,则将这两部分数据合并,返回至第一增量数据管理器m62;若第一分流器m64获取的数据只包括从启动镜像包m68中获取的数据,则将从启动镜像包m68中获取的数据返回至第一增量数据管理器m62;若第一分流器m64获取的数据只包括从原始镜像包m67中获取的数据,则将从原始镜像包m67中获取的数据返回至第一增量数据管理器m62。若第一增量数据管理器m62从启动镜像包m68的增量数据区中获取了数据,则将这接收第一分流器m64发送的数据和从增量数据区中获取的两部分数据合并,返回至第一磁盘模拟器m61;若第一增量数据管理器m62只从第一分流器m64中获取了数据,则直接将获取的数据发送至第一磁盘模拟器m61;若第一增量数据管理器m62只从增量数据区中获取了数据,则直接将获取的数据发送至第一磁盘模拟器m61,第一磁盘模拟器m61通过第三通路s3,将所述读请求对应的第一数据反馈给目标应用。

优选的,本发明实施例的所述服务器se可以包括配置服务器se1和数据服务器se2,其中,配置服务器se1用于存储各种不同的目标应用的配置信息,数据服务器se2用于存储不同目标应用的原始镜像包m67和启动镜像包m68以及启动运行包m65;建立本地缓存管理器m6与服务器se的第二通路包括:建立第一应用管理器m6a与配置服务器se1的第四通路s21,然后,第一应用管理器m6a根据目标应用的标识,从配置服务器se1中获取与所述目标应用的标识对应的第一配置信息和校验和数据库数据区。建立本地缓存管理器m6与服务器se的第二通路还包括:建立第一分流器m64与数据服务器se2之间的第五通路s22;具体的,第一分流器m64根据获取的第一配置信息,在数据服务器se2中查找与配置信息对应的原始镜像包m67,然后与所述原始镜像包m67进行连接。本发明实施例在建立本地缓存管理器m6与启动镜像包m68的通路之前,需要在本地缓存中查找与启动运行包m65对应的启动镜像包,具体的,第一应用管理器m6a根据启动运行包m65中目标应用的标识,在本地查找与目标应用的标识对应的启动镜像包,然后从所述启动镜像包中获取第二配置信息,将第二配置信息和从配置服务器se1中获取的第一配置信息进行对比,当两者匹配时,则将所述启动镜像包确定为目标应用的启动镜像包m68。当匹配不成功时,则可以在本地重新查找与目标应用的标识对应的启动镜像包。

本发明实施例所述第一数据、第二数据等相关数据,可以,以固定大小(8kb、16kb、64kb等)数据块集合的形式实现,也可以,以数据范围的形式实现,比如建立数据描述符记录数据起始偏移(startoffset),数据大小(size)来描述该数据对应的范围。

本发明实施例中,若目标应用需要升级时,只需按照上述实施例中制作原始镜像包m27的过程,将目标应用需要升级的所有的数据,拷贝至升级原始镜像包中;然后按照上述目标应用启动镜像包m48的制作过程,制作升级数据的升级启动镜像包;当用户在移动终端中选择升级时,移动终端只需从服务器中直接下载升级启动镜像包;在目标应用启动时,除了建立上述数据通路外,再建立本地缓存管理器与升级启动镜像包的第六通路;以及建立本地缓存管理器与服务器中升级原始镜像包的第七通路;在目标应用运行的过程中,若请求为读请求时,先从本地的升级启动镜像包和/或升级原始镜像包中获取读请求对应的数据;当本地缓存管理器在升级启动镜像包和/或升级原始镜像包中,没有获取到对应的数据,或者只能获取部分数据时;则从本地启动镜像包和/或原始镜像包获取对应的数据;具体的,从本地的升级启动镜像包和/或升级原始镜像包中,获取对应的数据的步骤与上述步骤

703-712相同,此处不再赘述。

若后续目标应用升级的次数较多时,可以将所有升级的数据生成一个升级原始镜像包,也可以将所有升级的数据和原始数据合并,将合并的数据包作为原始数据包,然后重新制作原始镜像包和启动镜像包。

各种大型的应用程序如网游,ps等,可以利用本发明实施例的一种基于磁盘的应用运行系统和方法,可以在未安装该应用程序的移动终端上启动并运行,以网游a为例,具体的,在未安装网游a的移动终端上,获取网游a的applauncher,以及网游a的启动镜像包,启动镜像包中只包含网游a启动时的数据和网游a运行至第5个关卡时的数据;用户可以通过点击applauncher启动网游a,在启动网游a时,建立本地缓存管理器和创建第一虚拟磁盘;以及建立上述第一通路、第二通路和第三通路,当用户在网游a中进行注册时,网游a向第一虚拟磁盘发送写请求;本地缓存管理器通过第三通路获取所述写请求后,将用户注册的信息写入启动镜像包的增量数据区中;在网游a启动至运行至第5关时,本地缓存管理器通过第一通路,从启动镜像包中获取网游a所需要的所有数据,并通过第三通路将获取的数据反馈给网游a;当网游a运行至第6关时,则本地缓存管理器通过第二通路,从服务器的原始镜像包中获取第6关的数据,并通过第三通路将获取的数据反馈给网游a;并将第6关的数据保存在启动镜像包中;从而实现了在网游a运行的同时,制作网游a的启动镜像包。当再一次启动网游a后,网游a运行至第6关时,本地缓存管理器可以从本地的启动镜像包中获取网游a的第6关所需要的数据。若对网游a的第1、5、10关进行了升级;则可以将网游a的第1、5、10关对应的升级后的数据,制作成升级原始镜像包,以及对应的升级启动镜像包;将升级原始镜像包存储在服务器上,将升级启动镜像包存储在,具有网游a的启动镜像包的移动终端上;此时,在该移动终端上可以运行升级后的网游a。

本发明实施例可以在目标运行的过程中,一方面可以通过从启动镜像包和/或原始镜像包中获取数据,以保证目标应用的正常运行;另一方面可以将从原始镜像包中获取的数据保存在启动镜像包中,从而在目标应用下次运行需要该数据时,可以从本地缓存中的启动镜像包中直接获取数据,保证了目标应用运行的流畅性。此外,在目标应用升级时,只需获取升级原始镜像包和升级启动镜像包,在运行目标应用时,即可完成目标应用的升级,大大提高了目标应用升级的效率,节约了成本。

本申请实施例还提供了一种非易失性可读存储介质,该存储介质中存储有一个或多个模块(programs),该一个或多个模块被应用在终端设备时,可以使得该终端设备执行本申请实施例中各方法步骤的指令(instructions)。

本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。

本领域内的技术人员应明白,本发明实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本发明实施例是参照根据本发明实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

尽管已描述了本发明实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明实施例范围的所有变更和修改。

最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。

以上对本发明所提供的一种基于磁盘的应用运行方法和一种基于磁盘的应用运行系统,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1