进程 | 资源最大需求量 | 已分配资源 | ||||
A | B | C | A | B | C | |
P1 | 5 | 5 | 9 | 2 | 1 | 2 |
P2 | 5 | 3 | 6 | 4 | 0 | 2 |
P3 | 4 | 0 | 11 | 4 | 0 | 5 |
P4 | 4 | 2 | 5 | 2 | 0 | 4 |
P5 | 4 | 2 | 4 | 3 | 1 | 4 |
系统采用银行家算法实施死锁避免策略,请回答下列问题:
① T0时刻是否为安全状态?若是,请给出安全序列。
② 在T0时刻若进程P2请求资源(0,3,4),是否能实施资源分配?为什么?
③ 在②的基础上,若进程P4请求资源(2,0,1),是否能实施资源分配?为什么?
解:
①由已知条件可得尚需矩阵Need和可用资源向量Avalable如下:
Need | Available | |||||
A | B | C | A | B | C | |
P1 | 3 | 4 | 7 | 2 | 3 | 3 |
P2 | 1 | 3 | 4 | |||
P3 | 0 | 0 | 6 | |||
P4 | 2 | 2 | 1 | |||
P5 | 1 | 1 | 0 |
利用银行家算法对此时刻的资源分配情况进行分析如下表:
进程 | Work | Need | Allocation | Work+allocation | Finish | ||||||||||||
P4 | 2 | 3 | 3 | 2 | 2 | 1 | 2 | 0 | 4 | 4 | 3 | 7 | true | ||||
P2 | 4 | 3 | 7 | 1 | 3 | 4 | 4 | 0 | 2 | 8 | 3 | 9 | true | ||||
P3 | 8 | 3 | 9 | 0 | 0 | 6 | 4 | 0 | 5 | 12 | 3 | 14 | true | ||||
P5 | 12 | 3 | 14 | 1 | 1 | 0 | 3 | 1 | 4 | 15 | 4 | 18 | true | ||||
P1 | 15 | 4 | 18 | 3 | 4 | 7 | 2 | 1 | 2 | 17 | 5 | 20 | true |
从上述分析可知,存在一个安全序列P4,P2,P3,P5,P1,故T0时刻系统是否安全的。
②在T0时刻若进程P2请求资源(0,3,4),不能实施资源分配。因为当前C类资源剩余3个而P2请求4个,客观条件无法满足它的请求,因此不能实施资源分配,P2阻塞。
③在②的基础上,若进程P4请求资源(2,0,1),可以实施资源分配。因为由①可知,P4是安全序列中的第一个进程,只要P4的请求量没有超出它的尚需量,系统满足它的请求后仍处于安全状态,即仍然存在安全序列P4,P2,P3,P5,P1。
进程 | 已占资源 | 最大需求数 | ||||||
A | B | C | D | A | B | C | D | |
P1 | 0 | 0 | 1 | 2 | 0 | 0 | 1 | 2 |
P2 | 1 | 0 | 0 | 0 | 1 | 7 | 5 | 0 |
P3 | 1 | 3 | 5 | 4 | 2 | 3 | 5 | 6 |
P4 | 0 | 6 | 3 | 2 | 0 | 6 | 5 | 2 |
P5 | 0 | 0 | 1 | 4 | 0 | 6 | 5 | 6 |
现在系统中A、B、C、D类资源分别还剩1、5、2、0个,请按银行家算法回答下列问题:(1)现在系统是否处于安全状态?为什么?
(2)如果现在进程P2提出需要(0,4,2,0)个资源的请求,系统能否满足它的请求?为什么?
解:(1)由已知条件可得Need矩阵如下:
进程 | 分配矩阵 | 尚需矩阵 | 可用资源数向量 | |||||||||||
P1 | 0 | 0 | 1 | 2 | 0 | 0 | 0 | 0 | 1 | 5 | 2 | 0 | ||
P2 | 1 | 0 | 0 | 0 | 0 | 7 | 5 | 0 | ||||||
P3 | 1 | 3 | 5 | 4 | 1 | 0 | 0 | 2 | ||||||
P4 | 0 | 6 | 3 | 2 | 0 | 0 | 2 | 0 | ||||||
P5 | 0 | 0 | 1 | 4 | 0 | 6 | 4 | 2 |
利用银行家算法对此时刻的资源分配情况进行分析如下表:
进程 | Work | Need | Allocation | Work+allocation | Finish | ||||||||||||
P1 | 1 | 5 | 2 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 2 | 1 | 5 | 3 | 2 | true |
P3 | 1 | 5 | 3 | 2 | 1 | 0 | 0 | 2 | 1 | 3 | 5 | 4 | 2 | 8 | 8 | 6 | true |
P2 | 2 | 8 | 8 | 6 | 0 | 7 | 5 | 0 | 1 | 0 | 0 | 0 | 3 | 8 | 8 | 6 | true |
P4 | 3 | 8 | 8 | 6 | 0 | 0 | 2 | 0 | 0 | 6 | 3 | 2 | 3 | 14 | 11 | 8 | true |
P5 | 3 | 14 | 11 | 8 | 0 | 6 | 4 | 2 | 0 | 0 | 1 | 4 | 3 | 14 | 12 | 12 | true |
从上述分析可知,存在安全序列P1,P3,P2,P4,P5,故系统状态是否安全的。(注:安全序列不唯一)
(2)若进程P2请求(0,4,2,0),试分配并修改相应的数据结构,则系统状态变为:
进程 | 分配矩阵 | 尚需矩阵 | 可用资源数向量 | |||||||||||
P1 | 0 | 0 | 1 | 2 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | ||
P2 | 1 | 4 | 2 | 0 | 0 | 3 | 3 | 0 | ||||||
P3 | 1 | 3 | 5 | 4 | 1 | 0 | 0 | 2 | ||||||
P4 | 0 | 6 | 3 | 2 | 0 | 0 | 2 | 0 | ||||||
P5 | 0 | 0 | 1 | 4 | 0 | 6 | 4 | 2 |
进程P1已获得全部资源,可运行完成。P1结束归还资源后,系统剩余资源为(1,1,1,2),能满足P3的需求,P3可运行完成。P3结束释放资源后,系统剩余资源为(2,4,6,6),能满足P2的需求,P2可运行完成。P2结束释放资源后,系统剩余资源为(3,8,8,6)。类似地,P4、P5也能获得所需资源而运行完成。因此存在安全序列P1,P3,P2,P4,P5,即系统仍然是否安全的,因此系统能满足P2的请求。
资源 进程 | Max R1 R2 R3 R4 | Allocation R1 R2 R3 R4 | Need R1 R2 R3 R4 | Available R1 R2 R3 R4 |
P1 | 4??4??2??6 | 1??2??0??2 | 3??2??2??4 | 5??2??4??7 |
P2 | 6??1??6??1 | 1??0??1??0 | 5??1??5??1 | |
P3 | 5??6??2??6 | 2??1??0??0 | 3??5??2??6 | |
P4 | 3??6??2??2 | 2??2??0??1 | 1??4??2??1 | |
P5 | 5??1??5??4 | 0??1??1??0 | 5??0??4??4 |
解:在T0时刻进程P2请求资源为(1,2,1,0),其需求资源为(5,4,6,5),请求数量没有超过需求量;系统可用资源为(3,3,3,5),可以考虑预分配。
预分配后资源情况如下表:
资源 进程 | Max R1 R2 R3 R4 | Allocation R1 R2 R3 R4 | Need R1 R2 R3 R4 | Available R1 R2 R3 R4 |
P1 | 4??4??2??6 | 1??2??0??2 | 3??2??2??4 | 4??2??2??6 |
P2 | 6??1??6??1 | 1??0??1??0 | 5??1??5??1 | |
P3 | 5??6??2??6 | 3??1??2??1 | 2??5??0??5 | |
P4 | 3??6??2??2 | 2??2??0??1 | 1??4??2??1 | |
P5 | 5??1??5??4 | 0??1??1??0 | 5??0??4??4 |
下面对资源预分配后的系统进行安全性检查,
顺序 | 进程 | Work R1 R2 R3 R4 | Need R1 R2 R3 R4 | Allocation R1 R2 R3 R4 | Work+Allocation R1 R2 R3 R4 |
1 | P1 | 4??2??2??6 | 3??2??2??4 | 1??2??0??2 | 5??4??2??8 |
5 | P2 | 10?8??5 10 | 5??1??5??1 | 1??0??1??0 | 11 ?8 ?6 10 |
3 | P3 | 7??6??2??9 | 2??5??0??5 | 3??1??2??1 | 10 ?7 ?4 10 |
2 | P4 | 5??4??2??8 | 1??4??2??1 | 2??2??0??1 | 7??6??2??9 |
4 | P5 | 10?7??4 10 | 5??0??4??4 | 0??1??1??0 | 10 ?8 ?5 10 |
结论:在T0时刻给进程P3分配资源后,系统存在安全序列[P1, P4, P3, P5, P2],因此可以给P3分配资源。
评分标准:(1)正确检查预分配条件得2分;(2)正确进行预分配得2分;(3)正确进行安全性检查,P1至P5对应的每一行的值各得1分,(4)正确给出结论得1分;答案不完整酌情扣分。
资源 进程 | Max R1 R2 R3 R4 | Allocation R1 R2 R3 R4 | Need R1 R2 R3 R4 | Available R1 R2 R3 R4 |
P1 | 4,6,5,5 | 1,2,0,2 | 3,4,5,3 | 3,4,2,4 |
P2 | 6,1,6,4 | 2,1,2,0 | 4,0,4,4 | |
P3 | 5,6,3,1 | 1,1,2,0 | 4,5,1,1 | |
P4 | 5,3,6,6 | 2,1,0,0 | 3,2,6,6 | |
P5 | 4,3,2,3 | 2,2,0,1 | 2,1,2,2 |
解:(1)对T0时刻系统状态的安全性进行检查:
顺序 | 进程 | Work R1 R2 R3 R4 | Need R1 R2 R3 R4 | Allocation R1 R2 R3 R4 | Work+Allocation R1 R2 R3 R4 |
4 | P1 | 8,8,6,5 | 3,4,5,3 | 1,2,0,2 | 9,10,6,7 |
3 | P2 | 6,7,4,5 | 4,0,4,4 | 2,1,2,0 | 8,8,6,5 |
2 | P3 | 5,6,2,5 | 4,5,1,1 | 1,1,2,0 | 6,7,4,5 |
5 | P4 | 9,10,6,7 | 3,2,6,6 | 2,1,0,0 | 11,11,6,7 |
1 | P5 | 3,4,2,4 | 2,1,2,2 | 2,2,0,1 | 5,6,2,5 |
由上面可见T0时刻系统存在一条安全路径[P5, P3, P2, P1, P4],系统是安全的。
(2)在T0时刻若进程P2请求资源(3,0,3,1),不能实施资源分配。因为T0时刻可以资源为(3,4,2,4),资源R3可用数为2,而请求数为3,无法满足预分配要求,因此不能实施资源分配,P2阻塞。
资源 进程 | Max R1 R2 R3 R4 | Allocation R1 R2 R3 R4 | Need R1 R2 R3 R4 | Available R1 R2 R3 R4 |
P1 | 1,6,4,5 | 1,0,2,0 | 0,6,2,5 | 2,1,4,8 |
P2 | 6,3,2,4 | 0,2,0,2 | 6,1,2,2 | |
P3 | 5,5,5,2 | 2,2,2,0 | 3,3,3,2 | |
P4 | 1,3,3,5 | 1,2,1,0 | 0,1,2,5 | |
P5 | 1,5,6,6 | 0,1,0,1 | 1,4,6,5 |
解:(1)对T0时刻系统状态的安全性进行检查:
顺序 | 进程 | Work R1 R2 R3 R4 | Need R1 R2 R3 R4 | Allocation R1 R2 R3 R4 | Work+Allocation R1 R2 R3 R4 |
4 | P1 | 5,6,7,9 | 0,6,2,5 | 1,0,2,0 | 6,6,9,9 |
5 | P2 | 6,6,9,9 | 6,1,2,2 | 0,2,0,2 | 6,8,9,11 |
2 | P3 | 3,3,5,8 | 3,3,3,2 | 2,2,2,0 | 5,5,7,8 |
1 | P4 | 2,1,4,8 | 0,1,2,5 | 1,2,1,0 | 3,3,5,8 |
3 | P5 | 5,5,7,8 | 1,4,6,5 | 0,1,0,1 | 5,6,7,9 |
由上面可见T0时刻系统存在一条安全路径[P4, P3, P5, P1, P2],系统是安全的。
(2)在T0时刻若进程P3请求资源(3,2,3,1),不能实施资源分配。因为T0时刻可以资源为(2,1,4,8),资源R2和R3可用数为2和1,而请求数分别为3和2,无法满足预分配要求,因此不能实施资源分配,P3阻塞。
资源 进程 | Max R1 R2 R3 R4 | Allocation R1 R2 R3 R4 | Need R1 R2 R3 R4 | Available R1 R2 R3 R4 |
P1 | 5,3,2,5 | 0,1,1,0 | 5,2,1,5 | 3,2,4,6 |
P2 | 2,4,2,4 | 0,2,2,2 | 2,2,0,2 | |
P3 | 3,4,2,6 | 1,1,0,0 | 2,3,2,6 | |
P4 | 1,6,5,2 | 0,0,1,1 | 1,6,4,1 | |
P5 | 3,5,2,3 | 2,0,0,2 | 1,5,2,1 |
解:在T0时刻进程P3请求资源为(1,0,2,1),其需求资源为(2,3,2,6),系统可用资源为(3,2,4,6),请求数量没有超过需求量;可以考虑预分配。
预分配后资源情况如下表:
资源 进程 | Max R1 R2 R3 R4 | Allocation R1 R2 R3 R4 | Need R1 R2 R3 R4 | Available R1 R2 R3 R4 |
P1 | 5,3,2,5 | 0,1,1,0 | 5,2,1,5 | 2,2,2,5 |
P2 | 2,4,2,4 | 0,2,2,2 | 2,2,0,2 | |
P3 | 3,4,2,6 | 2,1,2,1 | 1,3,0,5 | |
P4 | 1,6,5,2 | 0,0,1,1 | 1,6,4,1 | |
P5 | 3,5,2,3 | 2,0,0,2 | 1,5,2,1 |
下面对资源预分配后的系统进行安全性检查,
顺序 | 进程 | Work R1 R2 R3 R4 | Need R1 R2 R3 R4 | Allocation R1 R2 R3 R4 | Work+Allocation R1 R2 R3 R4 |
4 | P1 | 6,5,6,10 | 5,2,1,5 | 0,1,1,0 | 6,6,7,10 |
1 | P2 | 2,2,2,5 | 2,2,0,2 | 0,2,2,2 | 2,4,4,7 |
2 | P3 | 2,4,4,7 | 1,3,0,5 | 2,1,2,1 | 4,5,6,8 |
5 | P4 | 6,6,7,10 | 1,6,4,1 | 0,0,1,1 | 6,6,8,11 |
3 | P5 | 4,5,6,8 | 1,5,2 1 | 2,0,0,2 | 6,5,6,10 |
结论:在T0时刻给进程P3分配资源后,系统存在安全序列[P2, P3, P5, P1, P4],因此可以给P3分配资源。
进程 | 资源最大需求量 | 已分配资源 | ||||
A | B | C | A | B | C | |
P1 | 5 | 5 | 9 | 2 | 1 | 2 |
P2 | 5 | 3 | 6 | 4 | 0 | 2 |
P3 | 4 | 0 | 11 | 4 | 0 | 5 |
P4 | 4 | 2 | 5 | 2 | 0 | 4 |
P5 | 4 | 2 | 4 | 3 | 1 | 4 |
系统采用银行家算法实施死锁避免策略,请回答下列问题:
① T0时刻是否为安全状态?若是,请给出安全序列。
② 在T0时刻若进程P2请求资源(0,3,4),是否能实施资源分配?为什么?
③ 在②的基础上,若进程P4请求资源(2,0,1),是否能实施资源分配?为什么?
解:
①由已知条件可得尚需矩阵Need和可用资源向量Avalable如下:
Need | Available | |||||
A | B | C | A | B | C | |
P1 | 3 | 4 | 7 | 2 | 3 | 3 |
P2 | 1 | 3 | 4 | |||
P3 | 0 | 0 | 6 | |||
P4 | 2 | 2 | 1 | |||
P5 | 1 | 1 | 0 |
利用银行家算法对此时刻的资源分配情况进行分析如下表:
进程 | Work | Need | Allocation | Work+allocation | Finish | ||||||||||||
P4 | 2 | 3 | 3 | 2 | 2 | 1 | 2 | 0 | 4 | 4 | 3 | 7 | true | ||||
P2 | 4 | 3 | 7 | 1 | 3 | 4 | 4 | 0 | 2 | 8 | 3 | 9 | true | ||||
P3 | 8 | 3 | 9 | 0 | 0 | 6 | 4 | 0 | 5 | 12 | 3 | 14 | true | ||||
P5 | 12 | 3 | 14 | 1 | 1 | 0 | 3 | 1 | 4 | 15 | 4 | 18 | true | ||||
P1 | 15 | 4 | 18 | 3 | 4 | 7 | 2 | 1 | 2 | 17 | 5 | 20 | true |
从上述分析可知,存在一个安全序列P4,P2,P3,P5,P1,故T0时刻系统是否安全的。
②在T0时刻若进程P2请求资源(0,3,4),不能实施资源分配。因为当前C类资源剩余3个而P2请求4个,客观条件无法满足它的请求,因此不能实施资源分配,P2阻塞。
③在②的基础上,若进程P4请求资源(2,0,1),可以实施资源分配。因为由①可知,P4是安全序列中的第一个进程,只要P4的请求量没有超出它的尚需量,系统满足它的请求后仍处于安全状态,即仍然存在安全序列P4,P2,P3,P5,P1。
进程 | 已占资源 | 最大需求数 | ||||||
A | B | C | D | A | B | C | D | |
P1 | 0 | 0 | 1 | 2 | 0 | 0 | 1 | 2 |
P2 | 1 | 0 | 0 | 0 | 1 | 7 | 5 | 0 |
P3 | 1 | 3 | 5 | 4 | 2 | 3 | 5 | 6 |
P4 | 0 | 6 | 3 | 2 | 0 | 6 | 5 | 2 |
P5 | 0 | 0 | 1 | 4 | 0 | 6 | 5 | 6 |
现在系统中A、B、C、D类资源分别还剩1、5、2、0个,请按银行家算法回答下列问题:(1)现在系统是否处于安全状态?为什么?
(2)如果现在进程P2提出需要(0,4,2,0)个资源的请求,系统能否满足它的请求?为什么?
解:(1)由已知条件可得Need矩阵如下:
进程 | 分配矩阵 | 尚需矩阵 | 可用资源数向量 | |||||||||||
P1 | 0 | 0 | 1 | 2 | 0 | 0 | 0 | 0 | 1 | 5 | 2 | 0 | ||
P2 | 1 | 0 | 0 | 0 | 0 | 7 | 5 | 0 | ||||||
P3 | 1 | 3 | 5 | 4 | 1 | 0 | 0 | 2 | ||||||
P4 | 0 | 6 | 3 | 2 | 0 | 0 | 2 | 0 | ||||||
P5 | 0 | 0 | 1 | 4 | 0 | 6 | 4 | 2 |
利用银行家算法对此时刻的资源分配情况进行分析如下表:
进程 | Work | Need | Allocation | Work+allocation | Finish | ||||||||||||
P1 | 1 | 5 | 2 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 2 | 1 | 5 | 3 | 2 | true |
P3 | 1 | 5 | 3 | 2 | 1 | 0 | 0 | 2 | 1 | 3 | 5 | 4 | 2 | 8 | 8 | 6 | true |
P2 | 2 | 8 | 8 | 6 | 0 | 7 | 5 | 0 | 1 | 0 | 0 | 0 | 3 | 8 | 8 | 6 | true |
P4 | 3 | 8 | 8 | 6 | 0 | 0 | 2 | 0 | 0 | 6 | 3 | 2 | 3 | 14 | 11 | 8 | true |
P5 | 3 | 14 | 11 | 8 | 0 | 6 | 4 | 2 | 0 | 0 | 1 | 4 | 3 | 14 | 12 | 12 | true |
从上述分析可知,存在安全序列P1,P3,P2,P4,P5,故系统状态是否安全的。(注:安全序列不唯一)
(2)若进程P2请求(0,4,2,0),试分配并修改相应的数据结构,则系统状态变为:
进程 | 分配矩阵 | 尚需矩阵 | 可用资源数向量 | |||||||||||
P1 | 0 | 0 | 1 | 2 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | ||
P2 | 1 | 4 | 2 | 0 | 0 | 3 | 3 | 0 | ||||||
P3 | 1 | 3 | 5 | 4 | 1 | 0 | 0 | 2 | ||||||
P4 | 0 | 6 | 3 | 2 | 0 | 0 | 2 | 0 | ||||||
P5 | 0 | 0 | 1 | 4 | 0 | 6 | 4 | 2 |
进程P1已获得全部资源,可运行完成。P1结束归还资源后,系统剩余资源为(1,1,1,2),能满足P3的需求,P3可运行完成。P3结束释放资源后,系统剩余资源为(2,4,6,6),能满足P2的需求,P2可运行完成。P2结束释放资源后,系统剩余资源为(3,8,8,6)。类似地,P4、P5也能获得所需资源而运行完成。因此存在安全序列P1,P3,P2,P4,P5,即系统仍然是否安全的,因此系统能满足P2的请求。
资源 进程 | Max R1 R2 R3 R4 | Allocation R1 R2 R3 R4 | Need R1 R2 R3 R4 | Available R1 R2 R3 R4 |
P1 | 4??4??2??6 | 1??2??0??2 | 3??2??2??4 | 5??2??4??7 |
P2 | 6??1??6??1 | 1??0??1??0 | 5??1??5??1 | |
P3 | 5??6??2??6 | 2??1??0??0 | 3??5??2??6 | |
P4 | 3??6??2??2 | 2??2??0??1 | 1??4??2??1 | |
P5 | 5??1??5??4 | 0??1??1??0 | 5??0??4??4 |
解:在T0时刻进程P2请求资源为(1,2,1,0),其需求资源为(5,4,6,5),请求数量没有超过需求量;系统可用资源为(3,3,3,5),可以考虑预分配。
预分配后资源情况如下表:
资源 进程 | Max R1 R2 R3 R4 | Allocation R1 R2 R3 R4 | Need R1 R2 R3 R4 | Available R1 R2 R3 R4 |
P1 | 4??4??2??6 | 1??2??0??2 | 3??2??2??4 | 4??2??2??6 |
P2 | 6??1??6??1 | 1??0??1??0 | 5??1??5??1 | |
P3 | 5??6??2??6 | 3??1??2??1 | 2??5??0??5 | |
P4 | 3??6??2??2 | 2??2??0??1 | 1??4??2??1 | |
P5 | 5??1??5??4 | 0??1??1??0 | 5??0??4??4 |
下面对资源预分配后的系统进行安全性检查,
顺序 | 进程 | Work R1 R2 R3 R4 | Need R1 R2 R3 R4 | Allocation R1 R2 R3 R4 | Work+Allocation R1 R2 R3 R4 |
1 | P1 | 4??2??2??6 | 3??2??2??4 | 1??2??0??2 | 5??4??2??8 |
5 | P2 | 10?8??5 10 | 5??1??5??1 | 1??0??1??0 | 11 ?8 ?6 10 |
3 | P3 | 7??6??2??9 | 2??5??0??5 | 3??1??2??1 | 10 ?7 ?4 10 |
2 | P4 | 5??4??2??8 | 1??4??2??1 | 2??2??0??1 | 7??6??2??9 |
4 | P5 | 10?7??4 10 | 5??0??4??4 | 0??1??1??0 | 10 ?8 ?5 10 |
结论:在T0时刻给进程P3分配资源后,系统存在安全序列[P1, P4, P3, P5, P2],因此可以给P3分配资源。
评分标准:(1)正确检查预分配条件得2分;(2)正确进行预分配得2分;(3)正确进行安全性检查,P1至P5对应的每一行的值各得1分,(4)正确给出结论得1分;答案不完整酌情扣分。
资源 进程 | Max R1 R2 R3 R4 | Allocation R1 R2 R3 R4 | Need R1 R2 R3 R4 | Available R1 R2 R3 R4 |
P1 | 4,6,5,5 | 1,2,0,2 | 3,4,5,3 | 3,4,2,4 |
P2 | 6,1,6,4 | 2,1,2,0 | 4,0,4,4 | |
P3 | 5,6,3,1 | 1,1,2,0 | 4,5,1,1 | |
P4 | 5,3,6,6 | 2,1,0,0 | 3,2,6,6 | |
P5 | 4,3,2,3 | 2,2,0,1 | 2,1,2,2 |
解:(1)对T0时刻系统状态的安全性进行检查:
顺序 | 进程 | Work R1 R2 R3 R4 | Need R1 R2 R3 R4 | Allocation R1 R2 R3 R4 | Work+Allocation R1 R2 R3 R4 |
4 | P1 | 8,8,6,5 | 3,4,5,3 | 1,2,0,2 | 9,10,6,7 |
3 | P2 | 6,7,4,5 | 4,0,4,4 | 2,1,2,0 | 8,8,6,5 |
2 | P3 | 5,6,2,5 | 4,5,1,1 | 1,1,2,0 | 6,7,4,5 |
5 | P4 | 9,10,6,7 | 3,2,6,6 | 2,1,0,0 | 11,11,6,7 |
1 | P5 | 3,4,2,4 | 2,1,2,2 | 2,2,0,1 | 5,6,2,5 |
由上面可见T0时刻系统存在一条安全路径[P5, P3, P2, P1, P4],系统是安全的。
(2)在T0时刻若进程P2请求资源(3,0,3,1),不能实施资源分配。因为T0时刻可以资源为(3,4,2,4),资源R3可用数为2,而请求数为3,无法满足预分配要求,因此不能实施资源分配,P2阻塞。
资源 进程 | Max R1 R2 R3 R4 | Allocation R1 R2 R3 R4 | Need R1 R2 R3 R4 | Available R1 R2 R3 R4 |
P1 | 1,6,4,5 | 1,0,2,0 | 0,6,2,5 | 2,1,4,8 |
P2 | 6,3,2,4 | 0,2,0,2 | 6,1,2,2 | |
P3 | 5,5,5,2 | 2,2,2,0 | 3,3,3,2 | |
P4 | 1,3,3,5 | 1,2,1,0 | 0,1,2,5 | |
P5 | 1,5,6,6 | 0,1,0,1 | 1,4,6,5 |
解:(1)对T0时刻系统状态的安全性进行检查:
顺序 | 进程 | Work R1 R2 R3 R4 | Need R1 R2 R3 R4 | Allocation R1 R2 R3 R4 | Work+Allocation R1 R2 R3 R4 |
4 | P1 | 5,6,7,9 | 0,6,2,5 | 1,0,2,0 | 6,6,9,9 |
5 | P2 | 6,6,9,9 | 6,1,2,2 | 0,2,0,2 | 6,8,9,11 |
2 | P3 | 3,3,5,8 | 3,3,3,2 | 2,2,2,0 | 5,5,7,8 |
1 | P4 | 2,1,4,8 | 0,1,2,5 | 1,2,1,0 | 3,3,5,8 |
3 | P5 | 5,5,7,8 | 1,4,6,5 | 0,1,0,1 | 5,6,7,9 |
由上面可见T0时刻系统存在一条安全路径[P4, P3, P5, P1, P2],系统是安全的。
(2)在T0时刻若进程P3请求资源(3,2,3,1),不能实施资源分配。因为T0时刻可以资源为(2,1,4,8),资源R2和R3可用数为2和1,而请求数分别为3和2,无法满足预分配要求,因此不能实施资源分配,P3阻塞。
资源 进程 | Max R1 R2 R3 R4 | Allocation R1 R2 R3 R4 | Need R1 R2 R3 R4 | Available R1 R2 R3 R4 |
P1 | 5,3,2,5 | 0,1,1,0 | 5,2,1,5 | 3,2,4,6 |
P2 | 2,4,2,4 | 0,2,2,2 | 2,2,0,2 | |
P3 | 3,4,2,6 | 1,1,0,0 | 2,3,2,6 | |
P4 | 1,6,5,2 | 0,0,1,1 | 1,6,4,1 | |
P5 | 3,5,2,3 | 2,0,0,2 | 1,5,2,1 |
解:在T0时刻进程P3请求资源为(1,0,2,1),其需求资源为(2,3,2,6),系统可用资源为(3,2,4,6),请求数量没有超过需求量;可以考虑预分配。
预分配后资源情况如下表:
资源 进程 | Max R1 R2 R3 R4 | Allocation R1 R2 R3 R4 | Need R1 R2 R3 R4 | Available R1 R2 R3 R4 |
P1 | 5,3,2,5 | 0,1,1,0 | 5,2,1,5 | 2,2,2,5 |
P2 | 2,4,2,4 | 0,2,2,2 | 2,2,0,2 | |
P3 | 3,4,2,6 | 2,1,2,1 | 1,3,0,5 | |
P4 | 1,6,5,2 | 0,0,1,1 | 1,6,4,1 | |
P5 | 3,5,2,3 | 2,0,0,2 | 1,5,2,1 |
下面对资源预分配后的系统进行安全性检查,
顺序 | 进程 | Work R1 R2 R3 R4 | Need R1 R2 R3 R4 | Allocation R1 R2 R3 R4 | Work+Allocation R1 R2 R3 R4 |
4 | P1 | 6,5,6,10 | 5,2,1,5 | 0,1,1,0 | 6,6,7,10 |
1 | P2 | 2,2,2,5 | 2,2,0,2 | 0,2,2,2 | 2,4,4,7 |
2 | P3 | 2,4,4,7 | 1,3,0,5 | 2,1,2,1 | 4,5,6,8 |
5 | P4 | 6,6,7,10 | 1,6,4,1 | 0,0,1,1 | 6,6,8,11 |
3 | P5 | 4,5,6,8 | 1,5,2 1 | 2,0,0,2 | 6,5,6,10 |
结论:在T0时刻给进程P3分配资源后,系统存在安全序列[P2, P3, P5, P1, P4],因此可以给P3分配资源。