SlideShare a Scribd company logo
1 of 44
08/19/13Page 1
Inter-Process Communication
and Synchronization
B. Ramamurthy
08/19/13Page 2
Introduction
• An important and fundamental feature in modern
operating systems is concurrent execution of
processes/threads. This feature is essential for the
realization of multiprogramming, multiprocessing,
distributed systems, and client-server model of
computation.
• Concurrency encompasses many design issues
including communication and synchronization
among processes, sharing of and contention for
resources.
• In this discussion we will look at the various design
issues/problems and the wide variety of solutions
available.
08/19/13Page 3
Topics for discussion
• The principles of concurrency
• Interactions among processes
• Mutual exclusion problem
• Mutual exclusion- solutions
– Software approaches (Dekker’s and Peterson’s)
– Hardware support (test and set atomic operation)
– OS solution (semaphores)
– PL solution (monitors)
– Distributed OS solution ( message passing)
• Reader/writer problem
• Dining Philosophers Problem
08/19/13Page 4
Principles of Concurrency
• Interleaving and overlapping the execution of
processes.
• Consider two processes P1 and P2 executing
the function echo:
{
input (in, keyboard);
out = in;
output (out, display);
}
08/19/13Page 5
...Concurrency (contd.)
• P1 invokes echo, after it inputs into in , gets interrupted (switched).
P2 invokes echo, inputs into in and completes the execution and
exits. When P1 returns in is overwritten and gone. Result: first ch is
lost and second ch is written twice.
• This type of situation is even more probable in multiprocessing
systems where real concurrency is realizable thru’ multiple
processes executing on multiple processors.
• Solution: Controlled access to shared resource
– Protect the shared resource : in buffer; “critical resource”
– one process/shared code. “critical region”
08/19/13Page 6
Interactions among processes
• In a multi-process application these are the various degrees of
interaction:
1. Competing processes: Processes themselves do not share
anything. But OS has to share the system resources among
these processes “competing” for system resources such as
disk, file or printer.
Co-operating processes : Results of one or more processes
may be needed for another process.
2. Co-operation by sharing : Example: Sharing of an IO buffer.
Concept of critical section. (indirect)
3. Co-operation by communication : Example: typically no
data sharing, but co-ordination thru’ synchronization becomes
essential in certain applications. (direct)
08/19/13Page 7
Interactions ...(contd.)
• Among the three kinds of interactions
indicated by 1, 2 and 3 above:
• 1 is at the system level: potential problems :
deadlock and starvation.
• 2 is at the process level : significant problem
is in realizing mutual exclusion.
• 3 is more a synchronization problem.
• We will study mutual exclusion and
synchronization here, and defer deadlock,
and starvation for a later time.
08/19/13Page 8
Race Condition
• Race condition: The situation where
several processes access – and
manipulate shared data concurrently.
The final value of the shared data
depends upon which process finishes
last.
• To prevent race conditions, concurrent
processes must be synchronized.
08/19/13Page 9
Mutual exclusion problem
• Successful use of concurrency among
processes requires the ability to define
critical sections and enforce mutual
exclusion.
• Critical section : is that part of the process
code that affects the shared resource.
• Mutual exclusion: in the use of a shared
resource is provided by making its access
mutually exclusive among the processes that
share the resource.
• This is also known as the Critical Section
(CS) problem.
08/19/13Page 10
Mutual exclusion
• Any facility that provides mutual exclusion
should meet these requirements:
1. No assumption regarding the relative speeds of
the processes.
2. A process is in its CS for a finite time only.
3. Only one process allowed in the CS.
4. Process requesting access to CS should not
wait indefinitely.
5. A process waiting to enter CS cannot be
blocking a process in CS or any other
processes.
08/19/13Page 11
Software Solutions: Algorithm 1
• Process 0
• ...
• while turn != 0 do
• nothing;
• // busy waiting
• < Critical Section>
• turn = 1;
• ...
Problems : Strict
alternation, Busy
Waiting
• Process 1
• ...
• while turn != 1 do
• nothing;
• // busy waiting
• < Critical Section>
• turn = 0;
• ...
08/19/13Page 12
Algorithm 2
• PROCESS 0
• ...
• flag[0] = TRUE;
• while flag[1] do nothing;
• <CRITICAL SECTION>
• flag[0] = FALSE;
PROBLEM : Potential
for deadlock, if one
of the processes fail
within CS.
• PROCESS 1
• ...
• flag[1] = TRUE;
• while flag[0] do nothing;
• <CRITICAL SECTION>
• flag[1] = FALSE;
08/19/13Page 13
Algorithm 3
• Combined shared variables of algorithms 1 and
2.
• Process Pi
do {
flag [i]:= true;
turn = j;
while (flag [j] and turn = j) ;
critical section
flag [i] = false;
remainder section
} while (1);
• Solves the critical-section problem for two
processes.
08/19/13Page 14
Synchronization Hardware
• Test and modify the content of a word atomically
.
boolean TestAndSet(boolean &target) {
boolean rv = target;
target = true;
return rv;
}
08/19/13Page 15
Mutual Exclusion with Test-
and-Set
• Shared data:
boolean lock = false;
• Process Pi
do {
while (TestAndSet(lock)) ;
critical section
lock = false;
remainder section
}
08/19/13Page 16
Synchronization Hardware
• Atomically swap two variables.
void Swap(boolean &a, boolean
&b) {
boolean temp = a;
a = b;
b = temp;
}
08/19/13Page 17
Mutual Exclusion with Swap
• Shared data (initialized to false):
boolean lock;
• Process Pi
do {
key = true;
while (key == true)
Swap(lock,key);
critical section
lock = false;
remainder section
}
08/19/13Page 18
Semaphores
• Think about a semaphore as a class
• Attributes: semaphore value, Functions: init,
wait, signal
• Support provided by OS
• Considered an OS resource, a limited number
available: a limited number of instances
(objects) of semaphore class is allowed.
• Can easily implement mutual exclusion among
any number of processes.
08/19/13Page 19
Critical Section of n Processes
• Shared data:
Semaphore mutex; //initially mutex =
1
• Process Pi:
do {
mutex.wait();
critical section
mutex.signal();
remainder section
} while (1);
08/19/13Page 20
Semaphore Implementation
• Define a semaphore as a class:
class Semaphore
{ int value; // semaphore value
ProcessQueue L; // process queue
//operations
wait()
signal()
}
• In addition, two simple utility operations:
– block() suspends the process that invokes it.
– Wakeup() resumes the execution of a blocked process P.
08/19/13Page 21
Semantics of wait and signal
• Semaphore operations now defined as
S.wait():
S.value--;
if (S.value < 0) {
add this process to S.L;
block(); // block a process
}
S.signal():
S.value++;
if (S.value <= 0) {
remove a process P from S.L;
wakeup(); // wake a process
}
08/19/13Page 22
Semaphores for CS
• Semaphore is initialized to 1. The first process that
executes a wait() will be able to immediately enter the
critical section (CS). (S.wait() makes S value zero.)
• Now other processes wanting to enter the CS will each
execute the wait() thus decrementing the value of S, and
will get blocked on S. (If at any time value of S is
negative, its absolute value gives the number of
processes waiting blocked. )
• When a process in CS departs, it executes S.signal()
which increments the value of S, and will wake up any
one of the processes blocked. The queue could be FIFO
or priority queue.
08/19/13Page 23
Two Types of Semaphores
• Counting semaphore – integer value
can range over an unrestricted
domain.
• Binary semaphore – integer value
can range only between 0 and 1; can
be simpler to implement. ex: nachos
• Can implement a counting
semaphore using a binary
semaphore.
08/19/13Page 24
Semaphore for Synchronization
• Execute B in Pj only after A executed in
Pi
• Use semaphore flag initialized to 0
• Code:
Pi Pj
 
