OpSy 03 CH 23
OpSy 03 CH 23
OpSy 03 CH 23
3: Interprocess
Communication
Chapter 2.3 : Interprocess
Communication
• Process concept
• Process scheduling
• Interprocess communication
• Deadlocks
• Threads
1
Producer Consomer Problem
Producer - Consumer Problem
Producer Process Consumer Process
BUFFER
2
Progressing time
Progress in time…..
Producer
p1 1 p2 2 p3 3 p4 4
Buffer
3 instead of 2!
Consumer
1 c1 2 c2
t
• Both processes are started at the same time
and consumer uses some old value initially
Ceng 334 - Operating Systems 2.3-3
3
A Race Condition
A Race Condition
4
Critical Section
Critical Sections
• Critical Section
– A section of code in which the process accesses
and modifies shared variables
• Mutual Exclusion
– A method of preventing for ensuring that one
(or a specified number) of processes are in a
critical section
5
Why Interprocess Communication?
Why Processes Need to
Communicate?
6
Rules to Interprocess Comm.
Rules to Form Critical Sections
7
Starvation
Mutual Exclusion Problem :
Starvation
• Also known as Indefinite Postponement
• Definition
– Indefinitely delaying the scheduling of a process in
favour of other processes
• Cause
– Usually a bias in a systems scheduling policies (a bad
scheduling algorithm)
• Solution
– Implement some form of aging
Ceng 334 - Operating Systems 2.3-8
8
Deadlocks
Another Problem : Deadlocks
– Two (or more) processes are blocked waiting
for an event that will never occur
9
Implementig Mutual Exclusion
How to Implement Mutual
Exclusion
• Three possibilities
– Application: programmer builds some method
into the program
– Hardware: special h/w instructions provided
to implement ME
– OS: provides some services that can
be used by the programmer
• All schemes rely on some code for
– enter_critical_section, and
– exit_critical_section
• These "functions" enclose the critical
section
Ceng 334 - Operating Systems 2.3-10
10
Application Mutual Exclusion
Application Mutual Exclusion
• Application Mutual Exclusion is
– implemented by the programmer
– hard to get correct, and
– very inefficient
• All rely on some form of busy waiting
(process tests a condition, say a flag, and
loops while the condition remains the same)
11
Test and Set
Hardware ME :
Test and Set Instruction
• Perform an indivisible x:=r and r:=1
• x is a local variable
• r is a global register set to 0 initially
12
Harware Mutal Exculison
Hardware ME :
Exchange Instruction
• Exchange: swap the values of x and r
• x is a local variable
• r is a global register set to 1 initially
• x:= 0;
repeat exchange(r, x) until x = 1;
< critical section >
exchange(r, x);
13
Characteristics
Hardware ME Characteristics
• Advantages
– can be used by a single or multiple processes
(with shared memory)
– simple and therefore easy to verify
– can support multiple critical sections
• Disadvantages
– busy waiting is used
– starvation is possible
– deadlock is possible (especially with priorities)
14
Disabling Interrups
Another Hardware ME :
Disabling Interrupts
• On a single CPU only one process is
executed
• Concurrency is achieved by interleaving
execution (usually done using interrupts)
• If you disable interrupts then you can be
sure only one process will ever execute
• One process can lock a system or degrade
performance greatly
Ceng 334 - Operating Systems 2.3-16
15
Mutual Exculusion Trough OS.
Mutual Exclusion Through OS
• Semaphores
• Message passing
16
Semaphores
Semaphores
• A semaphore is
– a non-negative integer
– that has two indivisible, valid operations
17
Semaphore Oparations
Semaphore Operations
• Wait(s)
If s > 0 then s:= s - 1
else block this process
• Signal(s)
If there is a blocked process on this
semaphore then wake it up
else s:= s + 1
Ceng 334 - Operating Systems 2.3-19
18
More on Semaphores
More on Semaphores
• The other valid operation is initialisation
• Two types of semaphores
– binary semaphores can only be 0 or 1
– counting semaphores can be any non-negative
integer
• Semaphores are an OS service implemented
using one of the methods shown already
– usually by disabling interrupts for a very short
time
Ceng 334 - Operating Systems 2.3-20
19
P-C Problem;Solution by Semephore
Producer - Consumer Problem:
Solution by Semaphores
Produce Wait(mutex)
CS Get from buffer
Wait(mutex) Signal(mutex)
Put in buffer
Signal(mutex) Consume
20
More Examples
Another Example
• Three processes all share a resource on which
– one draws an A
– one draws a B
– one draws a C
• Implement a form of synchronization so that the output
appears ABC
21
• Semaphore b = 0, c = 0;
wait(b);
think(); wait(c);
think();
draw_A(); think();
draw_B();
signal(b); draw_C();
signal(c);
22
Message Passing
Message Passing
23
P-C Problem: Using Messages
Producer - Consumer Problem
Using Messages
#define N 100 /*number of message slots*/
producer( )
{int item; message m;
while (TRUE) {
produce_item(&item);
receive(consumer,&m);
build_message(&m, item);
send(consumer,&m);
}}
Ceng 334 - Operating Systems 2.3-25
24
Consumer( )
{int item; message m;
for (i=0; i<N; i++) send(producer,&m);
while (TRUE) {
receive(producer,&m);
extract_item(&m,&item);
send(producer,&m);
consume_item(item);
}}
Ceng 334 - Operating Systems 2.3-26
25