运行程序的方法、终端技术

技术编号:20566479 阅读:37 留言:0更新日期:2019-03-14 09:20
本发明专利技术提供了一种运行程序的方法、终端,其中,该方法包括:在主机需要执行Windows程序时,虚拟机内的Windows API模拟器客户端调用Windows程序仅进行程序调用,并将Windows指令转换至当前主机架构的指令,使用虚拟机外的Windows API模拟器服务端来执行程序实现。采用上述方案,解决了相关技术中非X86架构主机环境中运行Windows程序稳定性差的问题,在保证在非X86主机中运行Windows程序的基础上,提升了程序运行的稳定性,降低了虚拟机性能要求,节省了主机功耗。

The Method and Terminal of Running Program

The invention provides a method and a terminal for running a program. The method includes: when the host needs to execute a Windows program, the client of the Windows API simulator in the virtual machine calls the Windows program only for program invocation, and converts the Windows instructions to the instructions of the current host architecture, and executes the program implementation using the server of the Windows API simulator outside the virtual machine. By using the above scheme, the problem of poor stability of running Windows program in non-X86 host environment is solved. On the basis of guaranteeing running Windows program in non-X86 host, the stability of running program is improved, the performance requirement of virtual machine is reduced, and the power consumption of host is saved.

【技术实现步骤摘要】
运行程序的方法、终端
本专利技术涉及通信领域,具体而言,涉及一种运行程序的方法、终端。
技术介绍
在相关技术中,长久以来,Intel(X86架构的CPU)和Windows形成的Wintel联盟长期占领这PC和服务器市场,建立了良好的生态环境,其它非X86架构的CPU发展受限,甚至部分架构几乎已消失。随着移动互联相关软硬件技术飞速发展,进阶精简指令集机器(AdvancedRISCMachine,简称为ARM)架构的CPU飞速发展,在移动领域占据了主导地位,逐渐建立了自己的生态。另一方面,在国家层面的信息安全和国产化进程的快速推进的大背景下,国产CPU(典型的有MIPS架构(精简指令集,Microprocessorwithoutinterlockedpipedstagesarchitecture)的Loongson和ARM架构的飞腾,运行开源的Linux系统)也得到了快速发展,并在国内特定领域替换了X86架构,并逐步延伸至其它领域。但由于非X86架构的CPU发展起步晚,相比X86来说,生态相对较差,而由于Wintel联盟繁荣已久,导致大量用户对其产生了严重依赖,而Windows操作系统中的绝大部分应用程序都是已经编译完成的二进制程序,由于各种原因(比如没有源码、平台兼容性问题),导致这些应用没有相应的Linux版本。所以有迫切的在非X86环境中直接运行Windows上的二进制应用程序的需求。但实际上,由于Windows和其它操作系统的API接口不同,针对Windows开发的应用程序无法运行于其它OS之上;另一方面,由于X86架构CPU和其它架构CPU的指令集不兼容,导致X86架构CPU环境中编译好的二进制程序无法运行于其它CPU架构环境中。这两方面原因导致,针对Windows在X86架构CPU环境中的二进制应用程序无法在非X86和非Windows环境中运行。可以说,Windows二进制应用程序的兼容性问题,是当前非X86架构硬件和操作系统推广过程中最大的、也是最难逾越的障碍之一。针对上述问题,相关技术中的解决方案包括以下几种:1、虚拟机。即在非X86的主机环境中运行一个X86架构的完整的虚拟机,虚拟机中运行Windows操作系统,在虚拟机中的Windows系统之上运行X86的Windows二进制呈现。该方案是相关技术中针对跨CPU架构、跨操作系统应用兼容问题的最主要的方案,其中,虚拟机有多种实现方式,典型的如商用的Vmware,开源的KVM等,目前相关技术已经比较成熟。但该方案有如下主要问题:1)需要硬件支持(尤其是CPU),目前仅有X86架构支持相对比较完善,非X86架构(如Loongson)支持情况不太理想,在硬件支持不好的情况下,其指令模拟完全依赖软件进行,效率非常低。2)需要模拟完整的系统(包括CPU、外设、BIOS等),虚拟机体量比较大,需要消耗比较多的系统资源,同时性能比较差。2、指令模拟器+WindowAPI模拟器。即使用WindowAPI模拟器来解决Windows和非Windows系统之间的API兼容问题,同时使用指令模拟器来解决X86和非X86架构指令集兼容问题。其中,WindowAPI模拟器是一个能够在多种依从可移植的操作系统接口上运行Windows应用的兼容层,目前有相应的开源技术,它将WindowsAPI调用翻译成为POSIX调用,其进行API级别的翻译,而非CPU指令的翻译;指令模拟器进行跨CPU架构的指令翻译,比如将X86指令翻译成对应的ARM或MIPS指令,现有典型的指令模拟器如Qemu、Bochs等。该方案与方案1的最主要的差别在于:该方案不模拟整个系统,仅针对应用程序的用户态部分进行指令翻译,当执行到系统调用时,调转到主机内核中执行,执行完成后返回到用户态继续执行;如此,该方案更轻量级,消耗资源更少,相比纯软件模拟的虚拟机,性能更好。但该方案面临的最大问题还是性能问题,由于仅能通过软件进行指令模拟,而WindowAPI模拟器自身的体量也比较大(需要提供基本的WindowsAPI和运行环境),需要对WindowAPI模拟器和应用程序进行指令模拟,效率比较低。较为典型的是使用硬件指令模拟器和WindowAPI模拟器实现。针对上述存在的性能问题,相关技术中对其实现进行了改进,主要改进思路均为:将整个WindowAPI模拟器运行于模拟器之外,使用本地编译的WindowAPI模拟器,仅模拟应用程序依赖的Windows库,如此,可以减少软件指令翻译的工作量,提升应用程序运行效率。其实现思路为:在执行指令模拟时,通过一定的手段(例如通过判断CALL和JMP指令;或者在兼容库各函数入口插入异常指令,在异常处理函数中)判断被调用的接口是否为Windows兼容接口,如果是,则直接调转到本地编译的相应库(WindowAPI模拟器中提供)中的相应位置执行,执行完成后再做类似的跳转,回到原有流程执行。类似的改进从原理上,确实能提升该方案的性能,但其存在的主要问题为:实现太复杂,需要对模拟器和WindowAPI模拟器进行深度改造,在指令级别的处理流程上进行改造和优化,需要考虑参数处理、地址翻译跳转以及各种异常等相当复杂的逻辑处理,极易出现问题,稳定性堪忧,难以达到真实可用的标准。针对相关技术中非X86架构主机环境中运行Windows程序稳定性差的问题,目前还没有有效的解决方案。
技术实现思路
本专利技术实施例提供了一种运行程序的方法、终端,以至少解决相关技术中非X86架构主机环境中运行Windows程序稳定性差的问题。根据本专利技术的一个实施例,提供了一种运行程序的方法,包括:非X86架构的主机使用视图操作系统应用程序编程接口WindowsAPI模拟器运行Windows应用程序;其中,所述WindowsAPI模拟器包括:位于虚拟机之内WindowsAPI模拟器客户端,位于所述虚拟机之外的WindowsAPI模拟器服务端,其中,所述虚拟机用于模拟所述Windows应用程序的指令。可选地,非X86架构的主机使用视图操作系统应用程序编程接口WindowsAPI模拟器运行Windows应用程序,包括:所述WindowsAPI模拟器客户端执行所述Windows应用程序,将所述Windows应用程序调用Windows系统的API接口的调用请求发送至所述WindowsAPI模拟器服务端;所述WindowsAPI模拟器服务端在所述主机的本地接口实现所述调用请求获得实现结果,其中,所述本地接口由所述WindowsAPI模拟器客户端向所述WindowsAPI模拟器服务端指示;所述WindowsAPI模拟器客户端接收所述实现结果,继续执行所述Windows应用程序。可选地,所述虚拟机为硬件指令模拟器,将所述调用请求发送至所述WindowsAPI模拟器服务端,包括:使用所述硬件指令模拟器模拟所述调用请求为所述主机所属架构的指令;发送所述指令至所述WindowsAPI模拟器服务端。可选地,非X86架构的主机使用WindowsAPI模拟器运行Windows应用程序之前,所述方法包括:所述主机检测待执行程序的格式;依据所述格式为所述待执行格式指定模拟器,其中,在确定所述格式为Windows应用程序的情况下,使用WindowsAPI本文档来自技高网
...

