After studying this chapter, you should be able to: Discuss basic concepts related to concurrency, such as race conditions, OS concerns, and mutual exclusion requirements; understand hardware approaches to supporting mutual exclusion; define and explain semaphores; define and explain monitors.
Trang 1Chapter 5 Concurrency: Mutual Exclusion and
Trang 3Interleaving and Overlapping Processes
• Earlier (Ch2) we saw that processes may
be interleaved on uniprocessors
Trang 4Interleaving and Overlapping Processes
• And not only interleaved but overlapped on
multi-processors
• Both interleaving and overlapping present the
same problems in concurrent processing
Trang 5One Difficulty of
Concurrency
• Sharing of global resources can be
problematic
Trang 8Enforce Single Access
• If we enforce a rule that only one process may
enter the function at a time then:
– P1 & P2 run on separate processors
– P1 enters echo first,
• P2 tries to enter but is blocked
– P1 completes execution
• P2 resumes and executes echo
Solution: Control access
Trang 9Competition among Processes for Resources
Three main control problems:
• Need for Mutual Exclusion
– Only one program at a time be allowed in its
critical section.
– Critical resource: nonsharable resource,
e.g., printer
– Critical section: portion of the program that
uses a critical resource
• Deadlock
• Starvation
Trang 10Requirements for Mutual Exclusion
• Only one process at a time is allowed in
the critical section for a resource
• A process that halts in its noncritical
section must do so without interfering with other processes
• No deadlock or starvation
Trang 11Requirements for Mutual Exclusion
• A process must not be delayed access to
a critical section when there is no other
process using it
• No assumptions are made about relative
process speeds or number of processes
• A process remains inside its critical section for a finite time only
Trang 13Disabling Interrupts
• Uniprocessors only allow interleaving
• Interrupt Disabling
– A process runs until it invokes an operating
system service or until it is interrupted
– Disabling interrupts guarantees mutual
exclusion because the critical section cannot
be interrupted
Trang 15Special Machine
Instructions
• Use of atomic action: instruction is treated
as a single step that cannot be interrupted
– Compare&Swap Instruction
int compare_and_swap (int *word,
int testval, int newval) { /* checks a memory location (*word) against a test value
Trang 16Mutual Exclusion (fig 5.2)
• The only process
that may enter its
Trang 17Hardware Mutual Exclusion: Advantages
• Applicable to any number of processes on either a single processor or multiple
processors sharing main memory
• It is simple and therefore easy to verify
• It can be used to support multiple critical
sections
Trang 18Hardware Mutual Exclusion: Disadvantages
• Busy-waiting consumes processor time
• Starvation is possible when a process leaves a
critical section and more than one process is
waiting
– Some process could indefinitely be denied access
because selection of a waiting process is arbitrary
• Deadlock is possible
Trang 20• Fundamental principle: Processes can
cooperate by means of simple signal such that a process can be forced to stop at a
specified place until it has received a
specific signal
Trang 21• Semaphore:
– An integer value used for signalling among
processes
• Only three operations may be performed
on a semaphore, all of which are atomic:
– initialize (to a nonnegative integer value)
– decrement (semWait), to receive a signal
– increment (semSignal), to transmit a signal
Trang 22Semaphore Primitives
Trang 23Binary Semaphore
Primitives
Trang 24Strong/Weak Semaphore
• A queue is used to hold processes waiting
on the semaphore
– In what order are processes removed from the queue?
• Strong Semaphores use FIFO
• Weak Semaphores don’t specify the
Trang 25Mutual Exclusion Using
Semaphores
1 The first process that executes a semWait will be able to enter the critical section immediately,
setting the value of s to 0
2 Any other processes attempting
to enter the critical section will find it busy and will be blocked
Trang 26Processes Accessing Shared Data Using
Trang 27Mutual Exclusion Using
Semaphores
• The semaphore can be initialized to a
specified value to allow more than one
process in its critical section at a time
– s.count 0: the number of processes that can execute semWait(s) without suspension
– s.count < 0: the magnitude is the number
processes suspended in s.queue
Trang 28Producer/Consumer
Problem
• General Situation:
– One or more producers are generating data and
placing these in a buffer
– A single consumer is taking items out of the buffer
one at time
– Only one producer or consumer may access the
buffer at any one time
• The Problem:
Trang 30The producer can generate items and store them in the buffer
at its own pace Each time, in is incremented
The consumer must
make sure that the
producer has
advanced beyond it
( in > out) before
proceeding
Trang 31Prevent the consumer and any other producer from accessing the buffer during the append operation
n is equal to the number of items
in the buffer
The consumer must wait on both semaphores before proceeding
Trang 33Functions in a Bounded Buffer
w = b[out];
out = (out + 1) % n;
/* consume item w
in and out are initialized to 0 and n is the size of the buffer
Trang 34e keeps track of the number
of empty spaces
Trang 36Readers/Writers Problem
• A data area (e.g., a file) is shared among
many processes
– Some processes (readers) only read the data
area, some (writers) only write to the area
• Conditions to satisfy:
1.Multiple readers may simultaneously read the file 2.Only one writer at a time may write
Trang 37Readers have Priority
wsem is used to enforce
mutual exclusion: as long as one writer is accessing the shared data area, no other
the first reader that attempts to
read should wait on wsem
readcount keeps track of the
number of readers
x is used to assure that
readcount is updated properly
Trang 38Readers/Writers Problem
• Once a single reader has begun to access the data area, it is possible for readers to
retain control of the data area as long as
there is at least one reader reading
– Therefore, writers are subject to starvation
• An alternative solution: no new readers
are allowed access to the data area once
Trang 39Writers have Priority
rsem inhibits all readers while
there is at least one writer desiring access to the data area
y controls the updating of writecount
writecount controls the setting
of rsem
Trang 40Writers have Priority
only one reader is allowed to
queue on rsem, with any additional readers queuing on z
Trang 41Writers have Priority
Trang 42Key Terms