Device drivers are a major source of complexity, unreliability, and cost for modern operating systems. The objective of this NSF CAREER research project is to improve device drivers by (1) reducing the complexity and cost of implementing device drivers, (2) improving the fault tolerance of device drivers, and (3) improving the performance of device drivers on modern hardware and software architectures.
Given the large body of existing drivers, this research seeks to develop systems and tools that improve legacy driver code for simplicity and fault tolerance. First, it is creating tools that simplify driver development by factoring drivers into a performance sensitive but small portion that executes in the kernel and a large portion that executes in user mode. Second, it develops tools that automatically improve driver tolerance of device failures by identifying code that depends on correct device behavior and then inserting failure detection and recovery code.
While legacy code is important, recent technologies open the path for new driver architectures. Many-core processors, virtual machines monitors, and languages for concurrent systems programming all change the platform upon which drivers execute. This research seeks to improve performance on virtualized many-core processors by developing a new driver architecture that removes the guest OS kernel from the I/O path.
The educational focus of the project is to augment today's systems curricula with a modern, hands-on systems programming component, to improve outreach through successful transfer programs, and to enhance the skills of students in technical communication.