一种程序执行方法、程序管理器和虚拟机的制作方法

文档序号:6443567阅读:210来源:国知局
专利名称:一种程序执行方法、程序管理器和虚拟机的制作方法
技术领域
本发明涉及计算机技术领域,更具体的说是涉及一种程序执行方法、程序管理器和虚拟机。
背景技术
X86架构和ARM架构是现有的两种基于不同类型的处理器而形成的计算机硬件架构,由于计算机硬件架构不同,在软件执行过程中其可调用的指令集也不同,因此通常情况下在一个硬件架构上并不能运行另一个硬件架构的程序。但是随着计算机技术的发展,由于基于不同硬件架构的指令集而编译的程序各有自己的优势,因此在一个硬件架构中常常有运行基于另一个硬件架构的程序的需求,例如基于ARM架构编译的游戏程序,需要在X86架构上进行调试运行等。现有的程序执行方法通常是通过计算机模拟器来执行,以X86架构上运行基于ARM架构的ARM程序为例,当需要执行ARM程序时启动模拟器,模拟器执行所述ARM程序,但是由于ARM程序实际还是运行在X86架构上,其需要通过物理的寄存器以及处理器进行数据传输和指令处理,因此执行所述ARM程序时,需要将ARM程序中的ARM指令翻译成基于X86架构的X86指令后才能执行。由以上过程可以看出,在X86架构中执行ARM程序时,需要进行指令的翻译,而通常情况下为了满足程序的通用性,一个ARM指令会被翻译成多个X86指令,使得指令增多,因而就会降低程序的执行速率。

发明内容
有鉴于此,本发明提供了一种程序执行方法、程序管理器和虚拟机,用以解决现有的程序执行速率较低的技术问题。为实现上述目的,本发明提供如下技术方案:一种程序执行方法,应用于运行在第一硬件架构中的程序管理器,所述程序管理器是基于第二硬件架构所创建的,所述方法包括:所述程序管理器接收到程序执行请求时,获取需要执行的基于第二硬件架构的第
二程序;判断所述第二程序调用的函数是否为第一硬件架构库文件中的预定函数;如果是,则触发所述第一硬件架构按照所述预定函数执行所述第二程序中的指令。优选地,当所述第二程序调用的函数不是第一硬件架构库文件中的预定函数时,所述方法还包括:将所述第二程序中的第二指令以及所述调用函数翻译为所述基于第一硬件架构的第一指令和第一函数,并触发所述第一硬件架构在库文件中调用该第一函数,执行所述
第一指令。
优选地,所述获取需要执行的基于第二硬件架构的第二程序具体为:获取需要执行的基于第二硬件架构的第二程序,并确定所述第二程序中的指令及其调用的函数。优选地于,所述第一硬件架构为X86平台,所述第二硬件架构为ARM平台。一种程序执行方法,应用于运行在第一硬件架构中,且具有第二操作系统的虚拟机中,所述虚拟机是基于第二硬件架构所创建的,所述方法包括:所述虚拟机接收到程序执行请求时,获取需要执行的基于第二硬件架构的第二程序;判断所述第二程序调用的函数是否为第一硬件架构库文件中的预定函数;如果是,则触发所述第一硬件架构按照所述预定函数执行所述第二程序中的指令。一种程序管理器,运行在第一硬件架构中,且基于第二硬件架构所创建的,包括:第一获取模块,用于接收到程序执行请求时,获取需要执行的基于第二硬件架构的第二程序。第一判断模块,用于判断所述第二程序调用的函数是否为第一硬件架构库文件中的预定函数。第一触发模块,用于当所述判断模块判断结果为是时,触发所述第一硬件架构按照所述预定函数执行所述第二程序中的指令。优选地,所述装置还包括:第一翻译模块,用于当所述判断模块为否时,将所述第二程序中的第二指令以及所述调用函数翻译为所述基于第一硬件架构的第一指令和第一函数,并触发所述第一硬件架构按照所述第一函数执行所述第一指令。优选地,所述第一获取模块具体用于获取需要执行的基于第二硬件架构的第二程序,并确定所述第二程序中的第二指令及其调用的函数。优选地,所述第一硬件架构为X86平台,所述第二硬件架构为ARM平台。一种虚拟机,运行在第一硬件架构中,具有第二操作系统,且基于第二硬件架构所创建的,包括:第二获取模块,用于接收到程序执行请求时,获取需要执行的基于第二硬件架构的第二程序;第二判断模块,用于判断所述第二程序调用的函数是否为第一硬件架构库文件中的预定函数;第二触发模块,用于当所述判断模块判断结果为是时,触发所述第一硬件架构,由所述第一硬件架构按照所述预定函数执行所述第二程序中的指令经由上述的技术方案可知,与现有技术相比,本发明提供了一种程序执行方法、程序管理器和虚拟机,在接收到程序执行请求时,获取基于第二硬件架构的第二程序,当判断出该第二程序的调用函数即为第一硬件架构库文件中的预定函数,则触发第一硬件架构从自身库文件中确定该预定函数,并按照该预定函数执行所述第二程序的指令,因此减少了翻译步骤,减少了将一条第二程序的指令翻译为多条第一指令的操作,因此也就提高了程序执行效率。


