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}