System Name: M0 Messengers
Current Version: 0.27.11
Organization: Centre Universitaire d'Informatique. University of Geneva, Switzerland Department of Computer Systems, Uppsala University, Sweden
Entry status: authoritative
Supported platforms:
Linux, Solaris
Supported languages:
M0 (postscript-like programming language)
Implemented standards: none
Type of migration:
weak
How many threads or processes are possible per agent? Each messenger ("agent") runs in its own thread. Each messenger can submit new messengers locally or remotely, as long as its credit is suffifient.
Local communication mechanisms and format of data:
All communications are indirect. Messengers exchange information through
local shared memory, synchronization is done via a queue mechanism or
a market mechanism (continuous double auction). Dictionaries and arrays
of local data instances are used to structure data.
Global communication mechanisms:
The basic environment has no global communication mechanism by default.
Higher level communication services have been built with messengers
on top of the local communication mechanisms: e.g. alternating bit
protocol, topology discovery, remote evaluation, distributed shared
memory, distributed semaphores, election protocol, self-deploying
distributed services.
How the communication partner can be addressed:
Messenger threads are anonymous entities, no direct communication is
possible. Threads that wish to communicate must know some common "name"
(most conveniently a 64-bit key) in order to locate in the shared local
memory the data to be exchanged.
Resource access control mechanism:
The platform is a local resource economy: messengers are charged for
memory, CPU and bandwidth usage, prices depend on the system's load,
entries in the shared memory area have to be "sponsored" or they decay.
Each platform has its own fictionaly currency (funny money), incoming
messengers receive an initial amount of money at start, money exchange
has to be done by arbitrage messengers.
Agent tracking:
none
Directory of services:
Each platform has a specific local dictionary accessible to everybody
where services can be published and retreived.
Type of code migration:
All code is carried by messengers. Download (caching) of code
can be implemented by the messengers themselves by storing code
fragments in the remote platform's shared memory area.
Other special features:
M0 was one of the first active networking systems. It still is the
purest "capsule" oriented mobile code environment.
Messengers have access to their external representation, which is
helpful for implementing self-encrypting and self-fragmenting mobile
code protocols.
File storage, Web connectivity and graphical user interfaces are
provided by additional external services. These features don't need
to be part of the minimal M0 environment. Transport of messengers
and connectivity to the servers is via UDP and/or ANON (Active Network
Overlay Network).
Availability:
source code
License terms:
GNU copyleft
Article that describe the current system best:
Chr. Tschudin: "The Messenger Environment M0 - A Condensed Description".
In Vitek and Tschudin (Eds.): Mobile Object Systems, LNCS 1222, 1997,
pp. 149-156.
Year of first publication of systems description: 1993 Chr. Tschudin: On the Structuring of Computer Communications. PhD thesis 2632, University of Geneva, Switzerland 1994 Chr. Tschudin: M0 - a messenger execution environment. In comp.sources.unix NEWS group, Vol 28, issues 51-62.
Project URL: http://cuiwww.unige.ch/tios/msgr
Contacts Email Address: Alex.Villazon@cui.unige.ch
Last modification date of this entry: Wed Jun 30 11:11:36 MET DST 1999