From: Muench, Joanna (jmuench_at_fhcrc.org)
Date: Wed Feb 04 2004 - 14:23:00 PST
In their paper on the Emerald system, Jul et al. (1988) present a language
and system to support object-oriented distributed programs. They motivate
the work as a step towards finer-grained mobility of process migration,
moving individual objects rather than entire address spaces. As a measure of
success, they compare local performance with standard procedural languages
and remote performance with standard RPC systems.
On the surface, Emerald is a single-object model with only a single object
definition mechanism. However under the covers the compiler analyzes each
object and generates an appropriate implementation. These implementations
are global, local and direct objects, used for moveable, contained and
primitive-like objects, respectively. The language uses
call-by-object-reference parameter-passing semantics. While the programmer
can allow the compiler to determine what objects should be moved to the site
of a remote invocation, the language also supports call-by-move, allowing
the programmer to request an object be moved, based on knowledge about the
application.
Implementation of Emerald required solutions for many of the issues common
to distributed systems. The system required a scheme allowing objects to be
found, in this case using an address-forwarding scheme backed up by a
broadcast protocol, presumably in case one component of the system fails.
The marshalling of objects depends on the type of object, and requires some
careful analysis of activation records. The system uses templates to
describe object data areas. These both help the system figure out what
object pieces are pointers or data, and also help with garbage collection.
At a glance, the performance of the system appears reasonable, although true
performance is hard to judge without a system under use. The design decision
to favor quicker local calls over remote is reflected in the performance
measures. Unfortunately the authors don't mention how difficult the system
is to develop for or maintain.
I found the paper compelling from an intellectual standpoint, simply because
the initial concept seemed so improbable. The authors managed to devise a
system that appears easy to use, with its complex (yet elegant) mobility
mechanisms neatly handled below the surface. Unfortunately I was left with
the nagging question of where a system like Emerald could be useful. It
certainly isn't a general-purpose OS, given its requirements for homogeneity
in language. And with modern processor speeds, I'm not certain that such a
fine-grained mobility mechanism is especially useful. The paper does present
some unique solutions to standard distributed systems issues.
This archive was generated by hypermail 2.1.6 : Wed Feb 04 2004 - 14:24:32 PST