掌桥专利:专业的专利平台
掌桥专利
首页

信息处理方法以及对象共享方法

文献发布时间:2023-06-19 19:32:07


信息处理方法以及对象共享方法

技术领域

本说明书实施例涉及虚拟机技术领域,特别涉及信息处理方法以及对象共享方法。

背景技术

随着互联网技术的发展,云计算在越来越多的场景中得以应用,且作为支持服务运行的基础,其提供的计算能力决定着服务运行的稳定性。而Serverless作为云计算重要的技术,其可以实现在云计算场景下加速应用程序的启动速度,从而实现快速的服务于用户。现有技术中,在云计算场景下通常会使用具有一次编写到处运行的语言完成相应功能模块的编写,虽然在代码编写阶段更加便捷,但是其需要依附于语言虚拟机完成,导致基于语言虚拟机技术在实现的过程中,虚拟机需要从字节代码或者源码文件中加载程序,这就导致虚拟机启动速度慢的副作用,因此亟需一种有效的方案以解决该问题。

发明内容

有鉴于此,本说明书实施例提供了一种信息处理方法。本说明书一个或者多个实施例同时涉及一种信息处理装置,一种对象共享方法,一种对象共享装置,一种信息处理系统,一种计算设备,一种计算机可读存储介质以及一种计算机程序,以解决现有技术中存在的技术缺陷。

根据本说明书实施例的第一方面,提供了一种信息处理方法,包括:

获取虚拟机配置信息,基于所述虚拟机配置信息生成目标模块对应的模块标识信息;

根据所述模块标识信息加载代码对象文件,并通过解析所述代码对象文件确定所述目标模块对应的目标代码对象;

将所述目标代码对象转换为内存镜像文件对应的存储结构;

以所述模块标识信息为存储键,所述存储结构的目标代码对象为存储值,向所述内存镜像文件中写入键值对,其中,所述键值对用于所述目标模块执行任务指令。

根据本说明书实施例的第二方面,提供了一种信息处理装置,包括:

获取模块,被配置为获取虚拟机配置信息,基于所述虚拟机配置信息生成目标模块对应的模块标识信息;

解析模块,被配置为根据所述模块标识信息加载代码对象文件,并通过解析所述代码对象文件确定所述目标模块对应的目标代码对象;

转换模块,被配置为将所述目标代码对象转换为内存镜像文件对应的存储结构;

存储模块,被配置为以所述模块标识信息为存储键,所述存储结构的目标代码对象为存储值,向所述内存镜像文件中写入键值对,其中,所述键值对用于所述目标模块执行任务指令。

根据本说明书实施例的第三方面,提供了一种对象共享方法,包括:

接收关联目标模块的目标指令;

根据所述目标指令确定目标模块标识信息,基于所述目标模块标识信息构建目标存储键;

按照所述目标存储键查询内存镜像文件,根据查询结果获得目标代码对象;

调用所述目标模块利用所述目标代码对象执行所述目标指令。

根据本说明书实施例的第四方面,提供了一种对象共享装置,包括:

接收模块,被配置为接收关联目标模块的目标指令;

构建模块,被配置为根据所述目标指令确定目标模块标识信息,基于所述目标模块标识信息构建目标存储键;

查询模块,被配置为按照所述目标存储键查询内存镜像文件,根据查询结果获得目标代码对象;

执行模块,被配置为调用所述目标模块利用所述目标代码对象执行所述目标指令。

根据本说明书实施例的第五方面,提供了一种信息处理系统,包括:

虚拟机控制端和虚拟机;

所述虚拟机控制端用于管理所述虚拟机,并存储有信息处理可执行指令,该信息处理可执行指令被虚拟机控制端执行时实现上述信息处理方法或者对象共享方法的步骤。

根据本说明书实施例的第六方面,提供了一种计算设备,包括:

存储器和处理器;

所述存储器用于存储计算机可执行指令,所述处理器用于执行所述计算机可执行指令时实现任上述信息处理方法或者对象共享方法的步骤。

根据本说明书实施例的第七方面,提供了一种计算机可读存储介质,其存储有计算机可执行指令,该指令被处理器执行时实现上述信息处理方法或者对象共享方法的步骤。

根据本说明书实施例的第八方面,提供了一种计算机程序,其中,当所述计算机程序在计算机中执行时,令计算机执行上述信息处理方法或者对象共享方法的步骤。

本实施例提供的信息处理方法,为了避免因为大规模使用一次编写到处使用的语言影响虚拟机启动速度,通过共享代码对象的方式支持虚拟机上模块应用程序,实现虚拟机可以直接在内存镜像文件中加载需要使用的代码对象。而为了能够支持虚拟机在内存镜像文件中的代码对象读取和使用,需要在获取到虚拟机配置信息后,先基于虚拟机配置信息生成对应应用程序的目标模块的模块标识信息,之后根据模块标识信息加载代码对象文件,实现通过解析代码对象文件得到目标模块对应的目标代码对象,以确保支持目标模块可以在虚拟机中运行。此后,为了能够加快虚拟机启动速度,实现多模块对应的应用程序之间可以共享代码对象,可以将目标代码对象转换为内存镜像文件对应的存储结构,之后以模块标识信息为存储键,存储结构的目标代码对象为存储值,向内存镜像文件中写入键值对,实现在内存镜像文件中存储目标代码对象,从而支持多模块对应的应用程序在执行指令时,都可以在内存镜像文件中读取相应的代码对象,从而解决目标模块启动慢的问题,以实现快速的向服务提供相应的功能服务。

附图说明

图1是本说明书一个实施例提供的一种信息处理方法的示意图;

图2是本说明书一个实施例提供的一种信息处理方法的流程图;

图3是本说明书一个实施例提供的一种信息处理方法的处理过程流程图;