【技术保护点】
1.一种运行程序的方法,其特征在于,包括:非X86架构的主机使用视图操作系统应用程序编程接口Windows API模拟器运行Windows应用程序;其中,所述Windows API模拟器包括:位于虚拟机之内WindowsAPI模拟器客户端,位于所述虚拟机之外的Windows API模拟器服务端,其中,所述虚拟机用于模拟所述Windows应用程序的指令至非X86架构指令。

【技术特征摘要】
1.一种运行程序的方法,其特征在于,包括:非X86架构的主机使用视图操作系统应用程序编程接口WindowsAPI模拟器运行Windows应用程序;其中,所述WindowsAPI模拟器包括:位于虚拟机之内WindowsAPI模拟器客户端,位于所述虚拟机之外的WindowsAPI模拟器服务端,其中,所述虚拟机用于模拟所述Windows应用程序的指令至非X86架构指令。2.根据权利要求1所述的方法,其特征在于,非X86架构的主机使用视图操作系统应用程序编程接口WindowsAPI模拟器运行Windows应用程序,包括:所述WindowsAPI模拟器客户端执行所述Windows应用程序,将所述Windows应用程序调用Windows系统的API接口的调用请求发送至所述WindowsAPI模拟器服务端;所述WindowsAPI模拟器服务端在所述主机的本地接口实现所述调用请求获得实现结果,其中,所述本地接口由所述WindowsAPI模拟器客户端向所述WindowsAPI模拟器服务端指示;所述WindowsAPI模拟器客户端接收所述实现结果,继续执行所述Windows应用程序。3.根据权利要求2所述的方法,其特征在于,所述虚拟机为硬件指令模拟器,将所述调用请求发送至所述WindowsAPI模拟器服务端,包括:使用所述硬件指令模拟器模拟所述调用请求为所述主机所属架构的指令;发送模拟后指令至所述WindowsAPI模拟器服务端。4.根据权利要求1所述的方法,其特征在于,非X86架构的主机使用WindowsAPI模拟器运行Windows应用程序之前,所述方法包括:所述主机检测待执行程序的格式;依据所述格式为所述待执行格式指定模拟器,其中,在确定所述格式为Windows应用程序的情况下,使用WindowsAPI模拟器运行Windows应用程序。5.根据...

【专利技术属性】
技术研发人员:蒋彪蒋勇史中兵高瑛王江勇刘熠
申请(专利权)人:中兴通讯股份有限公司
类型:发明
国别省市:广东,44

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

1