pkMem: A transactional, zero copy, shared memory based mechanism for IPC

From: Hareesh Nagarajan
Date: Wed Apr 19 2006 - 01:06:49 EST


Hi All:

As a part of my masters project, I have written an IPC mechanism for the
Linux kernel called pkMem. The description of the mechanism follows:

<abstract>
pkMem is a shared memory space that is mapped into every process on
the system at exactly the same virtual address. By default, a process
cannot access this space.

During transactions, parts of pkMem are made accessible to the process for
reading or writing. The transactional semantics means that either the entire
transaction occurs or that none of the transaction occurs and moreover that
transactions appear to occur at a single instant in time without interleaving
from other transactions - in other words, the transaction is _atomic_. The
semantics of pkMem are very clean.

The most common alternative to pkMem are threads, in which a set of threads
share the same address space, with full access rights. In the pkMem mechanism
for Inter-Process Communication (IPC), processes share this well defined region
and unlike threads, must use the transactional mechanism to access
pkMem.

Other benefits include:
- An object in pkMem has the same address in every process. This implies
that pointer-based data structures such as trees, lists and graphs may be
accessed identically from every process on the system, thus eliminating the
need to convert pointer-based structures into linear form or to remap
pointers.
- Because pkMem is shared memory, during IPC zero copies of the data
are required. But, unlike traditional shared memory, processes using the
pkMem mechanism do not need to use semaphores or any other form of
locking, to protect concurrent access to the region.
</abstract>

The report (which takes the style of a design document/tutorial) can be
downloaded from here:
http://cs.uic.edu/~hnagaraj/pkmem/hareesh-masters.pdf

The patches and the examples can be downloaded from here:
http://cs.uic.edu/~hnagaraj/pkmem/

For an executive summary, the following sections might be of interest:
Abstract, 2, 3, 5.1, 5.2, 9.1.3, 9.2

Comments and suggestions are more than welcome.

Thanks,

./hareesh
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/