bunty
bunty

Reputation: 2785

Difference between shared memory and pipe in unix?

what is main difference between shared memory and pipe in unix programming?

Upvotes: 6

Views: 3858

Answers (2)

Yash
Yash

Reputation: 2033

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.

Upvotes: 2

Sachin Shanbhag
Sachin Shanbhag

Reputation: 55489

Taken from this article

(unnamed) Pipes

  • Can switch between blocking and non-blocking mode
  • Don't have to free them when done
  • Are automatically inherited by children
  • Must read and write in a linear fashion

Shared Memory

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

Upvotes: 7

Related Questions