SOS: An Object-Oriented Operating System - Assessment and Perspectives

SOS (SOMIW Operating System) is the result of a four-year effort at INRIA to define an object-oriented operating system. SOS provides support for arbitrary, user-defrned, typed objects. The system implements object migration; this mechanism is generic, but can be tailored to specific object semantics thanks to the prerequisite and upcall concepts. SOS also supports Fragmented Objects (FOs), i.e. objects the representation of which spreads across multiple address spaces. Fragments of a single FO are objects that enjoy mutual communication privileges. A fragment acts as a proxy, i.e. a local interface to the FO. All the other mechanisms of SOS are built upon these basic abstractions. Thanks to prerequisites, migration of data may cause the migration and dynamic type-checking and linking of the corresponding code. A distributed object manager, an object storage service, a naming service, as well as a protocol toolbox and some applications, have been built as FOs. This paper gives a detailed account of the architecture and design decisions of the SOS prototype on UNIX. ruy'e examine both good decisions and problems. The basic good decision is our simple object model, and its ability to map user-defrned semantics (policy decisions) on system-implemented mechanisms. The most important problem is the dynamic nature of Fragmented Objects, and inadequate support for them.

[1]  David R. Cheriton The V Kernel: A Software Base for Distributed Systems , 1984, IEEE Software.

[2]  Marc Shapiro,et al.  Structure and Encapsulation in Distributed Systems: The Proxy Principle , 1986, ICDCS.

[3]  L. F. Cabrera,et al.  QuickSilver distributed file services: an architecture for horizontal growth , 1988, [1988] Proceedings. 2nd IEEE Conference on Computer Workstations.

[4]  Massac Makpangou,et al.  Protocoles de communication et programmation par objets : l'exemple de sos , 1989 .

[5]  Roy H. Campbell,et al.  Principles of Object-Oriented Operating System Design , 1989 .

[6]  David R. Cheriton,et al.  Decentralizing a global naming service for improved performance and fault tolerance , 1989, TOCS.

[7]  Bjarne Stroustrup,et al.  C++ Programming Language , 1986, IEEE Softw..

[8]  Marc Shapiro,et al.  Two Extensions to C++: A Dynamic Link Editor and Inner Data , 1987, C++ Workshop.

[9]  Alfred Z. Spector,et al.  Performing remote operations efficiently on a local computer network , 1981, SOSP.

[10]  Richard P. Gabriel The common LISP object system , 1989 .

[11]  Jo-Mei Chang,et al.  Reliable broadcast protocols , 1984, TOCS.

[12]  Andrew Birrell,et al.  Implementing remote procedure calls , 1984, TOCS.

[13]  Bjarne Stroustrup,et al.  A set of c++ classes for co-routine style programming , 1987 .

[14]  Bertrand Meyer,et al.  Reusability: The Case for Object-Oriented Design , 1987, IEEE Software.

[15]  Jeffrey S. Chase,et al.  The Amber system: parallel programming on a network of multiprocessors , 1989, SOSP '89.

[16]  Marc Shapiro,et al.  Prototyping a distributed object-oriented OS on Unix , 1989 .

[17]  Marc Shapiro,et al.  Persistence and Migration for C++ Objects , 1989, ECOOP.

[18]  David Robson,et al.  Smalltalk-80: The Language and Its Implementation , 1983 .

[19]  Mesaac Makpangou,et al.  The SOS object-oriented communication service , 1988, ICCC.

[20]  Andrew P. Black,et al.  Fine-grained mobility in the Emerald system , 1987, TOCS.

[21]  Michel Banâtre,et al.  An overview of the gothic distributed operating system , 1986 .

[22]  Andrew S. Tanenbaum,et al.  The Design of a Capability-Based Distributed Operating System , 1986, Comput. J..