操作系统期末复习

2023-12-29 18:46:46

银行家算法

  1. 某系统有A,B,C三类资源(数量分别为17,5,20)和P1~P5五个进程,在T0时刻系统状态如下表所示:

进程

资源最大需求量

已分配资源

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。

  1. 某系统有A、B、C、D这4类资源供5个进程共享,进程对资源的需求和分配情况如下表所示。

进程

已占资源

最大需求数

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的请求。

  1. 银行家算法。假设系统中有5个进程{P1、P2、P3、P4、P5}和4种类型的资源{R1,R2,R3、R4},资源的数量分别为(11,8,6,10),在T0时刻的资源分配情况如下表所示,此时若进程P3请求资源(1,0,2,1),请问是否能实施资源分配?为什么?

资源

进程

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分;答案不完整酌情扣分。

  1. 银行家算法。假设系统中有5个进程{P1、P2、P3、P4、P5}和4种类型的资源{R1,R2,R3、R4},资源的数量分别为(11,11,6,7),在T0时刻的资源分配情况如下表所示,(1)请问此时系统是否安全?若安全则找出安全路径;(2)此时若进程P2请求资源(3,0,3,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阻塞。

  1. 银行家算法。假设系统中有5个进程{P1、P2、P3、P4、P5}和4种类型的资源{R1,R2,R3、R4},资源的数量分别为(6,8,9,11),在T0时刻的资源分配情况如下表所示,(1)请问此时系统是否安全?若安全则找出安全路径;(2)此时若进程P3请求资源(3,2,3,1),请问是否能实施资源分配?为什么?

资源

进程

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阻塞。

  1. 银行家算法。假设系统中有5个进程{P1、P2、P3、P4、P5}和4种类型的资源{R1,R2,R3、R4},资源的数量分别为(6,6,8,11),在T0时刻的资源分配情况如下表所示,此时若进程P3请求资源(1,0,2,1),请问是否能实施资源分配?为什么?

资源

进程

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分配资源。

银行家算法

  1. 某系统有A,B,C三类资源(数量分别为17,5,20)和P1~P5五个进程,在T0时刻系统状态如下表所示:

进程

资源最大需求量

已分配资源

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。

  1. 某系统有A、B、C、D这4类资源供5个进程共享,进程对资源的需求和分配情况如下表所示。

进程

已占资源

最大需求数

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的请求。

  1. 银行家算法。假设系统中有5个进程{P1、P2、P3、P4、P5}和4种类型的资源{R1,R2,R3、R4},资源的数量分别为(11,8,6,10),在T0时刻的资源分配情况如下表所示,此时若进程P3请求资源(1,0,2,1),请问是否能实施资源分配?为什么?

资源

进程

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分;答案不完整酌情扣分。

  1. 银行家算法。假设系统中有5个进程{P1、P2、P3、P4、P5}和4种类型的资源{R1,R2,R3、R4},资源的数量分别为(11,11,6,7),在T0时刻的资源分配情况如下表所示,(1)请问此时系统是否安全?若安全则找出安全路径;(2)此时若进程P2请求资源(3,0,3,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阻塞。

  1. 银行家算法。假设系统中有5个进程{P1、P2、P3、P4、P5}和4种类型的资源{R1,R2,R3、R4},资源的数量分别为(6,8,9,11),在T0时刻的资源分配情况如下表所示,(1)请问此时系统是否安全?若安全则找出安全路径;(2)此时若进程P3请求资源(3,2,3,1),请问是否能实施资源分配?为什么?

资源

进程

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阻塞。

  1. 银行家算法。假设系统中有5个进程{P1、P2、P3、P4、P5}和4种类型的资源{R1,R2,R3、R4},资源的数量分别为(6,6,8,11),在T0时刻的资源分配情况如下表所示,此时若进程P3请求资源(1,0,2,1),请问是否能实施资源分配?为什么?

资源

进程

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分配资源。

文章来源:https://blog.csdn.net/weixin_62399938/article/details/135254116
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。