一种应用程序的运行方法、计算设备及存储介质技术

技术编号:30524490 阅读:10 留言:0更新日期:2021-10-27 23:09
本发明专利技术公开了一种应用程序的运行方法、计算设备以及存储介质,应用程序的运行方法在计算机设备的第一操作系统中执行,第一操作系统上布置有可兼容第二操作系统的兼容层,应用程序的运行环境为第二操作系统,该方法包括:在兼容层中嵌入模拟器,形成虚拟层;基于兼容层,生成应用程序自编译器;利用应用程序自编译器,为正加载的应用程序生成可适于在第一操作系统上运行的代理应用程序;在虚拟层启动代理应用程序,以实现在第一操作系统上运行应用程序。序。序。

【技术实现步骤摘要】
一种应用程序的运行方法、计算设备及存储介质
[0001]本申请是2021年5月26日提交的专利技术专利申请2021105756208的分案申请。


[0002]本专利技术涉及互联网领域,具体涉及一种应用程序的运行方法,计算设备及存储介质。

技术介绍

[0003]随着计算机的发展和普及,国内外各种信息安全事件频发,尤其是“棱镜门”事件给各个国家敲响警钟,不少国家开始对本国信息安全加强防范措施。中国国产操作系统推动者倪光南院士就表示:“如果不使用我国自主研发的操作系统,系统的后门钥匙始终掌握在别人手里,那么我国的信息安全就没有保障,客观上也为

棱镜门

之类的监控计划留下了机会”。
[0004]从安全和产业价值的角度来考量,我们必须发展自主可控的操作系统,而基于Linux(内核采用开源的Linux内核且提供桌面环境的各种Linux发行版,流行的有Ubuntu,RedHat,Deepin,UOS等)内核来开发操作系统是一个最优选择。由于Windows系统绝对占有率,Linux桌面生态不完善,政府和企业现有计算机系统从Windows迁移到Linux之后,出现大量Windows应用程序无法使用,特别是在国产处理器上面。
[0005]如果在国产处理器(基于精简指令集的处理器,比如arm架构的鲲鹏和飞腾处理器,mips架构的龙芯处理器等)上的Linux能够直接使用Windows系统x86架构(一种复杂指令集)的高频率应用程序,将大大有利于Windows用户向Linux系统迁移,同时也能够促使更多的软件开发商主动为Linux桌面开发原生应用程序,使Linux桌面生态发展进入良性循环。

技术实现思路

