程序运行方法及装置与流程

文档序号:12063402阅读:265来源:国知局
程序运行方法及装置与流程

本发明涉及计算机技术领域,特别涉及一种程序运行方法及装置。



背景技术:

计算机能够通过运行各种不同的程序来完成不同的任务,且计算机在运行程序时,往往是由该计算机中的虚拟机加载该程序对应的可执行文件,来实现该程序的运行,该可执行文件中包括多个程序信息,该多个程序信息为运行该程序时所需的信息,例如,该多个程序信息可以为运行该程序时所需的类型信息、方法信息、字段信息等。

目前,提供了一种程序运行方法,具体为:获取多个程序信息,该多个程序信息为运行某一程序时所需的信息;将该多个程序信息按照字典序进行排序,得到排序后的多个程序信息;基于该排序后的多个程序信息,生成该程序对应的可执行文件;当检测到针对该程序的运行指令时,将该可执行文件中所要加载的程序信息映射到内存中,以对该程序进行运行。

计算机在将该可执行文件中所要加载的程序信息映射到内存中时,往往是以内存页为单位进行映射的,换句话说,计算机会将该所要加载的程序信息以及排列在该所要加载的程序信息之后且在该内存页的映射范围内的程序信息均映射到该内存页中,而由于该多个程序信息在该可执行文件中是按照字典序进行排列的,因此,排列在该所要加载的程序信息之后且在该内存页的映射范围内的程序信息并不一定是该程序当前运行所需要的程序信息,所以,此时该内存页所映射的程序信息中可能仅有少量是该程序当前运行所需要的,也即是此时该内存页中含有大量的冗余信息,内存利用率较低。



技术实现要素:

为了解决相关技术的问题,本发明实施例提供了一种程序运行方法及装置。所述技术方案如下:

一方面,提供了一种程序运行方法,所述方法包括:

获取多个程序信息的加载顺序,所述多个程序信息为运行目标程序时所需的信息,所述目标程序为应用程序或所述应用程序中的功能模块程序;

基于所述多个程序信息和所述多个程序信息的加载顺序,生成第一可执行文件,所述第一可执行文件为能够在虚拟机中加载运行的文件;

当检测到针对所述目标程序的运行指令时,将所述第一可执行文件中所要加载的程序信息映射到内存中,以对所述目标程序进行运行。

另一方面,提供了一种程序运行装置,所述装置包括:

获取模块,用于获取多个程序信息的加载顺序,所述多个程序信息为运行目标程序时所需的信息,所述目标程序为应用程序或所述应用程序中的功能模块程序;

生成模块,用于基于所述多个程序信息和所述多个程序信息的加载顺序,生成第一可执行文件,所述第一可执行文件为能够在虚拟机中加载运行的文件;

映射模块,用于当检测到针对所述目标程序的运行指令时,将所述第一可执行文件中所要加载的程序信息映射到内存中,以对所述目标程序进行运行。

本发明实施例提供的技术方案带来的有益效果是:在本发明实施例中,获取多个程序信息的加载顺序,该多个程序信息为运行目标程序时所需的信息,该目标程序为应用程序或应用程序中的功能模块程序,之后,基于该多个程序信息和该多个程序信息的加载顺序,生成第一可执行文件,第一可执行文件为能够在虚拟机中加载运行的文件,当检测到针对目标程序的运行指令时,将第一可执行文件中所要加载的程序信息映射到内存中,以对目标程序进行运行。由于第一可执行文件是基于该多个程序信息的加载顺序得到的,因此,在将第一可执行文件中所要加载的程序信息映射到内存中时,排列在该所要加载的程序信息之后且在内存页的映射范围内的程序信息很有可能也是该目标程序当前运行所需要的程序信息,从而可以减少该内存页中的冗余信息,提高内存利用率。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明实施例提供的一种程序运行方法流程图;

图2A是本发明实施例提供的另一种程序运行方法流程图;

图2B是本发明实施例提供的一种指定文件格式示意图;

图2C是本发明实施例提供的一种内存映射示意图;

图2D是本发明实施例提供的另一种内存映射示意图;

图2E是本发明实施例提供的又一种内存映射示意图;

图3A是本发明实施例提供的第一种程序运行装置结构示意图;

图3B是本发明实施例提供的一种获取模块结构示意图;

图3C是本发明实施例提供的一种获取单元结构示意图;

图3D是本发明实施例提供的一种生成模块结构示意图;

图4是本发明实施例提供的第二种程序运行装置结构示意图;

图5是本发明实施例提供的第三种程序运行装置结构示意图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。

图1是本发明实施例提供的一种程序运行方法流程图,该方法用于服务器或者终端中。参见图1,该方法包括:

