Dynamic Binding for an Extensible System

Przemyslaw Pardyak & Brian N. Bershad
Department of Computer Science and Engineering,University of Washington
E-mail: {pardy,bershad}@cs.washington.edu
In the Proceedings of the Second USENIX Symposium on Operating Systems Design and Implementation (OSDI), 1996.


An extensible system requires a means to dynamically bind extensions into executing code. SPIN extensible operating system uses an event-based invocation mechanism to provide this functionality in a flexible, transparent, safe, and efficient way. Events offer a uniform model of extensibility, whereby the system's configuration can change without changing any of its components. Events are defined with the granularity and syntax of procedures but provide extended procedure call semantics such as conditional execution, multicast, and asynchrony. By installing a handler on an event, an extension's code can execute in response to activities at the granularity of procedure call. Our system uses runtime code generation to ensure that event delivery has low overhead and scales well with the number of handlers. This paper describes the design, use and performance of events in the SPIN operating system.