银行家算法实验报告

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

银行家算法实验报告:

一、实验名称:银行家算法

二、实验目的:银行家算法是避免死锁的一种重要方法,通过编写一个简单的银行家算法程序,加深了解有关资源申请、避免死锁等概念,并体会和了解死锁和避免死锁的具体实施方法。

三、问题分析与设计:

1、算法思路:先对用户提出的请求进行合法性检查,即检查请求是否大于需要的,是否大于可利用的。若请求合法,则进行预分配,对分配后的状态调用安全性算法进行检查。若安全,则分配;若不安全,则拒绝申请,恢复到原来的状态,拒绝申请。

2、银行家算法步骤:

(1)如果Requesti<or=Need,则转向步骤

(2);否则,认为出错,因为它所需要的资源数已超过它所宣布的最大值。

(2)如果Request<or=Available,则转向步骤

(3);否则,表示系统中尚无足够的资源,进程必须等待。

(3)系统试探把要求的资源分配给进程Pi,并修改下面数据结构中的数值:

Available=Available-Request[i];

Allocation=Allocation+Request;Need=Need-Request;

(4)系统执行安全性算法,检查此次资源分配后,系统是否处于安全状态。

3、安全性算法步骤:

(1)设置两个向量

①工作向量Work。它表示系统可提供进程继续运行所需要的各类资源数目,执行安全算法开始时,Work=Allocation;

②布尔向量Finish。它表示系统是否有足够的资源分配给进程,使之运行完成,开始时先做Finish[i]=false,当有足够资源分配给进程时,令Finish[i]=true。

(2)从进程集合中找到一个能满足下述条件的进程:

①Finish[i]=false

②Need<or=Work如找到,执行步骤(3);否则,执行步骤(4)。(3)当进程P获得资源后,可顺利执行,直至完成,并释放出分配给它的资源,故应执行:Work=Work+Allocation;Finish[i]=true;转向步骤(2)。(4)如果所有进程的Finish[i]=true,则表示系统处于安全状态;否则,系统处于不安全状态。

免责声明:文章中操作建议仅代表第三方观点与本平台无关,投资有风险,入市需谨慎。据此交易,风险自担。

继续阅读
银行家

猜你喜欢

宁波银行暂停基金交易及查询服务
APP精选 宁波银行资讯 1小时前
兴业银行家庭服务信托业务暂停服务
兴业银行家庭服务信托业务暂停服务
APP精选 兴业银行资讯 2小时前
宁波银行暂停基金交易及查询服务
APP精选 宁波银行资讯 昨天
锦州银行开放式理财产品(五一劳动节期间)开放周期调整
APP精选 银行导读 昨天
恒丰银行邀请填写《关于小微企业支付手续费情况的调查问卷》
APP精选 恒丰银行资讯 昨天
中信银行华安基金系统维护
中信银行华安基金系统维护
APP精选 中信银行资讯 昨天
银行大全
银行百科
外汇行情 外汇汇率 人民币汇率查询 工商银行网点 信用卡怎么办理
期货开户
广告
黄金期货开户
广告
期货免费开户
广告
白银期货开户
广告

轻应用