基于动态二进制翻译的跨平台驱动程序复用方法

文档序号:6599242阅读:309来源:国知局
专利名称:基于动态二进制翻译的跨平台驱动程序复用方法
技术领域
本发明属计算机系统软件及软件应用领域,涉及基于动态二进制翻译的跨平台驱动程序复用方法。具体涉及驱动程序在不同平台间复用和增强驱动程序可靠性等方面应用。
背景技术
近年来,出于对国家安全、国民经济发展等多方面因素考虑,安全有效的处理器芯片和操作系统愈来愈显现出其有着至关重要的战略意义,国家有关部门对该领域技术给予关注与支持。近年来,国内研发的芯片和操作系统不断涌现,如由某研究机构研发的龙芯通用处理器,由某科技公司研发的银河麒麟操作系统等。但所述的处理器芯片和操作系统所构成的自主计算平台真正的实用和普及还面临来自同现有大量外部设备协同工作的挑战。 驱动程序作为操作系统的延伸实现计算机主体与不同外部设备的交互工作,因此操作系统的成熟度取决于是否有足够的驱动程序来支持各类外部设备,例如微软视窗操作系统中超过70%的代码是设备驱动程序。对于新近研发的计算平台,完全重新开发所有的设备驱动程序并不现实,因此如何最大限度的重用现有驱动程序,实现驱动程序跨平台复用成为实用和普及新型计算平台的关键。然而驱动程序的实现依赖于操作系统所提供的驱动编程模型,两者紧密耦合在一起。当前操作系统所提供的驱动编程模型并不存在统一的标准,从编程接口到提供的系统服务、再到物理硬件操作方式等各个方面都存在巨大差异。因此对于同一个外部设备,不同操作系统上的驱动程序实现完全不同,无法复用。另一方面,不同处理器间如英特尔公司的 x86处理器与中科院的龙芯处理器采用截然不同的指令集。而驱动程序往往以二进制形式发布,除了少数开源实现并不提供源代码,因此即使是同一操作系统在不同处理器平台上也无法直接二进制复用驱动程序。这直接导致驱动程序存在严重的扩展性问题,依赖于底层的处理器和操作系统环境,难以实现跨平台的二进制复用。现有的解决方案是硬件厂商或者操作系统开发人员为不同操作系统环境编写专门的驱动程序。但是出于开发成本的考虑,只有少数主流操作系统平台,如微软视窗操作系统,才能得到全面的驱动程序支持。并且这些驱动程序并不公开源代码,只提供部分处理器平台的二进制版本。对于大量非主流或新兴的操作系统,如国内自主研发的操作系统,往往得不到硬件厂商的支持,只能为最常用的一些外部设备编写驱动程序实现部分主要功能。 即使是Linux这样的拥有大量用户的成熟操作系统平台上的驱动程序仍存在支持有限、升级缓慢、可靠性差和性能不佳等诸多问题。

发明内容
本发明的目的是克服现有技术的缺陷,主要解决的是如何在不同处理器和操作系统构成的计算平台间实现驱动程序的二进制复用,提供一种基于动态二进制翻译的跨平台驱动程序复用技术。
由于现有技术的二进制的驱动程序依赖于底层处理器和操作系统,因此要实现跨平台二进制复用就必须克服从指令集到文件格式、从系统服务调用到硬件设备操作等方面的差异造成的困难。为解决上述问题,本发明提供一种基于动态二进制翻译的跨平台驱动程序复用技术,其包括以动态二进制翻译技术为基础在目标操作系统中为驱动程序构建轻量级独立运行环境;分别采用二进制翻译模块实现跨平台指令集转换,异构文件格式装载模块实现不同文件格式复用,用系统服务模拟模块提供跨平台系统服务,以及通用硬件控制模块实现硬件设备的操作。本发明中,基于二进制翻译的复用技术的核心是二进制翻译模块,该模块采用在仿真器和模拟器中成熟的动态二进制翻译技术来实现跨平台指令集转换。动态二进制翻译技术能够实现从源指令序列到目标指令序列的动态翻译,并能够按需对特殊指令进行有针对性的处理,使得跨处理器指令集的二进制复用成为可能。动态二进制翻译技术只需一次性的实现从通用中间指令集到新的处理器指令集的翻译规则,具有很好的通用性,独立于具体的硬件设备和驱动程序。对于需要复用的驱动程序,翻译模块首先将使用源指令集的二进制驱动代码在运行时动态的按需翻译成中间指令集代码,再根据添加的翻译规则翻译成最终的可以在新处理器上执行的二进制代码。并且相对于普通应用程序,驱动代码本身还具有运行周期长、代码执行流相对稳定和序交互性不敏感的特点,有利于分摊并优化采用动态二进制翻译技术在性能方面的影响。本发明中,不同操作系统平台采用多种不同的二进制文件格式,即使是同一操作系统也支持多种不同格式。异构文件格式装载模块以插件方式可扩展的支持不同平台下的二进制文件格式,完成将二进制文件从磁盘装载到内存进程空间的工作。系统服务模拟模块为驱动程序提供与驱动程序一致的系统服务。通过目标系统平台上的系统服务模拟轻量级的源系统服务,并由动态二进制翻译模块实现对服务调用的重定向,使得二进制驱动程序能够借助目标系统服务来完成必要的操作。最后通用硬件控制模块抽象硬件操作中具有共性的底层操作,分离驱动程序对于内核环境的依赖。使驱动程序运行与用户态,由通用硬件控制模块来代理完成必要的内核态操作,如创建目标平台上的应用程序接口,对硬件外设的寄存器进行读写操作等。本发明的有益效果是,有效的实现二进制驱动程序的跨平台复用,利用动态二进制翻译等技术在无需源码和重编译情况下,实现在不同处理器和不同操作系统间复用现有的二进制驱动程序。本发明有利于各种处理器和操作系统,尤其是自主研发的计算平台的实用化和普及,在只需较少开发成本的情况下实现对大量外部设备的有效支持。为了便于理解,以下将通过具体的附图和实施例对本发明的进行详细地描述。需要特别指出的是,具体实例和附图仅是为了说明,显然本领域的普通技术人员可以根据本文说明,在本发明的范围内对本发明做出各种各样的修正和改变,这些修正和改变也纳入本发明的范围内。


