[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Dynamic binding




It may be useful to expand the Nomadic Pi case a bit, as there's an
interesting contrast between the names of agents and channels.

Both agent names and channel names can be newly created, and
will be globally unique.  Each agent name is associated with a
globally-unique agent.  Each channel name, though, is associated with
a separate channel in each agent. (Synchronisation of pi-like inputs
and outputs occurs only within an agent; there are other primitives
for sending outputs between agents.)

Having exactly one agent per agent name simplifies some algorithms
(imagine eg keeping a map giving the current site of each agent), but
it does mean that site-specific resources are a little awkward -- eg
we often need to pass around pairs (s,d) of a site name s and the name
d of a daemon agent on site s.  It also wouldn't be appropriate for a
system in which sites couldn't be trusted not to forge agents.

Having an agent-specific channel for each channel name has been very
convenient -- for example, a daemon can use the same channels
for engaging in a migration protocol with every agent in the
system. (In fact, these channels don't often need to be passed around,
so there is a decent analogy with method names.)  It also keeps the
semantics simple, as one can happily scope-extrude channel names.  The
downside is that you have very little control over what happens if a
resource is _not_ present in some particular agent, ie if an agent
contains no inputs on that channel.  In our communication
infrastructures this is ok, as resources get automatically installed
by a translation, but in general it may result in rather fragile
systems.


Peter
  
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The "models for mobility" mailing list     mailto:moca@xxxxxxxxxxxxxxx
 http://www-sop.inria.fr/mimosa/personnel/Davide.Sangiorgi/moca.html