步骤101:获取多个程序信息的加载顺序,多个程序信息为运行目标程序时所需的信息,目标程序为应用程序或应用程序中的功能模块程序。

步骤102:基于多个程序信息和多个程序信息的加载顺序,生成第一可执行文件,第一可执行文件为能够在虚拟机中加载运行的文件;

步骤103:当检测到针对目标程序的运行指令时,将第一可执行文件中所要加载的程序信息映射到内存中,以对目标程序进行运行。

在本发明实施例中,获取多个程序信息的加载顺序,该多个程序信息为运行目标程序时所需的信息,该目标程序为应用程序或应用程序中的功能模块程序,之后,基于该多个程序信息和该多个程序信息的加载顺序,生成第一可执行文件,第一可执行文件为能够在虚拟机中加载运行的文件,当检测到针对目标程序的运行指令时,将第一可执行文件中所要加载的程序信息映射到内存中,以对目标程序进行运行。由于第一可执行文件是基于该多个程序信息的加载顺序得到的,因此,在将第一可执行文件中所要加载的程序信息映射到内存中时,排列在该所要加载的程序信息之后且在内存页的映射范围内的程序信息很有可能也是该目标程序当前运行所需要的程序信息,从而可以减少该内存页中的冗余信息,提高内存利用率。

可选地,获取多个程序信息的加载顺序,包括:

基于多个程序信息和多个程序信息的字典序,生成第二可执行文件,第二可执行文件为能够在虚拟机中加载运行的文件;

通过运行第二可执行文件,获取多个程序信息的加载顺序。

可选地,通过运行第二可执行文件,获取多个程序信息的加载顺序,包括:

在运行第二可执行文件的过程中,基于第二可执行文件的信息加载日志,获取多个程序信息的加载顺序;或者,

在运行第二可执行文件的过程中,通过钩子HOOK技术获取多个程序信息的加载顺序。

可选地,基于多个程序信息和多个程序信息的加载顺序,生成第一可执行文件,包括:

按照多个程序信息的加载顺序,基于指定文件格式对多个程序信息进行打包,得到第一可执行文件,指定文件格式为第一可执行文件的文件格式。

可选地,基于多个程序信息和多个程序信息的加载顺序,生成第一可执行文件,包括:

按照多个程序信息的加载顺序,从多个程序信息中选择指定数值个程序信息;

基于指定数值个程序信息,生成主文件,主文件为能够在虚拟机中加载运行的文件;

基于多个程序信息中除指定数值个程序信息之外的程序信息,生成副文件,副文件为能够在虚拟机中加载运行的文件;

将主文件和副文件组合成第一可执行文件。

上述所有可选技术方案,均可按照任意结合形成本发明的可选实施例,本发明实施例对此不再一一赘述。

图2A是本发明实施例提供的一种程序运行方法流程图,该方法用于服务器或终端中。参见图2A,该方法包括:

步骤201:获取多个程序信息的加载顺序,该多个程序信息为运行目标程序时所需的信息,目标程序为应用程序或应用程序中的功能模块程序。

需要说明的是,该多个程序信息可以为运行该目标程序时所需的类型信息、方法信息、字段信息等,本发明实施例对此不做具体限定。

另外,该多个程序信息的加载顺序为该多个程序信息在目标程序的运行过程中进行加载的顺序。

具体地,获取多个程序信息的加载顺序时,可以先基于该多个程序信息和该多个程序信息的字典序,生成第二可执行文件,再通过运行第二可执行文件,获取该多个程序信息的加载顺序。当然,实际应用中,也可以以其它方式获取多个程序信息的加载顺序,本发明实施例对此不做具体限定。

由于目标程序的运行是通过运行该目标程序对应的可执行文件实现的,因此,可以先基于该多个程序信息生成第二可执行文件,第二可执行文件即为目标程序对应的可执行文件。又由于该多个程序信息的加载顺序为该多个程序信息在目标程序的运行过程中进行加载的顺序,因此,在生成第二可执行文件后,可以通过运行第二可执行文件来获取该多个程序信息的加载顺序。

需要说明的是,第二可执行文件为能够在虚拟机中加载运行的文件,如当该虚拟机为Dalvik虚拟机时,第二可执行文件可以为dex文件等,本发明实施例对此不做具体限定。

其中,基于该多个程序信息和该多个程序信息的字典序,生成第二可执行文件时,可以按照该多个程序信息的字典序,基于指定文件格式对该多个程序信息进行打包,得到第二可执行文件。

需要说明的是,该多个程序信息的字典序为将该多个程序信息按照字典序进行排序后得到的顺序。其中,字典序是指字典的顺序A-Z和1-9。如该多个程序信息为程序信息A、程序信息C、程序信息B和程序信息D,则该多个程序信息的字典序为程序信息A、程序信息B、程序信息C、程序信息D。

