0% found this document useful (0 votes)
10 views

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
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
10 views

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
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