Nemesis provides a framework for building various mechanisms and abstractions using events for notification and shared memory for data transfer.
One such model is inter-domain invocation; use is made of the Nemesis run-time type system to allow an arbitrary interface to be made available for use by other domains. The basic paradigm adopted is then dictated by the MIDDL interface definition language: with the addition of `announcement' operations, which allow use of message passing semantics.
The use of an paradigm for invocations in no way implies the traditional implementation techniques (marshalling into buffer, transmission of buffer, unmarshalling and dispatching, etc.). There are cases where the programming model is appropriate, but the underlying implementation can be radically different. In particular, with the rich sharing of data and text afforded by a single address space, a number of highly efficient implementation options are available.
Furthermore, there are situations where is clearly not the ideal paradigm: for example, bulk data transfer or continuous media streams are often best handled using an out-of-band interface only for control. This is the case with the RBuf mechanism presented in section vi-C, which employs the binding model described here and an interface-based control mechanism.
Operating systems research to date has tended to focus on optimising the performance of the communication systems used for RPCs, with relatively little attention given to the process of binding to interfaces. By contrast, the field of distributed processing has sophisticated and well-established notions of interfaces and binding, for example the ``Trader'' within the ANSA architecture. The Nemesis binding model shares many features with the ANSA model.
This section describes briefly the Nemesis approach to inter-domain binding and invocation, including optimisations which make use of the single address space and the system's notion of real time to reduce synchronisation overhead and the need for protection domain switches, followed by an outline of the support for stream based .