一种嵌入式操作系统的驱动程序加固方法

文档序号:6410571阅读:179来源:国知局
专利名称:一种嵌入式操作系统的驱动程序加固方法
技术领域
本发明涉及嵌入式操作系统领域,具体涉及一种嵌入式操作系统的驱动程序加固方法。
背景技术
多年来嵌入式系统一直被广泛应用于各种设备当中,大到车、船和卫星,小到家用电器。大部分的嵌入式系统并不需要操作系统,首先是因为没有必要,例如洗衣机、微波炉等电器,它们的功能有限,这样的系统只需要一道控制程序,管好几个按键、指示灯和数码管就可以了;其次是硬件条件不允许,它们往往采用4位或8位的微处理器,有的内存不到1KB,根本没有操作系统生存的空间,即使要完成一些比较复杂的任务,也只能依靠程序员的技巧去精雕细琢,以弥补硬件条件的不足。
随着硬件技术的飞速发展,嵌入式系统的应用领域日益扩大,提供的应用功能也越来越复杂,当初的控制程序被随之逐步加入了许多功能,越来越多的嵌入式设备采用了嵌入式操作系统,目前著名的嵌入式操作系统主要有WindRiver(风河)公司的VxWorks、微软的Windows XP Embedded、多种嵌入式Linux、凯思公司的Hopen OS和科银京成的Delta OS等。嵌入式操作系统一般由任务管理、任务间通信、中断处理、内存管理和板级支撑包等组成,其中板级支撑包(简称为BSP包)主要包含与硬件系统相关的初始化程序和各种设备的驱动程序,是整个嵌入式系统的基础部分。由于驱动程序和内核处于相同的特权级,驱动程序的故障会破坏嵌入式操作系统的内核数据结构,从而导致内核崩溃,因此,如果BSP包的可靠性不能得到有效保证,则会极大影响整个嵌入式系统的可靠性。据国外统计,2003年微软的Windows XP系统的故障85%是由驱动程序故障引起的,Linux的87.5%故障也是由驱动程序引起的。如果重新设计一个全新的驱动程序框架是可以有效保证驱动程序的可靠性,但它不能充分利用嵌入式系统中已有的丰富的设备驱动程序,从而给嵌入式系统的应用面和适用范围带来影响,降低了嵌入式系统的生产效率,从而影响了嵌入式系统的竞争力。因此,如何在现有的条件下提高嵌入式操作系统驱动程序的可靠性,成为嵌入式领域日益关注的研究热点。
目前国外嵌入式操作系统主要采用静态分析和集成测试的方法来加强驱动程序的可靠性。如在嵌入式Linux中通常采用严格的编程规则和静态分析技术,Bell实验室采用Orion静态分析工具对Monta Vista公司的嵌入式Linux进行分析,主要分析其未初始化的变量、空指针、数组越界等,从而提高其嵌入式Linux的代码质量。一些商用的嵌入式操作系统则采取了一些特殊的方法来实现驱动程序的加固,如图1所示风河公司在VxWorks AE中通过实现I/O分区来防止应用程序破坏内核的驱动程序,但是嵌入式操作系统中的驱动程序本身就存在潜在的不稳定因素,系统仍旧不可靠。
目前嵌入式操作系统中仍缺乏一种有效的、动态的驱动程序加固方法。

发明内容
本发明的目的在于提供一种嵌入式操作系统的驱动程序加固方法,本发明采用驱动程序隔离层技术,通过故障隔离和资源消耗跟踪,解决运行环境中嵌入式操作系统的驱动程序故障问题,提高驱动程序的可靠性。
本发明的嵌入式操作系统的驱动程序加固方法步骤如下
步骤一利用现有嵌入式操作系统常用的动态模块技术,采用动态模块技术在嵌入式操作系统内核中创建驱动程序的隔离层管理器,该隔离层管理器与嵌入式操作系统内核具有相同的特权级别;步骤二根据嵌入式操作系统驱动程序具有共性的特点,如字符设备驱动程序、块设备驱动程序等,为相应的驱动程序创建隔离层;步骤三驱动程序与内核其它部分的通信通过该驱动程序的隔离层提供的接口进行,隔离层进行参数个数和类型的检查,保证驱动程序对内核其它部分访问的接口正确性;步骤四隔离层跟踪和记录该驱动程序所使用的内核资源,并维护着驱动程序所使用到的内核数据结构的列表,对这些数据结构的修改进行监控;步骤五当驱动程序对内核资源的使用超过该驱动程序预先设定的阈值后,该驱动程序隔离层将停止该驱动程序,防止不正确的驱动程序引起全系统的崩溃。
本发明与现有技术相比具有如下优点和有益效果本发明采用隔离层技术,能够提高运行系统中驱动程序的容错能力,并通过对驱动程序所使用的内核资源的跟踪和审计,防止不正确的驱动程序耗尽系统资源;另外,本发明具有跨平台、容错、适用范围广的特点,既可以支持现有的嵌入式操作系统,也可以满足构件化操作系统的需要。