图4是本说明书一个实施例提供的一种信息处理装置的结构示意图;

图5是本说明书一个实施例提供的一种对象共享方法的流程图;

图6是本说明书一个实施例提供的一种对象共享装置的结构示意图;

图7是本说明书一个实施例提供的一种计算设备的结构框图。

具体实施方式

在下面的描述中阐述了很多具体细节以便于充分理解本说明书。但是本说明书能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本说明书内涵的情况下做类似推广,因此本说明书不受下面公开的具体实施的限制。

在本说明书一个或多个实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本说明书一个或多个实施例中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。

应当理解,尽管在本说明书一个或多个实施例中可能采用术语第一、第二等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一也可以被称为第二,类似地,第二也可以被称为第一。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。

首先,对本说明书一个或多个实施例涉及的名词术语进行解释。

编程语言虚拟机:(Managed Runtime Environment, MRE),将应用程序运行在宿主操作系统上。其主要目的是提供平台无关的编程语言运行环境,并允许应用程序在不同的平台上以相同的行为执行。

代码对象:虚拟机中的代码指令的表示,通常通过源码文件编译或者直接从字节码文件解析获得,因为代码对象包含的是抽象高层指令,因此一条指令(例如创建对象)可能会引用新的代码对象。

加载器:加载代码对象的组件,根据虚拟机的设计,代码对象可以处于磁盘目录、压缩包、网络等位置,加载器将根据规则读取持久化的代码对象,并解析为可以被执行引擎使用的代码对象。

在本说明书中,提供了一种信息处理方法,本说明书同时涉及一种信息处理装置,一种对象共享方法,一种对象共享装置,一种信息处理系统,一种计算设备,一种计算机可读存储介质以及一种计算机程序,在下面的实施例中逐一进行详细说明。

参见图1所示的示意图,本实施例提供的信息处理方法,为了避免因为大规模使用一次编写到处使用的语言影响虚拟机启动速度,通过共享代码对象的方式支持虚拟机上模块应用程序,实现虚拟机可以直接在内存镜像文件中加载需要使用的代码对象。而为了能够支持虚拟机在内存镜像文件中的代码对象读取和使用,需要在获取到虚拟机配置信息后,先基于虚拟机配置信息生成对应应用程序的目标模块的模块标识信息,之后根据模块标识信息加载代码对象文件,实现通过解析代码对象文件得到目标模块对应的目标代码对象,以确保支持目标模块可以在虚拟机中运行。此后,为了能够加快虚拟机启动速度,实现多模块对应的应用程序之间可以共享代码对象,可以将目标代码对象转换为内存镜像文件对应的存储结构,之后以模块标识信息为存储键,存储结构的目标代码对象为存储值,向内存镜像文件中写入键值对,实现在内存镜像文件中存储目标代码对象,从而支持多模块对应的应用程序在执行指令时,都可以在内存镜像文件中读取相应的代码对象,从而解决目标模块启动慢的问题,以实现快速的向服务提供相应的功能服务。

图2示出了根据本说明书一个实施例提供的一种信息处理方法的流程图,具体包括以下步骤。

步骤S202,获取虚拟机配置信息,基于所述虚拟机配置信息生成目标模块对应的模块标识信息。

本实施例提供的信息处理方法应用于虚拟机执行引擎,该虚拟机执行引擎运行于宿主机,且宿主机内的虚拟机均为编程语言虚拟机,用于实现应用程序在不同的平台上以相同的行为执行。

具体的,虚拟机配置信息具体是指用户在使用编程语言虚拟机时配置的信息,基于该信息可以确定编程语言虚拟机需要使用的功能模块,用于实现在针对目标模块对应的应用程序预先存储代码对象,方便在启动目标模块对应的应用程序时,可以从内存镜像文件中读取代码对象,加快应用程序的启动速度。

相应的,目标模块即为关联需要运行在虚拟机中应用程序的功能模块,其用于执行相应的执行指令实现快速启动应用程序;且目标模块可以根据用户使用需求构建,也可以是系统默认的模块。相应的,模块标识信息具体是指目标模块对应的标识信息,该标识信息可以是目标模块对应的ID,或者名称,再或者起标识作用的字符串等。且模块标识信息与目标模块具有唯一对应关系,实现在存储代码对象时,可以基于具有唯一对应关系的模块标识信息完成,而避免从内存镜像文件中读取与目标模块不对应的代码对象,无法实现启动目标模块执行相应的指令。

基于此,为了能够实现在编程语言虚拟机中加快应用模块的启动速度,可以预先构建支持加快启动的环境。此过程中,可以先获取虚拟机配置信息,以实现根据虚拟机配置信息先生成对应目标模块的模块标识信息,方便后续结合模块标识信息可以进行代码对象的加载和转换,并建立与模块标识信息的唯一对应关系,以此形成与目标模块的对应关系,实现在目标模块被宿主机上的任意虚拟机调用时,都可以基于存储关系读取预先存储的代码对象,以完成应用程序的启动,从而加速应用程序的启动速度。

进一步的,考虑到虚拟机配置信息是由用户使用编程语言虚拟机配置完成的,其配置内容可以根据需求进行调整,因此在生成目标模块唯一对应的模块标识信息时,可以结合虚拟机配置信息中的内容完成;本实施例中,具体实现方式如下:

获取包含虚拟机业务信息和代码对象文件目录的虚拟机配置信息,以及确定目标模块;在确定所述目标模块为非默认模块的情况下,根据所述虚拟机业务信息或所述代码对象文件目录,生成所述目标模块对应的模块名称信息,作为所述模块标识信息。

