0% found this document useful (0 votes)
10 views18 pages

Interprocess Communications

The document discusses different models of interprocess communication including shared memory and message passing. It describes producer-consumer problems and solutions using bounded buffers in shared memory. The document also covers message passing concepts like direct and indirect communication, synchronization, and buffering.

Uploaded by

Amar Singh
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
10 views18 pages

Interprocess Communications

The document discusses different models of interprocess communication including shared memory and message passing. It describes producer-consumer problems and solutions using bounded buffers in shared memory. The document also covers message passing concepts like direct and indirect communication, synchronization, and buffering.

Uploaded by

Amar Singh
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 18

Interprocesses Communication

Processes
• Cooperating Processes
• Interprocess Communication
Interprocess Communication
• Processes within a system may be independent or
cooperating
• Independent process cannot affect or be affected by the
execution of another process
• Cooperating process can affect or be affected by the
execution of another process
• Advantages of process cooperation
– Information sharing
– Computation speed-up
– Modularity
– Convenience
Cooperating Processes
• Cooperating processes need inter process communication
(IPC)

• Two models of IPC


– Shared memory: A shared buffer is used by co-operating
processes
– Message passing: A message is passed by one process to
another via kernel
Communications Models
Producer-Consumer Problem
• Paradigm for cooperating processes, producer process
produces information that is consumed by a consumer
process
– unbounded-buffer places no practical limit on the size of
the buffer
• Producer produces one by one and keeps producing
• Consumer consumes one by one
– bounded-buffer assumes that there is a fixed buffer size
• Producer must wait if buffer is full
• Consumer must wait if buffer is empty
Bounded-Buffer –
Shared-Memory Solution

 Shared data

#define BUFFER_SIZE 10
typedef struct {
...
} item;

item buffer[BUFFER_SIZE];
int in = 0;
int out = 0;
 Solution is correct, but can only use BUFFER_SIZE-1
elements
Bounded-Buffer – Producer

while (true) {
/* Produce an item */
while (((in = (in + 1) % BUFFER SIZE) == out)
; /* do nothing -- no free buffers */
buffer[in] = item;
in = (in + 1) % BUFFER SIZE;
}
Bounded Buffer – Consumer

while (true) {
while (in == out)
; // do nothing -- nothing to consume

// remove an item from the buffer


item = buffer[out];
out = (out + 1) % BUFFER SIZE;
return item;
}
Interprocess Communication – 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) – message size fixed or variable
– receive(message)
• If P and Q wish to communicate, they need to:
– establish a communication link between them
– exchange messages via send/receive
Interprocess Communication – Message Passing

• Implementation of communication link


– Physical:
• Shared memory
• Hardware bus
• Network
– Logical:
• Direct or indirect
• Synchronous or asynchronous
• Automatic or explicit buffering
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
Implementation Questions
1. How are links established?
2. Can a link be associated with more than two processes?
3. How many links can there be between every pair of
communicating processes?
4. What is the capacity of a link?
5. Is the size of a message that the link can accommodate fixed
or variable?
6. Is a link unidirectional or bi-directional?
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
• 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
Buffering
• Queue of messages attached to the link; implemented
in one of three ways
1. Zero capacity – 0 messages
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
Communications in Client-Server Systems

• Sockets
• Remote Procedure Calls
• Pipes
• Remote Method Invocation (Java)

You might also like