银行家算法步骤

题目

在一个多用户操作系统中,有5个进程 {P0, P1, P2, P3, P4} 和三类资源 {A, B, C}。系统中的资源总数分别为 A = 10, B = 5, C = 7。
在某时刻 T0,系统的资源分配情况如下表所示:

进程Allocation(A,B,C)Maximum(A,B,C)
p0(0, 2, 0)(7, 5, 3)
p1(2, 0, 0)(3, 2, 2)
p2(3, 0, 2)(9, 0, 2)
p3(2, 1, 1)(2, 2, 2)
p4(0, 0, 2)(4, 3, 3)


此时系统的可用资源向量 Available 为 (3, 3, 2)。
> 单词意思:Need:需要多少;Allocation:已分配;Maximum:最大容量

任务

1. 求每个进程的Need向量;

2. 使用银行家算法判断当前系统是否处于安全状态,如果是请找出一个安全序列,如果不是,请给出理由;

3. 如果p1进程的请求资源变成(1,0,0),系统是否满足安全序列;如果是,请更新表格,给出Allocation,maximum和Need;如果不是,请给出理由;

答案

1.求每个进程的Need向量;

每个进程的Need向量等于=Maximum-Allocation;所以得到以下表格:

进程Allocation(A,B,C)Maximum(A,B,C)Need
p0(0, 2, 0)(7, 5, 3)(7,3,3)
p1(2, 0, 0)(3, 2, 2)(1,2,2)
p2(3, 0, 2)(9, 0, 2)(6,0,0)
p3(2, 1, 1)(2, 2, 2)(0,1,1)
p4(0, 0, 2)(4, 3, 3)(4,3,1)

2. 判断是否安全以及找出一个安全序列;

最简单的理解就是,当我们算出上面每个进程的Need值之后,只需要和Avaliable比较,然后就能选择先让哪一个进程执行;

ps:这里有一个很重要的知识点,进程执行完之后,Avaliable = Avaliable+Allocation;因为进程执行完之后,已分配的资源会被释放,所以就会被释放在Avaliable里面去(安全序列并不是唯一的顺序,主要是看你怎么分配);

①初始值Avaliable 分配给p1后更新Avaliable = (3,3,2)+(2,0,0) = (5,3,2)

②再分配给p4后更新Avaliable = (5,3,2)+(0,0,2) = (5,3,4)

③在分配给p3后更新Avaliable = (5,3,4) + (2,1,1) = (7,4,5)

④在分配给p0后更新Avaliable = (7,4,5)+(0,0,2)=(7,4,7)

⑤在分配给p2后更新Avaliable;到这里就能很明显看出是满足的;

所以最终答案:是否安全?安全;安全序列为:p1---p4---3---p0---p2

3. 如果p1进程的请求资源变成(1,0,0),系统是否满足安全序列;如果是,请更新表格,给出Allocation,maximum和Need;如果不是,请给出理由;

只需要把上面的表格

换成(1,0,0)后再根据步骤2重新算一遍得出答案即可;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值