具体的,虚拟机业务信息具体是指由控制虚拟机的用户按照需求进行配置的信息,该信息能够用于确定虚拟机需要运行的应用程序的功能;相应的,代码对象文件目录具体是指代码对象文件对应的目录,且该目录的形成也是根据用户创建的代码对象文件得到,代码对象文件中的代码对象由用户完成编写。相应的,默认模块具体是指系统默认且预设的功能模块,其可以理解为基础模块。相应的,模块名称信息具体是指目标模块对应的模块名称。

基于此,为了能够得到唯一对应目标模块的模块标识信息,方便后续进行代码对象的加载和存储,可以先获取包含虚拟机业务信息和代码对象文件目录的虚拟机配置信息,以及确定目标模块;此后在确定目标模块为非默认模块的情况下,说明目标模块还不存在模块名称,则此时即可根据虚拟机业务信息或代码对象文件目录,生成目标模块对应的模块名称信息,作为模块标识信息,以方便后续使用。

实际应用中,在进行模块名称信息确定时,考虑到虚拟机中包含的模块较多,且不同的模块用于执行不同类型的指令,因此在确定目标模块后,需要先判断当前确定的目标模块是否为缺省模块,即是否为系统默认模块;若是,表示不需要针对其进行代码对象的加载,则结束流程即可;若否,表示需要针对其进行代码对象的加载,则此时即可根据虚拟机业务信息或者代码对象文件目录构建目标模块对应的模块名称信息,以方便后续使用。

举例说明,用户针对编程语言虚拟机配置了业务信息和代码对象文件目录,当需要将目标模块对应的代码对象存储到内存镜像文件,方便其他模块共享,其他应用程序的启动速度时,可以先确定目标模块是否为编程语言虚拟机预设的缺省模块,若否,则可以结合业务信息或代码对象文件目录,构建目标模块对应的模块名称信息N1,以方便后续使用。

综上,通过结合业务信息或者代码对象文件目录构建目标模块对应的模块标识信息,可以确保模块标识信息与目标模块之间的唯一对应关系,实现在后续向内存镜像文件中写入代码对象时,可以建立具有唯一关系的键值对,以方便其他模块共享代码对象使用。

步骤S204,根据所述模块标识信息加载代码对象文件,并通过解析所述代码对象文件确定所述目标模块对应的目标代码对象。

具体的,在上述得到目标模块对应的模块标识信息后,进一步的,为了能够实现在后续可以调用目标模块执行相应的指令,用于支持应用程序的快速启动,可以在此阶段加载支持目标模块运行的代码对象文件,以通过虚拟机解析为对应目标模块的目标代码对象,以方便后续使用。

其中,代码对象文件具体是指虚拟机中用于存储代码指令表示的文件,相应的,目标代码对象具体是指对应虚拟机中目标模块的代码指令表示,用于支持目标模块运行,实现执行相应的执行指令,以启动应用程序方便后续使用。

进一步的,在加载代码对象文件时,由于编程语言虚拟机可能基于配置信息已经存在了相应的代码对象文件,或者还未配置相关的代码对象文件,因此在加载代码对象文件时,可以结合模块标识信息完成;本实施例中,具体实现方式如下:

通过遍历所述代码对象文件目录确定所述模块标识信息对应的文件路径,并基于所述文件路径读取所述代码对象文件;或者,根据所述模块标识信息构建文件获取请求,将所述文件获取请求发送至文件查询服务器,并接收所述文件查询服务器针对所述文件获取请求返回的所述代码对象文件。

具体的,文件路径具体是指根据代码对象文件目录确定存储代码对象的读取路径;相应的,文件获取请求具体是指获取代码对象文件的请求;相应的,文件查询服务器具体是指能够提供代码对象文件的服务器,该服务器可以是任意查询平台所对应的服务器,可以基于文件获取请求反馈代码对象文件。

基于此,为了能够实现代码对象文件的加载,可以先以正常的流程运行目标模块对应的应用程序,实现加载代码对象后存储,以在应用阶段共享;应用程序运行时,考虑到在先用户在配置虚拟机阶段,已经录入了大量的代码对象文件,且该代码对象文件中存在目标模块需要使用的代码对象,则此时可以先遍历代码对象文件目录,以根据遍历结果先确定模块标识信息对应的文件路径,此后再基于文件路径在本地存储代码对象的空间中代码对象文件即可。该空间可以是磁盘或者内存等。

此外,考虑到目标模块为新建模块,本地并不存在代码对象,则可以基于模块标识信息构建文件获取请求,以实现根据文件获取请求可以从文件查询服务器请求下载代码对象文件,即将文件获取请求发送至文件查询服务器,并接收文件查询服务器针对文件获取请求返回的代码对象文件,以方便后续使用。

实际应用中,在加载代码对象文件时,考虑到当前虚拟机执行引擎涉及新的代码对象,而该代码对象需要关联目标模块,因此可以根据模块名称信息遍历代码对象文件目录,或者从网络查找对应的代码对象文件,以实现得到代码对象文件后,可以进行后续的存储,实现多个模块间可以共享代码对象。且考虑到代码对象文件的加载方式是以应用程序运行为基础,因此还需要在得到代码对象文件后将其安装在虚拟机上,以在虚拟机中生成所有程序对应的代码对象后进行存储即可。

也就是说,构建阶段会以正常的流程运行应用程序,触发正常的代码加载,程序运行结束后会在虚拟机内存中生成所有程序所需的代码对象,此后即可结合存储键和存储值,实现将代码对象写入内存共享文件,以便后续运行的虚拟机实例中共享代码对象。

综上,通过采用不同的方式在应用程序运行阶段加载代码对象文件,方便后续可以对代码对象文件进行转存,从而实现虚拟机的多个实例之间可以共享代码对象文件,以方便在应用阶段使用。