另外,指定文件格式为第二可执行文件的文件格式,如当第二可执行文件为dex文件时,该指定文件格式可以为如图2B所示的文件格式,其中,该指定文件格式中可以包括:文件头、索引区、类定义区、数据区和映射表,且文件头中可以包括header字段,索引区中可以包括string_ids(字符串索引)字段、type_ids(类型索引)字段、proto_ids(方法原型索引)字段、filed_ids(域索引)字段、method_ids(方法索引)字段,类定义区中可以包括class_defs字段,数据区中可以包括data字段,映射表中可以包括map字段。

再者,按照该多个程序信息的字典序,基于指定文件格式对该多个程序信息进行打包,生成第二可执行文件的操作可以通过指定打包工具实现,具体地,可以先将该指定打包工具中的排序规则设置为按照该多个程序信息的字典序排序,再通过该指定打包工具基于指定文件格式对该多个程序信息进行打包,生成第二可执行文件。其中,该指定打包工具用于生成具有指定文件格式的可执行文件,如当第二可执行文件为dex文件时,该指定打包工具可以为Android Sdk Tool(安卓开发工具)中提供的打包工具dx.jar等,本发明实施例对此不做具体限定。

其中,通过运行第二可执行文件,获取该多个程序信息的加载顺序时,可以在运行第二可执行文件的过程中,基于第二可执行文件的信息加载日志,获取该多个程序信息的加载顺序;或者,在运行第二可执行文件的过程中,通过HOOK(钩子)技术获取该多个程序信息的加载顺序。当然,实际应用中,也可以通过运行第二可执行文件,以其它方式获取该多个程序信息的加载顺序,本发明实施例对此不做具体限定。

其中,在运行第二可执行文件的过程中,基于第二可执行文件的信息加载日志,获取该多个程序信息的加载顺序时,可以在运行第二可执行文件的过程中,从第二可执行文件的信息加载日志中,获取该多个程序信息的加载记录,基于该多个程序信息的加载记录,确定该多个程序信息的加载顺序。

需要说明的是,信息加载日志用于记录在运行第二可执行文件的过程中该多个程序信息的加载情况,如当第二可执行文件为dex文件时,该信息加载日志可以为java.lang.ClassLoader类中的loadClass方法日志等,本发明实施例对此不做具体限定。

其中,在运行第二可执行文件的过程中,通过HOOK技术获取该多个程序信息的加载顺序时,可以在运行第二可执行文件的过程中,通过指定HOOK工具捕获加载消息,该加载消息用于指示所要加载的程序信息,基于该加载消息,确定该多个程序信息的加载顺序。

需要说明的是,HOOK技术是一种针对目标对象或者目标函数的劫持机制,其可以改变原有程序的执行逻辑,也即是,HOOK技术可以在程序运行的过程中拦截某些特定消息,并对这些特定消息进行处理。

另外,指定HOOK工具用于捕获加载消息,如该指定HOOK工具可以为cydia框架、xposed框架等,本发明实施例对此不做具体限定。

再者,加载消息用于指示所要加载的程序信息,如当第二可执行文件为dex文件时,该加载消息可以为ClassLoader类中的loadClass方法所产生的消息等,本发明实施例对此不做具体限定。

步骤202:基于该多个程序信息和该多个程序信息的加载顺序,生成第一可执行文件。

需要说明的是,第一可执行文件为能够在虚拟机中加载运行的文件,如当该虚拟机为Dalvik虚拟机时,第一可执行文件可以为dex文件等,本发明实施例对此不做具体限定。

具体地,基于该多个程序信息和该多个程序信息的加载顺序,生成第一可执行文件的操作可以通过如下两种方式实现:

第一种方式:按照该多个程序信息的加载顺序,基于指定文件格式对该多个程序信息进行打包,得到第一可执行文件。

需要说明的是,指定文件格式为第一可执行文件的文件格式,也即是,第一可执行文件的文件格式可以与第二可执行文件的文件格式相同。

另外,按照该多个程序信息的加载顺序,基于指定文件格式对该多个程序信息进行打包,得到第一可执行文件的操作可以通过指定打包工具实现,具体地,可以先将该指定打包工具中的排序规则设置为按照该多个程序信息的加载顺序排序,再通过该指定打包工具基于指定文件格式对该多个程序信息进行打包,生成第一可执行文件。

第二种方式:按照该多个程序信息的加载顺序,从该多个程序信息中选择指定数值个程序信息;基于该指定数值个程序信息,生成主文件;基于该多个程序信息中除该指定数值个程序信息之外的程序信息,生成副文件;将主文件和副文件组合成第一可执行文件。