为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。图1为本发明一种程序执行方法实施例1的流程图;图2为本发明一种程序执行方法实施例2的流程图;图3为本发明一种程序管理器实施例1的结构示意图;图4为本发明一种程序管理器实施例2的结构示意图。
具体实施例方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。本发明实施例公开了一种本发明提供了一种程序执行方法、程序管理器和虚拟机,在接收到程序执行请求时,获取基于第二硬件架构的第二程序,当判断出该第二程序的调用函数即为第一硬件架构库文件中的预定函数,则触发第一硬件架构从自身库文件中确定该预定函数,并按照该预定函数执行所述第二程序的指令,因此减少了翻译步骤,减少了将一条第二程序的指令翻译为多条第一指令的操作,因此也就提高了程序执行效率。参见图1,示出了本发明一种程序执行方法实施例1的流程图,该方法应用于运行在第一硬件架构中的程序管理器中,所述程序管理器是基于第二硬件架构所创建的,该方法可以包括以下几个步骤:步骤101:所述程序管理器接收到程序执行请求时,获取需要执行的基于第二硬件架构的第二程序。本实施例中,硬件架构是指基于处理器以及其他的计算机硬件而形成的程序执行处理单元,程序的运行需要建立在硬件结构的基础之上。不同的计硬件架构,其指令集也不相同。例如X86架构属于CISC (Complex InstructionSet Computer,复杂指令集计算机)架构,ARM架构是属于RISC (reducedinstruction set computer,精简指令集计算机)架构,由于不同的硬件指令集不同,基于不同硬件架构编译的程序也不相同。所述的程序管理器可以是指运行在第一硬件架构上的软件程序,其可以模拟第二硬件架构的处理器的功能和指令系统,使第一硬件架构能够运行基于第二硬件架构的软件程序,因此该程序管理器是基于第二硬件架构所创建的。在实际应用中,所述的程序管理器例如可以是指计算机架构模拟器。当需要在第一硬件架构上运行基于第二硬件架构的第二程序时,也即基于第二硬件架构编译的第二程序,例如一些游戏程序、应用程序等,需要触发程序管理器运行,由程序管理器对所述第二程序进行处理以便于其能够在第一硬件架构上执行。其中,所述程序管理器获取所述第二程序后,需要确定所述第二程序中的指令以及其调用的函数。程序是由指令组成的,程序执行过程即是执行指令的过程。由于每一个可执行的程序都会有依赖的库文件,包含由多个程序同时使用的代码和数据,也即程序执行过程中需要依赖库函数,例如用于进行数据运算的加法函数、减法函数等。某些指令执行过程中需要调用相应的函数来进行数据处理。由于所述第二程序是基于第二硬件架构而编译的,因此其调用的库文件中的函数也是基于第二硬件架构的函数。步骤102:判断所述第二程序调用的函数是否为第一硬件架构库文件中的预定函数,如果是,则进入步骤103,如果否,则进入步骤104。函数虽然也是基于不同硬件架构所创建的,但是不同的硬件架构中有些函数所实现的功能是相同的,因此可以基于不同硬件架构的程序的指令要求进行相同的数据处理过程,例如一些用于数学运算的数学库函数。因此本实施例中首先判断所述第二程序调用的函数是否为第一硬件架构库文件中的预定函数,也即是判断第二程序调用的函数是否与第一硬件架构库文件中的预定函数相同。所述预定函数是分别在第一程序和第二程序执行过程中,可以实现相同功能的库函数,例如实现数学运算的库函数。步骤103:触发所述第一硬件架构按照所述预定函数执行所述第二程序中的指令。当判断出第二程序调用的函数为第一硬件架构库文件中的预定函数,也即是说第二程序调用的函数与第一硬件架构库文件中的预定函数可实现的功能相同。则可以直接触发第一硬件架构从库文件中确定该预定函数,按照所述预定函数执行该第二程序指令,也即由第一硬件架构调用该预定函数进行数据处理。第一硬件架构执行该第二程序的指令进行数据处理后的数据结果,第一硬件架构还可以将其反馈给程序管理器,以便于程序管理器依据该数据结果继续进行后续的第二程序的指令处理。步骤104:将所述第二程序中的指令以及所述调用函数翻译为所述基于第一硬件架构的第一指令和第一函数,并触发所述第一硬件架构在库文件中确定该第一函数,按照该第一函数执行所述第一指令。如果所述第二程序调用的函数不是第一硬件架构库文件中的预定函数,也即该第二程序调用的函数与所述预定函数不同,因此第一硬件架构不能直接调用自己库文件中的函数进行第二程序指令要求的数据处理,且由于指令集不同,第二程序不能直接在第一硬件架构中运行,仍需要程序管理器执行翻译操作,将第二程序中的指令翻译为基于第一硬件架构的第一指令,也即翻译为第一硬件架构可以识别并执行的指令,同时由于第二程序调用的函数也是基于第二硬件架构的函数,因此也需要将其调用的函数翻译为第一函数,此处将第二程序调用的函数翻译为第一函数是指将调用的函数代码翻译为可以实现相同功能的第一函数的代码,以便于第一硬件架构可识别并能够从自身库文件中调用,指令的翻译也是指代码的翻译过程。将第二程序的指令和函数翻译为第一指令和第一函数后,即可触发第一硬件架构执行该第二程序指令,从其自身的库文件中确定该第一函数,并按照该第一函数执行所述第一指令,以进行数据处理。在实际应用中,上文所述的第一硬件架构可以具体为X86架构,所述的第二硬件架构为ARM架构。X86架构为现有的计算机、个人电脑、笔记本等常用的硬件架构,而ARM架构由于其属于RISC架构,效率高于X86架构,很多游戏程序或者其他的应用程序都是基于ARM架构编译的,但是又需要在X86架构中运行或调试,尽管X86架构和ARM架构的指令集不同,但是有些库函数是相同的,可以实现相同的功能,例如数学库函数。因此采用本发明的实施例方案,程序管理器是运行在X86架构中的软件,其是基于ARM架构编译,即可以模拟ARM架构运行环境,并可将ARM程序翻译为X86程序,以实现在X86架构中执行该ARM程序。在需要执行该ARM程序时,程序管理器首先获取ARM程序的ARM指令及其调用的函数,若其调用的函数与X86架构的预定函数相同,则无需翻译ARM指令,直接触发X86架构,从自身库文件中确定该预定函数,并执行该ARM指令,即可得到数据处理结果。如果与X86架构的预定函数不相同,则再将ARM指令翻译为X86指令,调用函数也翻译为X86架构中的第一函数,然后再触发X86架构从自身库文件中确定该第一函数,以执行翻译后的X86指令。由于通过判断第二程序的调用函数是否为X86架构库文件中的函数,可以减少指令的翻译过程,因此也就避免了翻译后的X86指令较多的问题,从而即可提高程序的执行效率。在本实施例中,程序管理器接收到程序执行请求时,获取基于第二硬件架构的第二程序,当判断出该第二程序的调用函数即为第一硬件架构库文件中的预定函数,则触发第一硬件架构从自身库文件中确定该预定函数,并按照该预定函数执行所述第二程序的指令,因此减少了翻译步骤,减少了将一条第二程序的指令翻译为多条第一指令的操作,因此也就提闻了程序执行效率。参见图2,示出了本发明一种程序执行方法实施例2的流程图,该方法应用于运行在第一硬件架构中,且具有第二操作系统的虚拟机中,所述虚拟机是基于第二硬件架构所创建的,所述方法可以包括以下几个步骤:步骤201:所述虚拟机接收到程序执行请求时,获取需要执行的基于第二硬件架构的第二程序。虚拟机是指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统,本实施例所述的虚拟机是基于所述第二硬件架构所创建的,具有第二硬件架构支持运行的第二操作系统。所述虚拟机的第二操作系统可以与所述第一硬件架构下运行的第一操作系统相同,也可以不同。由于不同的硬件架构其能够支持运行的操作系统可能不同,一些硬件架构并不能支持运行某些操作系统。程序是在硬件架构的处理器中执行的,但是需要操作系统控制运行,当第二硬件架构不支持运行在第一硬件架构中的操作系统,而又需要在第一硬件架构下执行基于第二硬件架构编译的程序时,则可以通过创建虚拟机,由虚拟机模拟第二硬件架构的运行环境。获取该第二程序后,即可确定第二程序指令及其可能调用的函数。步骤202:判断所述第二程序调用的函数是否为第一硬件架构库文件中的预定函数,若是,则进入步骤203,若否,则进入步骤204。获取到第二程序后,确定第二程序中的指令及其调用的函数,然后首先判断第二程序调用的函数是否为第一硬件架构库文件中的预定函数,也即判断该第二程序调用的函数是否与预定函数相同。所述预定函数是分别在第一程序和第二程序执行过程中,可以实现相同功能的库函数,例如实现数学运算的库函数,可以预先根据基于第一硬件架构的库函数和基于第二硬件架构的库函数。来分别确定哪些库函数是可以实现相同功能的库函数,即确定为预定函数。步骤203:触发所述第一硬件架构按照所述预定函数执行所述第二程序中的指令。在判断出第二程序调用的函数为第一硬件架构库文件中的预定函数,也即是说第二程序调用的函数与第一硬件架构库文件中的预定函数可实现的功能相同。则触发第一硬件架构,由所述第一硬件架构从其库文件中确定该预定函数,按照所述预定函数执行该第二程序指令,也即由第一硬件架构调用该预定函数进行数据处理。第一硬件架构执行该第二程序的指令进行数据处理后的数据结果,第一硬件架构还可以将其反馈给虚拟机,以便于虚拟机依据该数据结果继续进行后续的第二程序的指令处理。步骤204:将所述第二程序中的指令以及所述调用函数翻译为所述基于第一硬件架构的第一指令和第一函数,并触发所述第一硬件架构在库文件中确定该第一函数,按照该第一函数执行所述第一指令。如果所述第二程序调用的函数不是第一硬件架构库文件中的预定函数,也即该第二程序调用的函数与所述预定函数不同,因此第一硬件架构不能直接调用自己库文件中的函数进行第二程序指令要求的数据处理。由于指令集不同,第二程序不能直接在第一硬件架构中运行,且所述虚拟机其模拟的是第二硬件架构的系统功能,其物理的执行过程还是由第一硬件架构执行的,为了能够使得第一硬件架构可以执行该第二程序,需要将第二程序指令及其调用的函数翻译为第一硬件架构可以识别的代码,也即将第二程序指令翻译成第一指令,调用的函数翻译为第一程序。此处将第二程序调用的函数翻译为第一函数是指将调用的函数代码翻译为可以实现相同功能的第一函数的代码,以便于第一硬件架构可识别并能够从自身库文件中调用,指令的翻译也是指代码的翻译过程。将第二程序的指令和函数翻译为第一指令和第一函数后,即可触发第一硬件架构执行该第二程序指令,从其自身的库文件中确定该第一函数,并按照该第一函数执行所述第一指令,以进行数据处理。在实际应用中,上文所述的第一硬件架构可以具体为X86架构,所述的第二硬件架构为ARM架构,所述虚拟机为运行在X86架构中的,基于ARM架构所创建的,其可以完整模拟ARM架构的硬件系统功能。在本实施例中,通过运行在第一硬件架构中的虚拟机接收到程序执行请求时,获取基于第二硬件架构的第二程序,当判断出该第二程序的调用函数即为第一硬件架构库文件中的预定函数,则触发第一硬件架构从自身库文件中确定该预定函数,并按照该预定函数执行所述第二程序的指令,因此减少了翻译步骤,减少了将一条第二程序的指令翻译为多条第一指令的操作,因此也就提高了程序执行效率。与本发明一种程序执行方法实施例1相对应,本发明还提供了一种程序管理器,所述程序管理器是基于第二硬件架构所创建的,并运行在第一硬件架构中,即该程序管理器可以在第一硬件架构中模拟与所述第一硬件架构指令不兼容或者体系不同的第二硬件架构,参见图3,为所述程序管理器实施例1的结构示意图,第一获取模块301,用于接收到程序执行请求时,获取需要执行的基于第二硬件架构的第二程序。其中,所述第一获取模块301具体用于获取需要执行的基于第二硬件架构的第二程序,并确定所述第二程序中的第二指令及其调用的函数。程序是由指令组成的,程序执行过程即是执行指令的过程。由于每一个可执行的程序都会有依赖的库文件,包含由多个程序同时使用的代码和数据,也即程序执行过程中需要依赖库函数,例如用于进行数据运算的加法函数、减法函数等。某些指令执行过程中需要调用相应的函数来进行数据处理。由于所述第二程序是基于第二硬件架构而编译的,因此其调用的库文件中的函数也是基于第二硬件架构的函数。第一判断模块302,用于判断所述第二程序调用的函数是否为第一硬件架构库文件中的预定函数。函数虽然也是基于不同硬件架构所创建的,但是不同的硬件架构中有些函数所实现的功能是相同的,因此可以基于不同硬件架构的程序的指令要求进行相同的数据处理过程,例如一些用于数学运算的数学库函数。因此本实施例中所述判断模块302判断所述第二程序调用的函数是否为第一硬件架构库文件中的预定函数,也即是判断第二程序调用的函数是否与第一硬件架构库文件中的预定函数相同。所述预定函数是分别在第一程序和第二程序执行过程中,可以实现相同功能的库函数,例如实现数学运算的库函数。第一触发模块303,用于当所述判断模块判断结果为是时,触发所述第一硬件架构按照所述预定函数执行所述第二程序中的指令。当判断出第二程序调用的函数为第一硬件架构库文件中的预定函数,也即是说第二程序调用的函数与第一硬件架构库文件中的预定函数可实现的功能相同。则可以直接触发第一硬件架构从库文件中确定该预定函数,按照所述预定函数执行该第二程序指令,也即由第一硬件架构调用该预定函数进行数据处理。所述程序管理器还包括:第一翻译模块304,用于当所述判断模块为否时,将所述第二程序中的第二指令以及所述调用函数翻译为所述基于第一硬件架构的第一指令和第一函数,并触发所述第一硬件架构按照所述第一函数执行所述第一指令。此处将第二程序调用的函数翻译为第一函数是指将调用的函数代码翻译为可以实现相同功能的第一函数的代码,以便于第一硬件架构可识别并能够从自身库文件中调用,指令的翻译也是指代码的翻译过程。将第二程序的指令和函数翻译为第一指令和第一函数后,即可触发第一硬件架构执行该第二程序指令,从其自身的库文件中确定该第一函数,并按照该第一函数执行所述第一指令,以进行数据处理。在实际应用中,本实施例所述的程序管理器可以具体是指计算机架构模拟器,用以实现在一硬件架构下能够运行其他硬件架构上的软件。上文所述的第一硬件架构可以具体为X86架构,所述的第二硬件架构为ARM架构。当然所述的第一硬件架构或者第二硬件架构还可以是其他类型的硬件架构,本发明并不对此做具体限定。在本实施例中,程序管理器接收到程序执行请求时,获取基于第二硬件架构的第二程序,当判断出该第二程序的调用函数即为第一硬件架构库文件中的预定函数,则触发第一硬件架构从自身库文件中确定该预定函数,并按照该预定函数执行所述第二程序的指令,因此减少了翻译步骤,避免了将一条第二程序的指令翻译为多条第一指令,因此也就提高了程序执行效率。与上述本发明一种程序执行方法实施例2相对应,本发明还提供了一种虚拟机,该虚拟机基于第二硬件架构所创建,具体第二操作系统,并运行在第一硬件架构中,参见图4,示出了所述虚拟机实施例的结构示意图,可以包括:第二获取模块401,用于接收到程序执行请求时,获取需要执行的基于第二硬件架构的第二程序。程序是在硬件架构的处理器中执行的,但是需要操作系统控制运行,当第二硬件架构不支持运行在第一硬件架构中的操作系统,而又需要在第一硬件架构下执行基于第二硬件架构编译的程序时,则可以通过创建虚拟机,由虚拟机模拟第二硬件架构的运行环境。第二判断模块402,用于判断所述第二程序调用的函数是否为第一硬件架构库文件中的预定函数。判断第二程序调用的函数是否为第一硬件架构库文件中的预定函数,也即判断该第二程序调用的函数是否与预定函数相同。所述预定函数是分别在第一程序和第二程序执行过程中,可以实现相同功能的库函数,例如实现数学运算的库函数,可以预先根据基于第一硬件架构的库函数和基于第二硬件架构的库函数。来分别确定哪些库函数是可以实现相同功能的库函数,即确定为预定函数。第二触发模块403,用于当所述判断模块判断结果为是时,触发所述第一硬件架构,由所述第一硬件架构按照所述预定函数执行所述第二程序中的指令。在判断出第二程序调用的函数为第一硬件架构库文件中的预定函数,也即是说第二程序调用的函数与第一硬件架构库文件中的预定函数可实现的功能相同。则触发第一硬件架构,由所述第一硬件架构从其库文件中确定该预定函数,按照所述预定函数执行该第二程序指令,也即由第一硬件架构调用该预定函数进行数据处理。其中,所述虚拟机还包括:第二翻译模块404,用于将所述第二程序中的指令以及所述调用函数翻译为所述基于第一硬件架构的第一指令和第一函数,并触发所述第一硬件架构在库文件中确定该第一函数,按照该第一函数执行所述第一指令。如果所述第二程序调用的函数不是第一硬件架构库文件中的预定函数,也即该第二程序调用的函数与所述预定函数不同,因此第一硬件架构不能直接调用自己库文件中的函数进行第二程序指令要求的数据处理。由于指令集不同,第二程序不能直接在第一硬件架构中运行,且所述虚拟机其模拟的是第二硬件架构的系统功能,其物理的执行过程还是由第一硬件架构执行的,为了能够使得第一硬件架构可以执行该第二程序,需要将第二程序指令及其调用的函数翻译为第一硬件架构可以识别的代码,也即将第二程序指令翻译成第一指令,调用的函数翻译为第一程序。此处将第二程序调用的函数翻译为第一函数是指将调用的函数代码翻译为可以实现相同功能的第一函数的代码,以便于第一硬件架构可识别并能够从自身库文件中调用,指令的翻译也是指代码的翻译过程。将第二程序的指令和函数翻译为第一指令和第一函数后,即可触发第一硬件架构执行该第二程序指令,从其自身的库文件中确定该第一函数,并按照该第一函数执行所述第一指令,以进行数据处理。在实际应用中,上文所述的第一硬件架构可以具体为X86架构,所述的第二硬件架构为ARM架构,所述虚拟机为运行在X86架构中的,基于ARM架构所创建的,其可以完整模拟ARM架构的硬件系统功能。在本实施例中,通过运行在第一硬件架构中的虚拟机接收到程序执行请求时,获取基于第二硬件架构的第二程序,当判断出该第二程序的调用函数即为第一硬件架构库文件中的预定函数,则触发第一硬件架构从自身库文件中确定该预定函数,并按照该预定函数执行所述第二程序的指令,因此减少了翻译步骤,避免了将一条第二程序的指令翻译为多条第一指令,因此也就提高了程序执行效率。本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备
所固有的要素。在没有更多限制的情况下,由语句“包括一个......”限定的要素,并不排
除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
权利要求
1.一种程序执行方法,其特征在于,应用于运行在第一硬件架构中的程序管理器,所述程序管理器是基于第二硬件架构所创建的,所述方法包括: 所述程序管理器接收到程序执行请求时,获取需要执行的基于第二硬件架构的第二程序; 判断所述第二程序调用的函数是否为第一硬件架构库文件中的预定函数; 如果是,则触发所述第一硬件架构按照所述预定函数执行所述第二程序中的指令。
2.根据权利要求1所述的方法,其特征在于,当所述第二程序调用的函数不是第一硬件架构库文件中的预定函数时,所述方法还包括: 将所述第二程序中的第二指令以及所述调用函数翻译为所述基于第一硬件架构的第一指令和第一函数,并触发所述第一硬件架构在库文件中调用该第一函数,执行所述第一指令。
3.根据权利要求1所述的方法,其特征在于,所述获取需要执行的基于第二硬件架构的第二程序具体为: 获取需要执行的基于第二硬件架构的第二程序,并确定所述第二程序中的指令及其调用的函数。
4.根据权利要求1所述的方法,其特征在于,所述第一硬件架构为X86平台,所述第二硬件架构为ARM平台。
5.一种程序执行方法,其特征在于,应用于运行在第一硬件架构中,且具有第二操作系统的虚拟机中,所述虚拟机是 基于第二硬件架构所创建的,所述方法包括: 所述虚拟机接收到程序执行请求时,获取需要执行的基于第二硬件架构的第二程序; 判断所述第二程序调用的函数是否为第一硬件架构库文件中的预定函数; 如果是,则触发所述第一硬件架构按照所述预定函数执行所述第二程序中的指令。
6.一种程序管理器,其特征在于,运行在第一硬件架构中,且基于第二硬件架构所创建的,包括: 第一获取模块,用于接收到程序执行请求时,获取需要执行的基于第二硬件架构的第二程序; 第一判断模块,用于判断所述第二程序调用的函数是否为第一硬件架构库文件中的预定函数; 第一触发模块,用于当所述判断模块判断结果为是时,触发所述第一硬件架构按照所述预定函数执行所述第二程序中的指令。
7.根据权利要求6所述的装置,其特征在于,所述装置还包括: 第一翻译模块,用于当所述判断模块为否时,将所述第二程序中的第二指令以及所述调用函数翻译为所述基于第一硬件架构的第一指令和第一函数,并触发所述第一硬件架构按照所述第一函数执行所述第一指令。
8.根据权利要求6所述的装置,其特征在于,所述第一获取模块具体用于获取需要执行的基于第二硬件架构的第二程序,并确定所述第二程序中的第二指令及其调用的函数。
9.根据权利要求6所述的装置,其特征在于,所述第一硬件架构为X86平台,所述第二硬件架构为ARM平台。
10.一种虚拟机,其特征在于,运行在第一硬件架构中,具有第二操作系统,且基于第二硬件架构所创建的,包括: 第二获取模块,用于接收到程序执行请求时,获取需要执行的基于第二硬件架构的第二程序; 第二判断模块,用于判断所述第二程序调用的函数是否为第一硬件架构库文件中的预定函数; 第二触发模块,用于当所述判断模块判断结果为是时,触发所述第一硬件架构,由所述第一硬件架构按照所述预定函数执行所述第二程序中的指令。
全文摘要
本发明提供了一种程序执行方法、程序管理器和虚拟机,所述方法包括接收到程序执行请求时,获取需要执行的基于第二硬件架构的第二程序;判断所述第二程序调用的函数是否为第一硬件架构库文件中的预定函数;如果是,则触发所述第一硬件架构按照所述预定函数执行所述第二程序中的指令。通过本发明实施例,提高了程序的执行效率。
文档编号G06F9/455GK103186414SQ20111044526
公开日2013年7月3日 申请日期2011年12月27日 优先权日2011年12月27日
发明者郭琦, 陆见微, 李佳, 路遥, 宁晓魁, 管慧娟, 王竹强 申请人:联想(北京)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1