更进一步的,在得到代码对象文件后,考虑到当前阶段虚拟机执行引擎可能无法确认目标模块的模块标识信息,代码对象文件也就无法进行存储,因此需要结合被确定的模块标识信息进行后续的处理;本实施例中,具体实现方式如下:

对所述代码对象文件进行解析,根据解析结果获得可执行代码对象作为目标代码对象;在所述目标模块为默认模块的情况下,执行所述将所述目标代码对象转换为内存镜像文件对应的存储结构的步骤;或者,在所述目标模块为非默认模块且具有模块标识信息的情况下,执行所述将所述目标代码对象转换为内存镜像文件对应的存储结构的步骤。

基于此,考虑到在对代码对象进行转存时,需要采用键值对的形式完成,因此需要明确目标模块的模块标识信息才能够完成,因此,在得到代码对象文件后,可以先对代码对象文件进行解析,以实现根据解析结果获得可执行代码对象作为目标代码对象;此后,若在目标模块为默认模块的情况下,说明其具有明确的模块标识信息,则可以执行步骤S206,即执行所述将所述目标代码对象转换为内存镜像文件对应的存储结构的步骤;或者,在目标模块为非默认模块且具有模块标识信息的情况下,说明其具有明确的模块标识信息,则可以执行步骤S206,即执行所述将所述目标代码对象转换为内存镜像文件对应的存储结构的步骤。

沿用上例,在得到目标模块对应的模块名称N1后,可以先以正常的流程运行目标模块对应的应用程序,且在运行过程中,可以通过模块名称N1在代码对象文件目录中确定代码对象文件,或者直接从网络上查找代码对象文件,以方便后续将代码对象文件中关联目标模块的代码对象存储到内存镜像文件,实现模块之间可以共享代码对象文件。进一步的,得到目标模块对应的代码对象文件后,可以通过虚拟机将代码对象文件解析为可执行的目标代码对象,并安装到虚拟机上,用于运行应用程序。同时为了能够实现在后续阶段可以对目标代码对象共享,可以检测目标模块为缺省模块,或者检测目标模块不是缺省模块但是能够明确模块名称是,可以用于后续进行键值对的存储,实现模块之间可以共享代码对象。

综上,通过不同的检测方式检测目标模块是否可以明确模块标识信息,能够确保在存储阶段,建立满足需求的键值对,从而实现模块之间可以共享代码对象。

步骤S206,将所述目标代码对象转换为内存镜像文件对应的存储结构。

具体的,在上述得到目标模块对应的模块标识信息,以及目标模块对应的目标代码对象后,此时说明编程语言虚拟机已经可以使用目标模块运行相应的指令实现启动应用程序;而为了能够实现在虚拟机的多个模块之间可以共享该代码对象,实现在应用阶段可以直接读取代码对象使用,从而加速启动所属应用程序的速度,可以先将目标代码对象转换为内存镜像文件对应的存储结构,此后可以将对应内存镜像文件存储结构的目标代码对象写入内存镜像文件,以实现后续其他模块可以直接从内存镜像文件中读取目标代码对象使用,而不需要重新加载代码对象,从而可以有效的提高模块对应应用程序的启动速度。

其中,内存镜像文件具体是指用于对编程语言虚拟机中待使用的代码对象进行存储的内存,且不同的模块在运行时都可以访问内存镜像文件实现读取代码对象使用;而由于加载到的代码对象的数据结构为编写结构,其无法持久化在内存镜像文件中,因此在写入内存镜像文件前,需要按照内存镜像文件的存储结构进行转换。实际应用中,在将目标代码对象转换为内存镜像文件对应的存储结构时,可以通过OpenJDK(运行在机器上的软件)的逻辑实现,本实施例在此不作任何限定。

步骤S208,以所述模块标识信息为存储键,所述存储结构的目标代码对象为存储值,向所述内存镜像文件中写入键值对,其中,所述键值对用于所述目标模块执行任务指令。

具体的,在上述得到目标模块唯一对应的模块标识信息,以及目标模块的目标代码对象,且目标代码对象为内存镜像文件对应的存储结构的情况下,为了能够实现在各模块之间共享代码对象,可以按照键值对的方式向内存镜像文件中写入代码对象,即以模块标识信息为存储键,存储结构的目标代码对象为存储值,向所述内存镜像文件中写入目标模块的目标代码对象对应的键值对。实现在共享阶段,可以结合内存镜像文件中的键值对,读取到任务指令对应的目标代码对象,此后可以使用目标代码对象支持目标模块运行,用于执行任务指令,实现启动相应的应用程序。其中,存储键即为key,存储值即为value。

进一步的,在得到模块标识信息和目标模块对应的目标代码对象后,为了能够实现多个模块之间共享代码对象,从而加速应用程序的启动,可以以键值对的方式向内存镜像文件中写入代码对象,以方便在应用阶段使用,本实施例中,具体实现方式如下:

根据所述模块标识信息构建所述存储键,并将对应所述存储结构的目标代码对象作为所述存储值;根据所述存储键和所述存储值构建所述键值对,并将所述键值对写入所述内存镜像文件。

基于此,在得到模块标识信息和对应内存镜像文件存储结构的目标代码对象后,可以根据模块标识信息构建存储键,并将对应存储结构的目标代码对象作为存储值;根据存储键和存储值构建键值对,并将键值对写入内存镜像文件即可。其中,存储键的构建可以采用加密算法或者哈希计算的方式实现,本实施例在此不作任何限定。

实际应用中,在将内存中的目标代码对象处理为可以被转存到内存镜像文件的形式的结构后,为了能够在应用阶段可以快速查询并使用,可以以模块名称或者代码对象名称为键,以目标代码对象为值,以键值对的形式写入内存镜像文件,方便后续共享阶段使用。

