CN1609788A - 一种嵌入式操作系统的驱动程序加固方法 - Google Patents
一种嵌入式操作系统的驱动程序加固方法 Download PDFInfo
- Publication number
- CN1609788A CN1609788A CN 200410052358 CN200410052358A CN1609788A CN 1609788 A CN1609788 A CN 1609788A CN 200410052358 CN200410052358 CN 200410052358 CN 200410052358 A CN200410052358 A CN 200410052358A CN 1609788 A CN1609788 A CN 1609788A
- Authority
- CN
- China
- Prior art keywords
- driver
- kernel
- separation layer
- embedded
- drive program
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Abstract
本发明是一种嵌入式操作系统的驱动程序加固方法,采用动态模块技术在嵌入式操作系统内核中创建驱动程序的隔离层管理器并为相应的驱动程序创建隔离层;驱动程序与内核其它部分的通信通过该驱动程序的隔离层提供的接口进行,隔离层进行参数个数和类型的检查;隔离层跟踪和记录该驱动程序所使用的内核资源,并维护着驱动程序所使用到的内核数据结构的列表,对这些数据结构的修改进行监控。本发明采用隔离层技术,能够提高运行系统中驱动程序的容错能力,并通过对驱动程序所使用的内核资源的跟踪和审计,防止不正确的驱动程序耗尽系统资源。本发明可广泛应用于通信、航空、航天、工业控制、军事等可靠性要求较高的领域。
Description
技术领域
本发明涉及嵌入式操作系统领域,具体涉及一种嵌入式操作系统的驱动程序加固方法。
背景技术
多年来嵌入式系统一直被广泛应用于各种设备当中,大到车、船和卫星,小到家用电器。大部分的嵌入式系统并不需要操作系统,首先是因为没有必要,例如洗衣机、微波炉等电器,它们的功能有限,这样的系统只需要一道控制程序,管好几个按键、指示灯和数码管就可以了;其次是硬件条件不允许,它们往往采用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)当驱动程序失败时,提供清理的对象信息。驱动程序隔离层不能直接修改其它内核数据结构,它首先将内核对象拷贝到隔离层,然后修改,最后将修改后的内容拷贝回内核。对象跟踪代码在驱动程序和内核间验证每个参数的类型和访问属性。内核函数可以避免过细的参数检查,只在不可靠的内核模块时才进行。
如上所述,可较好地实现本发明。本发明可广泛应用于通信、航空、航天、工业控制、军事等可靠性要求较高的领域。
Claims (2)
1.一种嵌入式操作系统的驱动程序加固方法,其特征在于步骤如下:
步骤一:利用现有嵌入式操作系统常用的动态模块技术,采用动态模块技术在嵌入式操作系统内核中创建驱动程序的隔离层管理器;
步骤二:为相应的驱动程序创建隔离层;
步骤三:驱动程序与内核其它部分的通信通过该驱动程序的隔离层提供的接口进行,隔离层进行参数个数和类型的检查,保证驱动程序对内核其它部分访问的接口正确性;
步骤四:隔离层跟踪和记录该驱动程序所使用的内核资源,并维护着驱动程序所使用到的内核数据结构的列表,对这些数据结构的修改进行监控;
步骤五:当驱动程序对内核资源的使用超过该驱动程序预先设定的阈值后,该驱动程序隔离层将停止该驱动程序。
2.根据权利要求1所述的嵌入式操作系统的驱动程序加固方法,其特征在于所述步骤一中隔离层管理器与嵌入式操作系统内核具有相同的特权级别。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200410052358 CN1282921C (zh) | 2004-11-24 | 2004-11-24 | 一种嵌入式操作系统的驱动程序加固方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200410052358 CN1282921C (zh) | 2004-11-24 | 2004-11-24 | 一种嵌入式操作系统的驱动程序加固方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1609788A true CN1609788A (zh) | 2005-04-27 |
CN1282921C CN1282921C (zh) | 2006-11-01 |
Family
ID=34764150
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 200410052358 Expired - Fee Related CN1282921C (zh) | 2004-11-24 | 2004-11-24 | 一种嵌入式操作系统的驱动程序加固方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN1282921C (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101071387B (zh) * | 2006-09-08 | 2010-05-12 | 华南理工大学 | 一种基于虚拟机的驱动程序加固方法 |
CN101410768B (zh) * | 2006-03-30 | 2011-06-15 | 西门子公司 | 包括至少一个自动化单元的控制和通信系统 |
WO2012083640A1 (zh) * | 2010-12-20 | 2012-06-28 | 中兴通讯股份有限公司 | 一种实现多任务管理输入输出资源的方法及系统 |
CN103036709A (zh) * | 2012-11-29 | 2013-04-10 | 华南理工大学 | 一种基于主机监控操作系统的加固方法 |
CN101689103B (zh) * | 2007-06-27 | 2013-04-24 | 微软公司 | 用于方便管理由计算系统使用的硬件资源的方法和系统 |
CN103902397A (zh) * | 2014-03-03 | 2014-07-02 | 中山大学 | 一种基于数字家庭中间件的居家养老健康服务系统及方法 |
CN104484610A (zh) * | 2014-12-25 | 2015-04-01 | 浪潮电子信息产业股份有限公司 | 一种Windows操作系统安全加固的实现方法 |
CN104794393A (zh) * | 2015-04-24 | 2015-07-22 | 杭州字节信息技术有限公司 | 一种嵌入式分区映像安全认证及内核可信引导方法及其设备 |
CN111737332A (zh) * | 2020-06-24 | 2020-10-02 | 四川长虹电器股份有限公司 | 一种采购比价的嵌入式审计系统及方法 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105893838A (zh) * | 2016-05-11 | 2016-08-24 | 北京鼎源科技有限公司 | 一种针对安卓操作系统关键驱动程序的加固方法 |
-
2004
- 2004-11-24 CN CN 200410052358 patent/CN1282921C/zh not_active Expired - Fee Related
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101410768B (zh) * | 2006-03-30 | 2011-06-15 | 西门子公司 | 包括至少一个自动化单元的控制和通信系统 |
CN101071387B (zh) * | 2006-09-08 | 2010-05-12 | 华南理工大学 | 一种基于虚拟机的驱动程序加固方法 |
CN101689103B (zh) * | 2007-06-27 | 2013-04-24 | 微软公司 | 用于方便管理由计算系统使用的硬件资源的方法和系统 |
WO2012083640A1 (zh) * | 2010-12-20 | 2012-06-28 | 中兴通讯股份有限公司 | 一种实现多任务管理输入输出资源的方法及系统 |
CN103036709A (zh) * | 2012-11-29 | 2013-04-10 | 华南理工大学 | 一种基于主机监控操作系统的加固方法 |
CN103036709B (zh) * | 2012-11-29 | 2016-08-03 | 华南理工大学 | 一种基于主机监控操作系统的加固方法 |
CN103902397A (zh) * | 2014-03-03 | 2014-07-02 | 中山大学 | 一种基于数字家庭中间件的居家养老健康服务系统及方法 |
CN104484610A (zh) * | 2014-12-25 | 2015-04-01 | 浪潮电子信息产业股份有限公司 | 一种Windows操作系统安全加固的实现方法 |
CN104794393A (zh) * | 2015-04-24 | 2015-07-22 | 杭州字节信息技术有限公司 | 一种嵌入式分区映像安全认证及内核可信引导方法及其设备 |
CN104794393B (zh) * | 2015-04-24 | 2017-11-10 | 杭州字节信息技术有限公司 | 一种嵌入式分区映像安全认证及内核可信引导方法及其设备 |
CN111737332A (zh) * | 2020-06-24 | 2020-10-02 | 四川长虹电器股份有限公司 | 一种采购比价的嵌入式审计系统及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN1282921C (zh) | 2006-11-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Kahn | A retrospective on the VAX VMM security kernel | |
US7437706B2 (en) | Automating the life cycle of a distributed computing application | |
CN102314373B (zh) | 一种基于虚拟化技术实现安全工作环境的方法 | |
US20060129880A1 (en) | Method and system for injecting faults into a software application | |
CN101334825B (zh) | 应用程序管理和运行系统及方法 | |
CN1282921C (zh) | 一种嵌入式操作系统的驱动程序加固方法 | |
US20140033177A1 (en) | Multi-platform test automation enhancement | |
WO2015026680A1 (en) | Cloud deployment infrastructure validation engine | |
JP2004334869A (ja) | プログラムによるコンピュータ問題の診断、解決、およびその自動的な報告ならびに更新 | |
US20210342249A1 (en) | Method for detecting safety-relevant data streams | |
CN105843697B (zh) | 一种浏览器控件的中断恢复方法及系统 | |
CN101034369A (zh) | 一种软件抗干扰方法及装置 | |
US11658868B2 (en) | Mixed mode management | |
CN108108259A (zh) | 一种内核故障定位方法及装置 | |
CN102737198B (zh) | 对象保护方法及装置 | |
CN1855034A (zh) | 一种实现与设备对象无关的dohm软件接口 | |
Cao et al. | Research on reliability evaluation of big data system | |
CN113031964B (zh) | 一种大数据应用的管理方法、装置、设备及存储介质 | |
CN1162780C (zh) | 基本输入输出系统的追踪除错方法 | |
US20050256843A1 (en) | Method of checkpointing and restarting processes which share open file | |
Müller | Aspect design with the building block method | |
CN1266619C (zh) | 计算机安全系统及其实现方法 | |
CN104899512A (zh) | 一种Windows系统服务描述符表防篡改装置及方法 | |
CN101158920A (zh) | 一种检测操作系统故障的方法和装置 | |
US20230185663A1 (en) | Hardware Memory Error Tolerant Software System |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20061101 Termination date: 20121124 |