Transcript Lecture 5

Understanding Operating Systems
Sixth Edition
Chapter 5
Process Management
Learning Objectives
After completing this chapter, you should be able to
describe:
• Several causes of system deadlock and livelock
• The difference between preventing and avoiding
deadlocks
• How to detect and recover from deadlocks
Understanding Operating Systems, Sixth Edition
2
Learning Objectives (cont’d.)
• The concept of process starvation and how to detect
and recover from it
• The concept of a race and how to prevent it
• The difference between deadlock, starvation, and
race
Understanding Operating Systems, Sixth Edition
3
Deadlock
• In early OS, deadlock was known by the more
descriptive phrase - “deadly embrace”.
– Happens when the system freezes.
• A system-wide tangle of resource requests that
begins when two or more jobs are put on HOLD,
each waiting for a vital resource to become
available.
• The problem builds when the resources needed by
those jobs are the resources held by other jobs that
are also waiting to run but cannot because they’re
waiting for other unavailable resources.
• The tangled jobs come to a standstill.
Understanding Operating Systems, Sixth Edition
4
Deadlock (cont’d)
• The deadlock is complete if the remainder of the
system comes to a standstill as well.
• When the situation can’t be resolved by the OS,
intervention is required.
• Deadlock affects more than one job.
• Because resources are being tied up, the entire
system, not just a few programs, is affected.
• Deadlocks became prevalent with the introduction of
interactive systems, which generally improve the
use of resources through dynamic resource sharing,
but this capability also increases the possibility of
deadlocks.
Understanding Operating Systems, Sixth Edition
5
Deadlock (cont'd.)
Understanding Operating Systems, Sixth Edition
6
Deadlock (cont'd.)
• In some computer systems, deadlocks are regarded
as a mere inconvenience that causes delays.
• But for real-time systems, deadlocks cause critical
situations.
• Regardless of the environment, the OS must either
prevent deadlocks or resolve them when they
happen.
Understanding Operating Systems, Sixth Edition
7
Seven Cases of Deadlock
• A deadlock usually occurs when nonshareable,
nonpreemptable resources, such as files, printers or
scanners are allocated to jobs that eventually
require other nonshareable nonpreemptive,
resources that have been locked by other jobs.
• Deadlocks can also occur on shareable resources
that are locked, such as disks and databases.
Understanding Operating Systems, Sixth Edition
8
Case 1: Deadlocks on File Requests
• If jobs are allowed to request and hold files for the
duration of their execution, a deadlock can occur.
• Example (Figure 5.2)
– Two programs (P1, P2) and two files (F1, F2)
– Deadlock sequence
• P1 has access to F1 and also requires F2
• P2 has access to F2 and also requires F1
– Deadlock remains
• Until one program withdrawn or
• Until one program forcibly removed and file released
– Other programs requiring F1 or F2
• Put on hold for duration of situation
Understanding Operating Systems, Sixth Edition
9
Case 1: Deadlocks on File Requests
(cont'd.)
Understanding Operating Systems, Sixth Edition
10
Case 2: Deadlocks in Databases
• A deadlock can occur if two processes access and
lock records in a database.
• Database queries and transactions are often
relatively brief processes that either search or
modify parts of a database.
• Requests usually arrive at random and may be
interleaved arbitrarily.
• Locking is a technique used to guarantee the
integrity of the data through which the user locks out
all other users while working with the database.
Understanding Operating Systems, Sixth Edition
11
Case 2: Deadlocks in Databases
(cont’d)
• Locking can be done at three different levels:
– The entire database can be locked for the duration of
the request;
• The most extreme and most successful solution.
• Prevents a deadlock from occurring but it restricts
access to the database to one user at a time.
• In a multiuser environment, response times are
significantly slowed.
• Normally an unacceptable solution.
Understanding Operating Systems, Sixth Edition
12
Case 2: Deadlocks in Databases
(cont’d)
– A subsection of the database can be locked:
• When the locking is performed on only one part of the
database, access time is improved but the possibility of
a deadlock is increased because different processes
sometimes need to work with several parts of the data
base at the same time.
– The individual record can be locked until the request
is completed.
• Same as above.
Understanding Operating Systems, Sixth Edition
13
Case 2: Deadlocks in Databases
(cont'd.)
• Example: two processes (P1 and P2)
– Each needs to update two records (R1 and R2)
– Deadlock sequence
•
•
•
•
P1 accesses R1 and locks it
P2 accesses R2 and locks it
P1 requests R2 but locked by P2
P2 requests R1 but locked by P1
• Race between processes:
– An alternative is to avoid the use of locks
• If locks are not used to preserve the integrity of the
database, the updated records might only include some
of the data, and their contents would depend on the
order in which each process finishes its execution.
Understanding Operating Systems, Sixth Edition
14
Case 2: Deadlocks in Databases
(cont'd.)
Understanding Operating Systems, Sixth Edition
15
Case 3: Deadlocks in Dedicated
Device Allocation
• The use of a group of dedicated devices can also
deadlock the system.
• Example
– Two programs (P1, P2)
• Need two tape drives each
• Only two tape drives in system
– Deadlock sequence
•
•
•
•
P1 requests tape drive 1 and gets it
P2 requests tape drive 2 and gets it
P1 requests tape drive 2 but blocked
P2 requests tape drive 1 but blocked
Understanding Operating Systems, Sixth Edition
16
Case 4: Deadlocks in Multiple
Device Allocation
• Deadlocks can happen when several processes
request, and hold on to, several dedicated devices.
• Example (Figure 5.4)
– Three programs (P1, P2, P3)
– Three dedicated devices (tape drive, printer, plotter)
– Deadlock sequence
•
•
•
•
•
•
P1 requests and gets tape drive
P2 requests and gets printer
P3 requests and gets the plotter
P1 requests printer but blocked
P2 requests plotter but blocked
P3 requests tape drive but blocked
Understanding Operating Systems, Sixth Edition
17
Case 4: Deadlocks in Multiple
Device Allocation (cont'd.)
Understanding Operating Systems, Sixth Edition
18
Case 5: Deadlocks in Spooling
• Printers are usually sharable devices (Virtual
devices) that use high-speed storage to transfer
data between it and the CPU.
• The spooler accepts output from several users and
acts as a temporary storage area for all output until
the printer is ready to accept it (spooling).
• If the printer needs all of a job’s output before it will
begin printing, but the spooling system fills the
available space with only partially completed output,
a deadlock can occur.
Understanding Operating Systems, Sixth Edition
19
Case 5: Deadlocks in Spooling (cont'd.)
• Deadlock Sequence:
– Printer needs all job output before printing begins
•
•
•
•
Spooling system fills disk space area
No one job has entire print output in spool area
Results in partially completed output for all jobs
Results in deadlock
• Any part of the system that relies on spooling, such
as one that handles incoming jobs or transfers files
over a network, is vulnerable to such a deadlock.
Understanding Operating Systems, Sixth Edition
20
Case 6: Deadlocks in a Network
• A network that’s congested or has filled a large
percentage of its I/O buffer space can become
deadlocked if it doesn’t have protocols to control the
flow of messages through the network.
• Example (Figure 5.5)
– Seven computers on network
• Each on different nodes
– Direction of arrows
• Indicates message flow
– Deadlock sequence
• All available buffer space fills
Understanding Operating Systems, Sixth Edition
21
Case 6: Deadlocks in a Network
(cont'd.)
Understanding Operating Systems, Sixth Edition
22
Case 7: Deadlocks in Disk Sharing
• Disks are designed to be shared.
• It’s not uncommon for two processes to be
accessing different areas of the same disk.
• This ability to share creates an active type of
deadlock, known as livelock.
• Processes use a form of busy-waiting that’s different
from a natural wait.
– It’s waiting to share a resource but never actually
gains control of it.
Understanding Operating Systems, Sixth Edition
23
Case 7: Deadlocks in Disk Sharing
(cont’d)
• Example (Figure 5.6)
– Two competing processes are sending conflicting
commands, causing livelock.
– Neither process is blocked, which would create a
deadlock.
– Each is active but never reaches fulfillment.
– Each process waiting for I/O request
• One at cylinder 20 and one at cylinder 310
– Deadlock sequence
• Neither I/O request satisfied
• Device puts request on hold while attempting to fulfill
other request.
Understanding Operating Systems, Sixth Edition
24
Case 7: Deadlocks in Disk Sharing
(cont’d)
• Example (Figure 5.6)
– P1 issues a command to access track 20 of a disk.
– While the control unit is moving the arm to track 20
• P1 is put on hold
• The I/O channel is free to process the next I/O request.
– While the arm is moving into position, P2 gains
control of the I/O channel and issues a command to
access track 310.
– If the command is not “locked out”, P2 will be put on
hold while the control unit moves the arm to track
310.
Understanding Operating Systems, Sixth Edition
25
Case 7: Deadlocks in Disk Sharing
(cont’d)
• Example (Figure 5.6)
– Because P2 is “on hold” while the arm is moving, the
channel can be captures again by P1, which
reconfirms its command to “read from track 10”.
– Because the last command from P2 had forced the
arm mechanism to track 310, the disk control unit
begins to reposition the arm to track 20 to satisfy P1.
– The I/O channel would be released because P1 is
once again put on hold, so it could be captured by P2,
which rediscovers that the arm mechanism needs to
be repositioned.
Understanding Operating Systems, Sixth Edition
26
Case 7: Deadlocks in Disk Sharing
(cont’d)
• Example (Figure 5.6)
– As a result, the arm is in a constant state of motion,
moving back and forth between tracks 20 and 310 as
it responds to the two competing commands, but
satisfies neither.
Understanding Operating Systems, Sixth Edition
27
Case 7: Deadlocks in Disk Sharing
(cont'd.)
Understanding Operating Systems, Sixth Edition
28
Conditions for Deadlock
• In each of these seven cases, the deadlock (or
livelock) involved several processes and resources.
• Each deadlock was preceded by the simultaneous
occurrence of four conditions that the OS (or other
systems) could have recognized:
–
–
–
–
Mutual exclusion
Resource holding
No preemption
Circular wait
• Each of these four conditions is necessary for the
OS to work smoothly.
Understanding Operating Systems, Sixth Edition
29
Conditions for Deadlock (cont’d)
• None of them can be removed easily without
causing the system’s overall functioning to suffer.
• The system needs to recognize the combination of
conditions before they occur and threaten to cause
the system to lock up.
Understanding Operating Systems, Sixth Edition
30
Conditions for Deadlock (cont'd.)
• Mutual exclusion
– Allowing only one process access to a dedicated
resource.
– The first condition for deadlock.
• Resource holding
– Holding resource and not releasing it
– Waiting for other job to retreat
– The second condition for deadlock.
• No preemption
– Lack of temporary reallocation of resources.
– The third condition for deadlock.
Understanding Operating Systems, Sixth Edition
31
Conditions for Deadlock (cont'd.)
• Circular wait
– Each process involved in the impasse is waiting for
another to voluntarily release the resource so that at
least one will be able to continue on and eventually
arrive at the destination.
– Fourth condition for deadlock.
• All four conditions are required for the deadlock to
occur.
• Deadlock remains until one condition removed
Understanding Operating Systems, Sixth Edition
32
Modeling Deadlocks
• Directed graphs
– Circles represent processes
– Squares represent resources
– Solid arrow from resource to process
• Process holding resource
– Solid arrow from a process to resource
• Process waiting for resource
– Arrow direction indicates flow
– Cycle in graph
• Deadlock involving processes and resources
Understanding Operating Systems, Sixth Edition
33
Modeling Deadlocks (cont'd.)
Understanding Operating Systems, Sixth Edition
34
Modeling Deadlocks (cont'd.)
• Three graph scenarios to help detect deadlocks
– System has three processes (P1, P2, P3)
– System has three resources (R1, R2, R3)
• Scenario one: no deadlock
– Resources released before next process request
• Scenario two: deadlock
– Processes waiting for resource held by another
• Scenario three: no deadlock
– Resources released before deadlock
Understanding Operating Systems, Sixth Edition
35
Modeling Deadlocks (cont'd.)
• No deadlock
– Resources released before next process request
Understanding Operating Systems, Sixth Edition
36
Modeling Deadlocks (cont'd.)
Understanding Operating Systems, Sixth Edition
37
Modeling Deadlocks (cont'd.)
• Deadlock
– Processes waiting for resource held by another
Understanding Operating Systems, Sixth Edition
38
Modeling Deadlocks (cont'd.)
Understanding Operating Systems, Sixth Edition
39
Modeling Deadlocks (cont'd.)
• No deadlock
– Resources released before deadlock
Understanding Operating Systems, Sixth Edition
40
Modeling Deadlocks (cont'd.)
Understanding Operating Systems, Sixth Edition
41
Modeling Deadlocks (cont'd.)
• Another example
– Resources of same type
– Allocated individually or grouped in same process
• Graph clusters devices into one entity
– Allocated individually or grouped in different process
• Graph clusters devices into one entity
Understanding Operating Systems, Sixth Edition
42
Modeling Deadlocks (cont'd.)
Understanding Operating Systems, Sixth Edition
43
Strategies for Handling Deadlocks
• The requests and releases are received in an
unpredictable order, which makes it very difficult to
design a foolproof preventive policy.
• OSs use one of three strategies to deal with
deadlocks:
– Prevent one of the four conditions from occurring.
– Avoid the deadlock if it becomes probable.
– Detect the deadlock when it occurs and recover from
it gracefully.
Understanding Operating Systems, Sixth Edition
44
Strategies for Handling Deadlocks
(cont'd.)
• Prevention:
– To prevent deadlocks, the OS must eliminate one of
the four necessary conditions:
– Complicated by the fact that the same condition can’t
be eliminated from every resource.
• Mutual exclusion:
– Necessary in any computer system because some
resources, such as memory, CPU, and dedicated
devices must be exclusively allocated to one user at a
time.
– In the case of I/O devices (printers, the mutual exclusion
may be bypassed by spooling.
Understanding Operating Systems, Sixth Edition
45
Strategies for Handling Deadlocks
(cont'd.)
• Prevention:
• Resource Holding:
– A job holds on to one resource while waiting for another
one that’s not yet available.
– Could be sidestepped by forcing each job to request, at
creation time, every resource it will need to run to
completion.
– If every job in a batch system is given as much memory
as it needs, then the number of active jobs will be
dictated by how many can fit in memory.
» Would significantly decrease the degree of
multiprogramming.
– Peripheral devices would be idle because they would be
allocated to a job even though they wouldn’t be use all
the time.
Understanding Operating Systems, Sixth Edition
46
Strategies for Handling Deadlocks
(cont'd.)
• Prevention:
• Resource Holding:
– Used successfully in batch environments although it:
» Reduced the effective use of resources;
» Restricted the amount of multiprogramming.
– Doesn’t work well in interactive systems.
Understanding Operating Systems, Sixth Edition
47
Strategies for Handling Deadlocks
(cont'd.)
• Prevention (cont'd.)
– No preemption:
• Could be bypassed by allowing the OS to deallocate
resources from jobs.
• Can be done if the state of the job can be easily saved
and restored.
– As when a job is preempted in a round robin environment
or a page is swapped to secondary storage in a virtual
memory system.
• Preemption of a dedicated I/O device, during the
modification process, however, can require some
extremely unpleasant recovery tasks. Not accepted to
preempt dedicated I/O device or files during
modification.
Understanding Operating Systems, Sixth Edition
48
Strategies for Handling Deadlocks
(cont'd.)
• Prevention (cont'd.)
– Circular Wait:
• Hierarchical Ordering:
• Based on a numbering system for the resources:
»
»
»
»
»
Printer = 1;
Disk = 2;
Tape = 3;
Plotter = 4;
And so on.
Understanding Operating Systems, Sixth Edition
49
Strategies for Handling Deadlocks
(cont'd.)
• Prevention (cont'd.)
– The system forces each job to request its resources in
ascending order.
• If a job needed a printer and then a plotter, it would
request them in that order.
– Printer (#1)
– Plotter (#4)
• If the job required the plotter first and then a plotter, it
would still request the printer first even though it
wouldn’t be used right away.
• A job could request a printer (#1) and then a disk (#2)
and then a tape (#3); but if it needed another printer
(#1) late in its processing, it would still have to
anticipate that need when it requested the first one, and
before it requested the disk.
Understanding Operating Systems, Sixth Edition
50
Strategies for Handling Deadlocks
(cont'd.)
• Prevention (cont'd.)
• This scheme of “hierarchical ordering” removes the
possibility of a circular wait and, therefore, guarantees
the removal of deadlocks. It doesn’t require that jobs
state their maximum needs in advance, but it does
require that the jobs anticipate the order in which they
will request resources.
• From the perspective of a system designer, one of the
difficulties of this scheme is discovering the best order
for the resources so that the needs of the majority of
the users are satisfied.
• Another difficulty is that of assigning a ranking to
nonphysical resources such as files or locked database
records where there is no basis for assigning a higher
number to one over the other.
Understanding Operating Systems, Sixth Edition
51
Strategies for Handling Deadlocks
(cont'd.)
• Avoidance:
– Even if the OS can’t remove one of the conditions for
deadlock, it can avoid one if the system knows ahead
of time the sequence of requests associated with
each of the active processes.
– Dijkstra’s Bankers Algorithm was proposed in 1965 to
regulate resource allocation to avoid deadlocks.
Understanding Operating Systems, Sixth Edition
52
Strategies for Handling Deadlocks
(cont'd.)
• Avoidance:
– Based on a bank with a fixed amount of capital that
operates on the following principles:
• No customer will be granted a loan exceeding the
bank’s total capital.
• All customers will be given a maximum credit limit when
opening an account.
• No customer will be allowed to borrow over the limit.
• The sum of all loans will not exceed the bank’s total
capital.
Understanding Operating Systems, Sixth Edition
53
Strategies for Handling Deadlocks
(cont'd.)
• Avoidance:
– The bank has total capital of $10,000 and has three
customers, C1, C2, and C3, who have maximum
credit limits of $4,000, $5,000, and $8,000,
respectively.
Understanding Operating Systems, Sixth Edition
54
Strategies for Handling Deadlocks
(cont'd.)
Understanding Operating Systems, Sixth Edition
55
Strategies for Handling Deadlocks
(cont'd.)
• Avoidance:
– A few weeks later after more loans have been made,
and some have been repaid -
Understanding Operating Systems, Sixth Edition
56
Strategies for Handling Deadlocks
(cont'd.)
Understanding Operating Systems, Sixth Edition
57
Strategies for Handling Deadlocks
(cont'd.)
• Avoidance:
– An “unsafe state” doesn’t necessarily lead to
deadlock, but it does indicate that the system is an
excellent candidate for one.
– If we substitute jobs for customers and dedicated
devices for dollars.
• In this example the system has 10 devices.
Understanding Operating Systems, Sixth Edition
58
Strategies for Handling Deadlocks
(cont'd.)
Understanding Operating Systems, Sixth Edition
59
Strategies for Handling Deadlocks
(cont'd.)
Understanding Operating Systems, Sixth Edition
60
Strategies for Handling Deadlocks
(cont'd.)
– The OS must be sure never to satisfy a request that
moves it from a safe state to an unsafe one.
– As users’ are satisfied, the OS must identify the job
with the smallest number of remaining resources and
make sure that the number of available resources is
always equal to, or greater than, the number needed
for this job to run to completion.
– Requests that would place the safe state in jeopardy
must be blocked by the OS until they can be safely
accommodated.
Understanding Operating Systems, Sixth Edition
61
Strategies for Handling Deadlocks
(cont'd.)
– If this solution is expanded to work with several
classes of resources, the system sets up a “resource
assignment table” for each type of resource and
tracks each table to keep the system in a safe state.
Understanding Operating Systems, Sixth Edition
62
Strategies for Handling Deadlocks
(cont'd.)
• Although the Banker’s Algorithm has been used to
avoid deadlocks in systems with a few resources, it
isn’t always practical for most systems:
– As they enter the system, jobs must predict the
maximum number resources needed.
• Not practical in interactive systems.
– The number of total resources for each class must
remain constant.
• If a device breaks and becomes unavailable, the
algorithm won’t work.
Understanding Operating Systems, Sixth Edition
63
Strategies for Handling Deadlocks
(cont'd.)
– The number of jobs must remain fixed.
• Isn’t possible in interactive systems where the number
of active jobs is constantly changing.
– The overhead cost incurred by running the avoidance
algorithm can be quite high when there are many
active jobs and many devices because it has to be
invoked for every request.
– Resources aren’t well utilized because the algorithm
assumes the worst case and keeps vital resources
unavailable to guard against unsafe states.
– Scheduling suffers as a result of the poor utilization
and jobs are kept waiting for resource allocation.
Understanding Operating Systems, Sixth Edition
64
Strategies for Handling Deadlocks
(cont'd.)
• Detection
– Deadlocks can be detected by building directed
resource graphs and looking for cycles.
– The algorithm used to detect circularity can be
executed whenever it is appropriate every hour, one a
day, only when the operator notices that throughput
has deteriorated, or when an angry user complains.
Understanding Operating Systems, Sixth Edition
65
Strategies for Handling Deadlocks
(cont'd.)
• Detection algorithm
1. Find a process that is currently using a resource and
not waiting for one.
•
This process can be removed from the graph
–
–
–
Disconnecting the link tying the resource to the
process.
The resource can be returned to the “available list”.
This is possible because the process would eventually
finish and return the resource.
Understanding Operating Systems, Sixth Edition
66
Strategies for Handling Deadlocks
(cont'd.)
• Detection algorithm
2. Find a process that’s waiting only for resource
classes that aren’t fully allocated
(P2, 5.12(c)).
•
This process isn’t contributing to deadlock since it
would eventually get the resource it’s waiting for,
finish its work, and return the resource to the
“available list”.
3. Go back to step 1 and continue with steps 1 and 2
until all lines connecting resources have been
removed (5.12(d)).
Understanding Operating Systems, Sixth Edition
67
Strategies for Handling Deadlocks
(cont'd.)
Understanding Operating Systems, Sixth Edition
68
Strategies for Handling Deadlocks
(cont'd.)
• Detection algorithm
– If there are any lines left, this indicates that the
request of the process in question can’t be satisfied
and that a deadlock exists.
Understanding Operating Systems, Sixth Edition
69
Strategies for Handling Deadlocks
(cont'd.)
Understanding Operating Systems, Sixth Edition
70
Strategies for Handling Deadlocks
(cont'd.)
• Detection algorithm
– A circular wait.
Understanding Operating Systems, Sixth Edition
71
Strategies for Handling Deadlocks
(cont'd.)
• Recovery
– Once a deadlock has been detected, it must be
untangled and the system returned to normal as
quickly as possible.
• There are several recovery algorithms, but they
have one feature in common:
– They all require at least one victim, an expendable
job which, when removed from the deadlock, will free
the system.
Understanding Operating Systems, Sixth Edition
72
Strategies for Handling Deadlocks
(cont'd.)
• Recovery
– Recovery Methods:
• The first and simplest recovery method, and the most
drastic, is to terminate every job that’s active in the
system and restart them from the beginning.
• The second method is to terminate only the jobs
involved in the deadlock and ask their users to resubmit
them.
• The third method is to identify which jobs are involved
in the deadlock and terminate them one at a time,
checking to see if the deadlock is eliminated after each
removal, until the deadlock has been resolved.
– Once the system is free, the remaining jobs are allowed
to complete their processing and later the halted jobs are
started again from the beginning.
Understanding Operating Systems, Sixth Edition
73
Strategies for Handling Deadlocks
(cont'd.)
• Recovery
– Recovery Methods:
• The fourth method can be put into effect only if the job
keeps a record, a snapshot, of its progress so it can be
interrupted and then continued without starting again
from the beginning of its execution.
– This method is favored for long-running jobs to help them
make a speedy recovery.
• The fifth method selects a nondeadlocked job,
preempts the resources it’s holding and allocates them
to a deadlocked process so it can resume execution,
thus breaking the deadlock.
Understanding Operating Systems, Sixth Edition
74
Strategies for Handling Deadlocks
(cont'd.)
• Recovery
– Recovery Methods:
• The sixth method stops new jobs from entering the
system, which allows the nondeadlocked jobs to run to
completion so they’ll release their resources.
– Eventually, with fewer jobs in the system, competition for
resources is curtailed so the deadlocked processes get
the resources they need to run to completion.
– The only method that doesn’t rely on a victim.
– Not guaranteed to work unless the number of available
resources surpasses that needed by at least one of the
deadlocked jobs to run.
• Several factors must be considered to select the
victim that will have the least-negative effect on the
system.
Understanding Operating Systems, Sixth Edition
75
Strategies for Handling Deadlocks
(cont'd.)
• The most common are:
– The priority of the job under consideration:
• High-priority jobs are usually untouched.
– CPU time used by the job:
• Jobs close to completion are usually left alone.
– The number of other jobs that would be affected if this
job were selected as the victim.
– Jobs that are modifying data shouldn’t be selected for
termination because the consistency and validity of
the database would be jeopardized.
Understanding Operating Systems, Sixth Edition
76
Starvation
• Deadlocks are the result of liberal allocation of
resources.
• Starvation is the result of conservative allocation of
resources where a single job is prevented from
execution because it’s kept waiting for resources
that never become available.
Understanding Operating Systems, Sixth Edition
77
Starvation
• “The dining philosophers” by Dijkstra (1968)
– Five philosophers are sitting at a round table.
– In the center lies a bowl of spaghetti that is accessible
to everyone.
– There are forks on the table – one between each
philosopher (Figure 5.14).
Understanding Operating Systems, Sixth Edition
78
Starvation (cont'd.)
Understanding Operating Systems, Sixth Edition
79
Starvation
• “The dining philosophers” by Dijkstra (1968)
– Local custom dictates that each philosopher must use
two forks - the forks on either side of the plate – to eat
the spaghetti.
– There are only five forks - not the 10 it would require
for all five philosophers.
• That’s a problem for Philosopher 2.
– When they sit down to dinner, P1 is the first to take
the two forks , F1 and F5, on either side of the plate
and begins to eat.
– P3 does likewise, using F2 and F3.
Understanding Operating Systems, Sixth Edition
80
Starvation
• “The dining philosophers” by Dijkstra (1968)
– P2 is unable to start because no forks are available.
• The only remaining fork can be used only by P4 or P5.
• P2 must wait.
– P3 finishes.
– Should F2 be allocated to P2?
– Such a move would be a bad precedent because if
the philosophers are allowed to tie up resources with
only the hope that the other required resource will
become available, the dinner could easily slip into an
unsafe state.
Understanding Operating Systems, Sixth Edition
81
Starvation
• “The dining philosophers” by Dijkstra (1968)
– It would be only a matter of time, before each
philosopher held a single fork – and nobody could
eat.
– The resources are allocated to the philosophers only
when both forks are available at the same time
(Figure 5.15)
Understanding Operating Systems, Sixth Edition
82
Starvation (cont'd.)
Understanding Operating Systems, Sixth Edition
83
Starvation
• In a computer environment, the resources are like
forks and the competing processes are like dining
philosophers.
• If the resource manager doesn’t watch for starving
processes and jobs, and plan for their eventual
completion, they could remain in the system forever
waiting for the right combination of resources.
• To address this problem, an algorithm designed to
detect starving jobs can be implemented, which
tracks how long each job has been waiting for
resources (aging).
Understanding Operating Systems, Sixth Edition
84
Starvation
• Once starvation has been detected, the system can
block new jobs until the starving jobs have been
satisfied.
• However:
– If monitoring is done too often, then new jobs will be
blocked too frequently and throughput will be
diminished.
– If it’s not done often enough, then starving jobs will
remain in the system for an unacceptably long period
of time.
Understanding Operating Systems, Sixth Edition
85
Summary
• Every OS must dynamically allocate a limited
number of resources while avoiding the two
extremes of deadlock and starvation.
• Four methods for dealing with livelocks and
deadlocks:
– Prevention, avoidance, detection, and recovery
• Deadlocks can be prevented by not allowing the
four conditions of a deadlock to occur in the system
at the same time.
Understanding Operating Systems, Sixth Edition
86
Summary (cont’d)
• By eliminating at least one of the four conditions
(mutual exclusion, resource holding, no preemption,
and circular wait), the system can be kept deadlockfree.
– The disadvantage of a preventive policy is that each
of these conditions is vital to different parts of the
system at least some of the time, so prevention
algorithms are complex and to routinely execute them
involves high overhead.
• Deadlocks can be avoided by clearly identifying safe
states and unsafe states and requiring the system to
keep enough resources in reserve to guarantee that
all jobs active in the system can run to completion.
Understanding Operating Systems, Sixth Edition
87
Summary (cont’d)
– The disadvantage of an avoidance policy is that the
system’s resources aren’t allocated to their fullest
potential.
• If a system doesn’t support prevention or avoidance,
then it must be prepared to detect and recover from
the deadlocks that occur.
– This option usually relies on the selection of at least
one “victim” – a job that must be terminated before it
finishes execution and restarted from the beginning.
Understanding Operating Systems, Sixth Edition
88