沿用上例,在得到目标模块对应的目标代码对象后,可以先将目标代码对象转换为对应内存镜像文件的存储结构,之后以目标模块对应的模块名称N1为key,以存储结构的目标代码对象为value,组成键值对写入内存镜像文件,实现在共享阶段可以直接读取内存镜像文件完成代码对象的读取和使用。

此外,在代码对象共享阶段,其执行策略为调用目标模块来执行待执行结指令,而此过程中,为了能够提高目标模块对应的应用程序启动速度,可以直接根据待执行指令对应的模块标识信息在内存镜像文件读取已经存储的代码对象使用,从而节省代码对象的获取时间,加快启动,用于实现执行待执行指令;本实施例中,具体实现方式如步骤S2082至步骤S2088。

步骤S2082,接收关联所述目标模块的待执行指令。

具体的,待执行指令具体是指需要目标模块执行的指令,执行指令时需要启动应用程序实现相应的功能,因此在接收到待执行指令后,需要确定标识信息,以在内存镜像文件中读取标识信息对应的代码对象文件,支持目标模块运行,以执行待执行指令,实现应用程序的响应功能,通过在内存镜像文件中直接使用共享的代码对象,可以加快启动速度,从而快速的响应并执行指令。

具体实施时,由于待执行指令都是在需要启动目标模块对应的应用程序时触发,因此需要先加载该指令在进行后续的处理,本实施例中,具体实现方式如下:

接收目标指令地址,并基于所述目标指令地址获取所述待执行指令;在所述待执行指令关联所述目标模块的情况下,执行根据所述待执行指令确定指令模块标识信息,并基于所述指令模块标识信息构建指令存储键的步骤。

具体的,目标指令地址具体是指待执行指令需要被执行时,存储指令的地址,用于实现读取到待执行指令后,可以进行后续调用目标模块和读取代码对象,启动应用程序执行指令,实现相应的功能。

基于此,在确定目标指令地址后,可以基于目标指令地址获取待执行指令;在待执行指令关联目标模块的情况下,说明需要通过目标模块执行指令,实现应用程序中相关功能的实现,再执行步骤S2084即可;即执行根据所述待执行指令确定指令模块标识信息,并基于所述指令模块标识信息构建指令存储键的步骤。

步骤S2084,根据所述待执行指令确定指令模块标识信息,并基于所述指令模块标识信息构建指令存储键。

步骤S2086,按照所述指令存储键查询所述内存镜像文件获得所述目标代码对象,并调用所述目标模块利用所述目标代码对象执行所述待执行指令。

具体的,指令模块标识信息具体是指执行待执行指令的模块对应的模块标识信息,在待执行指令关联目标模块的情况下,指令模块标识信息即为目标模块的模块标识信息;相应的,指令存储键具体是指基于指令模块标识信息构建的存储键。

基于此,在得到关联目标模块的待执行指令的情况下,可以先根据待执行指令确定指令模块标识信息,并基于指令模块标识信息构建指令存储键;此后再按照指令存储键查询内存镜像文件,以根据查询结果获得目标代码对象,在得到目标代码对象后,即可调用目标模块利用目标代码对象执行待执行指令,实现支持虚拟机中的应用程序提供对应待执行指令的相关功能。

实际应用中,编程语言虚拟机执行引擎在共享代码对象执行待执行指令时,首先程序命令行指定入口函数名称,其次虚拟机加载入口函数名称所在的代码对象;再次将执行引擎的当前代码指定为入口函数的第一条指令,此时将进入执行引擎循环,即进行读取代码对象用于目标模块执行待执行指令;此过程中会先根据目标指令地址获取当前指令,之后判断当前指令涉及新的代码时,会再判断当前指令对应的模块为缺省模块,或者不是缺省模块但是可以确定模块名称信息时,结合被确定的模块名称信息构建存储键,之后基于构建好的存储键查询内存镜像文件,以实现在内存镜像文件中读取到对应存储键的代码对象,之后再将代码对象安装到相应的虚拟机上,即可实现调用模块执行当前指令。

举例说明,在得到待执行指令后,可以先确定待执行指令对应的模块名称N2,之后基于模块名称N2构建key2,之后基于key2查询内存镜像文件,将根据查询结果得到value2,再将其转换为代码对象并安装到虚拟机上,即可实现虚拟机调用模块执行指令。

综上,通过在内存镜像文件中读取代码对象使用,可以实现快速的获取代码对象支持目标模块执行指令,从而加快应用程序的启动速度,以实现向用户提供相应的服务功能。

此外,考虑到需要执行待执行指令的模块的代码对象不存在于内存镜像文件中,而为了能够顺利执行待执行指令,可以结合指令模块标识信息完成指令代码对象的加载和应用,本实施例中,具体实现方式如下:

在所述待执行指令满足代码对象获取条件的情况下,基于所述待执行指令对应的所述指令模块标识信息加载指令代码对象文件;通过解析所述指令代码对象文件确定所述指令标识信息对应的指令模块的指令代码对象;调用所述指令模块利用所述指令代码对象执行所述待执行指令。

具体的,指令代码对象文件具体是指指令模块标识信息对应的代码对象文件。基于此,在待执行指令满足代码对象获取条件的情况下,说明此时待执行指令的执行模块不存在,相应的其对应的代码对象不存于内存镜像文件中,而为了能够实现执行该指令,可以临时加载代码对象,即基于待执行指令对应的指令模块标识信息加载指令代码对象文件;之后通过解析指令代码对象文件确定指令标识信息对应的指令模块的指令代码对象;最后即可调用指令模块利用指令代码对象执行待执行指令。

需要说明的是,本实施例中加载指令代码对象文件以及解析指令代码对象的过程,均可参见上述实施例中加载代码对象文件和解析目标代码对象的过程,本实施例在此不作过多赘述。

