DIS: world wide system identifiers

Mike Prince mprince@crl.com
Wed, 2 Nov 1994 19:04:19 -0800 (PST)

On Thu, 3 Nov 1994, Francois-Rene Rideau wrote:

> There are problems about a distributed system:
> - we must ensure that object numbering is unique and secure.
>  This means a large object identifier size (64 to 128 bits typically).
>  How will that be handled ?
> - now, and particularly if objects migrate, how to route  efficiently a
>  message from source to destination object ?
>  for example, let's assume I was given some old (but valid) object
>  handle; by the time ellapsed, the corresponding object may be anywhere
>  in the world (if it still exists !). How will the system locate it ?
>  Firstly, this should be transparent to the user; this is strictly a
> system implementor problem, which should be solved with maximal efficiency.
> What I propose is having host-dependent pointers to represent objects.
> Local objects (present on the same host) or faithfully represented by these
> pointers as usual, while remote objects are represented as a pointer to a
> record containing the full system-wide identifier for the object. Exported
> objects reciprocally are pointed at by a record containing the corresponding
> identifier. The system may also cache some route and migration information
> together with object identifiers.
> This allows very quick access to local objects, and equally easy (though
> slower) access to remote ones.

>From the programmers point of view (in my paradigm at least) tool boxes 
store data and the code to manipulate that data.  In order to get 
something you call the tool box by its name (potentially a big fat 
number), and potentially the slowest part of the operation, from there 
everything is local.  The arguments passed between tool boxes should be 
as high level as possible, so as to minimize the number agents passing 
between them.

The "kernel" manages moving agents whether locally or to other kernels.  
Although the routing algorithm will be outside of the kernel.

I guess what I really mean, is that an "object" to me is data plus the 
code to manipulate it.  I don't see inheritance as part of my low level 
view of this relationship.  I also don't see any need to go poking around 
in someone elses data with a handle (it wouldn't be nice).  You access it 
through a name.  To minimize the possibility of two people having the 
same name, use a bigger number (name).

In my model the name is variable between 1 and 127 bytes.  That should 
provide a pretty good range.  If you want even more protection, add some 
kind of checking function to the tool box gate.  Slower again, but 
safer.  I don't want to make these compromises though, I want to leave 
that up to the implementor of the HLL.

In another recent post about agent movement I mentioned the kernel 
caching information about tool boxes references in calling tool boxes.

I think we are cranking out ideas again, don't forget the Friday 
deadline.  I'd hate to have to redraw my line in the sand!