Download presentation
Presentation is loading. Please wait.
Published byJoan Boyd Modified over 9 years ago
1
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
2
Outlines Cooperating Process Inter-Process Communication Communication by Memory Sharing
3
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
4
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
5
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
6
Process Communications Communication types: Message passing : Inter-Process Communication (IPC) Shared Memory
7
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
8
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
9
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
10
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
11
IPC Addressing: Indirect Mailbox sharing problem 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
12
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
13
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
14
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)
15
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;
16
Example: Bounded Buffer Producer process item nextProduced; while (1) { while (counter == BUFFER_SIZE) ; /* do nothing */ buffer[in] = nextProduced; in = (in + 1) % BUFFER_SIZE; counter++; }
17
Example: Bounded Buffer Consumer process item nextConsumed; while (1) { while (counter == 0) ; /* do nothing */ nextConsumed = buffer[out]; out = (out + 1) % BUFFER_SIZE; counter--; }
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.