Inheritance in Unlikely Places: Using Objects to Build Derived Implementations on Flat Interfaces

  • Michael B. Jones

MSR-TR-93-05 |

Traditional operating systems typically provide a number of flat, non-object oriented interfaces through which system services are provided to applications. Two such examples are the UNIX (1) system call interface and the X Window System (2) protocol. Typically such services are provided by large, monolithic implementations, with no provision for deriving related implementations through inheritance or other means. Nonetheless, it is possible to provide flexible, object oriented views of otherwise flat, non-object oriented interfaces. Furthermore, these views can be used to build new implementations of these same flat interfaces in terms of othe r ones. This approach can bring the benefits of objects such as enhanced and/or application specific implementations of standard services to both building and using otherwise fixed, flat interfaces which for one reason or another cannot be changed. My recent thesis work has taken this approach; other seemingly unrelated systems also use this paradigm. This paper presents this paradigm and some of the benefits derived from it, citing several real systems as examples.