程序执行方法、装置、设备和存储介质制造方法及图纸

技术编号:23484827 阅读:22 留言:0更新日期:2020-03-10 12:32
本发明专利技术实施例提供了一种程序执行方法和装置,所述方法包括:检测虚拟机上运行的程序的目标基本块,确定与目标基本块功能相同的预置的目标指令序列,采用目标指令序列替代目标基本块,执行程序,由于目标指令序列是由物理机上可执行的目标函数代码编译得到,目标函数代码是针对物理机编写的,且与虚拟机上的目标基本块功能相同,直接对目标函数代码进行编译得到目标指令序列,使得其指令数量远低于二进制翻译得到的指令序列,避免了二进制翻译技术的指令膨胀问题,降低虚拟机对应物理机上执行的指令的数量,提高虚拟机运行效率。

Program execution method, device, equipment and storage medium

【技术实现步骤摘要】
程序执行方法、装置、设备和存储介质
本专利技术涉及应用程序
,特别是涉及一种程序执行方法、一种程序执行装置、一种电子设备和一种可读存储介质。
技术介绍
虚拟机(VM,VirtualMachine)主要通过软件(或者辅以少量硬件支持)的方法来虚拟出一台计算机,并且这台虚拟的计算机通常还支持一套对应的指令集,称为虚拟机指令集。这样的虚拟机也称为客户机(GuestMachine),。虚拟机依托于本地的物理机(HostMachine),通过其执行引擎对给定的虚拟机指令序列(目标程序)在本地机器上模拟执行。虚拟机通常用于在不同的CPU之间实现软件的兼容。例如,基于RISC(ReducedInstructionSetComputer,精简指令集计算机)指令集的PC机和基于X86指令集的PC机是不兼容的,基于两种指令集的PC机的软件无法相互兼容,即基于X86指令集的PC机上运行的程序无法直接在基于RISC指令集的PC机上运行,同理,基于RISC指令集的PC机上运行的程序无法直接在基于X86指令集的PC机上运行。如此,需要采用虚拟机来实现程序软件在不同指令集PC机上的兼容运行。图1是传统虚拟机的结构的示意图。其中,底层的是真实的物理机器,称为“Host”。虚拟机及其上的机器称为“Guest”。Host机器首先启动一个本地的操作系统(HostOS),然后再启动虚拟机,最后才能启动GuestOS。这种结构把虚拟机作为本地操作系统中的一个应用程序,其优点是开发和调试都很方便。因此现在的虚拟机都属于这种结构。如果Host与Guest是不同的CPU指令集,那么Guest的软件无法直接在Host上运行,必须采用一种称为“二进制翻译”的技术,将Guest的机器指令转换成能够在Host上运行的、在功能上等价的机器指令。二进制翻译(DynamicBinaryTranslation,DBT)基于动态编译(DynamicCompilation)技术,在客户机程序执行时,二进制翻译器动态地解析并翻译即将被执行的代码。代码翻译和翻译后代码的运行是穿插进行的。以基于MIPS(Microprocessorwithoutinterlockedpipedstages,无内部互锁流水级的微处理器)指令的PC上运行X86虚拟机为例,图2是二进制翻译技术的基本流程的示意图。在虚拟机上执行一个X86应用程序时,X86应用程序由大量基本块组成,每一个基本块包含一定数量的机器指令(MachineInstruction)。这个X86机器指令要经过翻译模块,转换成同等功能的MIPS指令(即“本地指令”),保存到内存中的一个代码cache(寄存器)区域中,本地MIPS指令可以在真实的CPU上运行。但是指令的翻译过程一般会导致指令数量“膨胀”,即翻译后的本地指令的数量大于翻译之前的X86指令。这是二进制翻译技术的一个固有特性。表1:表1为二进制翻译导致指令膨胀的一个例子,可见1条X86的add指令,要翻译成4条MIPS指令。所以可想而知,采用二进制翻译的技术的虚拟机系统,效率一般要低于真实的X86机器。
技术实现思路
本专利技术实施例所要解决的技术问题是提供一种程序执行方法及装置,以便避免了二进制翻译技术的指令膨胀问题,降低虚拟机对应物理机上执行的指令的数量,提高虚拟机运行效率。为了解决上述问题,本专利技术公开了一种程序执行方法,包括:检测虚拟机上运行的程序的目标基本块,其中,所述目标基本块包括预置有功能相同的目标指令序列的基本块;确定与所述目标基本块功能相同的预置的目标指令序列,所述目标指令序列由物理机上可执行的目标函数代码编译得到;采用所述目标指令序列替代所述目标基本块,执行所述程序。可选地,在所述检测虚拟机上运行的程序的目标基本块之前,所述方法包括:检测所述程序中具有预设执行特性的特征函数代码;根据所述特征函数代码,确定物理机上可执行的目标函数代码。可选地,所述预设执行特性包括:所述特征函数代码在所述程序中的运行时间的占比高于预设比值。可选地,所述根据所述特征函数代码,确定物理机上可执行的目标函数代码包括:根据所述特征函数代码,确定所述特征函数代码的描述信息,所述描述信息包括:标识信息、输入信息、功能信息或输出信息中至少一种;根据所述描述信息,确定物理机上可执行的目标函数代码。可选地,在所述检测虚拟机上运行的程序的目标基本块之前,所述方法还包括:记录所述特征函数代码的内存地址信息;所述检测虚拟机上运行的程序的目标基本块包括:根据所述特征函数代码的内存地址信息和各个基本块的内存地址信息,确定目标基本块。可选地,在所述检测虚拟机上运行的程序的目标基本块之前,所述方法包括:根据所述目标函数代码,编译得到目标指令序列;将所述目标指令序列添加到物理机操作系统中。可选地,所述确定与所述目标基本块功能相同的预置的目标指令序列包括:在所述物理机操作系统中,查找与所述目标基本块对应的目标指令序列。相应的,本专利技术实施例还提供了一种程序执行装置,包括:块检测模块,用于检测虚拟机上运行的程序的目标基本块,其中,所述目标基本块包括预置有功能相同的目标指令序列的基本块;序列确定模块,用于确定与所述目标基本块功能相同的预置的目标指令序列,所述目标指令序列由物理机上可执行的目标函数代码编译得到;执行模块,用于采用所述目标指令序列替代所述目标基本块,执行所述程序。可选地,所述装置包括:代码检测模块,用于在所述检测虚拟机上运行的程序的目标基本块之前,检测所述程序中具有预设执行特性的特征函数代码;代码确定模块,用于根据所述特征函数代码,确定物理机上可执行的目标函数代码。可选地,所述预设执行特性包括:所述特征函数代码在所述程序中的运行时间的占比高于预设比值。可选地,所述代码确定模块包括:信息确定子模块,用于根据所述特征函数代码,确定所述特征函数代码的描述信息,所述描述信息包括:标识信息、输入信息、功能信息或输出信息中至少一种;代码确定子模块,用于根据所述描述信息,确定物理机上可执行的目标函数代码。可选地,所述装置还包括:信息记录模块,用于在所述检测虚拟机上运行的程序的目标基本块之前,记录所述特征函数代码的内存地址信息;所述块检测模块包括:块确定子模块,用于根据所述特征函数代码的内存地址信息和各个基本块的内存地址信息,确定目标基本块。可选地,所述装置包括:编译模块,用于在所述检测虚拟机上运行的程序的目标基本块之前,根据所述目标函数代码,编译得到目标指令序列;序列添加模块,用于将所述目标指令序列添加到物理机操作系统中。可选地,所述序列确定模块包括:序列查找子模块,用于在所述物理机操作系统中,查找与所述目标基本块对应的目标指令序列。相应的,本专利技术实施本文档来自技高网
...

