首页 理论教育 基于本体的跨平台应用软件移植技术研究

基于本体的跨平台应用软件移植技术研究

时间:2023-11-17 理论教育 版权反馈
【摘要】:基于内核修改的软件移植技术指的是通过对操作系统内核进行修改以提供兼容环境。

基于本体的跨平台应用软件移植技术研究

2.1.3.1 移植技术的应用背景及特点

通过中间层来弥补异构平台的差异,有一定的局限性。API仿真技术,它试图通过构建一个适配层在核外对软件移植中涉及的两个特定平台之间的差异进行补偿,然而由于API仿真技术所构建的适配层运行于用户态,是对软件原运行环境的模拟,在软件对底层内核系统调用操作的执行过程中,至少涉及两次指令翻译,以及多次用户态和内核态之间的切换。这就带来了时间上的延迟和性能上的损失。而通过增加中间层API仿真技术没有兼顾运行于操作系统内核态的设备驱动程序,由于异构操作系统所提供的设备驱动框架是不同的,因此所支持的设备驱动不一样。这对于与某些特定的设备驱动模块配套运行的应用软件而言,移植后能否正常运行还取决于目标操作系统内核中是否同样提供了所需的特定设备驱动模块。基于系统虚拟机的软件移植技术,虽然实现了应用软件在目标平台上的运行,但仍需要依赖原运行环境。基于程序虚拟机的软件移植技术,由于代码执行前需要先“编译”成事先定义的“中间语言”,然后再通过“解释”来执行这个中间语言,代码运行所经历的二重“翻译”会降低程序运行性能。为克服这些局限性,提出了基于内核修改的软件移植技术。

基于内核修改的软件移植技术指的是通过对操作系统内核进行修改以提供兼容环境。目前这一技术的研究多用在开源操作系统上(例如Linux操作系统),通过修改操作系统内核,以弥补与其他异构平台(例如Windows操作系统)之间的差异性,使用户可以直接在其之上高效运行其他异构平台上的应用软件。常用的方法有(1)基于硬件虚拟化的方法;(2)基于核内差异核内补的方法。

2.1.3.2 常用方法

(1)基于硬件虚拟化的方法

基于硬件虚拟化的软件移植技术是在操作系统内核增加了一个虚拟机,虚拟机包含内核模块和处理器模块两部分。其中,内核模块用于提供核心的虚拟化支持;处理器模块提供了对处理器虚拟化技术的支持。虚拟机通过加载内核模块将操作系统内核(例如Linux操作系统)转换为一个虚拟机监视器;通过处理器模块使得一个未经修改的操作系统(例如Linux、Windows等)可以直接运行在一个用户模式的虚拟机(每个虚拟机对应一个标准的进程)上,即使客户机操作系统针对的目标平台处理器和当前宿主机的处理器不同。基于这种方式,应用软件的运行仍需要依赖原运行环境。2006年10 月,以色列的一个名为Oumrant的开源组织提出了名为KVM(Kernel-based Virtual Machine)[60]的基于硬件虚拟化的虚拟机实现方案,2007年2 月发布的Linux2.6.20 内核第一次包含了KVM,KVM运行于硬件和宿主操作系统之上。KVM通过硬件虚拟化技术,实现虚拟机操作系统代码(非I/O代码)直接由硬件处理。而对于客户操作系统所生成的任何I/O请求,则会被中途截获并转发到用户空间,由QEMU的设备模型来模拟I/O操作,在需要的情况下触发真实的I/O操作。QEMU是由Fabrice Bellard 开发和维护的一种使用动态翻译技术实现的快速的指令集虚拟机[61],此处不作赘述。(www.xing528.com)

(2)基于核内差异核内补的方法

基于核内差异核内补的软件移植技术指的是通过利用核内已有的资源弥补两个异构操作系统的差异。具体来说,对于两个异构操作系统内核中有对应功能实现的系统调用,通过嫁接(重定向)到相应的操作系统内核函数来实现;对于没有对应功能实现的系统调用,则使用低级的核内函数来实现。同时通过修改操作系统内核,来构建其他异构操作系统内核功能模块,包括进程管理、线程管理、对象管理、虚拟内存管理、同步、系统调用、系统注册机制和设备驱动程序框架等操作系统内核机制。进一步扩充操作内核的支持能力,使之能同时支持两个或多个操作系统的应用程序和设备驱动。2005年,浙大网新科技有限公司提出名为Longene(龙井)的Linux兼容内核项目[62][63][64],这是二进制兼容Windows和Linux应用软件和设备驱动程序的计算机操作系统内核,旨在通过Linux内核进行修改,利用Linux内核材料构建MS Windows内核功能模块从而扩充Linux内核的支持能力使之同时支持Linux和Windows的应用程序和设备驱动。通过Linux兼容内核项目,用户可以直接在Linux上高效运行Windows应用,而无须依赖于Windows操作系统[118][119]。与WINE相比,Linux兼容内核项目提高了软件移植后在目标平台上运行的性能和效率,从一定程度上解决了设备驱动兼容的问题。

2.1.3.3 局限性分析

基于内核修改的软件移植技术只适用于通用开源操作系统,不适用于商业化操作系统。对于商业化非开源操作系统,例如Windows操作系统,其内核代码是不公开的,对其修改更是不可能实现的;对于商业化开源操作系统,由于在商业化过程中,为实现商业目的,或多或少对其中采用的Linux内核进行了修改。例如,Android 操作系统[65][66][67]是基于Linux内核的。但是谷歌(Google)Android 开发团队在开发Android 操作系统过程中,曾将配置在Linux内核中的一些驱动模块转移到Linux内核之外,而且还重新定义、增设某些功能模块(如电源管理模块等)。若因为应用软件跨平台移植的需要,对修改后的Linux内核再做修改,则会影响到商业化Linux操作系统上其他应用软件的正常运行。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