图1是VxWorks AE的驱动程序模型图;图2是驱动程序隔离层在嵌入式操作系统中的位置示意图;图3是创建驱动程序隔离层的流程图;
图4是驱动程序隔离层与内核其它部分通信的流程图。
具体实施例方式
下面结合附图对本发明作进一步地描述。
如图2所示,本发明的嵌入式操作系统的驱动程序加固方法是在嵌入式操作系统的内核中实现的,它是在嵌入式操作系统中增加隔离层管理器和驱动程序隔离层来实现的。隔离层管理器负责创建和回收驱动程序隔离层所用到的内核资源,主要是内核缓冲区和与该驱动程序相关的内核数据结构,它是以内核动态模块的方式实现的。驱动程序隔离层与驱动程序的类型紧密相关,在嵌入式操作系统现有的驱动程序接口基础上进行封装,提供参数和类型检查,跟踪和记录该驱动程序所使用的内核资源,根据系统设置的阈值激活驱动程序的故障处理。此外,驱动程序的加固技术还会涉及与内核其它部分的接口。
创建驱动程序隔离层的流程如下如图3所示,采用嵌入式操作系统的动态模块技术编写隔离层管理器,它的结构与普通的动态模块类似;通过嵌入式操作系统提供的动态模块加载技术,在嵌入式操作系统启动时,动态地将隔离层管理器加入到嵌入式操作系统内核中,隔离层管理器进行初始化;然后进入嵌入式操作系统的驱动程序初始化过程,每个加固的驱动程序隔离层初始化例程向隔离层管理器发送请求,隔离层管理器为驱动程序分配内核资源;如果内核有足够的资源,则分配资源,并检查资源的权限和属性;隔离层管理器根据驱动程序隔离层的资源分配和权限信息,修改相应的数据结构,确保隔离层管理器的信息与驱动程序的隔离层信息一致。嵌入式操作系统完成加固驱动程序的初始化后,进入正常的启动和初始化流程。
驱动程序隔离层与驱动程序是紧耦合的,它不是直接修改驱动程序本身,而是兼容现有的、丰富的驱动程序资源,从而在保证驱动程序高可靠的情况下,加快嵌入式系统的开发。
本发明通过借鉴现有网络协议技术,实现驱动程序隔离层与内核其它部分的通信。如图4所示,加固的驱动程序不能直接与嵌入式操作系统内核其它部分通信,从而防止有故障的驱动程序破坏嵌入式操作系统内核。为此,需要为加固的驱动程序设计一个特殊的通信接口实现与内核其它部分通信。该接口主要进行参数和类型检查,并进行相关的权限检查。为了防止驱动程序对内核其它数据结构的修改引起嵌入式操作系统的故障,该通信接口还不允许驱动程序直接修改内核数据结构,而是将相关的内核数据复制,在隔离层内对复制的数据结构进行修改。此外,与传统的嵌入式操作系统不同,内核其它部分与驱动程序之间的信息流是非对称的,驱动程序不能直接访问内核其它部分,而内核其它部分可以直接访问驱动程序的信息,从而确保嵌入式操作系统整体的可靠性和稳定性。该通信结构实现可以借鉴网络RPC(Remote Procedure Call)技术,并对RPC进行精简,增加安全检查功能。
驱动程序隔离层跟踪和记录驱动程序所使用的内核所有资源主要包括(1)维护驱动程序操作的内核数据结构列表;(2)控制对这些结构的修改;(3)当驱动程序失败时,提供清理的对象信息。驱动程序隔离层不能直接修改其它内核数据结构,它首先将内核对象拷贝到隔离层,然后修改,最后将修改后的内容拷贝回内核。对象跟踪代码在驱动程序和内核间验证每个参数的类型和访问属性。内核函数可以避免过细的参数检查,只在不可靠的内核模块时才进行。
如上所述,可较好地实现本发明。本发明可广泛应用于通信、航空、航天、工业控制、军事等可靠性要求较高的领域。
权利要求
1.一种嵌入式操作系统的驱动程序加固方法,其特征在于步骤如下步骤一利用现有嵌入式操作系统常用的动态模块技术,采用动态模块技术在嵌入式操作系统内核中创建驱动程序的隔离层管理器;步骤二为相应的驱动程序创建隔离层;步骤三驱动程序与内核其它部分的通信通过该驱动程序的隔离层提供的接口进行,隔离层进行参数个数和类型的检查,保证驱动程序对内核其它部分访问的接口正确性;步骤四隔离层跟踪和记录该驱动程序所使用的内核资源,并维护着驱动程序所使用到的内核数据结构的列表,对这些数据结构的修改进行监控;步骤五当驱动程序对内核资源的使用超过该驱动程序预先设定的阈值后,该驱动程序隔离层将停止该驱动程序。
2.根据权利要求1所述的嵌入式操作系统的驱动程序加固方法,其特征在于所述步骤一中隔离层管理器与嵌入式操作系统内核具有相同的特权级别。
全文摘要
本发明是一种嵌入式操作系统的驱动程序加固方法,采用动态模块技术在嵌入式操作系统内核中创建驱动程序的隔离层管理器并为相应的驱动程序创建隔离层;驱动程序与内核其它部分的通信通过该驱动程序的隔离层提供的接口进行,隔离层进行参数个数和类型的检查;隔离层跟踪和记录该驱动程序所使用的内核资源,并维护着驱动程序所使用到的内核数据结构的列表,对这些数据结构的修改进行监控。本发明采用隔离层技术,能够提高运行系统中驱动程序的容错能力,并通过对驱动程序所使用的内核资源的跟踪和审计,防止不正确的驱动程序耗尽系统资源。本发明可广泛应用于通信、航空、航天、工业控制、军事等可靠性要求较高的领域。
文档编号G06F9/44GK1609788SQ200410052358
公开日2005年4月27日 申请日期2004年11月24日 优先权日2004年11月24日
发明者刘发贵 申请人:华南理工大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1