需要说明的是,指定数值可以预先设置,如该指定数值可以为10、11等,本发明实施例对此不做具体限定。

另外,主文件和副文件均为可以在虚拟机中加载运行的文件,如当该虚拟机为Dalvik虚拟机时,主文件和副文件均可以为dex文件等,本发明实施例对此不做具体限定。

再者,基于上述第二种方式生成的主文件中包括的程序信息一般为目标程序进行基础运行时所需要的程序信息,而基于上述第二种方式生成的副文件中包括的程序信息一般为目标程序运行到特定模块或者特定路径时所需要的程序信息。

其中,基于该指定数值个程序信息,生成主文件时,可以基于该指定数值个程序信息和该指定数值个程序信息的字典序,生成主文件,或者,可以基于该指定数值个程序信息和该指定数值个程序信息的加载顺序,生成主文件,本发明实施例对此不做具体限定。

需要说明的是,基于该指定数值个程序信息和该指定数值个程序信息的字典序,生成主文件的操作与上述步骤201中生成第二可执行文件的操作类似,本发明实施例对此不再赘述。另外,基于该指定数值个程序信息和该指定数值个程序信息的加载顺序,生成主文件的操作与上述步骤202中生成第一可执行文件的操作类似,本发明实施例同样对此不再赘述。

其中,基于该多个程序信息中除该指定数值个程序信息之外的程序信息,生成副文件的操作与上述生成主文件的操作类似,本发明实施例对此不再赘述。

其中,将主文件和副文件组合成第一可执行文件时,可以将主文件和副文件进行打包,得到第一可执行文件,当然,也可以以其它方式将主文件和副文件组合成第一可执行文件,本发明实施例对此不做具体限定。

步骤203:当检测到针对目标程序的运行指令时,将第一可执行文件中所要加载的程序信息映射到内存中,以对目标程序进行运行。

需要说明的是,运行指令用于指示对目标程序进行运行,且该运行指令可以由用户触发,该用户可以通过指定操作触发,该指定操作可以为单击操作、双击操作、语音操作等,本发明实施例对此不做具体限定。

另外,将第一可执行文件中所要加载的程序信息映射到内存中时,可以通过指定函数将该所要加载的程序信息映射到内存中,当然,实际应用中,也可以以其它方式将所要加载的程序信息映射到内存中,本发明实施例对此不做具体限定。其中,指定函数用于将所要加载的程序信息映射到内存中,如该指定函数可以为mmap函数等,本发明实施例对此不做具体限定。

进一步地,对本发明实施例中生成的第一可执行文件在目标程序运行过程中所带来的有益效果进行说明。

由于在将所要加载的程序信息映射到内存中时,往往是以内存页为单位进行映射的,换句话说,在将所要加载的程序信息映射到内存中时,往往会将所要加载的程序信息以及排列在该所要加载的程序信息之后且在该内存页的映射范围内的程序信息均映射到该内存页中,例如,如图2C所示,所要加载的程序信息为A2,排列在A2之后且在内存页的映射范围内的程序信息为A3、A4、A5,则在将A2映射到内存中时,会将A2、A3、A4、A5均映射到该内存页中。

相关技术中,由于多个程序信息是按照字典序进行排列的,因此,排列在该所要加载的程序信息之后且在内存页的映射范围内的程序信息并不一定是目标程序当前运行所需要的程序信息,所以,此时该内存页所映射的程序信息中可能仅有少量是该目标程序当前运行所需要的,也即是此时该内存页中会含有大量的冗余信息,内存利用率较低。

例如,该多个程序信息按照字典序进行排列,且该多个程序信息的字典序为A1、A2、A3、A4、A5、A6、B1、B2、B3、B4、B5、C1、C2、C3、C4、C5,假设所要加载的程序信息为A2、B1、C1,排列在A2之后且在内存页的映射范围内的程序信息为A3、A4、A5,排列在B1之后且在内存页的映射范围内的程序信息为B2、B3、B4,排列在C1之后且在内存页的映射范围内的程序信息为C2、C3、C4。如图2D所示,在将A2、B1、C1映射到内存中时,会将A2、A3、A4、A5映射到第一个内存页中,将B1、B2、B3、B4映射到第二个内存页中,将C1、C2、C3、C4映射到第三个内存页中。由于目标程序当前运行所需要的程序信息仅为A2、B1、C1,所以第一个内存页、第二个内存页和第三个内存页中均含有大量的冗余信息,从而降低了内存利用率,且增加了没有必要的内存占用。

而在本发明实施例中,当第一可执行文件是按照该多个程序信息的加载顺序,基于指定文件格式对该多个程序信息进行打包得到时,由于该多个程序信息是按照加载顺序进行排列的,因此,排列在该所要加载的程序信息之后且在内存页的映射范围内的程序信息很有可能也是该目标程序当前运行所需要的程序信息,此时该内存页中的冗余信息较少,内存利用率较高。

