User: Password:
Subscribe / Log in / New account

Other Linux IPC mechanisms

Other Linux IPC mechanisms

Posted Nov 10, 2011 20:28 UTC (Thu) by abacus (guest, #49001)
Parent article: Fast interprocess communication revisited

I'm afraid the above overview is incomplete. At least the following inter-process communication methods are supported by the Linux kernel but were not mentioned in the above article:

  • Shared memory. Processes can choose to share one or more memory segments and can even create POSIX mutexes etc. in shared memory segments. For more information, see e.g. the documentation of the PTHREAD_PROCESS_SHARED attribute.
  • RDMA or Remote Direct Memory Access. Although this API was added in the Linux kernel to add support for the InfiniBand transport, the RDMA API can also be used for inter-process communication. For who's not familiar with this API, it is an API that unlike the socket API can be implemented such that data is not copied (zero-copy).

(Log in to post comments)

Other Linux IPC mechanisms

Posted Nov 12, 2011 2:07 UTC (Sat) by drag (subscriber, #31333) [Link]

I don't think the point was to show all the possible IPC that Linux supports.

fifos, files, pipes, posix message queues, posix semaphores, signals, and sockets are all forms of IPC.

I believe that the PTHREAD stuff uses the POSIX version of shared memory, but you can also use the "System V"-style shared memory, system v message queues, and system v semaphores for other things.


Other Linux IPC mechanisms

Posted Nov 12, 2011 3:37 UTC (Sat) by neilbrown (subscriber, #359) [Link]


I think that a survey of all the different IPC mechanisms, comparing and contrasting their features, discussing the appropriate use cases and actual libraries/apps that use them, together with various performance measurements (with code) would make a very interesting and valuable article.

But this was not that article.

Other Linux IPC mechanisms

Posted Nov 18, 2011 2:12 UTC (Fri) by jd (guest, #26381) [Link]

RDMA is one-copy since you directly transfer data into an area of memory. Although the kernel has support for RDMA, I don't really know what it does - conventional RDMA is kernel-bypass. Ideally, RDMA would be totally offloaded to the card with the kernel only telling the card what buffers to use, what endpoints to use and whether the operation is read or write.

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