首页> 外文OA文献 >On the construction of reliable device drivers
【2h】

On the construction of reliable device drivers

机译:关于构建可靠的设备驱动程序

代理获取
本网站仅为用户提供外文OA文献查询和代理获取服务,本网站没有原文。下单后我们将采用程序或人工为您竭诚获取高质量的原文,但由于OA文献来源多样且变更频繁,仍可能出现获取不到、文献不完整或与标题不符等情况,如果获取不到我们将提供退款服务。请知悉。

摘要

This dissertation is dedicated to the problem of device driver reliability. Software defects in device drivers constitute the biggest source of failure in operating systems, causing significant damage through downtime and data loss. Previous research on driver reliability has concentrated on detecting and mitigating defects in existing drivers using static analysis or runtime isolation. In contrast, this dissertation presents an approach to reducing the number of defects through an improved device driver architecture and development process. In analysing factors that contribute to driver complexity and induce errors, I show that a large proportion of errors are due to two key shortcomings in the device-driver architecture enforced by current operating systems: poorly-defined communication protocols between drivers and the operating system, which confuse developers and lead to protocol violations, and a multithreaded model of computation, which leads to numerous race conditions and deadlocks. To address the first shortcoming, I propose to describe driver protocols using a formal, state-machine based, language, which avoids confusion and ambiguity and helps driver writers implement correct behaviour. The second issue is addressed by abandoning multithreading in drivers in favour of a more disciplined event-driven model of computation, which eliminates most concurrency-related faults. These improvements reduce the number of defects without radically changing the way drivers are developed. In order to further reduce the impact of human error on driver reliability, I propose to automate the driver development process by synthesising the implementation of a driver from the combination of three formal specifications: a device-class specification that describes common properties of a class of similar devices, a device specification that describes a concrete representative of the class, and an operating system interface specification that describes the communication protocol between the driver and the operating system. This approach allows those with the most appropriate skills and knowledge to develop specifications: device specifications are developed by device manufacturers, operating system specifications by the operating system designers. The device-class specification is the only one that requires understanding of both hardware and software-related issues. However writing such a specification is a one-off task that only needs to be completed once for a class of devices.This approach also facilitates the reuse of specifications: a single operating-system specification can be combined with many device specifications to synthesise drivers for multiple devices. Likewise, since device specifications are independent of any operating system, drivers for different systems can be synthesised from a single device specification. As a result, the likelihood of errors due to incorrect specifications is reduced because these specifications are shared by many drivers. I demonstrate that the proposed techniques can be incorporated into existing operating systems without sacrificing performance or functionality by presenting their implementation in Linux. This implementation allows drivers developed using these techniques to coexist with conventional Linux drivers, providing a gradual migration path to more reliable drivers.
机译:本文致力于解决设备驱动程序的可靠性问题。设备驱动程序中的软件缺陷是操作系统故障的最大根源,会因停机和数据丢失而造成重大损失。先前有关驱动程序可靠性的研究主要集中在使用静态分析或运行时隔离来检测和缓解现有驱动程序中的缺陷。相比之下,本文提出了一种通过改进的设备驱动器体系结构和开发过程来减少缺陷数量的方法。在分析导致驱动程序复杂性并导致错误的因素时,我发现大部分错误是由于当前操作系统实施的设备驱动程序体系结构中的两个关键缺陷所致:驱动程序与操作系统之间的通信协议定义不明确,这会使开发人员感到困惑,并导致违反协议,还有一个多线程计算模型,这会导致大量竞争情况和死锁。为了解决第一个缺点,我建议使用一种基于状态机的正式语言来描述驱动程序协议,这样可以避免混淆和模棱两可,并帮助驱动程序作者实现正确的行为。第二个问题是通过放弃驱动程序中的多线程,转而采用更为严格的事件驱动的计算模型,从而消除了大多数与并发相关的错误。这些改进减少了缺陷的数量,而没有从根本上改变驱动程序的开发方式。为了进一步减少人为错误对驱动程序可靠性的影响,我建议通过结合以下三个正式规范对驱动程序的实现进行综合,从而使驱动程序开发过程自动化:设备类规范,用于描述一类驱动程序的通用属性。类似的设备,描述类的具体代表的设备规范以及描述驱动程序与操作系统之间的通信协议的操作系统接口规范。这种方法允许具有最适当技能和知识的人员制定规范:设备规范由设备制造商制定,操作系统规范由操作系统设计者制定。设备级规范是唯一需要了解与硬件和软件相关的问题的规范。但是,编写这样的规范是一项一次性的任务,对于一类设备来说只需完成一次即可。这种方法还有助于规范的重用:单个操作系统规范可以与许多设备规范结合起来以综合用于多个设备。同样,由于设备规格独立于任何操作系统,因此可以从单个设备规格中综合用于不同系统的驱动程序。结果,由于许多驱动程序共享这些规范,因此降低了由于不正确的规范引起的错误的可能性。我演示了所提出的技术可以通过在Linux中展示其实现方式而并入现有操作系统,而不会牺牲性能或功能。此实现允许使用这些技术开发的驱动程序与常规Linux驱动程序共存,从而提供了向更可靠的驱动程序的逐步迁移路径。

著录项

相似文献

  • 外文文献
  • 中文文献
  • 专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号