Title: Chapter 6: Concurrency: Mutual Exclusion and Synchronization
1Chapter 6 Concurrency Mutual Exclusion and
Synchronization
- Operating System
- Spring 2007
- Chapter 6 of textbook
2Concurrency
- An OS has many concurrent processes that run in
parallel but share common access - Race Condition A situation where several
processes access and manipulate the same data
concurrently and the outcome of the execution
depends on the particular order in which the
access takes place.
3Example for Race condition
- Suppose a customer wants to book a seat on UAL
56. Ticket agent will check the -of-seats. If it
is greater than 0, he will grab a seat and
decrement -of-seats by 1.
4Example for Race condition(cont.)
Ticket Agent 1 P1 LOAD -of-seats P2 DEC 1 P3
STORE -of-seats
Ticket Agent 2 Q1 LOAD -of-seats Q2 DEC 1 Q3
STORE -of-seats
Ticket Agent 3 R1 LOAD -of-seats R2 DEC 1 R3
STORE -of-seats
Suppose, initially, -of-seats12 Suppose
instructions are interleaved as
P1,Q1,R1,P2,Q2,R2,P3,Q3,R3 The result would be
-of-seats11, instead of 9
To solve the above problem, we must make sure
that P1,P2,P3 must be completely executed before
we execute Q1 or R1, or Q1,Q2,Q3 must be
completely executed before we execute P1 or R1,
or R1,R2,R3 must be completely executed before we
execute P1 or Q1.
5Critical Section Problem
Critical section a segment of code in which the
process may be changing common variables,
updating a table, writing a file, and so on.
Goal To program the processes so that, at any
moment of time, at most one of the processes is
in its critical section.
6Solution to Critical-Section Problem
- Any facility to provide support for mutual
exclusion should meet the following requirements - Mutual exclusion must be enforced Only one
process at a time is allowed into its critical
section - A process that halts in its noncritical section
must do so without interfering with other
processes. - A process waiting to enter its critical section
cannot be delayed indefinitely - When no process is in a critical section, any
process that requests entry to its critical
section must be permitted to enter without delay. - No assumption are made about the relative process
speeds or the number of processors. - A process remains inside its critical section for
a finite time only.
7Three Environments
- There is no central program to coordinate the
processes. The processes communicate with each
other through global variable. - Solution Petersons algorithm
- not covered in this class
- Special hardware instructions
- TS
- Exchange(not covered in this class)
- There is a central program to coordinate the
processes. - Semaphore
8Special Machine Instructions
- Modern machines provide special atomic hardware
instructions - Atomic non-interruptable
- Either test memory word and set value
- Or swap contents of two memory words
9TS Test and Set
Boolean TS(i) true if i0 it will also set i
to 1 false if i1
Initially, lock0
Pi Prefixi While( TS(lock)) do
CSi Lock0 suffixi
Problem of this program It is possible that a
process may starve if 2 processes enter the
critical section arbitrarily often. Solution for
the starvation wont be covered in this class.
10Semaphores
- A variable that has an integer value upon which 3
operations are defined. - Three operations
- A semaphore may be initialized to a nonnegative
value - The wait operation decrements the semaphore
value. If the value becomes negative, then the
process executing the wait is blocked - The signal operation increments the semaphore
value. If the value is not positive, then a
process blocked by a wait operation is unblocked. - Other than these 3 operations, there is no way to
inspect or manipulate semaphores.
11Wait(s) and Signal(s)
- Wait(s) is also called P(s)
-
- ss-1
- if (slt0) place this process in a waiting
queue -
- Signal(s) is also called V(s)
-
- ss1
- if(s?0) remove a process from the waiting
queue -
12Semaphore as General Synchronization Tool
- 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 - Also known as mutex locks
- Wait B(s) s is a binary semaphore
-
- if s1 then s0 else block this process
-
- Signal B(s)
-
- if there is a blocked process then unblock
a process else s1 -
- Can implement a counting semaphore S as a binary
semaphore
13Note
- The wait and signal primitives are assumed to be
atomic they cannot be interrupted and each
routine can be treated as an indivisible step.
14Mutual Exclusion provided by Semaphores
- Semaphore S // initialized to 1
- Pi
- prefixi
- wait (S)
- CSi
- signal (S)
- suffixi
- Signal B(s)
-
- if there is a blocked process
- then unblock a process
- else s1
-
- Wait B(s) s is a binary semaphore
-
- if s1
- then s0
- else block this process
-
15Two classical examples
- Producer and Consumer Problem
- Readers/Writers Problem
16Two classical examples
- Producer and Consumer Problem
- Readers/Writers Problem
17Producer and Consumer Problem
- Producer can only put something in when there is
an empty buffer - Consumer can only take something out when there
is a full buffer - Producer and consumer are concurrent processes
0
consumer
producer
N buffers
N-1
18Producer and Consumer Problem(cont.)
- Global Variable
- B0..N-1 an array of size N (Buffer)
- P a semaphore, initialized to N
- C a semaphore, initialized to 0
- Local Variable
- In a ptr(integer) used by the producer, in0
initially - Out a ptr(integer) used by the consumer, out0
initially
19Two classical examples
- Producer and Consumer Problem
- Readers/Writers Problem
20Readers/Writers Problem
- Suppose a data object is to be shared among
several concurrent processes. Some of these
processes want only to read the data object,
while others want to update (both read and write) - Readers Processes that read only
- Writers processes that read and write
- If a reader process is using the data object,
then other reader processes are allowed to use it
at the same time. - If a writer process is using the data object,
then no other process (reader or writer) is
allowed to use it simultaneously.
21Solve Readers/Writers Problem using wait and
signal primitives(cont.)
- Global Variable
- Wrt is a binary semaphore, initialized to 1 Wrt
is used by both readers and writers - For Reader Processes
- Mutex is a binary semaphore, initialized to
1Readcount is an integer variable, initialized
to 0 - Mutex and readcount used by readers only
22End
Thank you!