[0006]鉴于上述问题,提出了本专利技术以便提供一种克服上述问题或者至少部分地解决上述问题的一种应用程序的运行方法、计算设备以及存储介质。
[0007]根据本专利技术的一个方面,提供一种应用程序的运行方法,在计算设备的第一操作系统中执行,第一操作系统上布置有可兼容第二操作系统的兼容层,应用程序的运行环境为第二操作系统,该方法包括:在兼容层中嵌入模拟器,形成虚拟层;基于兼容层,生成应用程序自编译器;利用应用程序自编译器,为正加载的应用程序生成可适于在第一操作系统上运行的代理应用程序;在虚拟层启动代理应用程序,以实现在第一操作系统上运行应用程序。
[0008]可选地,在根据本专利技术的应用程序的运行方法中,在兼容层中嵌入模拟器,形成虚拟层的步骤之前,还包括步骤:对模拟器进行预处理,以使得虚拟模拟器能够嵌入兼容层。
[0009]可选地,在根据本专利技术的应用程序的运行方法中,对模拟器进行预处理包括步骤:对组成模拟器的代码进行筛选,获取其中关于进程模式的代码;将关于进程模式的代码嵌
入兼容层。
[0010]可选地,在根据本专利技术的应用程序的运行方法中,所在兼容层中嵌入模拟器,形成虚拟层的步骤包括:在兼容层中创建模拟器文件;在模拟器文件中,对每个线程的局部存储空间保存该线程的唯一模拟对象,作为一个应用程序的CPU模拟器;设置用于启动CPU模拟器的函数。
[0011]可选地,在根据本专利技术的应用程序的运行方法中,基于兼容层,生成应用程序自编译器包括:基于编译器的过滤机制,生成编译插件;利用编译插件解析兼容层中的所有函数,获得兼容层中的所有函数的函数原型;通过编译插件与函数原型生成应用程序自编译器。
[0012]可选地,在根据本专利技术的应用程序的运行方法中,利用应用程序自编译器,为正加载的应用程序生成可适于在第一操作系统上运行的代理应用程序的步骤包括:在兼容层的所有函数的头部预留预定区域;获取所有函数的函数原型;基于函数原型的签名信息,按照预定模板利用应用程序自编译器在预定区域写入代理模块。
[0013]可选地,在根据本专利技术的应用程序的运行方法中,在虚拟层启动代理应用程序的步骤包括:将应用程序调用兼容层的函数地址替换为应用程序调用代理模块的函数地址。
[0014]可选地,根据本专利技术的应用程序的运行方法,在虚拟层启动代理应用程序的步骤还包括:对代理应用程序的启动过程进行异常捕获。
[0015]根据本专利技术的又一个方面,提供一种计算设备,包括:至少一个处理器;和存储有程序指令的存储器,其中,程序指令被配置为适于由至少一个处理器执行,程序指令包括用于执行上述方法的指令。
[0016]根据本专利技术的又一个方面,提供一种存储有程序指令的可读存储介质,当程序指令被计算设备读取并执行时,使得计算设备执行上述的方法。
[0017]根据本专利技术的方案,一方面通过在兼容层代码中嵌入模拟器的代码,为x86应用程序在非x86架构且非Windows系统上运行提供运行环境,使得应用程序运行过程中,在函数调用时候能够自动识别要调用的目标函数是guest端代码的还是host端代码,如果是guest端代码,则自动启动CPU模拟器模拟执行,最后将模拟结果放回给host端。
[0018]另一方面,利用编译器的过滤机制,开发编译插件,通过编译插件解析出wine模块中的每个API(应用程序编程接口,主要功能为提供函数功能集合),动态生成每个API的guest端代理桩代码。
[0019]上述说明仅是本专利技术技术方案的概述,为了能够更清楚了解本专利技术的技术手段,而可依照说明书的内容予以实施,并且为了让本专利技术的上述和其它目的、特征和优点能够更明显易懂,以下特举本专利技术的具体实施方式。
附图说明
[0020]通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本专利技术的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
[0021]图1示出了现有技术中在非x86架构运行Windows x86程序的方法1的框架图100;
[0022]图2示出了根据本专利技术一个实施例的计算设备200的示意图;
[0023]图3示出了根据本专利技术一个实施例的应用程序的执行方法300的流程图;
[0024]图4示出了根据本专利技术一个实施例的应用程序进行函数调用方法400的流程图。
[0025]图5示出了根据本专利技术一个实施例的可用于应用程序的执行方法的框架图500。
具体实施方式
[0026]下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
[0027]因为架构的差异带来的指令集不一样,要在国产处理器上运行x86架构的Windows应用程序,首先要解决的问题是对cpu指令的模拟和转换,其次是实现Windows的兼容层环境。
[0028]目前已知的在非x86架构运行Windows x86程序的方案大致有两种:
[002本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种应用程序的运行方法,在计算机设备的第一操作系统中执行,所述第一操作系统上布置有可兼容第二操作系统的兼容层,所述应用程序的运行环境为第二操作系统,该方法包括:对所述模拟器进行预处理,以使得所述虚拟模拟器能够嵌入所述兼容层;在所述兼容层中创建模拟器文件;在所述模拟器文件中,对每个线程的局部存储空间保存该线程的唯一模拟对象,作为一个应用程序的CPU模拟器;设置用于启动所述CPU模拟器的函数;基于所述兼容层,生成应用程序自编译器;利用所述应用程序自编译器,为正加载的应用程序生成可适于在所述第一操作系统上运行的代理应用程序;在所述虚拟层启动所述代理应用程序,以实现在所述第一操作系统上运行所述应用程序。2.如权利要求1所述的方法,其中,所述对模拟器进行预处理包括步骤:对组成所述模拟器的代码进行筛选,获取其中关于进程模式的代码;将所述关于进程模式的代码嵌入所述兼容层。3.如权利要求1所述的方法,其中,所述基于兼容层,生成应用程序自编译器的步骤包括:基于编译器的过滤机制,生成编译插件;利用所述编译插件解析所述兼容层中的所有函数,获得兼容层中的所有函数的函数原型;通过所述编译插件与所述函数原型生...

【专利技术属性】
技术研发人员:赵志鹏
申请(专利权)人:武汉深之度科技有限公司
类型:发明
国别省市:

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

1