例如,该多个程序信息按照加载顺序进行排列,且该多个程序信息的加载顺序为A2、B1、C1、A1、A3、B2、A4、A5、C2、A6、B3、B4、B5、C5、C3、C4,假设所要加载的程序信息为A2、B1、C1,排列在A2之后且在内存页的映射范围内的程序信息为B1、C1、A1,排列在B1之后且在内存页的映射范围内的程序信息为C1、A1,排列在C1之后且在内存页的映射范围内的程序信息为A1。如图2E所示,当将A2、B1、C1映射到内存中时,会将A2、B1、C1、A1映射到同一内存页中,由于目标程序当前运行所需要的程序信息为A2、B1、C1,所以该内存页中只含有一个冗余信息A1,从而提高了内存利用率,且此时只需要一个内存页即可完成对A2、B1、C1的映射,相比于相关技术中需要三个内存页才能完成对A2、B1、C1映射的情况,本发明可以大大减少没有必要的内存占用。

当第一可执行文件是由主文件和副文件组合得到时,由于主文件中包括的程序信息一般为目标程序进行基础运行时所需要的程序信息,而副文件中包括的程序信息一般为目标程序运行到特定模块或者特定路径时所需要的程序信息,因此,当检测到针对目标程序的运行指令时,可以先加载主文件,当执行到特定模块或特定路径时再加载副文件。

由于主文件是基于指定数值个程序信息得到的,且该指定数值个程序信息是按照该多个程序信息的加载顺序选择得到的,所以在加载主文件时,目标程序当前运行所需要的程序信息在主文件中所占的比例较高,因此,排列在该所要加载的程序信息之后且在内存页的映射范围内的程序信息很有可能也是该目标程序当前运行所需要的程序信息,此时该内存页中的冗余信息较少,内存利用率较高。且由于在未执行到特定模块或特定路径时不加载副文件,因此,可以减少没有必要的内存占用。

在本发明实施例中,获取多个程序信息的加载顺序,该多个程序信息为运行目标程序时所需的信息,该目标程序为应用程序或应用程序中的功能模块程序,之后,基于该多个程序信息和该多个程序信息的加载顺序,生成第一可执行文件,第一可执行文件为能够在虚拟机中加载运行的文件,当检测到针对目标程序的运行指令时,将第一可执行文件中所要加载的程序信息映射到内存中,以对目标程序进行运行。由于第一可执行文件是基于该多个程序信息的加载顺序得到的,因此,在将第一可执行文件中所要加载的程序信息映射到内存中时,排列在该所要加载的程序信息之后且在内存页的映射范围内的程序信息很有可能也是该目标程序当前运行所需要的程序信息,从而可以减少该内存页中的冗余信息,提高内存利用率。

参见图3A,本发明实施例提供了一种程序运行装置,该装置包括获取模块301和生成模块302。

获取模块301,用于获取多个程序信息的加载顺序,所述多个程序信息为运行目标程序时所需的信息,所述目标程序为应用程序或所述应用程序中的功能模块程序;

生成模块302,用于基于所述多个程序信息和所述多个程序信息的加载顺序,生成第一可执行文件,所述第一可执行文件为能够在虚拟机中加载运行的文件;

映射模块303,用于当检测到针对目标程序的运行指令时,将第一可执行文件中所要加载的程序信息映射到内存中,以对目标程序进行运行。

可选地,参见图3B,该获取模块301包括第一生成单元3011和获取单元3012。

第一生成单元3011,用于基于所述多个程序信息和所述多个程序信息的字典序,生成第二可执行文件,所述第二可执行文件为能够在虚拟机中加载运行的文件;

获取单元3012,用于通过运行所述第二可执行文件,获取所述多个程序信息的加载顺序。

可选地,参见图3C,该获取单元3012包括第一获取子单元30121和第二获取子单元30122。

第一获取子单元30121,用于在运行所述第二可执行文件的过程中,基于所述第二可执行文件的信息加载日志,获取所述多个程序信息的加载顺序;或者,

第二获取子单元30122,用于在运行所述第二可执行文件的过程中,通过钩子HOOK技术获取所述多个程序信息的加载顺序。

可选地,该生成模块302包括打包单元。

打包单元,用于按照所述多个程序信息的加载顺序,基于指定文件格式对所述多个程序信息进行打包,得到所述第一可执行文件,所述指定文件格式为所述第一可执行文件的文件格式。

可选地,参见图3D,该生成模块302包括选择单元3021,第二生成单元3022,第三生成单元3023和组合单元3024。

选择单元3021,用于按照所述多个程序信息的加载顺序,从所述多个程序信息中选择指定数值个程序信息;