也就是说,在加载指令代码对象文件时,可以根据指令模块名称信息遍历代码对象文件目录,或者从网络查找对应的指令代码对象文件,以实现得到指令代码对象文件后,可以通过虚拟机将指令代码对象文件解析为指令代码对象,之后安装到虚拟机上,实现调用目标模块利用指令代码对象执行指令,以达到支持虚拟机中的应用程序提供对应指令的相关功能。

综上,在无法从内存镜像文件中读取到代码对象的情况下,为了能够确保指令可被执行,可以结合指令对应的标识信息加载代码对象,以将加载到的代码对象之间安装在虚拟上使用,从而确保指令可以被执行,实现相应的功能。

更进一步的,考虑到此时得到的指令代码对象相较于内存镜像文件是最新版本的代码对象,为了能够在后续共享给其他模块使用,可以将其结构化到内存镜像文件中,本实施例中,具体实现方式如下:

将所述指令代码对象转换为所述内存镜像文件对应的存储结构;以所述指令模块标识信息为存储键,所述存储结构的指令代码对象为存储值,向所述内存镜像文件中写入目标键值对,其中,所述目标键值对用于所述指令模块执行所述待执行指令。

基于此,在共享阶段直接加载新的代码对象后,考虑到后续可能还会用得到,且内存镜像文件中不存在该部分代码对象,因此可以将其存储到内存镜像文件,首先将指令代码对象转换为内存镜像文件对应的存储结构;其次以指令模块标识信息为存储键,存储结构的指令代码对象为存储值,即可向内存镜像文件中写入目标键值对,其中,目标键值对用于指令模块执行待执行指令。

需要说明的是,上述转换以及写入内存镜像文件的过程,均可参见上述实施例中相同或相应的描述,本实施例在此不作过多赘述。

本实施例提供的信息处理方法,为了避免因为大规模使用一次编写到处使用的语言影响虚拟机启动速度,通过共享代码对象的方式支持虚拟机上模块应用程序,实现虚拟机可以直接在内存镜像文件中加载需要使用的代码对象。而为了能够支持虚拟机在内存镜像文件中的代码对象读取和使用,需要在获取到虚拟机配置信息后,先基于虚拟机配置信息生成对应应用程序的目标模块的模块标识信息,之后根据模块标识信息加载代码对象文件,实现通过解析代码对象文件得到目标模块对应的目标代码对象,以确保支持目标模块可以在虚拟机中运行。此后,为了能够加快虚拟机启动速度,实现多模块对应的应用程序之间可以共享代码对象,可以将目标代码对象转换为内存镜像文件对应的存储结构,之后以模块标识信息为存储键,存储结构的目标代码对象为存储值,向内存镜像文件中写入键值对,实现在内存镜像文件中存储目标代码对象,从而支持多模块对应的应用程序在执行指令时,都可以在内存镜像文件中读取相应的代码对象,从而解决目标模块启动慢的问题,以实现快速的向服务提供相应的功能服务。

下述结合附图3,以本说明书提供的信息处理方法在虚拟机启动加速场景中的应用为例,对所述信息处理方法进行进一步说明。其中,图3示出了本说明书一个实施例提供的一种信息处理方法的处理过程流程图,具体包括以下步骤。

步骤S302,获取包含虚拟机业务信息和代码对象文件目录的虚拟机配置信息,以及确定目标模块。

步骤S304,在确定目标模块为非默认模块的情况下,根据虚拟机业务信息或代码对象文件目录,生成目标模块对应的模块名称信息,作为模块标识信息。

步骤S306,在确定目标模块满足对象新建条件的情况下,通过遍历代码对象文件目录确定模块标识信息对应的文件路径,并基于文件路径读取代码对象文件。

步骤S308,对代码对象文件进行解析,根据解析结果获得可执行代码对象作为目标代码对象。

步骤S310,在目标模块为默认模块或者目标模块为非默认模块且具有模块标识信息的情况下,将目标代码对象转换为内存镜像文件对应的存储结构。

步骤S312,根据模块标识信息构建存储键,并将对应存储结构的目标代码对象作为存储值。

步骤S314,根据存储键和存储值构建键值对,并将键值对写入所述内存镜像文件。

步骤S316,接收目标指令地址,并基于目标指令地址获取待执行指令。

步骤S318,在待执行指令关联目标模块的情况下,根据待执行指令确定指令模块标识信息,并基于指令模块标识信息构建指令存储键。

步骤S320,按照指令存储键查询内存镜像文件获得目标代码对象,并调用目标模块利用目标代码对象执行待执行指令。

综上所述,为了避免因为大规模使用一次编写到处使用的语言影响虚拟机启动速度,通过共享代码对象的方式支持虚拟机上模块应用程序,实现虚拟机可以直接在内存镜像文件中加载需要使用的代码对象。而为了能够支持虚拟机在内存镜像文件中的代码对象读取和使用,需要在获取到虚拟机配置信息后,先基于虚拟机配置信息生成对应应用程序的目标模块的模块标识信息,之后根据模块标识信息加载代码对象文件,实现通过解析代码对象文件得到目标模块对应的目标代码对象,以确保支持目标模块可以在虚拟机中运行。此后,为了能够加快虚拟机启动速度,实现多模块对应的应用程序之间可以共享代码对象,可以将目标代码对象转换为内存镜像文件对应的存储结构,之后以模块标识信息为存储键,存储结构的目标代码对象为存储值,向内存镜像文件中写入键值对,实现在内存镜像文件中存储目标代码对象,从而支持多模块对应的应用程序在执行指令时,都可以在内存镜像文件中读取相应的代码对象,从而解决目标模块启动慢的问题,以实现快速的向服务提供相应的功能服务。

