The autonomous behavior of objects is modeled through asynchronous message passing. A message queue is associated with each autonomous object. An object can receive messages, interpret them and autonomously react to them. It also has the ability to send messages to other objects.
AutO has a symmetric peer-to-peer architecture. On each node of the system one AutO-Server and multiple clients are running. A client is a process managing multiple autonomous objects, each of them represented by a thread.
To keep the communication costs as low as possible, AutO provides different mechanisms for the communication between objects within one process, objects residing in different clients on the same node and objects on different nodes. These differences are transparent to the user.
Objects within one process use the fast facilities provided for threads to communicate. The communication between objects from different clients on the same node is done through shared memory while for internode communication a UDP based protocol is used.
We are currently implementing a transaction protocol for the system, based on semantic locking. The synchronization of parallel transactions is done locally, i.e., the objects are responsible for the lock management on their data.
Deadlocks, inherent to systems using locking based protocols, are detected and resolved by the DDA approach.