250 likes | 558 Views
Message Passing. Introduction. Overview of Message Passing Implementing Message Passing Mailboxes Higher-Level Protocols Using Message Passing Case Studies in Message Passing. Overview of Message Passing. Message passing is one way in which processes interact with one another
E N D
Introduction • Overview of Message Passing • Implementing Message Passing • Mailboxes • Higher-Level Protocols Using Message Passing • Case Studies in Message Passing
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
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
Direct and Indirect Naming • In direct naming, sender and receiver processes mention each other’s name • In symmetric naming, both sender and receiver processes specify each other’s 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 other’s name in send and receive statements
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
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 isfor storing code concerning outcome • Some exceptional conditions: • Destination process mentioned in send doesn’t 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
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
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
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
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
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
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)
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
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
Case Studies in Message Passing • Message Passing in Unix
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
Message Passing in Unix (continued) • One common feature: processes can communicate without knowing each other’s identities
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
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
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
Summary • Message passing paradigm realizes exchange of information among processes without using shared memory • Useful in: microkernel-based OSs, client–server 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