银行家算法——操作系统的运用

银行家算法是一种用于避免操作系统中死锁的策略,它涉及到四个关键数据结构:可利用资源向量、最大需求矩阵、分配矩阵和需求矩阵。系统在分配资源前会检查分配是否安全,确保不会导致死锁。给定的例子展示了如何应用算法来管理ABC三种类型的资源,并确保系统稳定。

银行家算法是一种最有代表性的避免死锁的算法。在避免死锁方法中允许进程动态地申请资源,但系统在进行资源分配之前,应先计算此次分配资源的安全性,若分配不会导致系统进入不安全状态,则分配,否则等待。为实现银行家算法,系统必须设置若干数据结构。

1)可利用资源向量Available

是个含有m个元素的数组,其中的每一个元素代表一类可利用的资源数目。如果Available[j]=K,则表示系统中现有Rj类资源K个。

2)最大需求矩阵Max

这是一个n×m的矩阵,它定义了系统中n个进程中的每一个进程对m类资源的最大需求。如果Max[i,j]=K,则表示进程i需要Rj类资源的最大数目为K。

3)分配矩阵Allocation

这也是一个n×m的矩阵,它定义了系统中每一类资源当前已分配给每一进程的资源数。如果Allocation[i,j]=K,则表示进程i当前已分得Rj类资源的 数目为K。

4)需求矩阵Need。

这也是一个n×m的矩阵,用以表示每一个进程尚需的各类资源数。如果Need[i,j]=K,则表示进程i还需要Rj类资源K个,方能完成其任务。

Need[i,j]=Max[i,j]-Allocation[i,j]

A B C资源为10,5,7

Max

A B C

Allocation

A B C

Need

A B C

Available

A B C

P0

7 5 3

0 1 0

7 4 3

3 3 2

P1

3 2 2

2 0 0

1 2 2

P2

9 0 2

3 0 2

6 0 0

P3

2 2 2

2 1 1

0 1 1

P4

4 3 3

0 0 2

4 3 1

Availavle=10-(2+3+2)=3

WORK

A B C

NEED

A B C

ALLOCATION

A B C

WORI+ALLOCATION

A B C

FINISH

P1

3 2 2

1 2 2

2 0 0

5 3 2

1

P3

5 3 2

0 1 1

2 1 1

7 4 3

1

P4

7 4 3

4 3 1

0 0 2

7 4 5

1

P2

7 4 5

6 0 0

3 0 2

10 4 7

1

P0

10 4 7

7 4 3

0 1 0

10 5 7

1

如果最后不是得到与最初ABC资源一样,则解错

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值