Difference between shared memory and pipe in unix? Difference between shared memory and pipe in unix? unix unix

Difference between shared memory and pipe in unix?


Taken from this article

(unnamed) Pipes

  • Can switch between blocking andnon-blocking mode
  • Don't have to free them when done
  • Are automatically inherited bychildren
  • Must read and write in a linearfashion

Shared Memory

  • Can store structures
  • Won't ever block - positive
  • Can have as many programs read orwrite to it as you need
  • Won't ever block - negative: must usesemaphores or your own spin-locks
  • It's possible for it to not be freedeven when all programs exit


Shared Memory Vs Pipe-

Kernel-

Once Shared Memory is setup by the kernel there is no further need of kernel for the communication b/w process whereas in Pipe, data is buffered in the kernel space and requires system call for each access. Here, Shared Memory is faster than Pipe. It is a major drawback of the pipe becuase IPC is important for the computational speed up.

Communication

Shared Memory- Bidirectional whereas Pipe(unnamed Pipe)- Unidirectional.

Reliable

Shared Memory- Less Reliable(data mix up) whereas Pipe is more Reliable as data is buffered and is under control of the kernel.

Hope you like it.