Font Size: a A A

Understanding and Improving Device Access Complexity

Posted on:2014-12-05Degree:Ph.DType:Dissertation
University:The University of Wisconsin - MadisonCandidate:Kadav, AsimFull Text:PDF
GTID:1458390005987601Subject:Computer Science
Abstract/Summary:
Peripheral devices extend the functionality of computers and make them more interesting to use. However, their tremendous growth and evolution over the years has led to significant hardware and software complexity. Hardware complexity makes the OS unreliable and slows OS operations that require re-loading drivers like reboot and failure recovery. Software complexity limits our ability to improve device access code and understand future research directions. Furthermore, little is known the breadth of the driver code and how it applies to modern research.;In this dissertation, I address the challenges arising out of device and OS complexity. First, I present the first research consideration of peripheral device failures. I describe Carburizer, a code-rewriting tool and associated runtime that handles the problems arising due to device failures and automatically recovers using restart/replay. I then demonstrate the broad implications of these recovery techniques in modern drivers by performing a survey of device drivers. The goal of this study is to understand existing research in the context of the reality of drivers and to find new opportunities for future driver research. Finally, I describe how driver recovery can be improved by introducing a novel checkpoint/restore mechanism for drivers.;Carburizer identified 992 bugs in Linux drivers where the system can crash if peripheral devices misbehave. With the aid of shadow drivers for recovery, Carburizer can automatically repair 840 of these bugs with no programmer involvement. My study on drivers identified several new implications for driver research and driver design. For example, I find that common assumptions about driver research, such as that drivers belong to a class and perform little processing, are generally but not always true. Hence, existing driver research may leave a long tail of unsupported devices. Finally, to improve recovery, I introduce fast checkpoint support in device drivers, averaging only 20 microseconds. Using device checkpoints, I demonstrate that a new functionality, transactional execution of device drivers is made possible.
Keywords/Search Tags:Device, Drivers, Complexity
Related items