admin 管理员组

文章数量: 887018

请大家务必仔细看,相信一定会看懂的!

银行家算法的原理
  1. 当一个进程对资源的最大需求量不超过系统中的资源数时可以接纳该进程。
  2. 进程可以分期请求资源,但请求的总数不能超过最大需求量。
  3. 当系统现有的资源不能满足进程尚需资源数时,对进程的请求可以推迟分配,但总能使进程在有限的时间里得到资源。

银行家算法例子:

假设系统中有三类互斥资源R1、R2、R3,可用资源数分别是9,8,5。在T0时刻系统中有P1,P2,P3,P4,P5共5个进程,这些进程对资源的最大需求量和已分配资源数如下所示,如果进程按____________序列执行,那么系统状态使安全的。

​ 进程资源表

| 资源 | 最大需求量R1,R2,R3 | 已分配资源 R1,R2,R3 |

进程R1R2R3R1R2R3
P1652121
P2221211
P3811210
P4121120
P5344113

A.P1->P2->P4->P5->P3

B.P2->P4->P5->P1->P3

C.P2->P1->P4->P5->P3

D.P4->P2->P5->P1->P3

​ 进程资源表

| 资源 | 最大需求量 R1,R2,R3 | 已分配资源 R1,R2,R3 | 还需资源 R1,R2,R3 |

进程R1R2R3R1R2R3R1R2R3
P1652121531
P2221211010
P3811210601
P4121120001
P5344113231

R1,R2,R3现在已分配资源数: 7 7 5

R1,R2,R3现在未分配资源数: 2 1 0

现在从未分配的资源中给五个进程分配资源,使得分配完成后,可以让得到资源的进程完成当前的任务以释放资源。可以看到:

  • R1=2,R2=1,R3=0

  • 5个进程所需资源分别为:

    1. 5,3,1
    2. 0,1,0
    3. 6,0,1
    4. 0,0,1
    5. 2,3,1
  • 目前就只有P2进程可以从还未分配的资源中分配资源,进而完成任务,释放资源。故分配给P2进程资源。

  • P2完成任务并释放资源。现在R1,R2,R3未分配的资源为:4,2,1

  • 4个进程所需资源分别为:

    1. 5,3,1

    2. 6,0,1

    3. 0,0,1

    4. 2,3,1

  • 目前4个进程只有P4进程可以从还未分配的资源中分配资源,分配资源后进而完成任务,释放P4进程已分配的资源。

  • P4执行完并释放资源。现在R1,R2,R3未分配的资源为:5,4,1

  • 剩下3个进程所需资源分别为:

    1. 5,3,1

    2. 6,0,1

    3. 2,3,1

  • 现在P1和P5进程都可以执行完并释放资源。既然题目中是按照P2->P4->P5->P1->P3的顺序来执行,这里就为P5进程分配资源。

  • P5执行完并释放资源。现在R1,R2,R3未分配的资源为:6,5,4

  • 剩下的2个进程所需资源分别为:

    1. 5,3,1

    2. 6,0,1

  • 此时P1,P3进程都可满足条件。这里还是按照题目的选项B(P2->P4->P5->P1->P3)来验证。现在为P1分配资源。

  • P1执行完并释放资源。现在R1,R2,R3未分配的资源为:7,7,5

  • 剩下的1个进程:

    1. 6,0,1
  • 现在为P3分配资源。P3进程执行完并释放资源。

  • 到此执行完毕。故选项B正确。还有不清楚的可以用这种方法检查剩下的选项。

本文标签: 死锁 银行家 算法 例子 分配