Review: Jul et al., Fine-Grained Mobility in the Emerald System

From: Ian King (iking_at_killthewabbit.org)
Date: Wed Feb 04 2004 - 17:46:34 PST

  • Next message: Gail Rahn: "Review of Emerald Paper"

    This paper describes Emerald, an operating system and companion object-oriented
    programming language that implement mobility for programming objects among a
    loosely-coupled set of computers. Emerald was implemented on the VAX
    architecture with 10MB Ethernet links between nodes; the paper offers
    performance metrics comparing this configuration with uniprocessor
    implementations of benchmarks in comparable languages such as Euclid.

    Much of the overhead of distributing the implementation is done in the language
    compiler, and there are language constructs to support the distribution of
    objects. The authors note several useful distinctions, one of which is that
    between data objects and process objects; the compiler also draws a distinction,
    as far as it can tell, between local objects and remote objects. One
    particularly interesting implementation aspect is that the compiler will make a
    'best effort' with no structural knowledge, but can take advantage of varying
    degrees of programmer-generated structural knowledge. The programmer can choose
    to write completely "naive" code that knows nothing of the distributed system,
    or tuned code that specifies how the dstribution should be managed.

    By creating their own language, the authors sidestep one of the more difficult
    problems in distributed systems: hiding implementation details from application
    programmers. Systems that do not impose such restrictions as implicit in the
    language itself must rely either on very sophisticated language processors or
    extensions to the root languages that force programmers to manage the
    distribution mechanism explicitly. A particularly important distinction in
    Emerald, compared to many OO languages, ist that objects are first-class
    objects; the classes serve essentially as 'templates' for class construction.
    Notwithstanding that distinction, Emerald also provides for sharing of static
    code between objects of a given class - a useful optimization for the era of
    this paper, but arguably not as significant in these days of gigabyte physical
    memories.

    Although apparently not original in this paper, the call-by-move semantic is
    interesting, and it is somewhat intuitive that it significantly boosts the
    performance of the mail-handling benchmark cited in the paper. Emerald handles
    other calling protocols with intelligent optimization for the distributed
    environment. The paper clearly delineates the various mobility scenarios, for
    data objects and process objects, both quiescent and currently accessed/invoked.
    A large amount of attention is paid to garbage collection in the distributed
    environment, where reference counting might be problematic; some clever
    heuristics aid here, such as "if it's being moved, it's obviously in use." The
    authors also address efficiency in garbage collection - after all, it's the same
    processor that's running GC algorithms as is running user code. This is really
    the first explicit recognition of this issue I've read.


  • Next message: Gail Rahn: "Review of Emerald Paper"

    This archive was generated by hypermail 2.1.6 : Wed Feb 04 2004 - 17:52:13 PST