6
某系统有R1,R2和R3共三种资源,在T0时刻P1,P2,P3和P4这四个进程对资源的占用和
需求情况见下表,此时系统的可用资源向量为(2,1,2)。试问:
- 系统是否处于安全状态?若安全,则请给出一个安全序列。
- 若此时进程P1和进程P2均发出资源请求向量Request(1,0,1),为了保证系统的安全
性,应如何分配资源给这两个进程?说明所采用策略的原因。 - 若2中两个请求立即得到满足后,系统此刻是否处于死锁状态?
Available = 2,1,2
Need
P1:2,2,2
P2:2,0,2
P3:1,0,3
P4:4,2,0
初始可用资源work=2,1,2
检查安全序列
找可执行进程
P1:2,2,2>=2,1,2,NO
P2:2,0,2<=2,1,2,YES
执行P2,释放资源
work=2,1,2+4,1,1=6,2,3
找可执行进程
P3:1,0,3<=6,2,3
执行P3,释放资源
work=2,1,1+6,2,3=8,3,4
执行P4。释放资源
work=0,0,2+8,3,4=8,3,6
执行P1,释放资源
work=1,0,0+8,3,6=9,3,6
P2->P3->P4->P1
2.
若此时P1发出资源请求Request1(1,0,1),则按银行家算法进行检查
Request1(1,0,1) <=Need1(2,2,2)
Request1(1,0,1) <=Available(2,1,2)
Allocation | Need | Available | |
---|---|---|---|
P1 | 2,0,1 | 1,2,1 | 1,1,1 |
P2 | 4,1,1 | 2,0,2 | 1,1,1 |
P3 | 2,1,1 | 1,0,3 | 1,1,1 |
P4 | 0,0,2 | 4.2.0 | 1,1,1 |
再利用安全性算法检查系统是否安全,可用资源1,1,1已经不能满足任何进程,系统进入不安全状态,此时系统不能将资源分配给P1 |
若此时进程P2发出资源请求Request2(1,0,1)
Request2(1,0,1) <=Need1(2,0,2)
Request2(1,0,1) <=Available(2,1,2)
Allocation | Need | Available | |
---|---|---|---|
P1 | 1,0,0 | 2,2,2 | 1,1,1 |
P2 | 5,1,2 | 1,0,1 | 1,1,1 |
P3 | 2,1,1 | 1,0,3 | 1,1,1 |
P4 | 0,0,2 | 4.2.0 | 1,1,1 |
再利用安全性算法检查系统是否安全 |
Work | Need | Allocation | Work+Allocation | |
---|---|---|---|---|
P2 | 1,1,1 | 1,0,1 | 5,1,2 | 6,2,3 |
P3 | 6,2,3 | 1,0,3 | 2,1,1 | 8,3,4 |
P4 | 8,3,4 | 4,2,0 | 0,0,2 | 8,3,6 |
P1 | 8,3,6 | 2,2,2 | 1,0,0 | 9,3,6 |
存在安全序列:P2->P3->P4->P1,因此该状态是安全的,可以立即将进程P2所申请的资源分配给它 |
若2中的两个请求立即得到满足,则此刻系统并未立即进入死锁状态,因为这时所有的进程未提出新的资源申请,全部进程均未因资源请求没有得到满足而进入阻塞状态。
只有当进程提出资源申请且全部进程进入阻塞态时,系统才会处于死锁状态
7
使用银行家算法回答下面的问题:
- Need矩阵是怎样的?
- 系统是否处于安全状态?如安全,请给出一个安全序列。
- 若从进程P发来一个请求(0,4,2,0),这个请求能否立刻被满足?如安全,请给出一
个安全序列。
Need = Max - Allocation =
P0 = 0,0,0,0
P1 = 0,7,5,0
P2 = 1,0,0,2
P3 = 0,6,4,2
2.
Work = 1,5,2,0
Work | Need | Allocation | Work+Allocation | |
---|---|---|---|---|
P0 | 1,5,2,0 | 0,0,0,0 | 0,0,1,2 | 1,5,3,2 |
P1 | 1,5,3,2 | 1,0,0,2 | 1,3,5,4 | 2,8,8,6 |
P2 | 2,8,8,6 | 0,7,5,0 | 1,0,0,0 | 3,8,8,6 |
P3 | 3,8,8,6 | 0,6,4,2 | 0,0,1,4 | 3,8,9,10 |
因为存在P0->P2->P1->P3,系统处于安全状态 |
Request1(0,4,2,0)<Need1(0,7,5,0)
Request1(0,4,2,0)<Acailable(1,5,2,0)
假设先满足,Available = 1,1,0,0
Work | Need | Allocation | Work+Allocation | |
---|---|---|---|---|
P0 | 1,1,0,0 | 0,0,0,0 | 0,0,1,2 | 1,1,1,2 |
P2 | 1,1,1,2 | 1,0,0,2 | 1,3,5,4 | 2,4,6,6 |
P1 | 2,4,6,6 | 0,3,3,0 | 1,4,2,0 | 3,8,8,6 |
P3 | 3,8,8,6 | 0,6,4,2 | 0,0,1,4 | 3,8,9,10 |
因为存在安全序列P0->P2->P1->P3,所以系统任处于安全状态。 | ||||
所以P1的请求应该马上满足 |
8
假设具有5个进程的进程集合P={P0,P1,P2,P3,P4},系统中有三类资源A,B,C,假设
在某时刻有如下状态:
当前系统是否处于安全状态?
若系统中的可利用资源Available为(0,6,2),系统是否安全?
若系统处在安全状态,请给出安全序列;若系统处在非安全状态,简要说明原因。
Need:
P0,0,0,1
P1,0,7,5
P2,1,0,0
P3,0,6,2
P4,0,6,4
Work = Available = 1,4,0
先执行P2,释放资源
Work = 2,7,5,可以满足任意进程的需求
所以系统不会出现死锁,当前处于安全状态
2.
Work = 0,6,2
可以满足P0和P3的需求,执行完毕后释放资源,Work = 0,6,7
尽可满足P4的需求,P4结束后释放资源,Work = 0,6,8
此时不能满足余下任意进程的需求,系统出现死锁,因此当前系统处于非安全状态