论文部分内容阅读
随着计算机技术的不断进步,人们设计了越来越多的硬件设备。这些硬件设备的出现为人们提供了便利和舒适的生活。然而由于市场竞争,硬件设备的研制周期越来越短,这导致设备驱动没有足够的时间进行测试,出现了严重的可靠性问题。设备驱动的可靠性问题给操作系统的稳定运行带来了巨大的隐患,不可靠的设备驱动会直接导致操作系统发生异常甚至崩溃。因此,设备驱动的可靠性问题成为了操作系统领域的研究热点。本文针对影响设备驱动可靠性的关键问题展开研究,主要研究设备驱动并发性错误问题、内核函数使用规则违反问题和硬件设备故障导致的设备驱动和硬件设备交互协议违反问题,主要工作与贡献如下:(1)提出了一种基于请求串行化的新型设备驱动架构SerialDriver。将对设备驱动的请求串行化是避免驱动运行时发生并发性错误行之有效的方法。SerialDriver架构解决了现有请求串行化方法需要重新编写设备驱动的问题,能够在保证高性能低开销的前提下避免并发性错误的发生。同时,SerialDriver架构可以被广泛应用于大多数操作系统中。(2)提出了一种内核函数使用规则检测模型KFUR。设备驱动中存在大量内核函数使用规则违反的情况,KFUR模型对内核函数使用规则进行刻画,并给出设备驱动违反内核函数使用规则的判断条件。基于KFUR模型的检测方法能够在运行时对设备驱动是否违反内核函数使用规则进行判断,并对违反使用规则的情况及时进行处理,避免操作系统出现异常或崩溃。(3)提出了一种基于有向图的污染变量跟踪模型Smelter。设备驱动在编写时没有考虑对硬件设备故障的容错,分析设备驱动代码并添加相应容错代码可以提高设备驱动的可靠性。Smelter可以对设备驱动代码进行精确分析,解决了现有分析方法不能很好的处理跨函数和复杂数据结构的问题,从而在编译时有效提高设备驱动对硬件设备故障的容错能力。(4)提出了一种基于驱动备份的错误恢复方法ISD。针对编译时方法无法彻底对硬件设备故障进行容错的问题,ISD使用备份驱动,将驱动在运行时的数据和状态进行备份。当发生硬件设备故障导致设备驱动出现异常时,ISD使用备份驱动替代原始驱动保证操作系统的稳定运行。