Process-oriented device driver development


  • Revised version of Ritson CG, Barnes FRM. A Process Oriented Approach to USB Driver Development. In McEwan AA, Schneider S, Ifill W, Welch PH (eds). Communicating Process Architectures 2007. IOS Press: Amsterdam. Published with permission from IOS Press.

    This article was published online on 8 May 2009. An error was subsequently identified. This notice is included in the online and print versions to indicate that both have been corrected [18 June 2009].


Operating systems (OSs) are the core software component of many modern computer systems, ranging from small specialized embedded systems through to large distributed OSs. The demands placed upon these systems are increasingly complex, in particular, the need to handle concurrency in order to exploit increasingly parallel (multi-core) hardware, to support increasing numbers of user and system processes and to take advantage of increasingly distributed and decentralized systems. The languages and designs that existing OSs employ provide little support for concurrency, leading to unmanageable programming complexities and ultimately errors in the resulting systems, which are hard to detect, hard to remove and hard to prove correct. This article presents the process-oriented design of a universal serial bus device driver infrastructure for the Raw Metal occam eXperiment (RMoX) OS and its implementation in the occam-pi multiprocessing language. We show how concurrency can be used for the benefit of such systems, simplifying design and implementation, providing freedom from race-hazard and aliasing errors and the potential for guarantees of operating system scalability, reliability and efficiency. Copyright © 2007 F.R.M. Barnes & C.G. Ritson. [Correction made here after initial online publication]