Extending Fluke IPC for Transparent Remote Communication
Department of Computer Science
University of Utah, Salt Lake City, UT 84112
Distributed systems such as client-server applications and
cluster-based parallel computation
are an important part of modern computing.
Distributed computing allows the balancing of processing load,
increases program modularity, isolates functionality, and can provide
an element of fault tolerance.
In these environments, systems must be able to
synchronize and share data through some mechanism for
remote interprocess communication (IPC).
Although distributed systems have many advantages,
they also pose several challenges. One important challenge is
transparency. It is desirable that applications can be
written to a communication interface that hides the details of distribution.
One way to achieve transparency is through the
extension of local communication mechanisms over a network for remote
communication. The ability to transparently extend local communication
depends on the semantics of the local IPC mechanisms.
Unfortunately, those semantics are often driven by other architectural goals
of the system and may not necessarily be best suited for remote communication.
This work describes a remote IPC implementation for the Fluke operating system
and an analysis of the Fluke architecture, IPC system, and IPC semantics,
with regard to the extension of local IPC for transparent remote communication.
It shows that the overall complexity of both the kernel IPC
subsystem and the network IPC implementation is considerably less than
similar operating systems' IPC mechanisms, and that
the Fluke IPC architecture is generally well-suited for transparent
remote IPC. However, it also shows that the lack of kernel-provided reference
counting caused more problems than it solved, and that the generality of an
important Fluke kernel object, the ``reference,'' makes it impossible for the
network IPC system to provide completely transparent remote IPC without
extensive additional services.