Review: "Fine-Grained Mobility in the Emerald System"

From: Sellakumaran (ksella_at_hotmail.com)
Date: Wed Feb 04 2004 - 22:46:29 PST


This paper describes Emerald, an object based language and system designed
for the construction of distributed programs. Emerald was implemented on a
small network of VAX computers. This paper discusses the benefits of
fine-grained mobility, Emerald language, techniques used and the performance
measurements.

 

Object mobility is the primary aim of Emerald and the objects include both
processes and data.

Emerald includes two kinds of object definition mechanisms: small, local
data objects and large active objects; another aim is that these should not
be visible to the programmer. Hence in Emerald, programmers use a single
object definition mechanism for both implementations and the compiler
decides which implementation to use.

 

Each Emerald object has four components:

a) a unique network-wide name

b) primitive data and references to other objects

c) a set of operations that can be invoked on the object

d) an optional process.

Object with process are active and without process are passive data
structures. In Emerald, code is stored in concrete type object and what
this means is that the code is not transferred to other nodes in a move;
only data is moved. Since concrete type objects are immutable, they are
freely copied/replicated on all nodes.

Emerald supports the following primitives for mobility: Locate, Move, Fix,
Unfix, Refix. Objects could be having references to other objects and
Emerald allows programmers to explicitly specify which objects move together
(attached variable). Emerald used call-by object-reference for argument
passing, but it also provides call-by-move parameter-passing mode.

An Emerald process is a thread of control that is initiated when an object
with a process is created. A process can invoke operations on its object or
on any object that it can reference. Process is thought of a stack of
activation records. In Emerald when an remote invocation occurs, the new
activation record moves to the destination node to become the base of a new
segment of the process stack on that node. Adding process mobility will be
difficult considering that the state of the process may be distributed in a
number of OS data structures. In distributed object-based system, this is
simplified. Since all resources are objects, addressing is standardized and
location independent. All objects are addressed indirectly using an object
ID.

The Emerald system is implemented by exploiting shared memory. Emerald is
contained in a single address space.

 

It was interesting to read about the problem of deciding how much to move,
forwarding addresses, garbage collection and many other concepts/ideas in
the paper. For me it was a very whole new way to look at distributed
programs.

 

 

 



This archive was generated by hypermail 2.1.6 : Wed Feb 04 2004 - 22:46:28 PST