CN103279367A - 一种内核驱动隔离系统 - Google Patents
一种内核驱动隔离系统 Download PDFInfo
- Publication number
- CN103279367A CN103279367A CN2013101632061A CN201310163206A CN103279367A CN 103279367 A CN103279367 A CN 103279367A CN 2013101632061 A CN2013101632061 A CN 2013101632061A CN 201310163206 A CN201310163206 A CN 201310163206A CN 103279367 A CN103279367 A CN 103279367A
- Authority
- CN
- China
- Prior art keywords
- kernel
- drives
- drive
- driver
- operating system
- 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.)
- Pending
Links
Images
Landscapes
- Storage Device Security (AREA)
Abstract
本发明公开了一种内核驱动隔离系统,包括有操作系统内核基本部分、设备驱动部分、以及设置于内核基本部分和设备驱动部分之间的驱动隔离层;其中,在驱动隔离层之上是操作系统内核基本部分,而在驱动隔离层之下是设备驱动部分。本发明内核驱动隔离系统将驱动程序和内核其他部分相隔离,最大程度的减少系统故障的发生,同时提供驱动程序故障时的自我恢复环境,在驱动出现故障后恢复驱动。这种运行环境改变了传统的操作系统工作模式,对系统内核区域进行了保护,实现了系统的安全性和兼容性。
Description
技术领域
本发明属于计算机操作系统软件技术领域,涉及一种内核驱动隔离系统。
背景技术
随着计算机系统在金融、通信、航空等关键领域日益广泛的应用,人们对计算机系统的可用性提出了越来越高的要求。可用性是一种系统可用度的量化指标。采用高可用技术能够有效地增加系统的可靠性,它能在设备发生故障的情况下仍然继续正常运行或马上恢复到正常状态。高可用性包涵了可靠性、可维护性和可用性,基本评价指标有可靠度、可维修度和可用度。
提高系统可用性的技术手段主要有:1) 检查点技术,基于周期性地设置检查点以保存系统运行中间状态的检查点技术,在发生故障后可以从最近的检查点恢复并继续执行。在使用检查点技术时,需要对检查点的设置周期进行权衡,检查点设置周期越长,发生故障后的恢复的时间就越长;检查点设置周期太短,则会对系统性能造成较大的影响。多数操作系统不支持核心层的检查点,而用户态的检查点需要修改应用程序,对应用程序不透明。2) 进程迁移技术,指在系统发生故障时将正在执行的进程动态移动到另一个可靠的计算环境,用户级迁移技术实现简单但效率很低,例如有Condor和Utopia,内核级迁移效率较高但实现复杂;3) 失效接管,指当探测到集群或系统中某节点发生故障时,另一节点接过该节点的任务,能连续地提供相同的服务,有主控机的集中管理模式和自由选举的平等模式。
以上技术手段都是以系统发生故障或失效后为提高系统可用性为目的,对系统故障的来源及发生并没有对应的分析和防范措施。驱动程序的故障是造成操作系统崩溃的重要原因之一。驱动程序往往是第三方开发的,并未经过严格的测试和验证,而驱动程序通常运行在操作系统内核空间内,任何一个小的错误都可能引起系统的失效甚至是崩溃。
发明内容
为解决上述问题,本发明的目的在于提供一种内核驱动隔离系统,对系统内核区域进行保护,最大程度的减少系统故障的发生,实现系统的安全性和兼容性。
为实现上述目的,本发明的技术方案为:
一种内核驱动隔离系统,包括有操作系统内核基本部分、设备驱动部分、以及设置于内核基本部分和设备驱动部分之间的驱动隔离层;其中,在驱动隔离层之上是操作系统内核基本部分,而在驱动隔离层之下是设备驱动部分。
进一步地,所述驱动隔离层部分包括有内存隔离模块、函数包装模块、资源监控模块以及驱动恢复模块。
进一步地,所述内核基本部分包括有进程管理、进程调度、内存管理、设备管理以及中断管理。
进一步地,所述内存隔离模块的功能是利用虚拟内存保护机制隔离需要保护的设备驱动程序,使得其内部产生的错误不会影响到内核基本部分或其他设备驱动程序。
进一步地,设置内存保护域,其只对整个内核地址空间的某个部分具有读写权限,而对其他内核地址空间部分只有读权限,每个被隔离的设备驱动程序都运行在自己的内存保护域中。
进一步地,所述内存隔离模块包括有内存保护域管理器和内存保护域切换器;各个内存保护域都有其私有数据结构。
进一步地,所述函数包装模块通过将内核基本部分和设备驱动程序之间双向通信函数替换成包装函数,以保证被隔离设备驱动程序和操作系统内核基本部分之间的所有控制流都切换到内存保护域中处理。
进一步地,所述函数包装模块包括有内核包装函数和驱动包装函数两种类型的包装函数;其中,内核包装函数系在设备驱动程序需要执行操作系统内核导出函数时,由设备驱动程序调用,是对原有内核函数的包装;而驱动包装函数系在操作系统内核需要调用被隔离设备驱动程序的功能接口函数请求服务时,由操作系统内核调用,是对设备驱动程序提供给内核调用的接口函数的包装。
进一步地,所述驱动恢复模块用于检测设备驱动程序故障,在确定发送设备驱动时,清理驱动程序使用的系统资源,使得操作系统内核在出现设备驱动程序故障时能够继续正常运行,并且尽可能恢复失效驱动,其主要包括失效检测器和恢复管理器两个部分。
进一步地,所述失效检测器负责检测被隔离设备驱动程序是否失效,由嵌入到内核态驱动隔离系统其他模块中的各个失效检测点组成;所述恢复管理器负责把操作系统恢复到一个可用的正确状态,并恢复失效的驱动程序。
相较于现有技术,本发明一种内核驱动隔离系统将驱动程序和内核其他部分相隔离,最大程度的减少系统故障的发生,同时提供驱动程序故障时的自我恢复环境,在驱动出现故障后恢复驱动。这种运行环境改变了传统的操作系统工作模式,对系统内核区域进行了保护,实现了系统的安全性和兼容性。
附图说明
图1为内核驱动隔离系统的结构示意图;
图2为内存保护域的示意图;
图3为内存保护域创建流程的示意图;
图4为内存保护域释放流程的示意图;
图5为内核域到保护域的切换流程的示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明一种内核驱动隔离系统以Linux操作系统为例进行说明,通过在Linux操作系统内核中加入一个软件隔离层,隔离驱动程序和内核基本部分,并且在驱动程序发生错误时进行驱动的恢复,保证操作系统的可靠性和可用性。
如图1所示,本发明内核驱动隔离系统包括有内核基本部分、设备驱动部分以及位于内核基本部分与设备驱动部分之间的驱动隔离层。内核驱动隔离系统主要功能由处于操作系统内核态的驱动隔离层来完成,驱动隔离层位于内核基本部分和设备驱动部分之间。在驱动隔离层之上是操作系统内核基本部分,在驱动隔离层之下是设备驱动部分,包括各种各样的设备驱动程序。内核基本部分包括有进程管理、进程调度、内存管理、设备管理以及中断管理。驱动隔离层部分包括有内存隔离模块、函数包装模块、资源监控模块以及驱动恢复模块。
所述内存隔离模块的功能是利用虚拟内存保护机制隔离需要保护的设备驱动程序,使得其内部产生的错误不会影响到内核基本部分或其他设备驱动程序。每个被隔离的设备驱动程序都在自己的内存保护域中执行。内存保护域是一种执行环境,它与操作系统内核基本部分运行于相同的特权级别(在x86架构下为ring 0),但是其只对整个内核地址空间的某个部分具有读写权限,而对其他内核地址空间部分只有读权限。内存隔离模块主要包括有内存保护域管理器和内存保护域切换器。,如图2所示,在内核态驱动隔离系统中,每个被隔离的设备驱动程序都运行在自己的内存保护域中。为了使得内存保护域内的设备驱动程序对内核地址其他空间只有读权限,内核态驱动隔离系统需要为每个内存保护域维护一份属于内存保护域的私有驱动页表,同时维护驱动页表与内核页表的一致性。各个内存保护域都有自己的私有数据结构,包括堆、栈、页表等。在由内核地址空间进入内存保护域和从内存保护域返回到内核地址空间时,自动进行内核页表和驱动页表的切换和同步,从而达到内存保护域对于整个内核地址空间读写权限的控制。内存保护域管理器主要包含保护域的创建、撤销与维护等功能。通过扩充内核task_struct数据结构,来记录和获取保护域的信息。
所述函数包装模块通过将内核基本部分和设备驱动程序之间双向通信函数替换成包装函数,从而保证了被隔离设备驱动程序和操作系统内核基本部分之间的所有控制流都切换到内存保护域中处理;同时接受资源管理模块对双向切换过程中所使用的各种资源的监控和管理。这些包装函数提供了操作系统内核基本部分和设备驱动程序之间透明的控制流和数据流的转移,提供对已有设备驱动程序的兼容性,以保证无需对现有设备驱动程序进行修改就可以应用内核态驱动隔离的技术。本发明实施例中,所述函数包装模块包括有内核包装函数和驱动包装函数两种类型的包装函数。其中,内核包装函数系在设备驱动程序需要执行操作系统内核导出函数时,由设备驱动程序调用,是对原有内核函数的包装;而驱动包装函数系在操作系统内核需要调用被隔离设备驱动程序的功能接口函数请求服务时,由操作系统内核调用,是对设备驱动程序提供给内核调用的接口函数的包装。
由于驱动隔离系统利用内存保护域隔离了驱动程序,这使得在内存保护域内运行的设备驱动程序不能够直接修改位于内核态中的内核对象。因此内核资源监控模块需要在保护域切换时把被隔离设备驱动程序需要修改的内核对象拷贝到这个设备驱动程序的内存保护域内,保存一份副本。在被隔离设备驱动程序的执行过程中所做的修改都针对这些内核对象的副本进行,当修改完成以后再同步回原来的内核对象上。
本发明实施例中,在内存保护域中驱动对内核对象的访问都是在资源管理模块的监控下进行的,每次对内核对象的修改,资源管理模块首先在内存保护域中为内核对象创建一个副本,驱动直接对对象副本进行修改。当本次调用完成并返回内核域时,才会把修改后的内核对象值同步到原内核对象上,那么内核态驱动隔离系统就可以借助修改副本到返回内核域这段时间对副本的值进行检查,当在这段时间内驱动发生错误时,修改后的内核对象值不会被同步回原内核对象,从而有效的避免驱动故障对内核的影响。
所述驱动恢复模块用于检测设备驱动程序故障,在确定发送设备驱动时,清理驱动程序使用的系统资源,使得操作系统内核在出现设备驱动程序故障时能够继续正常运行,并且尽可能恢复失效驱动,其主要包括失效检测器和恢复管理器两个部分。其中,失效检测器负责检测被隔离设备驱动程序是否失效,由嵌入到内核态驱动隔离系统其他模块中的各个失效检测点组成。在失效检测点检测到驱动失效时,就会触发恢复管理器来恢复失效的设备驱动程序。当驱动试图访问(写)未经授权的内核区域时,驱动保护域将会立即检测到并拦截这类驱动行为,随即把控制权转交给恢复模块。而 恢复管理器负责把操作系统恢复到一个可用的正确状态,并且尽可能恢复失效的驱动程序。对于每类不同的驱动,都对于一个相应的恢复管理器。且恢复管理器具有不同的恢复级别,如简单的卸载失效的设备驱动程序、恢复设备驱动程序到可用状态。当驱动发生失效后,恢复模块需要停止失效的驱动,以保证失效驱动不会进一步的破坏内核的关键数据。同时,需要停止相应硬件设备的请求和响应,防止硬件设备破坏系统的状态。然后卸载掉发生失效的驱动,将系统设置为加载这个驱动之前的可用状态。不过,此时的系统是一个不完备的系统,失效驱动在之前可以提供的功能在此时是不可用的。最后根据失效信息,新产生一个子进程,重新加载和初始化失效驱动,以完成对驱动的恢复过程。
本发明内核驱动隔离系统主要是把驱动(内核模块)与内核基本部分隔离开,使得驱动不能对未授权的内核地址进行写操作。以基于lbcully设备驱动进行故障注入测试为例进行说明。首先,编写一个用于测试的设备驱动程序lbcully。为了便于静态故障注入测试,选取了若干个内核对象作为lbycull驱动的访问目标。内核对象的地址从内核符号表文件System.map获取。当lbcully驱动程序执行到故障代码处时,驱动隔离系统会发现lbycull驱动程序执行了含有故障的代码,驱动隔离系统将中断驱动执行,停止了含有故障的驱动。内核会因为驱动的非正常停止运行会发出一些Kernel Oops信息。用户根据输出的Kernel Oops信息,可以通过对产生故障的驱动的资源清理工作和卸载操作后,驱动仍然可以再次被加载到内核并且可以执行正确的驱动操作。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种内核驱动隔离系统,包括有操作系统内核基本部分以及设备驱动部分,其特征在于:还包括有设置于内核基本部分和设备驱动部分之间的驱动隔离层;其中,在驱动隔离层之上是操作系统内核基本部分,而在驱动隔离层之下是设备驱动部分。
2.如权利要求1所述内核驱动隔离系统,其特征在于:所述驱动隔离层部分包括有内存隔离模块、函数包装模块、资源监控模块以及驱动恢复模块。
3.如权利要求2所述内核驱动隔离系统,其特征在于:所述内核基本部分包括有进程管理、进程调度、内存管理、设备管理以及中断管理。
4.如权利要求3所述内核驱动隔离系统,其特征在于:所述内存隔离模块的功能是利用虚拟内存保护机制隔离需要保护的设备驱动程序,使得其内部产生的错误不会影响到内核基本部分或其他设备驱动程序。
5.如权利要求4所述内核驱动隔离系统,其特征在于:设置内存保护域,其只对整个内核地址空间的某个部分具有读写权限,而对其他内核地址空间部分只有读权限,每个被隔离的设备驱动程序都运行在自己的内存保护域中。
6.如权利要求5所述内核驱动隔离系统,其特征在于:所述内存隔离模块包括有内存保护域管理器和内存保护域切换器;各个内存保护域都有其私有数据结构。
7.如权利要求6所述内核驱动隔离系统,其特征在于:所述函数包装模块通过将内核基本部分和设备驱动程序之间双向通信函数替换成包装函数,以保证被隔离设备驱动程序和操作系统内核基本部分之间的所有控制流都切换到内存保护域中处理。
8.如权利要求7所述内核驱动隔离系统,其特征在于:所述函数包装模块包括有内核包装函数和驱动包装函数两种类型的包装函数;其中,内核包装函数系在设备驱动程序需要执行操作系统内核导出函数时,由设备驱动程序调用,是对原有内核函数的包装;而驱动包装函数系在操作系统内核需要调用被隔离设备驱动程序的功能接口函数请求服务时,由操作系统内核调用,是对设备驱动程序提供给内核调用的接口函数的包装。
9.如权利要求8所述内核驱动隔离系统,其特征在于:所述驱动恢复模块用于检测设备驱动程序故障,在确定发送设备驱动时,清理驱动程序使用的系统资源,使得操作系统内核在出现设备驱动程序故障时能够继续正常运行,并且尽可能恢复失效驱动,其主要包括失效检测器和恢复管理器两个部分。
10.如权利要求9所述内核驱动隔离系统,其特征在于:所述失效检测器负责检测被隔离设备驱动程序是否失效,由嵌入到内核态驱动隔离系统其他模块中的各个失效检测点组成;所述恢复管理器负责把操作系统恢复到一个可用的正确状态,并恢复失效的驱动程序。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2013101632061A CN103279367A (zh) | 2013-05-07 | 2013-05-07 | 一种内核驱动隔离系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2013101632061A CN103279367A (zh) | 2013-05-07 | 2013-05-07 | 一种内核驱动隔离系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN103279367A true CN103279367A (zh) | 2013-09-04 |
Family
ID=49061906
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2013101632061A Pending CN103279367A (zh) | 2013-05-07 | 2013-05-07 | 一种内核驱动隔离系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103279367A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103995759A (zh) * | 2014-05-21 | 2014-08-20 | 中国人民解放军国防科学技术大学 | 基于核内外协同的高可用计算机系统故障处理方法及装置 |
CN108579093A (zh) * | 2018-05-10 | 2018-09-28 | 腾讯科技(上海)有限公司 | 目标进程的运行保护方法、装置及可读介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102194080A (zh) * | 2011-06-13 | 2011-09-21 | 西安交通大学 | 一种基于内核虚拟机的rootkit检测机制及检测方法 |
CN102938035A (zh) * | 2012-11-08 | 2013-02-20 | 西安交通大学 | 一种在虚拟机内部的驱动隔离系统与方法 |
-
2013
- 2013-05-07 CN CN2013101632061A patent/CN103279367A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102194080A (zh) * | 2011-06-13 | 2011-09-21 | 西安交通大学 | 一种基于内核虚拟机的rootkit检测机制及检测方法 |
CN102938035A (zh) * | 2012-11-08 | 2013-02-20 | 西安交通大学 | 一种在虚拟机内部的驱动隔离系统与方法 |
Non-Patent Citations (1)
Title |
---|
吴楠等: "面向高可用计算机的驱动隔离系统设计与实现", 《计算机工程与设计》 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103995759A (zh) * | 2014-05-21 | 2014-08-20 | 中国人民解放军国防科学技术大学 | 基于核内外协同的高可用计算机系统故障处理方法及装置 |
CN108579093A (zh) * | 2018-05-10 | 2018-09-28 | 腾讯科技(上海)有限公司 | 目标进程的运行保护方法、装置及可读介质 |
CN108579093B (zh) * | 2018-05-10 | 2023-11-03 | 腾讯科技(上海)有限公司 | 目标进程的运行保护方法、装置及可读介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100426238C (zh) | Vex-虚拟扩展框架 | |
US10394621B1 (en) | Method and computer readable medium for providing checkpointing to windows application groups | |
Sherry et al. | Rollback-recovery for middleboxes | |
US9563452B2 (en) | Cloud-enabled, distributed and high-availability system with virtual machine checkpointing | |
CN103493021B (zh) | 用于故障监视和修复的方法和系统 | |
US9870248B2 (en) | Page table based dirty page tracking | |
CN109558211A (zh) | 保护可信应用与普通应用的交互完整性和保密性的方法 | |
JP5203967B2 (ja) | メモリ障害を処理するために、センサーネットワークで使用可能な方法及びシステム | |
Herder et al. | Construction of a highly dependable operating system | |
US8656217B2 (en) | Method for error detection during execution of a real-time operating system | |
CN104915263B (zh) | 基于容器技术的进程故障处理方法及装置 | |
CN101071387B (zh) | 一种基于虚拟机的驱动程序加固方法 | |
CN102096786A (zh) | 基于硬件虚拟化的跨平台安全保护系统 | |
CN100465899C (zh) | 基于虚拟内核对象的Linux程序检查点用户级实现方法 | |
US8752049B1 (en) | Method and computer readable medium for providing checkpointing to windows application groups | |
CN103064770B (zh) | 双进程冗余瞬时故障容错方法 | |
CN103064784A (zh) | 面向Xen环境的运行时内存泄漏检测方法及其实现系统 | |
Tan et al. | Tinychecker: Transparent protection of vms against hypervisor failures with nested virtualization | |
CN105144113A (zh) | 从快照恢复应用 | |
CN103593189A (zh) | 一种嵌入式Linux下用户态驱动程序的实现方法 | |
CN106873990A (zh) | 嵌入式系统ram损坏模式下的多分区引导方法 | |
CN106096455A (zh) | 一种主机内核数据还原保护方法 | |
CN104246693A (zh) | 用于保护调用栈中的数据的信息处理装置和方法 | |
US9798867B2 (en) | Techniques for virtualization as interprocess communication, synchronization and code obfuscation | |
CN103279367A (zh) | 一种内核驱动隔离系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20130904 |