A Lightweight Distributed Object System

Peter A. Dinda

Systems Design and Implementation Seminar

Abstract

At the beginning of this decade, objects revolutionized the structure and design of highly interactive applications running on GUIs such as Microsoft Windows and the Macintosh. Today, it is widely believed that distributed objects will similarly revolutionize client-server systems in the latter half of the decade. Two commercial efforts, Microsoft's DCOM and OMG's CORBA, are contending to standardize this perceived market. Several academic research projects, such as Globus (I-WAY), Mentat, Legion, and ILU, are focusing on large scale distributed object systems for scientific applications.

Unlike these efforts, the focus of our distributed object research is on supporting highly interactive applications such as image editing, user-steered physical simulations, virtual reality, and games. Such applications, which we call world simulations, are characterized by significant computational requirements combined with an extremely tight control loop where the user's current action must generate a fast response because it feeds directly into determining her next action. It is clear that as the demand for realism in world simulations grows, computational demands will exceed the resources available in a single PC. We believe that world simulations of the future will be structured as groups of interacting distributed objects steered by the user.

We are designing and implementing LDOS, a Lightweight Distributed Object System, as an infrastructure for our research. We call LDOS "lightweight" for several reasons. First, it makes no attempt to achieve backward compatibility, either with a single proprietary system (DCOM), or with diverse open standards (CORBA). Second, LDOS makes no attempt to achieve language independence via an interface language, but rather is strongly tied to C++. Finally, it strongly leverages existing Internet technologies such as TCP/IP and DNS, common interfaces such as BSD-derived sockets, and the features of modern operating systems, such as threads, in implementing distributed object services that are interesting to us.

This talk will describe the design and implementation of the LDOS core services, the part of LDOS that the programmers of distributed classes see. The core services consist of several sets of classes. The first set consists of "wrappers" which distribute existing C++ objects and classes by adding mechanisms for remote method invocation via streams, and run-time interface queries. In addition, "mix-in" classes let the programmer enhance the functionality of their distributed objects and classes with threads, non-blocking method invocations with sequential semantics, futures, and network functionality. Finally, there are the classes of LDOS-specific objects and services such as run-time classes, object references, and object naming. The LDOS core services are being co-developed on a Win32 platform and Digital Unix in order to ensure portability. Several applications have been written using the implemented parts of LDOS, including a stock "metaquoter", and a rudimentary image editor.