LWN.net Logo

Advertisement

Smart VPS: 192 MB RAM, 10 GB disc space, 50 GB data transfer and Virtuozzo OS virtualization solution.

Advertise here

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

From:  "Hareesh Nagarajan" <hnagar2@gmail.com>
To:  linux-kernel@vger.kernel.org
Subject:  pkMem: A transactional, zero copy, shared memory based mechanism for IPC
Date:  Wed, 19 Apr 2006 00:06:25 -0500

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@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Copyright © 2006, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds