Sie sind auf Seite 1von 25

Message Passing

Introduction

Overview of Message Passing


Implementing Message Passing
Mailboxes
Higher-Level Protocols Using Message Passing
Case Studies in Message Passing

#Sushanth KJ|Faculty,ECE|BIT, Mlore

9.2

Overview of Message Passing


Message passing is one way in which processes
interact with one another

Processes may exist in the same computer or in


different computers connected to a network
Uses of message passing:
Client-server paradigm
Backbone of higher-level communication protocols
Parallel and distributed programs
#Sushanth KJ|Faculty,ECE|BIT, Mlore

9.3

Overview of Message Passing


(continued)
Two important issues in message passing are:
Naming of processes
Names may be explicitly indicated or deduced by the kernel
in some manner

Delivery of messages
Whether sender should be blocked until delivery
What the order is in which messages are delivered to a
destination process
How exceptional conditions are handled

#Sushanth KJ|Faculty,ECE|BIT, Mlore

9.4

Direct and Indirect Naming


In direct naming, sender and receiver processes
mention each others name
In symmetric naming, both sender and receiver
processes specify each others name
In asymmetric naming, receiver does not name process
from which it wishes to receive a message; kernel gives it
a message sent to it by some process

In indirect naming, processes do not mention each


others name in send and receive statements
#Sushanth KJ|Faculty,ECE|BIT, Mlore

9.5

Blocking and Nonblocking Sends


A blocking send blocks sender process until message is
delivered to destination process
Synchronous message passing
Simplifies design of concurrent processes

A nonblocking send call permits sender to continue its


operation after send call
Asynchronous message passing
Enhances concurrency between sender and receiver

In both cases, receive is typically blocking


Kernel performs message buffering pending delivery
#Sushanth KJ|Faculty,ECE|BIT, Mlore

9.6

Exceptional Conditions in Message


Passing
To facilitate handling exceptional conditions, send and
receive take two additional parameters:
Flags indicate how exceptions should be handled
status_area is for storing code concerning outcome

Some exceptional conditions:


1.
2.
3.
4.
5.

Destination process mentioned in send doesnt exist


Source process does not exist (symmetric naming)
send cannot be processed (out of buffer memory)
No message exists for process when it makes receive
A set of processes become deadlocked when one is
blocked on a receive

#Sushanth KJ|Faculty,ECE|BIT, Mlore

9.7

Implementing Message Passing

#Sushanth KJ|Faculty,ECE|BIT, Mlore

9.8

Delivery of Interprocess Messages

Remember that:
An event control block (ECB) has three fields:
Description of the anticipated event
Id of the process that awaits the event
An ECB pointer for forming ECB lists
#Sushanth KJ|Faculty,ECE|BIT, Mlore

9.9

#Sushanth KJ|Faculty,ECE|BIT, Mlore

9.10

Mailboxes
Mailbox: repository for interprocess messages
Has a unique name
Owner is typically the process that created it

Indirect naming
Only owner process can receive messages
Any process that knows name of a mailbox can send
messages to it

Kernel may provide fixed set of mailbox names, or it


may permit user processes to assign the names
Varying levels of confidentiality

#Sushanth KJ|Faculty,ECE|BIT, Mlore

9.11

Mailboxes (continued)

#Sushanth KJ|Faculty,ECE|BIT, Mlore

9.12

Mailboxes (continued)
Kernel may require a process to explicitly connect to a
mailbox before starting to use it, and to disconnect
when it finishes using it
May permit owner to destroy it, transfer ownership, etc.

Use of a mailbox has following advantages:


Anonymity of receiver
Classification of messages
Through use of separate mailboxes for different classes

#Sushanth KJ|Faculty,ECE|BIT, Mlore

9.13

Example: Use of Mailboxes


An airline reservation system:
A set of booking processes
Server wishes to process cancellations before bookings
and queries after both of them

#Sushanth KJ|Faculty,ECE|BIT, Mlore

9.14

Higher-Level Protocols Using


Message Passing
Several protocols use message passing paradigm to
provide diverse services:
Simple mail transfer protocol (SMTP) delivers electronic
mail
Remote procedure call (RPC) is a programming language
facility for distributed computing
Invokes a part of a program that is located on a different
computer

