Chapter 3: Processes
Inter Process Communication
(IPC)
Interprocess Communication
Processes within a system may be independent
or cooperating
Cooperating process can affect or be affected by
other processes, including sharing data
Reasons for cooperating processes:
Information sharing,Computation speedup
Modularity, Convenience
Cooperating processes need interprocess
communication (IPC)
Direct Communication
Processes must name each other explicitly:
send (P, message) – send a message to process P
receive(Q, message) – receive a message from
process Q
Properties of communication link
Links are established automatically
A link is associated with exactly one pair of
communicating processes
Between each pair there exists exactly one link
The link may be unidirectional, but is usually bi-
directional
Indirect Communication
Messages are directed and received from
mailboxes (also referred to as ports)
Each mailbox has a unique id
Processes can communicate only if they share
a mailbox
Properties of communication link
Link established only if processes share a
common mailbox
A link may be associated with many processes
Each pair of processes may share several
communication links
Link may be unidirectional or bi-directional
Indirect Communication
Operations
create a new mailbox (port)
send and receive messages through mailbox
destroy a mailbox
Primitives are defined as:
send(A, message) – send a message to
mailbox A
receive(A, message) – receive a message
from mailbox A
Indirect Communication
Mailbox sharing
P1, P2, and P3 share mailbox A
P1, sends; P2 and P3 receive
Who gets the message?
Solutions
Allow a link to be associated with at most two
processes
Allow only one process at a time to execute a
receive operation
Allow the system to select arbitrarily the receiver.
Sender is notified who the receiver was.
Synchronization
Message passing may be either blocking
or non-blocking
Blocking is considered synchronous
Blocking send -- the sender is blocked until
the message is received
Blocking receive -- the receiver is blocked
until a message is available
Synchronization
Non-blocking is considered asynchronous
Non-blocking send -- the sender sends the
message and continue
Non-blocking receive -- the receiver receives:
A valid message, or
Null message
Different combinations possible
If both send and receive are blocking, we have a
rendezvous
Buffering
Queue of messages attached to the link.
implemented in one of three ways
1. Zero capacity – no messages are queued on
a link.
Sender must wait for receiver (rendezvous)
2. Bounded capacity – finite length of n
messages
Sender must wait if link full
3. Unbounded capacity – infinite length
Sender never waits
IPC methods
1. Signals
2. Mutex (MUTual EXclusion)
3. Semaphores
4. Shared memory
5. Memory mapped files
6. Pipes & named pipes
7. Sockets
8. Message queues
9. MPI (Message Passing Interface)
Communications Models
(a) Message passing. (b) Shared memory.
Message Passing
Mechanism for processes to communicate and
to synchronize their actions
Message system – processes communicate
with each other without resorting to shared
variables
IPC facility provides two operations:
send(message)
receive(message)
The message size is either fixed or variable
Message Passing
If processes P and Q wish to communicate, they
need to:
Establish a communication link between them
Exchange messages via send/receive
Implementation issues:
How are links established?
Can a link be associated with more than two
processes?
How many links can there be between every pair of
communicating processes?
What is the capacity of a link?
Is the size of a message that the link can
accommodate fixed or variable?
Is a link unidirectional or bi-directional?
Message Passing
Implementation of communication link
Physical:
Shared memory
Hardware bus
Network
Logical:
Direct or indirect
Synchronous or asynchronous
Automatic or explicit buffering
Shared Memory
Shared Memory
•Shared memory is a piece of memory space that
does not belong to any particular user process.
•Shared memory can be accessed (shared) by
multiple processes.
•Shared memory is created by OS
• Two processes can send and receive data through shared
memory
• No limitation in the order data is accessed (and even bi-
directional)
• Race condition is there (users are responsible for
avoiding race condition)
Shared Memory
Property of Shared Memory “Random Access” is possible
OS Can access any address
within a shared memory
Allocate/Manage
WRITE Not FIFO any more
Process 1 Process 2
READ
Shared Memory
Shared Memory
Property of Shared Memory No limitation in “direction”
OS
Allocate/Manage
READ
WRITE
Process 1 Process 2
WRITE
READ
Shared Memory
Shared Memory
Property of Shared Memory No protection from “Race Condition”
OS does NOT provide
OS protection against
race-condition
READ WRITE
Process 1 Process 2
WRITE READ
Shared Memory
Shared Memory
Application Example
Shared Memory
Remote
Client 1
Client 1
Writer Client 2
Process
12:59:59 Remote
Client n Client 2
Time
Keeper
(Delta Time)
OS
Time Server Remote
Client n
Access Rules to the Shared Memory
(1) Multiple readers can simultaneously access the memory
(2) When the writer updates the memory, no reader can
access
(3) Once the writer leaves, multiple readers can access
• We will learn to do this later. Now we will learn how to
create and use shared memory only. (and hope there are
no race conditions)
Interprocess Communication – Shared Memory
An area of memory shared among the
processes that wish to communicate
The communication is under the
control of the users processes not the
operating system.
Major issues is to provide mechanism
that will allow the user processes to
synchronize their actions when they
access shared memory.
Synchronization is discussed in great
detail later.
shmget(): Argument Values
key
same as before; we use getuid() to make it unique
size
number of bytes to allocate
shmflag
Creating: IPC_CREAT and permissions
0 for accessing only
Notes on shmat() arguments
shmid is as before
2nd and 3rd arguments can be used to attach to a
specific address within shmem, but it is an
absolute address, requiring knowledge of the
address of the shared memory segment
Almost always, 2nd and 3rd arguments are 0
Examples of IPC Systems - POSIX
Examples of IPC Systems - POSIX
Examples of IPC Systems - POSIX
Examples of IPC Systems - POSIX
Examples of IPC Systems - POSIX