Lecture OS - University of Wisconsin

Download Report

Transcript Lecture OS - University of Wisconsin

Computer Architecture and
Operating Systems
CS 3230: Operating System Section
Lecture OS-4
Process Communication
Department of Computer Science and Software Engineering
University of Wisconsin-Platteville
Outlines
 Cooperating Process
 Inter-Process Communication
 Communication by Memory Sharing
Concurrency
 Multiple applications
 Multiprogramming
 Structured application
 Application can be a set of concurrent processes
 Operating-system structure
 Operating system is a set of processes or threads
Cooperating Processes
 Process Types:
 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
 Computation speed-up
• Improve performance by overlapping activities or
performing work in parallel


Enable an application to have a better program structure
as a set of cooperating processes
Information sharing
Cooperating Processes
 Cooperating issues:
 How do the processes communicate?
 How do the processes share data?
 Operating System Concerns:
 Keep track of active processes
 Allocate and de-allocate resources
 Protect data and resources
 Result of process must be independent of the speed of
execution of other concurrent processes
Process Communications
 Communication types:
 Message passing : Inter-Process Communication (IPC)
 Shared Memory
Inter-Process Communication
 Mechanism for processes to communicate
 IPC facility provides two operations:
 send (message) – message size fixed or variable
 receive (message)
 The communicating processes can be (peer to
peer) or (client-server)
 If P and Q wish to communicate, they need to:


establish a communication link between them
exchange messages via send/receive
IPC Addressing: Direct
 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
IPC Addressing: Indirect
 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
IPC Addressing: Indirect
 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
IPC Addressing: Indirect
 Mailbox sharing problem
 P1, P2, and P3 share mailbox A
 P1, sends; P2 and 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
IPC Synchronization
 Process can:
 block until the message is sent/received (blocking) safer, easier to code, slower
 proceed immediately (non-blocking) - faster, harder to
code, riskier, needs OS support
 Process can:
 block until the message it sent is received (synchronous)
- easier to code, deadlock, slower
 proceed without receipt confirmation (asynchronous) faster, needs message acknowledgement
IPC Link Buffering
 Link Capacity : the number of message that can be
temporarily queued in a given link
 Zero capacity: (queue of length 0)


No messages wait
Sender must block until receiver receives the message
 Limited capacity: (queue of length n)
 If receiver’s queue is not full, new message is put on
queue, and sender can continue executing immediately
 If queue is full, sender must block until space is available
in the queue
 Unlimited capacity: (infinite queue)
 Sender can always continue
Cooperation Among Processes
by Memory Sharing
 One process is a producer of information; another
is a consumer of that information
 Processes communicate through shared variables


Producer writes data to a shared buffer
Consumer reads data from the shared buffer
 Shared buffer:
 unbounded-buffer no practical limit on the size of the
buffer
 bounded-buffer there is a fixed buffer size
 Synchronization problems
 Critical section problem (next lecture)
Example: Bounded Buffer
Shared data
#define BUFFER_SIZE 10
typedef struct {
. . .
} item;
item buffer[BUFFER_SIZE];
int in = 0;
int out = 0;
int counter = 0;
Example: Bounded Buffer
Producer process
item nextProduced;
while (1) {
while (counter == BUFFER_SIZE)
; /* do nothing */
buffer[in] = nextProduced;
in = (in + 1) % BUFFER_SIZE;
counter++;
}
Example: Bounded Buffer
Consumer process
item nextConsumed;
while (1) {
while (counter == 0)
; /* do nothing */
nextConsumed = buffer[out];
out = (out + 1) % BUFFER_SIZE;
counter--;
}