第二生成单元3022,用于基于所述指定数值个程序信息,生成主文件,所述主文件为能够在虚拟机中加载运行的文件;

第三生成单元3023,用于基于所述多个程序信息中除所述指定数值个程序信息之外的程序信息,生成副文件,所述副文件为能够在虚拟机中加载运行的文件;

组合单元3024,用于将所述主文件和所述副文件组合成所述第一可执行文件。

在本发明实施例中,获取多个程序信息的加载顺序,该多个程序信息为运行目标程序时所需的信息,该目标程序为应用程序或应用程序中的功能模块程序,之后,基于该多个程序信息和该多个程序信息的加载顺序,生成第一可执行文件,第一可执行文件为能够在虚拟机中加载运行的文件,当检测到针对目标程序的运行指令时,将第一可执行文件中所要加载的程序信息映射到内存中,以对目标程序进行运行。由于第一可执行文件是基于该多个程序信息的加载顺序得到的,因此,在将第一可执行文件中所要加载的程序信息映射到内存中时,排列在该所要加载的程序信息之后且在内存页的映射范围内的程序信息很有可能也是该目标程序当前运行所需要的程序信息,从而可以减少该内存页中的冗余信息,提高内存利用率。

需要说明的是:上述实施例提供的程序运行装置在程序运行时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的程序运行装置与程序运行方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。

图4和图5是本发明实施例提供的程序运行装置的结构示意图。该程序运行装置可以为服务器或者终端。

图4是本发明实施例提供的一种程序运行装置的服务器结构示意图。该服务器可以是后台服务器集群中的服务器。具体来讲:

服务器400包括中央处理单元(CPU)401、包括随机存取存储器(RAM)402和只读存储器(ROM)403的系统存储器404,以及连接系统存储器404和中央处理单元401的系统总线405。服务器400还包括帮助计算机内的各个器件之间传输信息的基本输入/输出系统(I/O系统)406,和用于存储操作系统413、应用程序414和其他程序模块415的大容量存储设备407。

基本输入/输出系统406包括有用于显示信息的显示器408和用于用户输入信息的诸如鼠标、键盘之类的输入设备409。其中显示器408和输入设备409都通过连接到系统总线405的输入输出控制器410连接到中央处理单元401。基本输入/输出系统406还可以包括输入输出控制器410以用于接收和处理来自键盘、鼠标、或电子触控笔等多个其他设备的输入。类似地,输入输出控制器410还提供输出到显示屏、打印机或其他类型的输出设备。

大容量存储设备407通过连接到系统总线405的大容量存储控制器(未示出)连接到中央处理单元401。大容量存储设备407及其相关联的计算机可读介质为服务器400提供非易失性存储。也就是说,大容量存储设备407可以包括诸如硬盘或者CD-ROM驱动器之类的计算机可读介质(未示出)。

不失一般性,计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括RAM、ROM、EPROM、EEPROM、闪存或其他固态存储其技术,CD-ROM、DVD或其他光学存储、磁带盒、磁带、磁盘存储或其他磁性存储设备。当然,本领域技术人员可知计算机存储介质不局限于上述几种。上述的系统存储器404和大容量存储设备407可以统称为存储器。

根据本发明的各种实施例,服务器400还可以通过诸如因特网等网络连接到网络上的远程计算机运行。也即服务器400可以通过连接在系统总线405上的网络接口单元411连接到网络412,或者说,也可以使用网络接口单元411来连接到其他类型的网络或远程计算机系统(未示出)。

上述存储器还包括一个或者一个以上的程序,一个或者一个以上程序存储于存储器中,被配置由CPU执行。所述一个或者一个以上程序包含用于进行本发明实施例提供的如下所述的程序运行方法的指令,包括:

获取多个程序信息的加载顺序,多个程序信息为运行目标程序时所需的信息,目标程序为应用程序或应用程序中的功能模块程序;

基于多个程序信息和多个程序信息的加载顺序,生成第一可执行文件,第一可执行文件为能够在虚拟机中加载运行的文件;

当检测到针对目标程序的运行指令时,将第一可执行文件中所要加载的程序信息映射到内存中,以对目标程序进行运行。

可选地,获取多个程序信息的加载顺序,包括:

基于多个程序信息和多个程序信息的字典序,生成第二可执行文件,第二可执行文件为能够在虚拟机中加载运行的文件;

通过运行第二可执行文件,获取多个程序信息的加载顺序。

可选地,通过运行第二可执行文件,获取多个程序信息的加载顺序,包括:

在运行第二可执行文件的过程中,基于第二可执行文件的信息加载日志,获取多个程序信息的加载顺序;或者,

