hvn-network

My Blog List

Thursday, August 18, 2016

Introduction to IPC

Created by Thomas

IPC (Interprocess Communication)

Communication
- Exchange data between processes
- Can be used between threads of a process, but not necessary because threads can exchange information via shared global variables.

Synchronization:
- Synchronize actions of processes or threads

Types of communications





Types of synchronization





Data transfer:
- Require 2 data transfers between user memory and kernel memory
- For writing, one transfer from user memory to kernel memory
- For reading, another transfer from kernel memory to user memory.

- Byte stream
+ Via pipe, FIFO, datagram socket
+ Read operation: can read arbitrary number of bytes from IPC channel, regardless of size of blocks written by writer.

- Message
+ Via System V message queues, POSIX message queues and datagram socket.
+ Read operation: read a whole message, not possible to read multiple messages on a single read



Below is some examples.

Common illustration of data transfer






Parent-child using two PIPEs




Parent-child using two FIFOs


One server-multiple clients using FIFOs


Client-server using message queue



Shared memory

- Via System V shared memory, POSIX shared memory and memory mapping.
- Allow processes to exchange information by putting it to a region of memory that shared between processes.
- Don't require system calls or data transfer between user and kernel spaces, shared memory can support fast communication.
- However, share memory needs synchronization between processes.


Illustration of shared memory using semaphore.





Summary of IPC facilities




Persistence of IPC facilities



Reference
1. http://www.tldp.org/LDP/lpg/node7.html
2. https://www.cs.cf.ac.uk/Dave/C/
3. http://www.chandrashekar.info/articles/linux-system-programming/introduction-to-linux-ipc-mechanims.html
4. http://beej.us/guide/bgipc/output/html/singlepage/bgipc.html
5. Unix network programming, Vol.2

No comments:

Post a Comment