A Process Oriented Approach to USB Driver Development

Operating-systems are the core software component of many modern com- puter systems, ranging from small specialised embedded systems through to large dis- tributed operating-systems. The demands placed upon these systems are increasingly complex, in particular the need to handle concurrency: to exploit increasingly parallel (multi-core) hardware; support increasing numbers of user and system processes; and to take advantage of increasingly distributed and decentralised systems. The languages and designs that existing operating-systems employ provide little support for concur- rency, leading to unmanageable programming complexities and ultimately errors in the resulting systems; hard to detect, hard to remove, and almost impossible to prove correct. Implemented in occam-π, a CSP derived language that provides guarantees of free- dom from race-hazards and aliasing error, the RMoX operating-system represents a novel approach to operating-systems, utilising concurrency at all levels to simplify de- sign and implementation. This paper presents the USB (universal serial bus) device- driver infrastructure used in the RMoX system, demonstrating that a highly concurrent process-orientated approach to device-driver design and implementation is feasible, efficient and results in systems that are reliable, secure an d scalable.