在运行第二可执行文件的过程中,通过钩子HOOK技术获取多个程序信息的加载顺序。

可选地,基于多个程序信息和多个程序信息的加载顺序,生成第一可执行文件,包括:

按照多个程序信息的加载顺序,基于指定文件格式对多个程序信息进行打包,得到第一可执行文件,指定文件格式为第一可执行文件的文件格式。

可选地,基于多个程序信息和多个程序信息的加载顺序,生成第一可执行文件,包括:

按照多个程序信息的加载顺序,从多个程序信息中选择指定数值个程序信息;

基于指定数值个程序信息,生成主文件,主文件为能够在虚拟机中加载运行的文件;

基于多个程序信息中除指定数值个程序信息之外的程序信息,生成副文件,副文件为能够在虚拟机中加载运行的文件;

将主文件和副文件组合成第一可执行文件。

在本发明实施例中,获取多个程序信息的加载顺序,该多个程序信息为运行目标程序时所需的信息,该目标程序为应用程序或应用程序中的功能模块程序,之后,基于该多个程序信息和该多个程序信息的加载顺序,生成第一可执行文件,第一可执行文件为能够在虚拟机中加载运行的文件,当检测到针对目标程序的运行指令时,将第一可执行文件中所要加载的程序信息映射到内存中,以对目标程序进行运行。由于第一可执行文件是基于该多个程序信息的加载顺序得到的,因此,在将第一可执行文件中所要加载的程序信息映射到内存中时,排列在该所要加载的程序信息之后且在内存页的映射范围内的程序信息很有可能也是该目标程序当前运行所需要的程序信息,从而可以减少该内存页中的冗余信息,提高内存利用率。

图5是本发明实施例提供的一种程序运行装置的终端结构示意图。参见图5,终端500可以包括通信单元510、包括有一个或一个以上计算机可读存储介质的存储器520、输入单元530、显示单元540、传感器550、音频电路560、WIFI(Wireless Fidelity,无线保真)模块570、包括有一个或者一个以上处理核心的处理器580、以及电源590等部件。本领域技术人员可以理解,图5中示出的终端结构并不构成对终端的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:

通信单元510可用于收发信息或通话过程中,信号的接收和发送,该通信单元510可以为RF(Radio Frequency,射频)电路、路由器、调制解调器、等网络通信设备。特别地,当通信单元510为RF电路时,将基站的下行信息接收后,交由一个或者一个以上处理器580处理;另外,将涉及上行的数据发送给基站。通常,作为通信单元的RF电路包括但不限于天线、至少一个放大器、调谐器、一个或多个振荡器、用户身份模块(SIM)卡、收发信机、耦合器、LNA(Low Noise Amplifier,低噪声放大器)、双工器等。此外,通信单元510还可以通过无线通信与网络和其他设备通信。所述无线通信可以使用任一通信标准或协议,包括但不限于GSM(Global System of Mobile communication,全球移动通讯系统)、GPRS(General Packet Radio Service,通用分组无线服务)、CDMA(Code Division Multiple Access,码分多址)、WCDMA(Wideband Code Division Multiple Access,宽带码分多址)、LTE(Long Term Evolution,长期演进)、电子邮件、SMS(Short Messaging Service,短消息服务)等。存储器520可用于存储软件程序以及模块,处理器580通过运行存储在存储器520的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器520可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据终端500的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器520可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器520还可以包括存储器控制器,以提供处理器580和输入单元530对存储器520的访问。

输入单元530可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。优选地,输入单元530可包括触敏表面531以及其他输入设备532。触敏表面531,也称为触摸显示屏或者触控板,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触敏表面531上或在触敏表面531附近的操作),并根据预先设定的程式驱动相应的连接装置。可选的,触敏表面531可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器580,并能接收处理器580发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触敏表面531。除了触敏表面531,输入单元530还可以包括其他输入设备532。优选地,其他输入设备532可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。

显示单元540可用于显示由用户输入的信息或提供给用户的信息以及终端500的各种图形用户接口,这些图形用户接口可以由图形、文本、图标、视频和其任意组合来构成。显示单元540可包括显示面板541,可选的,可以采用LCD(Liquid Crystal Display,液晶显示器)、OLED(Organic Light-Emitting Diode,有机发光二极管)等形式来配置显示面板541。进一步的,触敏表面531可覆盖显示面板541,当触敏表面531检测到在其上或附近的触摸操作后,传送给处理器580以确定触摸事件的类型,随后处理器580根据触摸事件的类型在显示面板541上提供相应的视觉输出。虽然在图5中,触敏表面531与显示面板541是作为两个独立的部件来实现输入和输入功能,但是在某些实施例中,可以将触敏表面531与显示面板541集成而实现输入和输出功能。

