Inter-Process communication in Operating System.ppt

1,355 views 29 slides Nov 02, 2023
Slide 1
Slide 1 of 29
Slide 1
1
Slide 2
2
Slide 3
3
Slide 4
4
Slide 5
5
Slide 6
6
Slide 7
7
Slide 8
8
Slide 9
9
Slide 10
10
Slide 11
11
Slide 12
12
Slide 13
13
Slide 14
14
Slide 15
15
Slide 16
16
Slide 17
17
Slide 18
18
Slide 19
19
Slide 20
20
Slide 21
21
Slide 22
22
Slide 23
23
Slide 24
24
Slide 25
25
Slide 26
26
Slide 27
27
Slide 28
28
Slide 29
29

About This Presentation

Interprocess communication (IPC) in an operating system refers to the mechanisms and techniques that processes use to communicate and share data with each other. Processes are independent execution units within an operating system, and IPC is essential for processes to cooperate, exchange informatio...


Slide Content

Inter-process Communication in
Operating System
1.Inter-process Communication
2.Communication Model
3.Communication Process
4.Shared Memory
5.Producer-Consumer Problem
6.Direct Communication
7.Indirect Communication
Ms.C.Nithiya
Computer Science and Engineering
KIT-KalaignarkarunanidhiInstitute Of Technology

Processes within a system may be independentor 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 interprocesscommunication (IPC)
Two models of IPC
Shared memory
Message passing
Interprocess Communication

Communications Models
(a) Message passing. (b) shared memory.

Cooperating Processes
Independentprocess cannot affect or be affected by the
execution of another process
Cooperatingprocess can affect or be affected by the
execution of another process
Advantages of process cooperation
Information sharing
Computation speed-up
Modularity
Convenience

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 synchronizetheir
actions when they access shared memory.

Producer-Consumer Problem
Under cooperating processes, producer
process produces information that is
consumed by a consumerprocess
unbounded-buffer places no practical
limit on the size of the buffer
bounded-buffer assumes that there is a
fixed buffer size

Examples of IPC Systems -POSIX
nPOSIX Shared Memory include shared memory and message passing.
lProcess first creates shared memory segment
shm_fd= shm_open(name, O_CREAT | O_RDWR, 0666);
lAlso used to open an existing segment to share it. It returns a
integer value.
lSet the size of the object
ftruncate(shmfd, 4096);
lNow the process could write to the shared memory
sprintf(shared memory, "Writing to shared
memory");
Mmap()memory mapping funccreates a pointer to
shared memory object.

IPC POSIX Producer

IPC POSIX Consumer

Bounded-Buffer –Shared-
Memory Solution
Shared data
#define BUFFER_SIZE 10
typedef struct {
. . .
} item;
item buffer[BUFFER_SIZE];
int in = 0;#if free one process enter in
int out = 0;# one process comes out and
becomes NULL
Solution is correct, but can only use BUFFER_SIZE-1 elements

Bounded-Buffer –Producer
item next_produced;
while (true) {
/* produce an item in next produced */
while (((in + 1) % BUFFER_SIZE) == out)
; /* do nothing */
buffer[in] = next_produced;#next new item
is stored
in = (in + 1) % BUFFER_SIZE;
}

Bounded Buffer –Consumer
item next_consumed;
while (true) {
while (in == out)
; /* do nothing */
next_consumed= buffer[out];
out = (out + 1) % BUFFER_SIZE;
/* consume the item in next
consumed */
}

Interprocess Communication –
Message Passing
Mechanism for processes to communicate and to
synchronize their actions without sharing address
space.
Message system –process communication takes
place between different computer systems
through network.
IPC facility provides two operations:
send(message)
receive(message)
Themessagesize is either fixed or variable

Message Passing (Cont.)
If processes Pand Qwish to communicate, they need to:
Establish a communicationlinkbetween 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 (Cont.)
Implementation of communication link
Issues faced :
Naming
Synchronization
Buffering
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

Indirect Communication
Mailbox sharing
P
1, P
2,andP
3share mailbox A
P
1, sends; P
2andP
3receive
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
Implement : Message passing may be either blocking or non-
blocking
Blockingis 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-blockingis 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

Synchronization (Cont.)
Producer-consumer becomes little important.
message next_produced;
while (true) {
/* produce an item in next produced */
send(next_produced);
}
message next_consumed;
while (true) {
receive(next_consumed);
/* consume the item in next consumed */
}

Buffering
Send and receive will reside in temp queue.
implemented in one of three ways
1.Zero capacity –no messages are queued on a
link.
Sender is blocked, no message is waiting,
nothing is stored.
2.Bounded capacity –finite length of n
messages
Sender must wait if link full
3.Unbounded capacity –infinite length
Sender never waits

Thread
A thread isa flow of execution through the
process code, with its own program counter
that keeps track of which instruction to
execute next, system registers which hold its
current working variables, and a stackwhich
contains the execution history. ... A thread is
also called a lightweight process.

Single and Multithreaded
Processes

Benefits of Multithreading
Responsiveness –may allow continued
execution if part of process is blocked, especially
important for user interfaces
Resource Sharing –threads share resources of
process, easier than shared memory or message
passing , share code and data .
Economy –cheaper than process creation,
thread switching lowers cost than context
switching
Scalability –process run concurrently and
hence process complete quicker

Multithreading Models
User thread –supported above the kernel and
managed without kernel support
Kernel thread –supported and managed directly by
the os
Relationship between user thread and kernel thread exist
There are 3 common ways in establishing relationship
Many-to-One
One-to-One
Many-to-Many

Many-to-One
Many user-level threads
mapped to single kernel
thread
One thread blocking
causes all to block
Thread management is
done in user level
Multiple threads may not
run in parallel on system
because only one may be
in kernel at a time
Few systems currently use
this model

One-to-One
Each user-level thread maps
to kernel thread
Creating a user-level thread
creates a kernel thread
If one send block message
other thread works that
increase concurrency.
Whenever you are creating
user thread a kernel thread
need to be created.
If you have 4processor and 5
threads need to run at a time
that could not work.

Many-to-Many Model
More kernel thread can be mapped with
same or lesser kernel thread.
Kernel thread is associated with
particular application.
Developer create more user thread and
made to run parallel with kernel
Thread perform blocking call, kernel set
another thread to work for execution.