操作系统习题4—进程死锁
1、试解释在十字路口产生的交通死锁现象中包括了死锁产生的 4 个必要条件,并给出避免产生交通死锁的简要规则。
四个必要条件:
- ① 互斥:同一时刻只能有一辆车占据道路上的同一个空间位置
- ② 占有等待:一辆车占据道路上的一个空间位置并等待着前进
- ③ 非剥夺:一辆车不能从道路上当前空间位置挪走
- ④ 循环等待:每辆车都等待着前面的车辆前进,形成一个循环
简明规则:
在十字路口设立一组红绿灯,前两分钟只允许南北方向的车辆同行,后两分钟只允许东西方向的车辆同行。每两分钟切换一次红绿灯,可以避免这个交通死锁。
2、设三个进程共享四个资源,每次资源分配与请求只能以一个单位进行。已知每一进程最多需要 2 个单位的资源,那么系统中会发生死锁现象吗?试说明原因。
系统中不会出现死锁现象。
四个单位资源分配给三个进程,根据抽屉原理,至少会有一个进程分配到两个单位资源。因为一个进程最多需要两个单位资源,这个进程可以顺利执行完毕,然后此进程将资源释放出去,其他进程得到了资源就能够继续执行,所有的进程都能在有限时间内得到所需资源而执行完毕。
3、系统在某一时刻的状态如下表所示,使用银行家算法回答下列问题。
(1)请给出 Need 矩阵。
N
e
e
d
=
M
a
x
−
A
l
l
o
c
a
t
i
o
n
=
[
0
0
0
0
0
7
5
0
1
0
0
2
0
0
2
0
0
6
4
2
]
Need = Max-Allocation =\begin{bmatrix} 0&0&0&0\\ 0&7&5&0\\ 1&0&0&2\\ 0&0&2&0\\ 0&6&4&2\\ \end{bmatrix}
Need=Max−Allocation=⎣⎢⎢⎢⎢⎡00100070060502400202⎦⎥⎥⎥⎥⎤
(2)当前系统是否处于安全状态?
初始化矢量 Work=Available(1,5,2,0)
系统安全性分析:
因为存在一个安全序列<P0、P3、P2、P1、P4>,所以系统处于安全状态
(3)如果从进程 P1发来一个请求(0,4,2,0),这个请求能否立刻满足?
Request1(0,4,2,0) < Need1(0,7,5,0)
Request1(0,4,2,0) < Available(1,5,2,0)
假设先试着满足进程 P1 点这个请求,则 Available 变为(1,1,0,0)
系统状态变化为:
再对系统进行安全性分析:
因为存在一个安全序列<P0、P2、P3、P1、P4>,所以系统仍然处于安全状态
进程 P1 这个请求应该马上被满足
4.化简下面的资源分配图,并判断系统中是否存在死锁。
尝试化简的资源分配图如下:
这个资源图不可完全简化,系统会发生死锁