This technical report describes the integration of the Distribution
Subsystem (DSS) to the
programming system Mozart.
The result, OzDSS, is
described in detail. Essential when coupling a
programming system to
the DSS is how the internal model of threads and language
entities are
mapped to the abstract entities of the DSS. The model of threads and
language entities of Mozart is described at a detailed level to explain
the design choices made when developing the code that couples the DSS
to Mozart. To show the challenges associated with different thread
implementations, the C++DSS system is introduced. C++DSS is a C++
library which uses the DSS to implement different types of distributed
language entities in the form of C++ classes. Mozart emulates threads,
thus there is no risk of multiple threads accessing the DSS
simultaneously. C++DSS, on the other hand, makes use of POSIX threads,
thus simultaneous access to the DSS from multiple POSIX threads can
happen. The fundamental differences in how threads are treated in a
system that emulates threads (Mozart) to a system that make use of
native-threads~(C++DSS) is discussed. The paper is concluded by a
performance comparison between the OzDSS system and other distributed
programming systems. We see that the OzDSS system outperforms
``industry grade'' Java-RMI and Java-CORBA implementations.