Parallel virtual machine (PVM) and message passing


interface (MPI) are message passing standards for
parallel programming

#Sushanth KJ|Faculty,ECE|BIT, Mlore

9.15

The Simple Mail Transfer Protocol


(SMTP)
SMTP is used to deliver electronic mail to one or more
users reliably and efficiently
Uses asymmetric naming
Can deliver mail across a number of interprocess
communication environments (IPCEs )
It is an applications layer protocol: uses TCP / IP

SMTP consists of several simple commands:


MAIL, RCPT, DATA

Typically used with a protocol that provides a mailbox


Internet Message Access Protocol (IMAP)
Post Office Protocol (POP)
#Sushanth KJ|Faculty,ECE|BIT, Mlore

9.16

Remote Procedure Calls

Remote procedure call (RPC): used to invoke a part of


a program located in a different computer
Semantics resemble those of a procedure call
call <proc_id> (<message>);

<message> is a list of parameters


Stubs perform marshaling of parameters and convert them
to/from machine independent representations

SunRPC and OSF/DCE standards, Java RMI


#Sushanth KJ|Faculty,ECE|BIT, Mlore

9.17

Message Passing Standards for


Parallel Programming
Parallel program: set of tasks that can be performed in
parallel
Executed on a heterogeneous set of computers or on a
massively parallel processor (MPP)

Parallel virtual machine (PVM) and message passing


interface (MPI) are standards used in coding message
passing libraries; provide:
Point-to-point communication between processes
Barrier synchronization between processes
Global operations for scattering (gathering) disjoint
portions of data in a message to (from) different
processes
#Sushanth KJ|Faculty,ECE|BIT, Mlore

9.18

Case Studies in Message Passing


Message Passing in Unix

#Sushanth KJ|Faculty,ECE|BIT, Mlore

9.19

Message Passing in Unix


Three interprocess communication facilities:
Pipe:
Data transfer facility
Unnamed pipes can be used only by processes that belong
to the same process tree

Message queue: analogous to a mailbox


Used by processes within Unix system domain
Access permissions indicate which processes can send or
receive messages

Socket: one end of a communication path


Can be used for setting up communication paths between
processes within the Unix system domain and within certain
Internet domains
#Sushanth KJ|Faculty,ECE|BIT, Mlore

9.20

Message Passing in Unix (continued)


One common feature: processes can communicate
without knowing each others identities

#Sushanth KJ|Faculty,ECE|BIT, Mlore

9.21

Message Passing in Unix: Pipes


FIFO mechanism for data transfer between processes
called reader and writer processes
Usually implemented in file system
But, data put into a pipe can be read only once
Removed from pipe when it is read by a process

Two kinds of pipes: named and unnamed


Created through the system call pipe
A named pipe has an entry in a directory

Like a file, but size is limited and kernel treats it as a


queue
#Sushanth KJ|Faculty,ECE|BIT, Mlore

9.22

Message Passing in Unix: Message


Queues
Analogous to a mailbox
Created and owned by one process
Creator specifies access permissions for send/receive

Size specified at the time of its creation

#Sushanth KJ|Faculty,ECE|BIT, Mlore

9.23

Message Passing in Unix: Sockets


A socket is one end of a communication path
Can be used for interprocess communication within the
Unix system domain and in the Internet domain

Server can set up communication paths with many


clients simultaneously
Typically, after connect call, server forks a new process to
handle the new connection
Leaves original socket created by server process free to
accept more connections

Indirect naming: address (domain) used instead of


process ids
#Sushanth KJ|Faculty,ECE|BIT, Mlore

9.24

Summary
Message passing paradigm realizes exchange of
information among processes without using shared
memory
Useful in: microkernel-based OSs, clientserver
computing, higher-level communication protocols, and
parallel or distributed programs
Sender/receiver naming: symmetric, asymmetric,
indirect (mailbox)
Message passing is employed in higher-level protocols
such as SMTP, RPC, PVM, and MPI

#Sushanth KJ|Faculty,ECE|BIT, Mlore

9.25

Das könnte Ihnen auch gefallen