A flag.wait()
flag.signal() B
08/19/13Page 25
Classical Problems of
Synchronization
• Bounded-Buffer Problem
• Readers and Writers Problem
• Dining-Philosophers Problem
08/19/13Page 26
Producer/Consumer problem
• Producer
repeat
produce item v;
b[in] = v;
in = in + 1;
forever;
• Consumer
repeat
while (in <= out) nop;
w = b[out];
out = out + 1;
consume w;
forever;
08/19/13Page 27
Solution for P/C using
Semaphores
• Producer
• repeat
• produce item v;
• MUTEX.wait();
• b[in] = v;
• in = in + 1;
• MUTEX.signal();
• forever;
• What if Producer is
slow or late?
• Consumer
• repeat
• while (in <= out) nop;
• MUTEX.wait();
• w = b[out];
• out = out + 1;
• MUTEX.signal();
• consume w;
• forever;
• Ans: Consumer will
busy-wait at the
while statement.
08/19/13Page 28
P/C: improved solution
• Producer
repeat
produce item v;
MUTEX.wait();
b[in] = v;
in = in + 1;
MUTEX.signal();
AVAIL.signal();
forever;
• What will be the initial
values of MUTEX and
AVAIL?
• Consumer
repeat
AVAIL.wait();
MUTEX.wait();
w = b[out];
out = out + 1;
MUTEX.signal();
consume w;
forever;
• ANS: Initially MUTEX =
1, AVAIL = 0.
08/19/13Page 29
P/C problem: Bounded buffer
• Producer
repeat
produce item v;
while((in+1)%n == out)
NOP;
b[in] = v;
in = ( in + 1)% n;
forever;
• How to enforce
bufsize?
• Consumer
repeat
while (in == out) NOP;
w = b[out];
out = (out + 1)%n;
consume w;
forever;
• ANS: Using another
counting
semaphore.
08/19/13Page 30
P/C: Bounded Buffer solution
• Producer
repeat
produce item v;
BUFSIZE.wait();
MUTEX.wait();
b[in] = v;
in = (in + 1)%n;
MUTEX.signal();
AVAIL.signal();
forever;
• What is the initial value
of BUFSIZE?
• Consumer
repeat
AVAIL.wait();
MUTEX.wait();
w = b[out];
out = (out + 1)%n;
MUTEX.signal();
BUFSIZE.signal();
consume w;
forever;
• ANS: size of the
bounded buffer.
08/19/13Page 31
Semaphores - comments
• Intuitively easy to use.
• wait() and signal() are to be implemented as atomic
operations.
• Difficulties:
– signal() and wait() may be exchanged
inadvertently by the programmer. This may result
in deadlock or violation of mutual exclusion.
– signal() and wait() may be left out.
• Related wait() and signal() may be scattered all over
the code among the processes.
08/19/13Page 32
Monitors
• Monitor is a predecessor of the “class” concept.
• Initially it was implemented as a programming
language construct and more recently as library. The
latter made the monitor facility available for general
use with any PL.
• Monitor consists of procedures, initialization
sequences, and local data. Local data is accessible
only thru’ monitor’s procedures. Only one process can
be executing in a monitor at a time. Other process that
need the monitor wait suspended.
08/19/13Page 33
Monitors
monitor monitor-name
{
shared variable declarations
procedure body P1 (…) {
. . .}
procedure body P2 (…) {
. . .}
procedure body Pn (…) {
. . .}
{
initialization code
}
}
08/19/13Page 34
Monitors
• To allow a process to wait within the monitor, a
condition variable must be declared, as
condition x, y;
• Condition variable can only be used with the
operations wait and signal.
– The operation
x.wait();
means that the process invoking this operation
is suspended until another process invokes
x.signal();
– The x.signal operation resumes exactly one
suspended process. If no process is
suspended, then the signal operation has no
effect.
08/19/13Page 35
Schematic View of a Monitor
08/19/13Page 36
Monitor With Condition
Variables
08/19/13Page 37
Message passing
• Both synchronization and communication
requirements are taken care of by this
mechanism.
• More over, this mechanism yields to
synchronization methods among distributed
processes.
• Basic primitives are:
send (destination, message);
receive ( source, message);
08/19/13Page 38
Issues in message passing
• Send and receive: could be blocking or non-blocking:
– Blocking send: when a process sends a message it blocks
until the message is received at the destination.
– Non-blocking send: After sending a message the sender
proceeds with its processing without waiting for it to reach
the destination.
– Blocking receive: When a process executes a receive it
waits blocked until the receive is completed and the required
message is received.
– Non-blocking receive: The process executing the receive
proceeds without waiting for the message(!).
• Blocking Receive/non-blocking send is a common combination.
08/19/13Page 39
Reader/Writer problem
• Data is shared among a number of processes.
• Any number of reader processes could be accessing the
shared data concurrently.
• But when a writer process wants to access, only that process
must be accessing the shared data. No reader should be
present.
• Solution 1 : Readers have priority; If a reader is in CS any
number of readers could enter irrespective of any writer
waiting to enter CS.
• Solution 2: If a writer wants CS as soon as the CS is available
writer enters it.
08/19/13Page 40
Reader/writer: Priority
Readers
• Writer:
ForCS.wait();
CS;
ForCS.signal();
• Reader:
ES.wait();
NumRdr = NumRdr + 1;
if NumRdr = 1 ForCS.wait();
ES.signal();
CS;
ES.wait();
NumRdr = NumRdr -1;
If NumRdr = 0 ForCS.signal();
ES.signal();
08/19/13Page 41
Dining Philosophers Example
monitor dp
{
enum {thinking, hungry, eating}
state[5];
condition self[5];
void pickup(int i) // following
slides
void putdown(int i) // following slides
void test(int i) // following
slides
void init() {
for (int i = 0; i < 5; i++)
state[i] = thinking;}
}
08/19/13Page 42
Dining Philosophers
void pickup(int i) {
state[i] = hungry;
test[i];
if (state[i] != eating)
self[i].wait();
}
void putdown(int i) {
state[i] = thinking;
// test left and right neighbors
test((i+4) % 5);
test((i+1) % 5);
08/19/13Page 43
Dining Philosophers
void test(int i) {
if ( (state[(I + 4) % 5] !=
eating) &&
(state[i] == hungry) &&
(state[(i + 1) % 5] !=
eating)) {
state[i] = eating;
self[i].signal();
}
08/19/13Page 44
Summary
• We looked at various ways/levels of realizing
synchronization among concurrent
processes.
• Synchronization at the kernel level is usually
solved using hardware mechanisms such as
interrupt priority levels, basic hardware lock,
using non-preemptive kernel (older BSDs),
using special signals.

More Related Content

What's hot

Synchronization hardware
Synchronization hardwareSynchronization hardware
Synchronization hardwareSaeram Butt
 
Process synchronization
Process synchronizationProcess synchronization
Process synchronizationAli Ahmad
 
Process synchronization(deepa)
Process synchronization(deepa)Process synchronization(deepa)
Process synchronization(deepa)Nagarajan
 
Mutual Exclusion using Peterson's Algorithm
Mutual Exclusion using Peterson's AlgorithmMutual Exclusion using Peterson's Algorithm
Mutual Exclusion using Peterson's AlgorithmSouvik Roy
 
Operating Systems - "Chapter 5 Process Synchronization"
Operating Systems - "Chapter 5 Process Synchronization"Operating Systems - "Chapter 5 Process Synchronization"
Operating Systems - "Chapter 5 Process Synchronization"Ra'Fat Al-Msie'deen
 
Process Synchronization And Deadlocks
Process Synchronization And DeadlocksProcess Synchronization And Deadlocks
Process Synchronization And Deadlockstech2click
 
Chapter 6 - Process Synchronization
Chapter 6 - Process SynchronizationChapter 6 - Process Synchronization
Chapter 6 - Process SynchronizationWayne Jones Jnr
 
Process Synchronization
Process SynchronizationProcess Synchronization
Process SynchronizationSonali Chauhan
 
Operating System-Ch6 process synchronization
Operating System-Ch6 process synchronizationOperating System-Ch6 process synchronization
Operating System-Ch6 process synchronizationSyaiful Ahdan
 
Unit II - 3 - Operating System - Process Synchronization
Unit II - 3 - Operating System - Process SynchronizationUnit II - 3 - Operating System - Process Synchronization
Unit II - 3 - Operating System - Process Synchronizationcscarcas
 
Implementation of Election Algorithm of Distributed Systems in Client-Server ...
Implementation of Election Algorithm of Distributed Systems in Client-Server ...Implementation of Election Algorithm of Distributed Systems in Client-Server ...
Implementation of Election Algorithm of Distributed Systems in Client-Server ...Mushfekur Rahman
 
Ch7 Process Synchronization galvin
Ch7 Process Synchronization galvinCh7 Process Synchronization galvin
Ch7 Process Synchronization galvinShubham Singh
 

What's hot (13)

Synchronization hardware
Synchronization hardwareSynchronization hardware
Synchronization hardware
 
Os module 2 c
Os module 2 cOs module 2 c
Os module 2 c
 
Process synchronization
Process synchronizationProcess synchronization
Process synchronization
 
Process synchronization(deepa)
Process synchronization(deepa)Process synchronization(deepa)
Process synchronization(deepa)
 
Mutual Exclusion using Peterson's Algorithm
Mutual Exclusion using Peterson's AlgorithmMutual Exclusion using Peterson's Algorithm
Mutual Exclusion using Peterson's Algorithm
 
Operating Systems - "Chapter 5 Process Synchronization"
Operating Systems - "Chapter 5 Process Synchronization"Operating Systems - "Chapter 5 Process Synchronization"
Operating Systems - "Chapter 5 Process Synchronization"
 
Process Synchronization And Deadlocks
Process Synchronization And DeadlocksProcess Synchronization And Deadlocks
Process Synchronization And Deadlocks
 
Chapter 6 - Process Synchronization
Chapter 6 - Process SynchronizationChapter 6 - Process Synchronization
Chapter 6 - Process Synchronization
 
Process Synchronization
Process SynchronizationProcess Synchronization
Process Synchronization
 
Operating System-Ch6 process synchronization
Operating System-Ch6 process synchronizationOperating System-Ch6 process synchronization
Operating System-Ch6 process synchronization
 
Unit II - 3 - Operating System - Process Synchronization
Unit II - 3 - Operating System - Process SynchronizationUnit II - 3 - Operating System - Process Synchronization
Unit II - 3 - Operating System - Process Synchronization
 
Implementation of Election Algorithm of Distributed Systems in Client-Server ...
Implementation of Election Algorithm of Distributed Systems in Client-Server ...Implementation of Election Algorithm of Distributed Systems in Client-Server ...
Implementation of Election Algorithm of Distributed Systems in Client-Server ...
 
Ch7 Process Synchronization galvin
Ch7 Process Synchronization galvinCh7 Process Synchronization galvin
Ch7 Process Synchronization galvin
 

Similar to Ipc feb4

Lecture 5- Process Synchonization_revised.pdf
Lecture 5- Process Synchonization_revised.pdfLecture 5- Process Synchonization_revised.pdf
Lecture 5- Process Synchonization_revised.pdfAmanuelmergia
 
Process synchronization in Operating Systems
Process synchronization in Operating SystemsProcess synchronization in Operating Systems
Process synchronization in Operating SystemsRitu Ranjan Shrivastwa
 
BIL406-Chapter-9-Synchronization and Communication in MIMD Systems.ppt
BIL406-Chapter-9-Synchronization and Communication in MIMD Systems.pptBIL406-Chapter-9-Synchronization and Communication in MIMD Systems.ppt
BIL406-Chapter-9-Synchronization and Communication in MIMD Systems.pptKadri20
 
MODULE 3 process synchronizationnnn.pptx
MODULE 3 process synchronizationnnn.pptxMODULE 3 process synchronizationnnn.pptx
MODULE 3 process synchronizationnnn.pptxsenthilkumar969017
 
Producer Consumer Problem in C explained.ppt
Producer Consumer Problem in C explained.pptProducer Consumer Problem in C explained.ppt
Producer Consumer Problem in C explained.pptossama8
 
Mike Bartley - Innovations for Testing Parallel Software - EuroSTAR 2012
Mike Bartley - Innovations for Testing Parallel Software - EuroSTAR 2012Mike Bartley - Innovations for Testing Parallel Software - EuroSTAR 2012
Mike Bartley - Innovations for Testing Parallel Software - EuroSTAR 2012TEST Huddle
 
Lecture 5 process synchronization
Lecture 5 process synchronizationLecture 5 process synchronization
Lecture 5 process synchronizationKlintonChhun
 
Lecture 5- Process Synchronization (1).pptx
Lecture 5- Process Synchronization (1).pptxLecture 5- Process Synchronization (1).pptx
Lecture 5- Process Synchronization (1).pptxAmanuelmergia
 
Process Synchronization -1.ppt
Process Synchronization -1.pptProcess Synchronization -1.ppt
Process Synchronization -1.pptjayverma27
 
2 years into drinking the Microservice kool-aid (Fact and Fiction)
2 years into drinking the Microservice kool-aid (Fact and Fiction)2 years into drinking the Microservice kool-aid (Fact and Fiction)
2 years into drinking the Microservice kool-aid (Fact and Fiction)roblund
 
mobile development with androiddfdgdfhdgfdhf.pptx
mobile development with androiddfdgdfhdgfdhf.pptxmobile development with androiddfdgdfhdgfdhf.pptx
mobile development with androiddfdgdfhdgfdhf.pptxNgLQun
 
Performance tuning Grails applications SpringOne 2GX 2014
Performance tuning Grails applications SpringOne 2GX 2014Performance tuning Grails applications SpringOne 2GX 2014
Performance tuning Grails applications SpringOne 2GX 2014Lari Hotari
 
Async Web Frameworks in Python
Async Web Frameworks in PythonAsync Web Frameworks in Python
Async Web Frameworks in PythonRyan Johnson
 
Realtime traffic analyser
Realtime traffic analyserRealtime traffic analyser
Realtime traffic analyserAlex Moskvin
 
Simplifying Disaster Recovery with Delta Lake
Simplifying Disaster Recovery with Delta LakeSimplifying Disaster Recovery with Delta Lake
Simplifying Disaster Recovery with Delta LakeDatabricks
 

Similar to Ipc feb4 (20)

Ipc feb4
Ipc feb4Ipc feb4
Ipc feb4
 
Lecture 5- Process Synchonization_revised.pdf
Lecture 5- Process Synchonization_revised.pdfLecture 5- Process Synchonization_revised.pdf
Lecture 5- Process Synchonization_revised.pdf
 
Process synchronization in Operating Systems
Process synchronization in Operating SystemsProcess synchronization in Operating Systems
Process synchronization in Operating Systems
 
1 Synchronization.pptx
1 Synchronization.pptx1 Synchronization.pptx
1 Synchronization.pptx
 
BIL406-Chapter-9-Synchronization and Communication in MIMD Systems.ppt
BIL406-Chapter-9-Synchronization and Communication in MIMD Systems.pptBIL406-Chapter-9-Synchronization and Communication in MIMD Systems.ppt
BIL406-Chapter-9-Synchronization and Communication in MIMD Systems.ppt
 
OS_Ch06.pdf
OS_Ch06.pdfOS_Ch06.pdf
OS_Ch06.pdf
 
CHAP4.pptx
CHAP4.pptxCHAP4.pptx
CHAP4.pptx
 
MODULE 3 process synchronizationnnn.pptx
MODULE 3 process synchronizationnnn.pptxMODULE 3 process synchronizationnnn.pptx
MODULE 3 process synchronizationnnn.pptx
 
Producer Consumer Problem in C explained.ppt
Producer Consumer Problem in C explained.pptProducer Consumer Problem in C explained.ppt
Producer Consumer Problem in C explained.ppt
 
Mike Bartley - Innovations for Testing Parallel Software - EuroSTAR 2012
Mike Bartley - Innovations for Testing Parallel Software - EuroSTAR 2012Mike Bartley - Innovations for Testing Parallel Software - EuroSTAR 2012
Mike Bartley - Innovations for Testing Parallel Software - EuroSTAR 2012
 
Lecture 5 process synchronization
Lecture 5 process synchronizationLecture 5 process synchronization
Lecture 5 process synchronization
 
Lecture 5- Process Synchronization (1).pptx
Lecture 5- Process Synchronization (1).pptxLecture 5- Process Synchronization (1).pptx
Lecture 5- Process Synchronization (1).pptx
 
Process Synchronization -1.ppt
Process Synchronization -1.pptProcess Synchronization -1.ppt
Process Synchronization -1.ppt
 
2 years into drinking the Microservice kool-aid (Fact and Fiction)
2 years into drinking the Microservice kool-aid (Fact and Fiction)2 years into drinking the Microservice kool-aid (Fact and Fiction)
2 years into drinking the Microservice kool-aid (Fact and Fiction)
 
mobile development with androiddfdgdfhdgfdhf.pptx
mobile development with androiddfdgdfhdgfdhf.pptxmobile development with androiddfdgdfhdgfdhf.pptx
mobile development with androiddfdgdfhdgfdhf.pptx
 
Performance tuning Grails applications SpringOne 2GX 2014
Performance tuning Grails applications SpringOne 2GX 2014Performance tuning Grails applications SpringOne 2GX 2014
Performance tuning Grails applications SpringOne 2GX 2014
 
Async Web Frameworks in Python
Async Web Frameworks in PythonAsync Web Frameworks in Python
Async Web Frameworks in Python
 
Lecture 5 inter process communication
Lecture 5 inter process communicationLecture 5 inter process communication
Lecture 5 inter process communication
 
Realtime traffic analyser
Realtime traffic analyserRealtime traffic analyser
Realtime traffic analyser
 
Simplifying Disaster Recovery with Delta Lake
Simplifying Disaster Recovery with Delta LakeSimplifying Disaster Recovery with Delta Lake
Simplifying Disaster Recovery with Delta Lake
 

Recently uploaded

Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostZilliz
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfRankYa
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfPrecisely
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 

Recently uploaded (20)

Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdf
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 

Ipc feb4

  • 1. 08/19/13Page 1 Inter-Process Communication and Synchronization B. Ramamurthy
  • 2. 08/19/13Page 2 Introduction • An important and fundamental feature in modern operating systems is concurrent execution of processes/threads. This feature is essential for the realization of multiprogramming, multiprocessing, distributed systems, and client-server model of computation. • Concurrency encompasses many design issues including communication and synchronization among processes, sharing of and contention for resources. • In this discussion we will look at the various design issues/problems and the wide variety of solutions available.
  • 3. 08/19/13Page 3 Topics for discussion • The principles of concurrency • Interactions among processes • Mutual exclusion problem • Mutual exclusion- solutions – Software approaches (Dekker’s and Peterson’s) – Hardware support (test and set atomic operation) – OS solution (semaphores) – PL solution (monitors) – Distributed OS solution ( message passing) • Reader/writer problem • Dining Philosophers Problem
  • 4. 08/19/13Page 4 Principles of Concurrency • Interleaving and overlapping the execution of processes. • Consider two processes P1 and P2 executing the function echo: { input (in, keyboard); out = in; output (out, display); }
  • 5. 08/19/13Page 5 ...Concurrency (contd.) • P1 invokes echo, after it inputs into in , gets interrupted (switched). P2 invokes echo, inputs into in and completes the execution and exits. When P1 returns in is overwritten and gone. Result: first ch is lost and second ch is written twice. • This type of situation is even more probable in multiprocessing systems where real concurrency is realizable thru’ multiple processes executing on multiple processors. • Solution: Controlled access to shared resource – Protect the shared resource : in buffer; “critical resource” – one process/shared code. “critical region”
  • 6. 08/19/13Page 6 Interactions among processes • In a multi-process application these are the various degrees of interaction: 1. Competing processes: Processes themselves do not share anything. But OS has to share the system resources among these processes “competing” for system resources such as disk, file or printer. Co-operating processes : Results of one or more processes may be needed for another process. 2. Co-operation by sharing : Example: Sharing of an IO buffer. Concept of critical section. (indirect) 3. Co-operation by communication : Example: typically no data sharing, but co-ordination thru’ synchronization becomes essential in certain applications. (direct)
  • 7. 08/19/13Page 7 Interactions ...(contd.) • Among the three kinds of interactions indicated by 1, 2 and 3 above: • 1 is at the system level: potential problems : deadlock and starvation. • 2 is at the process level : significant problem is in realizing mutual exclusion. • 3 is more a synchronization problem. • We will study mutual exclusion and synchronization here, and defer deadlock, and starvation for a later time.
  • 8. 08/19/13Page 8 Race Condition • Race condition: The situation where several processes access – and manipulate shared data concurrently. The final value of the shared data depends upon which process finishes last. • To prevent race conditions, concurrent processes must be synchronized.
  • 9. 08/19/13Page 9 Mutual exclusion problem • Successful use of concurrency among processes requires the ability to define critical sections and enforce mutual exclusion. • Critical section : is that part of the process code that affects the shared resource. • Mutual exclusion: in the use of a shared resource is provided by making its access mutually exclusive among the processes that share the resource. • This is also known as the Critical Section (CS) problem.
  • 10. 08/19/13Page 10 Mutual exclusion • Any facility that provides mutual exclusion should meet these requirements: 1. No assumption regarding the relative speeds of the processes. 2. A process is in its CS for a finite time only. 3. Only one process allowed in the CS. 4. Process requesting access to CS should not wait indefinitely. 5. A process waiting to enter CS cannot be blocking a process in CS or any other processes.
  • 11. 08/19/13Page 11 Software Solutions: Algorithm 1 • Process 0 • ... • while turn != 0 do • nothing; • // busy waiting • < Critical Section> • turn = 1; • ... Problems : Strict alternation, Busy Waiting • Process 1 • ... • while turn != 1 do • nothing; • // busy waiting • < Critical Section> • turn = 0; • ...
  • 12. 08/19/13Page 12 Algorithm 2 • PROCESS 0 • ... • flag[0] = TRUE; • while flag[1] do nothing; • <CRITICAL SECTION> • flag[0] = FALSE; PROBLEM : Potential for deadlock, if one of the processes fail within CS. • PROCESS 1 • ... • flag[1] = TRUE; • while flag[0] do nothing; • <CRITICAL SECTION> • flag[1] = FALSE;
  • 13. 08/19/13Page 13 Algorithm 3 • Combined shared variables of algorithms 1 and 2. • Process Pi do { flag [i]:= true; turn = j; while (flag [j] and turn = j) ; critical section flag [i] = false; remainder section } while (1); • Solves the critical-section problem for two processes.
  • 14. 08/19/13Page 14 Synchronization Hardware • Test and modify the content of a word atomically . boolean TestAndSet(boolean &target) { boolean rv = target; target = true; return rv; }
  • 15. 08/19/13Page 15 Mutual Exclusion with Test- and-Set • Shared data: boolean lock = false; • Process Pi do { while (TestAndSet(lock)) ; critical section lock = false; remainder section }
  • 16. 08/19/13Page 16 Synchronization Hardware • Atomically swap two variables. void Swap(boolean &a, boolean &b) { boolean temp = a; a = b; b = temp; }
  • 17. 08/19/13Page 17 Mutual Exclusion with Swap • Shared data (initialized to false): boolean lock; • Process Pi do { key = true; while (key == true) Swap(lock,key); critical section lock = false; remainder section }
  • 18. 08/19/13Page 18 Semaphores • Think about a semaphore as a class • Attributes: semaphore value, Functions: init, wait, signal • Support provided by OS • Considered an OS resource, a limited number available: a limited number of instances (objects) of semaphore class is allowed. • Can easily implement mutual exclusion among any number of processes.
  • 19. 08/19/13Page 19 Critical Section of n Processes • Shared data: Semaphore mutex; //initially mutex = 1 • Process Pi: do { mutex.wait(); critical section mutex.signal(); remainder section } while (1);
  • 20. 08/19/13Page 20 Semaphore Implementation • Define a semaphore as a class: class Semaphore { int value; // semaphore value ProcessQueue L; // process queue //operations wait() signal() } • In addition, two simple utility operations: – block() suspends the process that invokes it. – Wakeup() resumes the execution of a blocked process P.
  • 21. 08/19/13Page 21 Semantics of wait and signal • Semaphore operations now defined as S.wait(): S.value--; if (S.value < 0) { add this process to S.L; block(); // block a process } S.signal(): S.value++; if (S.value <= 0) { remove a process P from S.L; wakeup(); // wake a process }
  • 22. 08/19/13Page 22 Semaphores for CS • Semaphore is initialized to 1. The first process that executes a wait() will be able to immediately enter the critical section (CS). (S.wait() makes S value zero.) • Now other processes wanting to enter the CS will each execute the wait() thus decrementing the value of S, and will get blocked on S. (If at any time value of S is negative, its absolute value gives the number of processes waiting blocked. ) • When a process in CS departs, it executes S.signal() which increments the value of S, and will wake up any one of the processes blocked. The queue could be FIFO or priority queue.
  • 23. 08/19/13Page 23 Two Types of Semaphores • Counting semaphore – integer value can range over an unrestricted domain. • Binary semaphore – integer value can range only between 0 and 1; can be simpler to implement. ex: nachos • Can implement a counting semaphore using a binary semaphore.
  • 24. 08/19/13Page 24 Semaphore for Synchronization • Execute B in Pj only after A executed in Pi • Use semaphore flag initialized to 0 • Code: Pi Pj   A flag.wait() flag.signal() B
  • 25. 08/19/13Page 25 Classical Problems of Synchronization • Bounded-Buffer Problem • Readers and Writers Problem • Dining-Philosophers Problem
  • 26. 08/19/13Page 26 Producer/Consumer problem • Producer repeat produce item v; b[in] = v; in = in + 1; forever; • Consumer repeat while (in <= out) nop; w = b[out]; out = out + 1; consume w; forever;
  • 27. 08/19/13Page 27 Solution for P/C using Semaphores • Producer • repeat • produce item v; • MUTEX.wait(); • b[in] = v; • in = in + 1; • MUTEX.signal(); • forever; • What if Producer is slow or late? • Consumer • repeat • while (in <= out) nop; • MUTEX.wait(); • w = b[out]; • out = out + 1; • MUTEX.signal(); • consume w; • forever; • Ans: Consumer will busy-wait at the while statement.
  • 28. 08/19/13Page 28 P/C: improved solution • Producer repeat produce item v; MUTEX.wait(); b[in] = v; in = in + 1; MUTEX.signal(); AVAIL.signal(); forever; • What will be the initial values of MUTEX and AVAIL? • Consumer repeat AVAIL.wait(); MUTEX.wait(); w = b[out]; out = out + 1; MUTEX.signal(); consume w; forever; • ANS: Initially MUTEX = 1, AVAIL = 0.
  • 29. 08/19/13Page 29 P/C problem: Bounded buffer • Producer repeat produce item v; while((in+1)%n == out) NOP; b[in] = v; in = ( in + 1)% n; forever; • How to enforce bufsize? • Consumer repeat while (in == out) NOP; w = b[out]; out = (out + 1)%n; consume w; forever; • ANS: Using another counting semaphore.
  • 30. 08/19/13Page 30 P/C: Bounded Buffer solution • Producer repeat produce item v; BUFSIZE.wait(); MUTEX.wait(); b[in] = v; in = (in + 1)%n; MUTEX.signal(); AVAIL.signal(); forever; • What is the initial value of BUFSIZE? • Consumer repeat AVAIL.wait(); MUTEX.wait(); w = b[out]; out = (out + 1)%n; MUTEX.signal(); BUFSIZE.signal(); consume w; forever; • ANS: size of the bounded buffer.
  • 31. 08/19/13Page 31 Semaphores - comments • Intuitively easy to use. • wait() and signal() are to be implemented as atomic operations. • Difficulties: – signal() and wait() may be exchanged inadvertently by the programmer. This may result in deadlock or violation of mutual exclusion. – signal() and wait() may be left out. • Related wait() and signal() may be scattered all over the code among the processes.
  • 32. 08/19/13Page 32 Monitors • Monitor is a predecessor of the “class” concept. • Initially it was implemented as a programming language construct and more recently as library. The latter made the monitor facility available for general use with any PL. • Monitor consists of procedures, initialization sequences, and local data. Local data is accessible only thru’ monitor’s procedures. Only one process can be executing in a monitor at a time. Other process that need the monitor wait suspended.
  • 33. 08/19/13Page 33 Monitors monitor monitor-name { shared variable declarations procedure body P1 (…) { . . .} procedure body P2 (…) { . . .} procedure body Pn (…) { . . .} { initialization code } }
  • 34. 08/19/13Page 34 Monitors • To allow a process to wait within the monitor, a condition variable must be declared, as condition x, y; • Condition variable can only be used with the operations wait and signal. – The operation x.wait(); means that the process invoking this operation is suspended until another process invokes x.signal(); – The x.signal operation resumes exactly one suspended process. If no process is suspended, then the signal operation has no effect.
  • 36. 08/19/13Page 36 Monitor With Condition Variables
  • 37. 08/19/13Page 37 Message passing • Both synchronization and communication requirements are taken care of by this mechanism. • More over, this mechanism yields to synchronization methods among distributed processes. • Basic primitives are: send (destination, message); receive ( source, message);
  • 38. 08/19/13Page 38 Issues in message passing • Send and receive: could be blocking or non-blocking: – Blocking send: when a process sends a message it blocks until the message is received at the destination. – Non-blocking send: After sending a message the sender proceeds with its processing without waiting for it to reach the destination. – Blocking receive: When a process executes a receive it waits blocked until the receive is completed and the required message is received. – Non-blocking receive: The process executing the receive proceeds without waiting for the message(!). • Blocking Receive/non-blocking send is a common combination.
  • 39. 08/19/13Page 39 Reader/Writer problem • Data is shared among a number of processes. • Any number of reader processes could be accessing the shared data concurrently. • But when a writer process wants to access, only that process must be accessing the shared data. No reader should be present. • Solution 1 : Readers have priority; If a reader is in CS any number of readers could enter irrespective of any writer waiting to enter CS. • Solution 2: If a writer wants CS as soon as the CS is available writer enters it.
  • 40. 08/19/13Page 40 Reader/writer: Priority Readers • Writer: ForCS.wait(); CS; ForCS.signal(); • Reader: ES.wait(); NumRdr = NumRdr + 1; if NumRdr = 1 ForCS.wait(); ES.signal(); CS; ES.wait(); NumRdr = NumRdr -1; If NumRdr = 0 ForCS.signal(); ES.signal();
  • 41. 08/19/13Page 41 Dining Philosophers Example monitor dp { enum {thinking, hungry, eating} state[5]; condition self[5]; void pickup(int i) // following slides void putdown(int i) // following slides void test(int i) // following slides void init() { for (int i = 0; i < 5; i++) state[i] = thinking;} }
  • 42. 08/19/13Page 42 Dining Philosophers void pickup(int i) { state[i] = hungry; test[i]; if (state[i] != eating) self[i].wait(); } void putdown(int i) { state[i] = thinking; // test left and right neighbors test((i+4) % 5); test((i+1) % 5);
  • 43. 08/19/13Page 43 Dining Philosophers void test(int i) { if ( (state[(I + 4) % 5] != eating) && (state[i] == hungry) && (state[(i + 1) % 5] != eating)) { state[i] = eating; self[i].signal(); }
  • 44. 08/19/13Page 44 Summary • We looked at various ways/levels of realizing synchronization among concurrent processes. • Synchronization at the kernel level is usually solved using hardware mechanisms such as interrupt priority levels, basic hardware lock, using non-preemptive kernel (older BSDs), using special signals.