与上述方法实施例相对应,本说明书还提供了信息处理装置实施例,图4示出了本说明书一个实施例提供的一种信息处理装置的结构示意图。如图4所示,该装置包括:

获取模块402,被配置为获取虚拟机配置信息,基于所述虚拟机配置信息生成目标模块对应的模块标识信息;

解析模块404,被配置为根据所述模块标识信息加载代码对象文件,并通过解析所述代码对象文件确定所述目标模块对应的目标代码对象;

转换模块406,被配置为将所述目标代码对象转换为内存镜像文件对应的存储结构;

存储模块408,被配置为以所述模块标识信息为存储键,所述存储结构的目标代码对象为存储值,向所述内存镜像文件中写入键值对,其中,所述键值对用于所述目标模块执行任务指令。

一个可选的实施例中,所述获取模块402进一步被配置为:

获取包含虚拟机业务信息和代码对象文件目录的虚拟机配置信息,以及确定目标模块;在确定所述目标模块为非默认模块的情况下,根据所述虚拟机业务信息或所述代码对象文件目录,生成所述目标模块对应的模块名称信息,作为所述模块标识信息。

一个可选的实施例中,在确定所述目标模块满足对象新建条件的情况下,所述解析模块404进一步被配置为:

通过遍历所述代码对象文件目录确定所述模块标识信息对应的文件路径,并基于所述文件路径读取所述代码对象文件;或者,根据所述模块标识信息构建文件获取请求,将所述文件获取请求发送至文件查询服务器,并接收所述文件查询服务器针对所述文件获取请求返回的所述代码对象文件。

一个可选的实施例中,所述解析模块404进一步被配置为:

对所述代码对象文件进行解析,根据解析结果获得可执行代码对象作为目标代码对象;所述通过解析所述代码对象文件确定所述目标模块对应的目标代码对象步骤执行之后,还包括:在所述目标模块为默认模块的情况下,执行所述将所述目标代码对象转换为内存镜像文件对应的存储结构的步骤;或者,在所述目标模块为非默认模块且具有模块标识信息的情况下,执行所述将所述目标代码对象转换为内存镜像文件对应的存储结构的步骤。

一个可选的实施例中,所述存储模块408进一步被配置为:

根据所述模块标识信息构建所述存储键,并将对应所述存储结构的目标代码对象作为所述存储值;根据所述存储键和所述存储值构建所述键值对,并将所述键值对写入所述内存镜像文件。

一个可选的实施例中,所述装置还包括:

调用模块,被配置为接收关联所述目标模块的待执行指令;根据所述待执行指令确定指令模块标识信息,并基于所述指令模块标识信息构建指令存储键;按照所述指令存储键查询所述内存镜像文件获得所述目标代码对象,并调用所述目标模块利用所述目标代码对象执行所述待执行指令。

一个可选的实施例中,所述调用模块进一步被配置为:

接收目标指令地址,并基于所述目标指令地址获取所述待执行指令;在所述待执行指令关联所述目标模块的情况下,执行根据所述待执行指令确定指令模块标识信息,并基于所述指令模块标识信息构建指令存储键的步骤。

一个可选的实施例中,所述装置还包括:

加载文件模块,被配置为在所述待执行指令满足代码对象获取条件的情况下,基于所述待执行指令对应的所述指令模块标识信息加载指令代码对象文件;通过解析所述指令代码对象文件确定所述指令标识信息对应的指令模块的指令代码对象;调用所述指令模块利用所述指令代码对象执行所述待执行指令。

一个可选的实施例中,所述装置还包括:

写入文件模块,被配置为将所述指令代码对象转换为所述内存镜像文件对应的存储结构;

以所述指令模块标识信息为存储键,所述存储结构的指令代码对象为存储值,向所述内存镜像文件中写入目标键值对,其中,所述目标键值对用于所述指令模块执行所述待执行指令。

综上所述,为了避免因为大规模使用一次编写到处使用的语言影响虚拟机启动速度,通过共享代码对象的方式支持虚拟机上模块应用程序,实现虚拟机可以直接在内存镜像文件中加载需要使用的代码对象。而为了能够支持虚拟机在内存镜像文件中的代码对象读取和使用,需要在获取到虚拟机配置信息后,先基于虚拟机配置信息生成对应应用程序的目标模块的模块标识信息,之后根据模块标识信息加载代码对象文件,实现通过解析代码对象文件得到目标模块对应的目标代码对象,以确保支持目标模块可以在虚拟机中运行。此后,为了能够加快虚拟机启动速度,实现多模块对应的应用程序之间可以共享代码对象,可以将目标代码对象转换为内存镜像文件对应的存储结构,之后以模块标识信息为存储键,存储结构的目标代码对象为存储值,向内存镜像文件中写入键值对,实现在内存镜像文件中存储目标代码对象,从而支持多模块对应的应用程序在执行指令时,都可以在内存镜像文件中读取相应的代码对象,从而解决目标模块启动慢的问题,以实现快速的向服务提供相应的功能服务。

上述为本实施例的一种信息处理装置的示意性方案。需要说明的是,该信息处理装置的技术方案与上述的信息处理方法的技术方案属于同一构思,信息处理装置的技术方案未详细描述的细节内容,均可以参见上述信息处理方法的技术方案的描述。

本实施例还提供一种对象共享方法,图5示出了根据本说明书一个实施例提供的一种对象共享方法的流程图,具体包括以下步骤。

步骤S502,接收关联目标模块的目标指令。

步骤S504,根据所述目标指令确定目标模块标识信息,基于所述目标模块标识信息构建目标存储键。

步骤S506,按照所述目标存储键查询内存镜像文件,根据查询结果获得目标代码对象。

步骤S508,调用所述目标模块利用所述目标代码对象执行所述目标指令。

