SOS : The SOMIW object-oriented Operating System
Désolé, il n'y a pas de version française !
This is a brief description of the SOS distributed operating
system. SOS was developed by the SOR group at INRIA. The most
interesting research results of SOS include a simple, generic,
powerful object model, and the concept of Fragmented Objects to
structure distributed abstractions. In addition, SOS developed a
flexible naming service, a dynamic linking package, and a library of
application oriented communication protocols.
Overview
The object model
The SOS system support object creation, deletion, remote
invocation, migration, and long-term storage. It also provides for
grouping of "elementary" objects into distributed groups called
Fragmented Objects (FOs; see below).
An SOS object is any region of memory declared to the system as
being an object. The system allocates a descriptor for the object,
containing (among other things) a list of prerequisites and
an upcall table. The upcall table is a list of methods which
can be called by SOS in certain circumstances. For instance, when a
client asks to access a FO, the system upcalls a corresponding
giveProxy method, allowing it to allocate a proxy for
migration. Similarly, after an object is migrated, SOS calls its
reinitialize method, allowing it (for example) to fix its
pointers or import more objects.
A prerequisite of some object is another object Y which X needs in
its environment. When X is migrated into some address space, SOS will
(recursively) import its missing prerequisite into the same space.
Taken together, the prerequisite and the upcall mechanism allow
language environments or applications to tailor the object model to
their needs. For instance, we developed a C++ environment. A typical
data object has two prerequisites: a type prerequisite, a code
prerequisite. The latter takes care of reading and writing its
long-term representation. The type object carries its type
information, and the code object contains the compiled code of its
methods. When an object is imported, the type object's
reinitialize does a dynamic type-check, and the code
object's reinitialize does a dynamic link. The code
object in turn has at least one prerequisite (the dynamic linker); if
it represents a derived class it will also have as prerequisites the
code objects for the superclasses. Furthermore, a persistent object
has a storage prerequisite which makes sure the representation is
up-to-date.
Fragmented Objects
In object-oriented programming, the interfaces of different
components can be encapsulated by abstract types. While there are
several object oriented programming languages which can be used to
defined these abstract types (e.g. C++), too few tools address the
problem of structuring distributed applications. Usually a distributed
application is made of a set of cooperative objects located in
different address spaces. For different reasons, these objects
sometimes need to communicate with one another, without the
interference from other objects.
Fragmented Objects (FOs) is a model which allows to structure and
interface cleanly the distributed components of such applications.
The FO concept provides two different levels of abstraction:
distribution of fragments is hidden to the FO's clients, whereas
distribution us under the control of the implementor. This two-level
transparency approach fits well to the respective needs of both
implementors and users of distributed applications.
The SOR group has developed a specific language, FOG,
to ease structuring distributed applications as fragmented
objects. The SOR group has developed a FOG pre-compiler for
C++. Other pre-compilers can be considered as well.
Publications about SOS
- Fragmented Objects for
Distributed Abstractions. Mesaac Makpangou, Yvon Gourhant,
Jean-Pierre Le Narzul and Marc Shapiro. Readings in Distributed
Computing Systems, IEEE Computer Society Press. Jul 1994.
- Composition of Name Spaces. Jean-Pierre Le Narzul. IEEE
Distributed Processing Technical Committee Newsletter, Special Issue
on Naming Facilities in Internet Environments and and Distributed
Systems. Jun 1992.
- Fragmented Objects: a Building Block for Distributed
Object-Support Operating Systems. Mesaac Makpangou and Yvon
Gourhant. Newsletter of the Computer Society Technical Committee on
Operating Systems and Application Environments. IEEE
publication. 1991.
- Outils pour la Programmation d'Objets Fragmentés. Yvon
Gourhant. PhD Thesis, Université Paris VI. Jun 1991.
- Structuring Distributed
Applications as Fragmented Objects. Mesaac Makpangou, Yvon
Gourhant, Jean-Pierre Le Narzul, and Marc Shapiro. Technical Report,
INRIA Rocquencourt. Jan 1991.
- Fragmented Object: a Building Block for Distributed
Object-Support Operating Systems. Mesaac Makpangou and Yvon
Gourhant. In proceedings of the Workshop on Operating Systems and
Object Orientation at ECOOP/OOPSLA 1990. Oct 1990.
- Un Bilan du Système Réparti à objets SOS. Marc Shapiro,
Yvon Gourhant, Sabine Habert, Jean-Pierre Le Narzul, Laurence Mosseri,
Michel Ruffin and Céline Valot. Technical Report, INRIA
Rocquencourt. May 1990.
- FOG/C++ : a
Fragmented-Object Generator. Yvon Gourhant and Marc
Shapiro. In proceedings of the Usenix C++ conference. Apr 1990.
- SOS : An
Object-Oriented Operating System - Assessment and
Perspectives. Marc Shapiro, Yvon Gourhant, Sabine Habert,
Laurence Mosseri, Michel Ruffin and Céline Valot. Computing
systems. Dec 1989.
- Gestion d'objets et migration dans les systèmes
répartis. Sabine Habert. PhD Thesis, Université Paris VI. Dec
1989.
- Prototyping a distributed object-oriented OS on Unix. Marc
Shapiro. In Proceedings of the Workshop on Experiences with Building
Distributed and Multiprocessor Systems. Oct 1989.
- Persistence and
Migration for C++ Objects. Marc Shapiro, Philippe Gautron and
Laurence Mosseri. In ECOOP'89, Proc. of the Third European Conf. on
Object-Oriented Programming. Jul 1989.
- Un Service de Nommage pour un Système à Objets
Répartis. Jean-Pierre Le Narzul and Marc Shapiro. In Actes
Convention Unix 89.
- Protocoles de communication et programmation par objets :
l'exemple de SOS. Mesaac Makpangou. PhD Thesis, Université
Paris VI. Feb 1989.
- A simple object storage system. Marc Shapiro and Laurence
Mosseri. In Proceedings of the Workshop on persistent object systems,
Newcastle NSW (Australia). Jan 1989.
- The Design of a Distributed Object-Oriented Operating System
for Office Applications. Marc Shapiro. In Proceedings of the
Esprit Technical Week 1988. Nov 1988.
- The SOS Object-Oriented Communication Service. Mesaac
Makpangou and Marc Shapiro. In Proceedings of the 9th International
Conference on Computer Communication, Tel Aviv (Israël). Oct-nov
1988.
- Invocations d'objets distants dans SOS. Mesaac
Makpangou. "De Nouvelles Architectures pour les Communications", Guy
Pujolle editor (Paris, France). Pages 195-201. Oct 1988.
- Two extensions to C++: A Dynamic Link Editor and Inner
data. Philippe Gautron and Marc Shapiro. In Proceeding and
additional papers, C++ Workshop, USENIX, Berkeley, CA (USA). Nov
1987.
- Structure and Encapsulation in Distributed Systems:
the Proxy Principle. Marc Shapiro. In Proceedings of the ICDCS'86
conference. May 1996.
For more informations about SOS, please contact
Marc Shapiro.
Last modified: Wed Mar 11 11:10:23 MET 1998
Aline Baggio