【技术保护点】
1.一种程序执行方法,其特征在于,包括:/n检测虚拟机上运行的程序的目标基本块,其中,所述目标基本块包括预置有功能相同的目标指令序列的基本块;/n确定与所述目标基本块功能相同的预置的目标指令序列,所述目标指令序列由物理机上可执行的目标函数代码编译得到;/n采用所述目标指令序列替代所述目标基本块,执行所述程序。/n

【技术特征摘要】
1.一种程序执行方法,其特征在于,包括:
检测虚拟机上运行的程序的目标基本块,其中,所述目标基本块包括预置有功能相同的目标指令序列的基本块;
确定与所述目标基本块功能相同的预置的目标指令序列,所述目标指令序列由物理机上可执行的目标函数代码编译得到;
采用所述目标指令序列替代所述目标基本块,执行所述程序。


2.根据权利要求1所述的方法,其特征在于,在所述检测虚拟机上运行的程序的目标基本块之前,所述方法包括:
检测所述程序中具有预设执行特性的特征函数代码;
根据所述特征函数代码,确定物理机上可执行的目标函数代码。


3.根据权利要求2所述的方法,其特征在于,所述预设执行特性包括:所述特征函数代码在所述程序中的运行时间的占比高于预设比值。


4.根据权利要求2所述的方法,其特征在于,所述根据所述特征函数代码,确定物理机上可执行的目标函数代码包括:
根据所述特征函数代码,确定所述特征函数代码的描述信息,所述描述信息包括:标识信息、输入信息、功能信息或输出信息中至少一种;
根据所述描述信息,确定物理机上可执行的目标函数代码。


5.根据权利要求2所述的方法,其特征在于,在所述检测虚拟机上运行的程序的目标基本块之前,所述方法还包括:
记录所述特征函数代码的内存地址信息;
所述检测虚拟机上运行的程序的目标基本块包括:
根据所述特征函数代码的内存地址信息和各个基本块的内存地址信息,确定目标基本块。


6.根据权利要求1所述的方法,其特征在于,在所述检测虚拟机上运行的程序的目标基本块之前,所述方法包括:
根据所述目标函数代码,编译得到目标指令序列;
将所述目标指令序列添加到物理机操作系统中。


7.根据权利要求6所述的方法,其特征在于,所述确定与所述目标基本块功能相同的预置的目标指令序列包括:
在所述物理机操作系统中,查找与所述目标基本块对应的目标指令序列。


8.一种程序执行装置,其特征在于,包括:
块检测模块,用于检测虚拟机上运行的程序的目标基本块,其中,所述目标基本块包括预置有功能相同的目标指令序列的基本块;
序列确定模块,用于确定与所述目标基本块功能相同的预置的目标指令序列,所述目标指令序列由物理机上可执行的目标函数代码编译得到;
执行模块,用于采用所述目标指令序列替代所述目标基本块,执行所述程序。


...

【专利技术属性】
技术研发人员:靳国杰
申请(专利权)人:龙芯中科技术有限公司
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1