Interprocess Communication in Operating Systems

 
InterProcess Communication
 
 
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
)
Two models of IPC
Shared memory
Data Transfer
 
Cooperating Processes
 
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
 
Communications Models
 
Message Passing
 
Shared Memory
 
Producer-Consumer Problem
 
Paradigm for cooperating processes,
producer
 process produces
information that is consumed by a
consumer
 process
 
Examples of IPC System
 PIPES
 
n
Data streaming
n
Direct communication
 
n
Ordinary pipes
Producer – Consumer fashion
Cannot be accessed outside the process that creates it.
Usually Parent – Child communication
Deleted when process terminates
 
n
Named pipes
l
Alias: FIFO in unix
l
Appear as typical files in the system
 
IPC Data Transfer –
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
Implementation of communication link
physical (e.g., shared memory, hardware bus)
logical (e.g., logical properties)
 
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
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
,
 and
 P
3
 share mailbox A
P
1
, sends; 
P
2
 
and
 P
3
 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 
has the sender block until the
message is received
Blocking receive 
has the receiver block until a
message is available
Non-blocking
 is considered 
asynchronous
Non-blocking 
send has the sender send the
message and continue
Non-blocking 
receive has the receiver receive a
valid message or null
 
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
 
POSIX
 
POSIX
, an acronym for "
P
ortable 
O
perating
S
ystem 
I
nterface",
 
is a family of standards
specified by the IEEE for maintaining
compatibility between operating systems.
POSIX defines the application programming
interface (API), along with command line
shells and utility interfaces, for software
compatibility with variants of Unix and other
operating systems.
 
http://en.wikipedia.org/wiki/POSIX
 
Examples of IPC Systems - POSIX
 
POSIX Message Passing
Processes can exchange messages by using four system calls:
n
msgget(mailbox_name,  IPC_CREAT)
  
Converts a mailbox name to a message queue ID (
msqid)
.  It will
create the mailbox if necessary. Returns the msqid.
 
n
msgsnd(msqid, message@, message_size)
 Sends the message to the mailbox
 
n
msgrcv( msqid, message@, message_size, priority, synch/asynch)
Receives the message from the mailbox
 
n
msgctl(msqid, IPC_RMID, dummyParam@)
Release the mailbox from process resources
 
Communications in Client-Server Systems
 
Sockets
Remote Procedure Calls
 
Sockets
 
A socket is defined as an 
endpoint for
communication
Concatenation of IP address and port
The socket 
161.25.19.8:1625
 refers to
port 
1625
 on host 
161.25.19.8
Communication consists between a
pair of sockets
 
Socket Communication
Socket Communication
Socket
Socket
 
Remote Procedure Calls
 
Remote procedure call (RPC) abstracts procedure
calls between processes on networked systems
Stubs
 – client-side proxy for the actual procedure
on the server
The client-side stub locates the server and
marshalls
 the parameters
The server-side stub receives this message,
unpacks the marshalled parameters, and peforms
the procedure on the server
 
Execution of RPC
 
Examples of IPC Systems - Mach
 
Mach communication is message based
Even system calls are messages
Each task gets two mailboxes at creation- Kernel
and Notify
Only three system calls needed for message
transfer
msg_send(), msg_receive(),
msg_rpc()
Mailboxes needed for commuication, created via
port_allocate()
 
Examples of IPC Systems – Windows XP
 
Message-passing centric via 
local procedure call
(
LPC
) facility
Only works between processes on the same system
Uses ports (like mailboxes) to establish and maintain
communication channels
Communication works as follows:
The client opens a handle to the subsystem’s connection
port object
The client sends a connection request
The server creates two private communication ports and
returns the handle to one of them to the client
The client and server use the corresponding port handle to
send messages or callbacks and to listen for replies
 
Examples of IPC Systems
Shared Memory
 
