[comp.os.research] An Overview of the SOS Project

shapiro@blueberry.inria.fr (Marc Shapiro) (03/02/88)

\documentstyle{article}
\title{An Overview of SOS}
%% A short presentation of the SOS operating system, in latex source.
%%
%% I had to mung this a little to make it go through LaTeX.  Apologies to
%% Marc if it's not as he intended.  --DL
%%

\author{Marc Shapiro\\
        INRIA, BP 105, 78153, Le Chesnay Cedex, France\\
        tel. +33 (1) 39-63-53-25\\
        e-mail: shapiro@inria.inria.fr
        }

\begin{document}
The SOR project\footnote{
        SOR stands for {\em Syst\`{e}mes \`{a} Objets
        R\'{e}partis}, or Distributed Object-Oriented Systems.
        }
structures the computational universe into non-interfering
``domains''.  An application typically creates its own domain.
Communication within a domain is unrestricted, but communication
between domains is possible only via a protected ``proxy'' object,
which is programmer-defined.  The project has implemented a prototype
operating system called SOS, based on these ideas.  The current
prototype is layered on top of Unix, but a bare-machine version is in
preparation.

\section{Presentation of the SOS system}

SOS is a subtask of the Esprit Project 367, ``Secure Open Multimedia
Integrated Workstation'' (SOMIW).\footnote{
    The other partners in SOMIW are: Bull-Transac (France, Main
    Contractor), Sarin, Italtel Telematica and CSELT (Italy), Sobemap
    and CEN-SCK (Belgium), AEG Telefunken (Federal Republic of
    Germany), and INESC (Portugal).}
The goal of SOMIW is to construct an office workstation for
manipulating, transporting, and using multimedia documents, i.~e.\
which contain text, graphics, voice, moving images, etc.  The SOS
(SOMIW Operating System) task is to design and implement a novel
operating system based on the ``object-oriented'' approach
\cite{sos:loo86,sos:sigops86,sos:tsi87}.  SOS is a distributed
general-purpose OS, strongly influenced in its design by the needs of
office automation.

\subsection{SOS Functionality}

SOS is an {\em object-oriented} system.  An object is passive, and is
composed of data (its state) and code (the procedures which allow to
act upon it).  Users may define their own object types, which have the
same status as the system-defined types.  User types may inherit from,
or override, the behavior of system-defined types.  Furthermore, SOS
allows the programmer to recursively encapsulate a set of objects
(possibly distributed across the net) into a new black box, within
which constituent parts are indistinguishible.

The SOS universe is not flat, but structured into autonomous
``domains'' \cite{sos:arch}.  This design allows a designers to view
heterogeneous entities such as administrative domains, name spaces, or
machines in a uniform way.  Communication within a domain is free, and
is controlled between domains.

The two elementary forms of a domain are called the context and the
group.  A context is a space of elementary objects (each with data and
compiled procedures); a client accesses a resource by invoking
(calling locally) the object implementing it.  Related objects of
different contexts form a group, which is itself an object.  Objects
in a group typically co-operate via cross-context invocations, shared
memory, shared files, or application-specific protocols.

A client gains access to a remote resource by acquiring a ``proxy'',
i.e.~an object of the resource's group, and the client's own private
server \cite{ProxyPrinciple}.  The proxy is built at run-time by the
resource specifically for that client.  The proxy is a trapdoor
allowing controlled communication between two domains: the client's
context and the resource's group.  The implementation of the resource
is hidden behind the proxy's interface.  Any access to the resource is
by local invocation of the proxy.  The proxy is the sole interface
between the client and the resource.  Therefore the client has no
access to the internals of the resource: issues of distribution, data
representation, or communication protocol are hidden from the client.

An object can be stored on disk, declared in a directory, instantiated
anywhere, or migrated from one location to another.

The system is implemented in the C++ language.  Its implementation
makes extensive use of the object-oriented approach.  One of our
results is a clean separation between mechanisms, which are
implemented by the system, and policies, which are implemented by
objects which use the existing mechanisms.  A programmer may easily
re-use an existing policy by deriving her object classes from the
pre-defined ones.  Hence the programmer has easy, transparent access
to system functionalities, with minimal modifiations of the C++
language \cite{sos:arch}.
 
The system works (we are now finishing Version 3 of the prototype) and
is in use by our SOMIW partners.
 
 
\subsection{Timetable}

The project started officially in January 1985.  The SOS task starting
getting off the ground the same September.  With our partners in
SOMIW, we have defined the following timetable:

\begin{itemize}
\item
        {\em 1986:}
        A prototype of the main constituents of SOS on top of Unix.
        This includes: multiplexing a process within a number of
        tasks; inter-task communication via ``cross invocation'';
        remote communication (using sockets); a per-process and
        per-machine object manager; searching for, importing an
        object, and dynamically linking its code.
        This excludes interface verification and exceptions.
\item
        {\em 1987:}
        An advanced version of the prototype on Unix is delivered to
        the partners.
        This version includes an Object Storage Service, and
        application-specific Protocol Objects.
\item
        {\em 1988:}
        Integration of SOS with the partner's
        developments (e.g. the User Interface Manager of INESC, and the
        document database of SARIN).
        The project concludes with a distributed, multimedia, co-operative
        demonstration.
\end{itemize}
In addition, we have started the design and implementation of a
bare-machine kernel (in collaboration with Chorus-Syst\`{e}mes).  This
theme will be expanded in 1988, as well as work on
application-specific protocols and co-operative applications.

\begin{thebibliography}{1}
 
\bibitem{sos:cs}
Mesaac Makpangou and Marc Shapiro.
\newblock The {SOS} object-oriented {C}ommunication {S}ervice.
\newblock 1988.
\newblock Submitted for publication.
 
\bibitem{sos:arch}
Marc Shapiro.
\newblock The design of a distributed object-oriented operating system.
\newblock 1988.
\newblock Submitted for publication.
 
\bibitem{sos:sigops86}
Marc Shapiro.
\newblock {SOS}: a distributed object-oriented operating system.
\newblock In {\it 2nd {ACM SIGOPS} European Workshop, on ``Making Distributed
  Systems Work{''}}, Amsterdam (the Netherlands), September 1986.
\newblock (Position paper).
 
\bibitem{ProxyPrinciple}
Marc Shapiro.
\newblock Structure and encapsulation in distributed systems: the {P}roxy
  {P}rinciple.
\newblock In {\it Proc.\ 6th Intl.\ Conf.\ on Distributed Computing Systems},
  pages~198--204, {IEEE}, Cambridge, Mass. ({USA}), May 1986.
 
\bibitem{sos:tsi87}
Marc Shapiro, Vadim Abrossimov, Philippe Gautron, Sabine Habert, and
  Mesaac~Mounchili Makpangou.
\newblock {SOS}~: un syst\`{e}me d'exploitation r\'{e}parti bas\'{e} sur les
  objets.
\newblock {\it Techniques et Sciences Informatiques}, 6(2):166--169, 1987.
 
\bibitem{sos:loo86}
Marc Shapiro and Sabine Habert.
\newblock Un syst\`eme d'exploitation orient\'e objets pour {SOMIW}.
\newblock In {\it 3\`emes Journ\'ees d'\'Etude Langages Orient\'es Objet},
  {AFCET}, Paris ({France}), January 1986.
 
\end{thebibliography}
\end{document}