1998-12-15 21:26:48

by Kamran Karimi

[permalink] [raw]
Subject: Distributed Programming with DIPC

To people interested in distributed programming and clustering under Linux,

This is to introduce DIPC (Distributed Inter-Process Communication).
DIPC is a software-only solution for very easy distributed programming under
the Linux operating system. Here developers design their applications
as a group of processes, each possibly running on a different Linux computer,
and then use DIPC to _transparently_ exchange data between them. The main
objective of the DIPC project is to make distributed programming as much like
"normal" programming as possible.

DIPC hides itself behind UNIX System V's IPC mechanisms, consisting of
Semaphores, Messages, and Shared Memories, and makes them work over a network.
This means that DIPC offers, among other things, Transparent Distributed
Shared Memory (DSM) with strict consistency: Processes can read from and
write to the shared memory with no need for any explicit synchronization!
This makes DIPC very different from systems like PVM or MPI. The source code
of a DIPC program is nearly identical to a normal UNIX program using System V
IPC. Actually, a DIPC program can even run in a Linux computer with no DIPC
support; no need for recompilation. System V IPC is widely available in
UNIX variants, and is very well documented, meaning that developers may
already know the programming interface, or they can learn it very easily,
confident that the usefulness of the newly learned material is not tied to
the availability of DIPC. This is in sharp contrast to most other distributed
programming systems.

Using a mainly "shared-memory" programming interface means that the same
distributed application can also run on a multi-processor Linux machine
at "full speed"

DIPC modifies the Linux kerenl in order to offer its excellent degree of
transparency. There are no needs for any link libraries, and it can be
used from any programming language that allows access to the OS calls.
The hardware can consist of a single Linux machine, or a cluster of computers
connected to each other by a TCP/IP network. DIPC has been tested on
inter-continental WANs and is a heterogeneous system, as it can run on
Linux/i386 and Linux/m68k, with both versions being able to talk to each
other. (volunteers for porting DIPC to other CPU families are welcome).

People intersted in distributed systems can easily and safely try DIPC. After
patching a standard Linux kernel, DIPC becomes a configuration option
(make config), and can be left out at compile time if desired. When DIPC is
compiled in, it can be turned off any time with no need for a reboot.

For more more information about DIPC, visit http://wallybox.cei.net/dipc .
You can download the package (which includes the sources and the
documentation) from the web page, or from ftp://wallybox.cei.net/pub/dipc .
A mailing list devoted to discussions about DIPC is addressed at
[email protected] . Feel free to send your comments and questions
here. To view the previous posts to DIPC's mailing list target your browser
at http://wallybox.cei.net/dipc/ml-archive .

-Kamran Karimi