Designing and implementingChoices

Roy H. Campbell, Nayeem Islam, David K. Raila, Peter W. Madany · Communications of the ACM · 1993

CHOICES" AN OBJECT-ORIENTED SYSTEM IN C ++ e describe our experiences in constructing Choices and a design methodology that extends existing design approaches by explicidy encouraging specialization, as well as design and code reuse.Although many operating system techniques and designs are well documented, few object-oriented operating systems exist and have been described.SOS [23], CHORUS [18], and Apertos [26] are other examples of object-oriented operating systems.None of the descriptions of the design of these operating systems provide a methodology for design reuse or describe how the design methodology may be used in conjunction with prototyping.We believe it would be possible to extend our methodology to the design of any of these operating systems.Despite the large number of previous studies and implementations of operating system techniques, there were few guidelines to follow in our project to build Choices.Instead, we developed our own methodolgy as the project progressed, adopting many useful ideas from the objectoriented programming and software engineering research communities.We made extensive use of prototyping to guide our efforts, and this approach influenced our concerns for reusing designs.This article is written with the hindsight of building and porting Choices to a variety of different hardware platforms.Finally, we discuss the run-time facilities we built to augment the C ++ language in order to better support the construction of an objectoriented operating system.These facilities provide garbage collection, first-class classes, dynamically loadable code, and object-oriented debugging.Existing commercial operating systems provide limited support for software reuse and customized system support for applications.For example, few systems support multiple architectural models for parallelism, messagepassing systems, or distributed programming environments.Therefore many programs, including parallel and distributed applications, cannot easily be ported to different machines without substantial modification.An object-oriented operating system encourages reuse by including mechanisms and support for inheritance and specialization.This approach supplements the microkernel, client/ server operating system organizations used in systems such as Mach [17], V System [6], and Amoeba [25] to introduce more flexibility for application support.Inheritance encourages the reduction of the implementation of different system services to a small number of classes that can be specialized and combined to achieve a desired result.Choices [5] is an object-oriented operating system that we built using an object-oriented language (C++ [241).Objects are used to model both the hardware interface, the application interface, and all operating system concepts including system resources, mechanisms, and policies.Choices supports an object-oriented application interface based on objects, inheritance, and polymorphism.The application interface is defined by method invocations from objects in user space to objects in kernel space.In user space, a kernel object is represented by an ObjectProxy [19].The objects in Choices are organized within a class inheritance hierarchy.The classes are modeled as objects at run time and may be used to browse or examine the contents of an actual Choices operating ¢OMMUHICATiOliSOFTH|A¢I~

Read the paper · More papers on PaperTik