专利名称:一种虚拟机文件运行方法及系统的制作方法
一种虚拟机文件运行方法及系统
技术领域:
本发明涉及计算机技术,特别是涉及一种虚拟机文件运行方法及系统。背景技术:
虚拟机(Virtual Machine)是运行在物理计算机上的一个应用程序,是通过相关的虚拟机软件在物理计算机上所模拟出的计算机系统,并像真正的计算机那样工作。现有技术中,虚拟机读入一条指令,解释,执行,然后再重复读取下一条指令,解释,执行,如此循环。该方案下,虚拟机运行程序速度较慢,若将虚拟机指令本地实现则可提高其运行速度。在实际使用过程中,有以下几种方法来实现虚拟机的本地实现方法一、虚拟机借助本地调用指令,即“本地接口特定指令”集中实现内部运行的代码与其它语言编写的应用程序和库进行交互,使得任意一个本地应用程序均能嵌入虚拟机中。但“本地接口特定指令”是指令集中专门定义的“本地编程接口”特定指令,必须事先在指令集中专门定义。 此方法能够提高虚拟机的运行速度,但须要限制本地编程接口和本地调用特定指令,且须要在一套实用的指令集中设计一套复杂的编译器,该方法成本较大。例如Java指令集归属于Sim Microsystems公司,使用Java指令集涉及了著作权的问题。方法二、将输入虚拟机中的二进制文件,经过分析后全部转化为本地代码文件,最后由宿主机直接执行本地代码。 此方法比较高效,但将二进制文件全部转本地代码的过程很复杂,实施难度较高。
发明内容基于此,有必要提供一种能提高虚拟机运行速度的虚拟机文件运行方法,此外,还有必要提供一种能提高虚拟机运行速度的虚拟机系统。一种虚拟机文件运行方法,包括以下步骤在宿主机中预设优化函数库,优化函数库由虚拟机中常用的库函数组成;建立可执行文件中位于优化函数库中的库函数与接口地址的对应关系,并输入至虚拟机;虚拟机装载、解释、运行所述可执行文件的指令;虚拟机根据所述指令中包含的接口地址判断所运行的指令是否在优化函数库中, 如果是,则宿主机调用宿主机中优化函数库,本地代码实现所述优化函数库中与所述接口地址对应的库函数的功能;宿主机执行完所述库函数的功能后,返回虚拟机中运行。优选地,所述虚拟机文件运行方法还包括步骤当虚拟机运行的指令不在优化函数库中时,由虚拟机运行所述指令。优选地,所述建立可执行文件中位于优化函数库中的库函数与接口地址的对应关系是根据所述可执行文件的程序链接时产生的符号链接映射文件建立。优选地,所述建立可执行文件中位于优化函数库中的库函数与接口地址的对应关系是在虚拟机装载所述可执行文件的程序时扫描所述程序建立。
优选地,所述宿主机调用宿主机中优化函数库,本地代码实现所述优化函数库中与所述接口地址对应的库函数的功能时,宿主机需从虚拟机存储器中获取所述库函数输入和输出的数据,并将所述本地代码实现的结果回存到虚拟机。本发明还提供一种能提高虚拟机运行速度的虚拟机系统。一种虚拟机系统,包括虚拟机和宿主机,至少还包括优化函数库预设模块,用于在宿主机中预设优化函数库,优化函数库由虚拟机中常用的库函数组成;预处理模块,用于建立可执行文件中位于优化函数库中的库函数与接口地址的对应关系,并输入至虚拟机;处理模块,用于虚拟机装载、解释、运行所述可执行文件的指令;判断模块,用于虚拟机根据所述指令中包含的接口地址判断所运行的指令是否在优化函数库中;本地实现模块,用于当虚拟机根据所述指令中包含的接口地址判断所运行的指令在优化函数库中时,宿主机调用宿主机中优化函数库,本地代码实现所述优化函数库中与所述接口地址对应的库函数的功能。本地实现结果返回模块,用于宿主机执行完所述库函数的功能后,返回虚拟机中运行。优选地,所述虚拟机系统还包括虚拟机运行模块,用于当虚拟机运行的指令不在优化函数库中时,由虚拟机运行所述指令。优选地,所述预处理模块根据所述可执行文件的程序链接时产生的符号链接映射文件建立可执行文件中位于优化函数库中的库函数与接口地址的对应关系。优选地,所述预处理模块在虚拟机装载可执行文件的程序时扫描所述程序,建立所述可执行文件中位于优化函数库中的库函数与接口地址的对应关系。优选地,所述本地实现模块在宿主机调用宿主机中优化函数库,本地代码实现所述优化函数库中与所述接口地址对应的库函数的功能时,还用于宿主机从虚拟机存储器中获取所述库函数输入和输出的数据,并将所述本地代码实现的结果回存到虚拟机。本发明所述虚拟机文件运行方法不须要在指令集中专门定义“本地编程接口,,所需的“本地调用特定指令”,也不须要将在虚拟机中运行的指令全部转化为本地代码即可实现虚拟机快速调用宿主机优化函数库中的函数本地实现,从而提高虚拟机的运行速度。
图1为一个实施例中虚拟机文件运行方法的流程图;图2为一个实施例中虚拟机系统的结构示意图。
具体实施方式图1示出了一个实施例中虚拟机文件运行方法,包括以下步骤步骤S101,在宿主机中预设优化函数库,优化函数库由虚拟机中常用的库函数组成;虚拟机是运行在完全隔离环境中的完整计算机系统,可以安装操作系统以及应用程序,并访问网络资源。一般情况下,虚拟机运行程序的速度较宿主机要慢,虚拟机在运行可执行文件的过程中要调用函数库中的一些库函数,所述库函数是一些功能确定的基本操作函数,例如指针操作、字符串操作、内存操作、算术运算等等。将虚拟机中常用的库函数预设在宿主机中,组成预设的优化函数库。所述常用的库函数根据虚拟机使用该库函数的频率来定义,如将使用次数达到一个固定数值后的库函数定义为常用的库函数,所述固定数值为大于等于1的任一整数。步骤S103,建立可执行文件中位于优化函数库中的库函数与接口地址的对应关系,并输入至虚拟机;虚拟机可执行文件中的库函数有一部分位于宿主机优化函数库中,该部分函数需要由宿主机接管运行,通过宿主机本地实现,因此须要建立可执行文件中位于优化函数库中的库函数与接口地址的对应关系,并输入至虚拟机。步骤S104,虚拟机装载、解释、运行所述可执行文件的指令;可执行文件在虚拟机中是以指令的形式表达的,虚拟机通过执行指令来实现可执行文件的功能。在运行可执行文件前需要将可执行文件的指令装载,并解释和处理。步骤S105,虚拟机根据所述指令中包含的接口地址判断所运行的指令是否在优化函数库中,如果是,则进入步骤S109,即宿主机调用宿主机中优化函数库,本地代码实现所述优化函数库中与所述接口地址对应的库函数的功能;如果否,则进入步骤S107,由虚拟机运行所述指令。本实施例中,虚拟机根据所述指令中包含的接口地址判断所运行的指令是否在优化函数库中,如果是,则宿主机调用宿主机中优化函数库,本地代码实现所述优化函数库中与所述接口地址对应的库函数的功能。该方法使由虚拟机运行的库函数由宿主机接管执行,从而提高了虚拟机的处理可执行文件的速度,增强了虚拟机的灵活性及提高了虚拟机运行的效率。在宿主机执行完所述库函数的功能后,返回虚拟机中运行。作为一种优选的方法,当虚拟机运行的指令不在优化函数库中时,即进入步骤 S107,由虚拟机运行所述指令。本实施例中,经过对该指令的判断获知该指令不在宿主机的优化函数库中时,根据预先设置,对其执行不需要进行本地调用,因此虚拟机直接执行该指令即可。作为一种优选的方法,所述建立可执行文件中位于优化函数库中的库函数与接口地址的对应关系是根据所述可执行文件的程序链接时产生的符号链接映射文件建立。作为一种优选的方法,所述建立可执行文件中位于优化函数库中的库函数与接口地址的对应关系是在虚拟机装载所述可执行文件的程序时扫描所述程序建立。本实施例中,建立可执行文件中位于优化函数库中的库函数与接口地址的对应关系可以通过不同的途径,既可以根据所述可执行文件的程序链接时产生的符号链接映射文件建立,又可以在虚拟机装载所述可执行文件的程序时扫描所述程序建立。不管以那种方式建立可执行文件中位于优化函数库中的库函数与接口地址的对应关系,都须要在虚拟机运行前将上述建立的结果数据输入到虚拟机。作为一种优选的方法,所述宿主机调用宿主机中优化函数库,本地代码实现所述优化函数库中与所述接口地址对应的库函数的功能时,宿主机需从虚拟机存储器中获取所述库函数输入和输出的数据,并将所述本地代码实现的结果回存到虚拟机。本实施例中,所述调用宿主机优化函数库中相同函数的本地接口,本地代码实现之后,将宿主机本地实现的执行结果通过返回指令返回到虚拟机的可执行文件中,从而虚拟机继续执行其它指令。 如宿主机继续本地实现需要调用在前的本地实现结果数据,则宿主机也可以从虚拟机存储器中获取在前的本地实现结果数据。本实施例中,将所述本地代码实现的结果回存到虚拟机,从而有利于本地实现结果数据的备份保护,也方便虚拟机统计宿主机本地实现的库函数数据。图2示出了一个实施例中的虚拟机系统,包括虚拟机和宿主机,至少还包括优化函数库预设模块201,用于在宿主机中预设优化函数库,优化函数库由虚拟机中常用的库函数组成;预处理模块202,用于建立可执行文件中位于优化函数库中的库函数与接口地址的对应关系,并输入至虚拟机;处理模块203,用于虚拟机装载、解释、运行所述可执行文件的指令;判断模块204,用于虚拟机根据所述指令中包含的接口地址判断所运行的指令是否在优化函数库中;本地实现模块205,用于当虚拟机根据所述指令中包含的接口地址判断所运行的指令在优化函数库中时,宿主机调用宿主机中优化函数库,本地代码实现所述优化函数库中与所述接口地址对应的库函数的功能。本地实现结果返回模块206,用于宿主机执行完所述库函数的功能后,返回虚拟机中运行。在本实施例中,优化函数库预设模块201,用于在宿主机中预设优化函数库,优化函数库由虚拟机中常用的库函数组成。将虚拟机中常用的库函数预设在宿主机中,组成预设的优化函数库。虚拟机在运行可执行文件的过程中要调用函数库中的一些库函数,所述库函数是一些功能确定的基本操作函数,例如指针操作、字符串操作、内存操作、算术运算等等。所述常用的库函数根据虚拟机使用该库函数的频率来定义,如将使用次数达到一个固定数值后的库函数定义为常用的库函数,所述固定数值为大于等于1的任一整数。预处理模块202,用于建立可执行文件中位于优化函数库中的库函数与接口地址的对应关系,并输入至虚拟机。虚拟机可执行文件中的库函数有一部分位于宿主机优化函数库中,该部分函数需要由宿主机接管运行,通过宿主机本地实现,因此须要建立可执行文件中位于优化函数库中的库函数与接口地址的对应关系,并输入至虚拟机。处理模块203,用于虚拟机装载、解释、运行所述可执行文件的指令。可执行文件在虚拟机中是以指令的形式表达的,虚拟机通过执行指令来实现可执行文件的功能。在运行可执行文件前须要将可执行文件的指令装载,并解释和处理。本地实现模块205,通过虚拟机的本地调用,允许宿主机中的应用程序和库函数嵌入到虚拟机中,实现宿主机中已有的应用程序和库函数支持虚拟机,虚拟机不必花费大量的时间处理相关的库函数,从而提高虚拟机处理可执行文件的速度。作为一种优选的实施例,所述虚拟机系统还包括虚拟机运行模块207,当虚拟机运行的指令不在优化函数库中时,由虚拟机运行所述指令。本实施例中,经过对该指令的判断,获知该指令不是宿主机优化函数库中的库函数,即不需要进行本地调用,因此虚拟机直接执行该指令。作为一种优选的实施例,所述预处理模块202根据所述可执行文件的程序链接时产生的符号链接映射文件建立可执行文件中位于优化函数库中的库函数与接口地址的对应关系。作为一种优选的实施例,所述预处理模块202在虚拟机装载可执行文件的程序时扫描所述程序,建立所述可执行文件中位于优化函数库中的库函数与接口地址的对应关系。本实施例中,建立可执行文件中位于优化函数库中的库函数与接口地址的对应关系可以通过不同的途径,既可以根据所述可执行文件的程序链接时产生的符号链接映射文件建立,又可以在虚拟机装载所述可执行文件的程序时扫描所述程序时建立。不管以那种方式建立可执行文件中位于优化函数库中的库函数与接口地址的对应关系,都须要在虚拟机运行前将上述建立的结果数据输入到虚拟机。作为一种优选的实施例,所述本地实现模块205在宿主机调用宿主机中优化函数库,本地代码实现所述优化函数库中与所述接口地址对应的库函数的功能时,还用于宿主机从虚拟机存储器中获取所述库函数输入和输出的数据,并将所述本地代码实现的结果回存到虚拟机。本实施例中,本地实现结果返回模块206,将本地代码实现的执行结果通过返回指令返回到虚拟机的可执行文件中,虚拟机继续执行其它指令,且将本地实现的结果回存到虚拟机中,有利于本地实现结果数据的备份保护,也方便虚拟机统计宿主机本地实现的库函数数据。上述虚拟机文件运行方法及系统对于在虚拟机文件中的部分指令进行优化处理, 即通过宿主机进行本地调用,从而本地代码实现部分虚拟机中的库函数,提高了虚拟机的处理可执行文件的速度,同时不须要事先定义本地调用指令,也不须要将在虚拟机中运行的指令全部转化为本地代码即可实现虚拟机快速调用宿主机优化函数库中的库函数本地实现。本发明所述的虚拟机文件运行方法及系统使虚拟机处理可执行文件的速度提高,且对宿主机优化函数库的设置有较大的灵活性,并且实施过程简单。以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
权利要求
1.一种虚拟机文件运行方法,包括以下步骤在宿主机中预设优化函数库,优化函数库由虚拟机中常用的库函数组成;建立可执行文件中位于优化函数库中的库函数与接口地址的对应关系,并输入至虚拟机;虚拟机装载、解释、运行所述可执行文件的指令;虚拟机根据所述指令中包含的接口地址判断所运行的指令是否在优化函数库中,如果是,则宿主机调用宿主机中优化函数库,本地代码实现所述优化函数库中与所述接口地址对应的库函数的功能;宿主机执行完所述库函数的功能后,返回虚拟机中运行。
2.根据权利要求1所述的虚拟机文件运行方法,其特征在于,还包括步骤当虚拟机运行的指令不在优化函数库中时,由虚拟机运行所述指令。
3.根据权利要求1所述的虚拟机文件运行方法,其特征在于,所述建立可执行文件中位于优化函数库中的库函数与接口地址的对应关系是根据所述可执行文件的程序链接时产生的符号链接映射文件建立。
4.根据权利要求1所述的虚拟机文件运行方法,其特征在于,所述建立可执行文件中位于优化函数库中的库函数与接口地址的对应关系是在虚拟机装载所述可执行文件的程序时扫描所述程序建立。
5.根据权利要求1所述的虚拟机文件运行方法,其特征在于,所述宿主机调用宿主机中优化函数库,本地代码实现所述优化函数库中与所述接口地址对应的库函数的功能时, 宿主机需从虚拟机存储器中获取所述库函数输入和输出的数据,并将所述本地代码实现的结果回存到虚拟机。
6.一种虚拟机系统,包括虚拟机和宿主机,其特征在于,至少还包括优化函数库预设模块,用于在宿主机中预设优化函数库,优化函数库由虚拟机中常用的库函数组成;预处理模块,用于建立可执行文件中位于优化函数库中的库函数与接口地址的对应关系,并输入至虚拟机;处理模块,用于虚拟机装载、解释、运行所述可执行文件的指令;判断模块,用于虚拟机根据所述指令中包含的接口地址判断所运行的指令是否在优化函数库中;本地实现模块,用于当虚拟机根据所述指令中包含的接口地址判断所运行的指令在优化函数库中时,宿主机调用宿主机中优化函数库,本地代码实现所述优化函数库中与所述接口地址对应的库函数的功能;本地实现结果返回模块,用于宿主机执行完所述库函数的功能后,返回虚拟机中运行。
7.根据权利要求6所述的虚拟机系统,其特征在于,所述虚拟机系统还包括虚拟机运行模块,用于当虚拟机运行的指令不在优化函数库中时,由虚拟机运行所述指令。
8.根据权利要求6所述的虚拟机系统,其特征在于,所述预处理模块根据所述可执行文件的程序链接时产生的符号链接映射文件建立可执行文件中位于优化函数库中的库函数与接口地址的对应关系。
9.根据权利要求6所述的虚拟机系统,其特征在于,所述预处理模块在虚拟机装载可执行文件的程序时扫描所述程序,建立所述可执行文件中位于优化函数库中的库函数与接口地址的对应关系。
10.根据权利要求6所述的虚拟机系统,其特征在于,所述本地实现模块在宿主机调用宿主机中优化函数库,本地代码实现所述优化函数库中与所述接口地址对应的库函数的功能时,还用于宿主机从虚拟机存储器中获取所述库函数输入和输出的数据,并将所述本地代码实现的结果回存到虚拟机。
全文摘要
一种虚拟机文件运行方法,包括以下步骤在宿主机中预设优化函数库;建立可执行文件中位于优化函数库中的库函数与接口地址的对应关系,并输入至虚拟机;虚拟机装载、解释、运行所述可执行文件的指令;虚拟机根据所述指令中包含的接口地址判断所运行的指令是否在优化函数库中,如果是,则宿主机调用宿主机中优化函数库,本地代码实现所述优化函数库中与所述接口地址对应库函数的功能。上述虚拟机文件运行方法将部分虚拟机处理的库函数通过宿主机本地实现,从而提高虚拟机的处理效率,并且不须要预先定义本地调用指令,也不须要将在虚拟机中运行的指令全部转化为本地代码即可实现。本发明所述的虚拟机文件运行方法及系统提高了虚拟机处理的效率。
文档编号G06F9/455GK102508694SQ201110311258
公开日2012年6月20日 申请日期2011年10月14日 优先权日2011年10月14日
发明者李志雄, 钟衍徽 申请人:深圳市江波龙电子有限公司