第3章处理机调度与死锁
31典型例题解析
【例1】(1)3个进程共享4个同种类型的资源,每个进程最大需要2个资源,请问系统是否会因为竞争该资源而死锁?(2)
个进程共享m个同类资源,若每个进程都需要用该类资源,而且各进程对该类资源的最大需求量之和小于m
。说明该系统不会因竞争该类资源而阻塞。(3)在(2)中,如果没有“每个进程都需要用该类资源”的限制,情况又会如何?(西北工业大学2000年考题)答:(1)该系统不会因为竞争该类资源而死锁。因为,必有一个进程可获得2个资源,故能顺利完成,并释放出其所占用的2个资源给其他进程使用,使它们也顺利完成。(2)用Maxi表示第i个进程的最大资源需求量,
eed(i)表示第i个进程还需要的资源量,alloci表示第i个进程已分配的资源量。由题中所给条件可知:
eed(i)0对所有的imax1…maxi…max
m
如果在这个系统中发生了死锁,则意味着已有一个以上的进程因申请不到该类资源而无限阻塞,而m个资源应该全部分配出去,即alloc1…alloci…alloc
m因此
eed1…
eedi…
eed
max1…maxi…max
alloc1…alloci…alloc
m
m即
eed1…
eedi…
eed
这样,至少必须存在一个进程,其
eedi≤0,这显然与题意不符,所以该系统不可能因竞争该类资源而进入死锁状态。(3)此时系统可能发生死锁,如
4m3时,若P1的Max为0,而其余三个进程的Max都为2,则仍然满足最大需求量之和(即6)小于m
(即7)的要求,但当除P1以外的其余三个进程各得到一个资源时,这三个进程将进入死锁状态。【例2】设系统中有3种类型的资源A、B、C和5个进程P0、P1、P2、P3、P4,A资源的数量为10,B资源的数量为5,C资源的数量为7。在T0时刻系统状态如下表所示。系统采用银行家算法实施死锁避免策略。
Max
Allocatio
Need
Available
ABCABCABCABC
P07
5
3
0
1
0
7
4
3
3
3
2
P1322200122
P2902302600
P3222211011P4433002431(1)T0时刻是否为安全状态?若是,请给出安全序列。(2)在T0时刻若进程P1发出资源请求Request(1,0,2),是否能够实施资源分配?(3)在②的基础上P4发出资源请求Request(3,3,0),是否能够实施资源分配?(4)在③的基础上P0发出资源请求Request(0,2,0),是否能够实施资源分配答:1利用银行家算法对T0时刻的资源分配情况进行分析,可得此时刻的安全性分析情
f况
Work
A
B
C
P13
3
2
P35
3
2
P47
4
3
P27
4
5
P0104
7
Need
A
B
C
1
2
2
0
1
1
4
3
1
6
0
0
7
4
r