From: Justin Voskuhl (justinv_at_microsoft.com)
Date: Wed Feb 04 2004 - 14:41:54 PST
This paper describes an environment for distributed programming that
provides a type-safe runtime and programming language that allow objects
in the system to move from node to node in a transparent fashion. The
programming language allows the programmer to express notions related to
mobility in the programming language. For example, if the programmer
defines a type A, and the type A contains a member B, in the type
definition for A the programmer can express whether or not B should
travel along with A when A moves from node to node.
To achieve this mobility objects are assigned special names that are
unique across the network. The names are machine-id/timestamp pairs,
which allow objects to refer to objects on remote machines just like it
can refer to objects on its own node. The designers take special care
to not make operations that run on the local machine (much) more
expensive than they would be in most other programming languages, while
also providing the flexibility of having a reference to any object
potentially be remote.
Since objects can move around in the system, each node maintains
forwarding addresses for objects that have moved off the node. With
this scheme, nodes looking for an object can follow the forwarding
addresses looking for the object. Because the naming of the objects
uses the timestamp, you can get some optimizations from knowing which
names for an object are later and which are newer.
The system uses garbage collection to handle memory management. Because
most objects will be short lived and stay on only one node, the garbage
collector takes special note of objects that have moved off this node,
or objects that have moved from another node. It can garbage collect
local objects without having to interact with remote nodes.
Periodically it needs to garbage collect the entire distributed network.
It uses a mark and sweet algorithm that can run while the nodes continue
to do work and modify the graph.
This archive was generated by hypermail 2.1.6 : Wed Feb 04 2004 - 14:42:00 PST