Object mobility in a distributed object-oriented system

This dissertation studies the movement of objects both large and small within a locally distributed system. We propose that object mobility at a fine granularity can be a powerful tool for simplifying the construction of distributed applications. The unit of mobility in previous systems has typically been an address space. We propose using data of any size as the unit of mobility. Our study of fine-grained mobility is based on a new programming language called Emerald for which we have implemented a run-time kernel. Emerald supports a single model of computation: the object. All objects are described using a uniform semantic model. They can move freely within the system to take advantage of distribution and respond to dynamically changing requirements. We say that Emerald has fine-grained mobility because all objects can move regardless of size. Process migration is supported; light-weight processes that are executing within a migrating object are also migrated on-the-fly. Our design of Emerald emphasizes efficiency, in particular, efficient communication between potentially distributed objects located on the same machine. By integrating distribution concepts into the programming language, the compiler is able to generate more efficient code for objects that do not require full generality. Emerald supports call-by-reference semantics--even for remote procedure calls. We introduce a special parameter passing mode, call-by-move which can be used to move parameters for efficiency reasons. We present a design for a distributed on-the-fly garbage collector. The design includes a novel faulting mechanism that allows user processes to proceed during collection. This dissertation discusses aspects of language design related to mobility and the design and implementation of an efficient Emerald kernel. Measurements of the system and of several small applications are presented.