与上述方法实施例相对应,本说明书还提供了对象共享装置实施例,图6示出了本说明书一个实施例提供的一种对象共享装置的结构示意图。如图6所示,该装置包括:

接收模块602,被配置为接收关联目标模块的目标指令;

构建模块604,被配置为根据所述目标指令确定目标模块标识信息,基于所述目标模块标识信息构建目标存储键;

查询模块606,被配置为按照所述目标存储键查询内存镜像文件,根据查询结果获得目标代码对象;

执行模块608,被配置为调用所述目标模块利用所述目标代码对象执行所述目标指令。

上述为本实施例的一种对象共享装置的示意性方案。需要说明的是,该对象共享装置的技术方案与上述的对象共享方法的技术方案属于同一构思,对象共享装置的技术方案未详细描述的细节内容,均可以参见上述对象共享方法的技术方案的描述。

图7示出了根据本说明书一个实施例提供的一种计算设备700的结构框图。该计算设备700的部件包括但不限于存储器710和处理器720。处理器720与存储器710通过总线730相连接,数据库750用于保存数据。

计算设备700还包括接入设备740,接入设备740使得计算设备700能够经由一个或多个网络760通信。这些网络的示例包括公用交换电话网(PSTN,Public SwitchedTelephone Network)、局域网(LAN,Local Area Network)、广域网(WAN,Wide AreaNetwork)、个域网(PAN,Personal Area Network)或诸如因特网的通信网络的组合。接入设备740可以包括有线或无线的任何类型的网络接口(例如,网络接口卡(NIC,networkinterface controller))中的一个或多个,诸如IEEE802.11无线局域网(WLAN,WirelessLocal Area Network)无线接口、全球微波互联接入(Wi-MAX,WorldwideInteroperability for Microwave Access)接口、以太网接口、通用串行总线(USB,Universal Serial Bus)接口、蜂窝网络接口、蓝牙接口、近场通信(NFC,Near FieldCommunication)接口,等等。

在本申请的一个实施例中,计算设备700的上述部件以及图7中未示出的其他部件也可以彼此相连接,例如通过总线。应当理解,图7所示的计算设备结构框图仅仅是出于示例的目的,而不是对本申请范围的限制。本领域技术人员可以根据需要,增添或替换其他部件。

计算设备700可以是任何类型的静止或移动计算设备,包括移动计算机或移动计算设备(例如,平板计算机、个人数字助理、膝上型计算机、笔记本计算机、上网本等)、移动电话(例如,智能手机)、可佩戴的计算设备(例如,智能手表、智能眼镜等)或其他类型的移动设备,或者诸如台式计算机或个人计算机(PC,Personal Computer)的静止计算设备。计算设备700还可以是移动式或静止式的服务器。

其中,处理器720用于执行如下计算机可执行指令,该计算机可执行指令被处理器执行时实现上述信息处理方法或者对象共享方法的步骤。

上述为本实施例的一种计算设备的示意性方案。需要说明的是,该计算设备的技术方案与上述的信息处理方法或者对象共享方法的技术方案属于同一构思,计算设备的技术方案未详细描述的细节内容,均可以参见上述信息处理方法或者对象共享方法的技术方案的描述。

本说明书一实施例还提供一种信息处理系统,包括:虚拟机控制端和虚拟机;所述虚拟机控制端用于管理所述虚拟机,并存储有信息处理可执行指令,该信息处理可执行指令被虚拟机控制端执行时实现信息处理方法或者对象共享方法的步骤。

上述为本实施例的一种信息处理系统的示意性方案。需要说明的是,该信息处理系统的技术方案与上述的信息处理方法或者对象共享方法的技术方案属于同一构思,信息处理系统的技术方案未详细描述的细节内容,均可以参见上述信息处理方法或者对象共享方法的技术方案的描述。

本说明书一实施例还提供一种计算机可读存储介质,其存储有计算机可执行指令,该计算机可执行指令被处理器执行时实现上述信息处理方法或者对象共享方法的步骤。

上述为本实施例的一种计算机可读存储介质的示意性方案。需要说明的是,该存储介质的技术方案与上述的信息处理方法或者对象共享方法的技术方案属于同一构思,存储介质的技术方案未详细描述的细节内容,均可以参见上述信息处理方法或者对象共享方法的技术方案的描述。

本说明书一实施例还提供一种计算机程序,其中,当所述计算机程序在计算机中执行时,令计算机执行上述信息处理方法或者对象共享方法的步骤。

上述为本实施例的一种计算机程序的示意性方案。需要说明的是,该计算机程序的技术方案与上述的信息处理方法或者对象共享方法的技术方案属于同一构思,计算机程序的技术方案未详细描述的细节内容,均可以参见上述信息处理方法或者对象共享方法的技术方案的描述。

上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。

所述计算机指令包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。

需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本说明书实施例并不受所描述的动作顺序的限制,因为依据本说明书实施例,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本说明书实施例所必须的。

在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。

以上公开的本说明书优选实施例只是用于帮助阐述本说明书。可选实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施方式。显然,根据本说明书实施例的内容,可作很多的修改和变化。本说明书选取并具体描述这些实施例,是为了更好地解释本说明书实施例的原理和实际应用,从而使所属技术领域技术人员能很好地理解和利用本说明书。本说明书仅受权利要求书及其全部范围和等效物的限制。

相关技术
  • 信息互动设备、数据对象信息处理方法及装置
  • 数据对象信息处理方法、装置及系统
  • 数据对象信息处理方法、装置及系统
  • 数据对象库存信息处理方法、装置及系统
  • 数据对象信息处理方法、装置及系统
  • 信息共享处理装置及信息共享处理方法
  • 信息共享处理装置及信息共享处理方法
技术分类

06120115939925