图1为本发明的二进制驱动跨平台复用技术架构示意图。
具体实施例方式实施例1图1描述了基于动态二进制翻译的跨平台驱动复用技术的整体系统架构。装载模块首先依据二进制驱动程序文件类型使用合适的格式插件将驱动程序装载到进程空间。当需要执行驱动程序中的指令时,动态二进制翻译模块首先将对应的源指令序列段翻译成目标处理器指令序列段然后执行,并且该结果被保存在翻译缓冲区中避免多次翻译。驱动程序中对于源操作系统上的系统服务请求,比如分配内存空间请求,被翻译模块截获并重定向到系统服务模拟模块。服务模拟模块使用目标操作系统上的系统服务来模拟完成请求。 而驱动程序与普通应用程序以及物理硬件设备的交互、以及对内核态资源的访问都由位于内核态的通用硬件控制模块代理完成。
权利要求
1.基于动态二进制翻译的跨平台驱动程序复用方法,其特征在于,其包括以动态二进制翻译技术为基础,在目标操作系统中为驱动程序构建轻量级独立运行环境;其中,分别采用二进制翻译模块实现跨平台指令集转换,异构文件格式装载模块实现不同文件格式复用,用系统服务模拟模块提供跨平台系统服务,以及通用硬件控制模块实现硬件设备的操作。
2.按权利要求1所述的方法,其特征在于,其中所述的二进制翻译模块采用在仿真器和模拟器中成熟的动态二进制翻译技术实现跨平台指令集转换。
3.按权利要求2所述的方法,其特征在于,其中所述的动态二进制翻译技术实现从源指令序列到目标指令序列的动态翻译,并按需对特殊指令进行有针对性的处理。
4.按权利要求2所述的方法,其特征在于,其中所述的动态二进制翻译技术一次性实现从通用中间指令集到新的处理器指令集的翻译规则,并独立于具体硬件设备和驱动程序。
5.按权利要求1所述的方法,其特征在于,其中所述的异构文件格式装载模块以插件方式可扩展的支持不同平台下的二进制文件格式,完成将二进制文件从磁盘装载到内存进程空间的工作。
6.按权利要求1所述的方法,其特征在于,其中所述的系统服务模拟模块为驱动程序提供与驱动程序一致的系统服务。
全文摘要
本发明属计算机系统软件及软件应用领域,涉及基于动态二进制翻译的跨平台驱动程序复用方法。其包括以动态二进制翻译技术为基础,在目标操作系统中为驱动程序构建轻量级独立运行环境;采用二进制翻译模块实现跨平台指令集转换,异构文件格式装载模块实现不同文件格式复用,用系统服务模拟模块提供跨平台系统服务,以及通用硬件控制模块实现硬件设备的操作。本发明能有效的实现二进制驱动程序的跨平台复用,在无需源码和重编译情况下,实现在不同处理器和不同操作系统间复用现有的二进制驱动程序。本发明有利于各种处理器和操作系统,在只需较少开发成本的情况下实现对大量外部设备的有效支持。
文档编号G06F9/44GK102193788SQ20101012503
公开日2011年9月21日 申请日期2010年3月12日 优先权日2010年3月12日
发明者臧斌宇, 陈榕, 陈海波 申请人:复旦大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1