终端500还可包括至少一种传感器550,比如光传感器、运动传感器以及其他传感器。光传感器可包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板541的亮度,接近传感器可在终端500移动到耳边时,关闭显示面板541和/或背光。作为运动传感器的一种,重力加速度传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别手机姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;至于终端500还可配置的陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。

音频电路560、扬声器561,传声器562可提供用户与终端500之间的音频接口。音频电路560可将接收到的音频数据转换后的电信号,传输到扬声器561,由扬声器561转换为声音信号输出;另一方面,传声器562将收集的声音信号转换为电信号,由音频电路560接收后转换为音频数据,再将音频数据输出处理器580处理后,经通信单元510以发送给比如另一终端,或者将音频数据输出至存储器520以便进一步处理。音频电路560还可能包括耳塞插孔,以提供外设耳机与终端500的通信。

为了实现无线通信,该终端上可以配置有无线通信单元570,该无线通信单元570可以为WIFI模块。WIFI属于短距离无线传输技术,终端500通过无线通信单元570可以帮助用户收发电子邮件、浏览网页和访问流式媒体等,它为用户提供了无线的宽带互联网访问。虽然图中示出了无线通信单元570,但是可以理解的是,其并不属于终端500的必须构成,完全可以根据需要在不改变发明的本质的范围内而省略。

处理器580是终端500的控制中心,利用各种接口和线路连接整个手机的各个部分,通过运行或执行存储在存储器520内的软件程序和/或模块,以及调用存储在存储器520内的数据,执行终端500的各种功能和处理数据,从而对手机进行整体监控。可选的,处理器580可包括一个或多个处理核心;优选的,处理器580可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器580中。

终端500还包括给各个部件供电的电源590(比如电池),优选的,电源可以通过电源管理系统与处理器580逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源560还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。

尽管未示出,终端500还可以包括摄像头、蓝牙模块等,在此不再赘述。

在本实施例中,终端还包括有一个或者一个以上的程序,这一个或者一个以上程序存储于存储器中,且经配置以由一个或者一个以上处理器执行,所述一个或者一个以上程序包含用于进行本发明实施例提供的如下所述的程序运行方法的指令,包括:

获取多个程序信息的加载顺序,多个程序信息为运行目标程序时所需的信息,目标程序为应用程序或应用程序中的功能模块程序;

基于多个程序信息和多个程序信息的加载顺序,生成第一可执行文件,第一可执行文件为能够在虚拟机中加载运行的文件;

当检测到针对目标程序的运行指令时,将第一可执行文件中所要加载的程序信息映射到内存中,以对目标程序进行运行。

可选地,获取多个程序信息的加载顺序,包括:

基于多个程序信息和多个程序信息的字典序,生成第二可执行文件,第二可执行文件为能够在虚拟机中加载运行的文件;

通过运行第二可执行文件,获取多个程序信息的加载顺序。

可选地,通过运行第二可执行文件,获取多个程序信息的加载顺序,包括:

在运行第二可执行文件的过程中,基于第二可执行文件的信息加载日志,获取多个程序信息的加载顺序;或者,

在运行第二可执行文件的过程中,通过钩子HOOK技术获取多个程序信息的加载顺序。

可选地,基于多个程序信息和多个程序信息的加载顺序,生成第一可执行文件,包括:

按照多个程序信息的加载顺序,基于指定文件格式对多个程序信息进行打包,得到第一可执行文件,指定文件格式为第一可执行文件的文件格式。

可选地,基于多个程序信息和多个程序信息的加载顺序,生成第一可执行文件,包括:

按照多个程序信息的加载顺序,从多个程序信息中选择指定数值个程序信息;

基于指定数值个程序信息,生成主文件,主文件为能够在虚拟机中加载运行的文件;

基于多个程序信息中除指定数值个程序信息之外的程序信息,生成副文件,副文件为能够在虚拟机中加载运行的文件;

将主文件和副文件组合成第一可执行文件。

在本发明实施例中,获取多个程序信息的加载顺序,该多个程序信息为运行目标程序时所需的信息,该目标程序为应用程序或应用程序中的功能模块程序,之后,基于该多个程序信息和该多个程序信息的加载顺序,生成第一可执行文件,第一可执行文件为能够在虚拟机中加载运行的文件,当检测到针对目标程序的运行指令时,将第一可执行文件中所要加载的程序信息映射到内存中,以对目标程序进行运行。由于第一可执行文件是基于该多个程序信息的加载顺序得到的,因此,在将第一可执行文件中所要加载的程序信息映射到内存中时,排列在该所要加载的程序信息之后且在内存页的映射范围内的程序信息很有可能也是该目标程序当前运行所需要的程序信息,从而可以减少该内存页中的冗余信息,提高内存利用率。

本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。

以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

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