POSIX Shared Memory
Process first creates shared memory segment
segment id = shmget(IPC PRIVATE, size, S
IRUSR | S IWUSR);
Process wanting access to that shared memory must attach to it
shared memory = (char *) shmat(id, NULL, 0);
Now the process could write to the shared memory
sprintf(shared memory, "Writing to shared
memory");
When done a process can detach the shared memory from its
address space
shmdt(shared memory);
 
Shell Assignment
 
A shell is a job control system
Allows programmer to create and manage a set of
programs to do some task
Windows, MacOS, Linux all have shells
 
Example: to compile a C program
cc –c sourcefile1.c
cc –c sourcefile2.c
ln –o program sourcefile1.o sourcefile2.o
 
System Call : fork()
 
Create a child process
Returns to both the child and parent
 
System Call : exec()
 
Run application in current process
  exec(prog, args)
 
Execl( pathname, arg[0], arg[1]…. 0)
Excelp(arg[0], arg[1]…. 0)
 
http://www.yolinux.com/TUTORIALS/ForkExecPr
ocesses.html
 
System Call:  wait()
 
Pause until child process has exited
 
w
a
i
t
(
)
:
 
B
l
o
c
k
s
 
c
a
l
l
i
n
g
 
p
r
o
c
e
s
s
 
u
n
t
i
l
 
t
h
e
 
c
h
i
l
d
 
p
r
o
c
e
s
s
t
e
r
m
i
n
a
t
e
s
.
 
I
f
 
c
h
i
l
d
 
p
r
o
c
e
s
s
 
h
a
s
 
a
l
r
e
a
d
y
 
t
e
m
i
n
a
t
e
d
,
t
h
e
 
w
a
i
t
(
)
 
c
a
l
l
 
r
e
t
u
r
n
s
 
i
m
m
e
d
i
a
t
e
l
y
.
 
i
f
 
t
h
e
 
c
a
l
l
i
n
g
p
r
o
c
e
s
s
 
h
a
s
 
m
u
l
t
i
p
l
e
 
c
h
i
l
d
 
p
r
o
c
e
s
s
e
s
,
 
t
h
e
 
f
u
n
c
t
i
o
n
r
e
t
u
r
n
s
 
w
h
e
n
 
o
n
e
 
r
e
t
u
r
n
s
.
 
w
a
i
t
p
i
d
(
)
:
 
O
p
t
i
o
n
s
 
a
v
a
i
l
a
b
l
e
 
t
o
 
b
l
o
c
k
 
c
a
l
l
i
n
g
 
p
r
o
c
e
s
s
f
o
r
 
a
 
p
a
r
t
i
c
u
l
a
r
 
c
h
i
l
d
 
p
r
o
c
e
s
s
 
n
o
t
 
t
h
e
 
f
i
r
s
t
 
o
n
e
http://www.yolinux.com/TUTORIALS/ForkExecProcesse
s.html
 
System call : system()
 
Invokes the command processor to execute
command
.
 
Uses fork() exec() and wait()
 
The call "blocks" and waits for the task to be
performed before continuing.
system(“ls –l”);
 
UNIX Signal
 
Facility for one process to send another
instant notification
Send an interrupt to a process
  
signal(processID, type)
 
Signal Handling example
http://www.yolinux.com/TUTORIALS/C++Signals.h
tml
 
System Call : dup2()
 
Replace the tofileDesc file descriptor with a
copy of the fromfiledesc file descriptor. Used
for replacing stdin or stdout or both in a child
process
dup2(fromFileDesc, toFileDesc)
 
Example:
http://www.cs.loyola.edu/~jglenn/702/S2005/Exam
ples/pipe.html
 
Implementing a Shell
 
char *prog, **args;
int child_pid;
 
// Read and parse the input a line at a time
while (readAndParseCmdLine(&prog, &args)) {
   child_pid = fork();      // create a child process
    if (child_pid == 0) {
       exec(prog, args);       // I'm the child process.  Run program
      // NOT REACHED
    } else {
       wait(child_pid);       // I'm the parent, wait for child
       return 0;
    }
}
Slide Note
Embed
Share

Interprocess communication (IPC) is essential for processes within a system to cooperate and share information. IPC facilitates message passing and shared memory, enabling processes to communicate and synchronize their actions effectively. This article explores the different models of IPC, such as message passing and shared memory, as well as examples like system pipes and direct communication methods.

  • Interprocess communication
  • IPC
  • Operating systems
  • Message passing
  • Shared memory

Uploaded on Sep 15, 2024 | 0 Views


Download Presentation

Please find below an Image/Link to download the presentation.

The content on the website is provided AS IS for your information and personal use only. It may not be sold, licensed, or shared on other websites without obtaining consent from the author. Download presentation by click this link. If you encounter any issues during the download, it is possible that the publisher has removed the file from their server.

E N D

Presentation Transcript


  1. InterProcess Communication

  2. 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) Two models of IPC Shared memory Data Transfer

  3. Cooperating Processes 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

  4. Communications Models Message Passing Shared Memory

  5. Examples of IPC System PIPES Data streaming Direct communication Ordinary pipes Producer Consumer fashion Cannot be accessed outside the process that creates it. Usually Parent Child communication Deleted when process terminates Named pipes Alias: FIFO in unix Appear as typical files in the system

  6. IPC Data Transfer 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 communicationlink between them exchange messages via send/receive Implementation of communication link physical (e.g., shared memory, hardware bus) logical (e.g., logical properties)

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

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

  9. Indirect Communication Operations create a new mailbox 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

  10. Indirect Communication Mailbox sharing P1, P2, and P3 share mailbox A P1, sends; P2and 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.

  11. Examples of IPC Systems - POSIX POSIX Message Passing Processes can exchange messages by using four system calls: msgget(mailbox_name, IPC_CREAT) Converts a mailbox name to a message queue ID (msqid). It will create the mailbox if necessary. Returns the msqid. msgsnd(msqid, message@, message_size) Sends the message to the mailbox msgrcv( msqid, message@, message_size, priority, synch/asynch) Receives the message from the mailbox msgctl(msqid, IPC_RMID, dummyParam@) Release the mailbox from process resources

  12. Communications in Client-Server Systems Sockets Remote Procedure Calls

  13. Sockets A socket is defined as an endpoint for communication Concatenation of IP address and port The socket 161.25.19.8:1625 refers to port 1625 on host 161.25.19.8 Communication consists between a pair of sockets

  14. Socket Communication

  15. Socket Communication Application Application Socket Socket Transport layer Transport layer Network layer Network layer Link Layer Link Layer Physical Layer Physical Layer

  16. Remote Procedure Calls Remote procedure call (RPC) abstracts procedure calls between processes on networked systems Stubs client-side proxy for the actual procedure on the server The client-side stub locates the server and marshalls the parameters The server-side stub receives this message, unpacks the marshalled parameters, and peforms the procedure on the server

  17. Execution of RPC

  18. Examples of IPC Systems Shared Memory POSIX Shared Memory Process first creates shared memory segment segment id = shmget(IPC PRIVATE, size, S IRUSR | S IWUSR); Process wanting access to that shared memory must attach to it shared memory = (char *) shmat(id, NULL, 0); Now the process could write to the shared memory sprintf(shared memory, "Writing to shared memory"); When done a process can detach the shared memory from its address space shmdt(shared memory);

More Related Content

giItT1WQy@!-/#giItT1WQy@!-/#giItT1WQy@!-/#giItT1WQy@!-/#giItT1WQy@!-/#giItT1WQy@!-/#giItT1WQy@!-/#giItT1WQy@!-/#giItT1WQy@!-/#