操作系统-银行家算法实验报告(共15页).doc
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《操作系统-银行家算法实验报告(共15页).doc》由会员分享,可在线阅读,更多相关《操作系统-银行家算法实验报告(共15页).doc(15页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上计算机操作系统课程设计 题 目 银行家算法分析 学 院 计算机与软件学院专 业 计算机科学与技术班 级 学 号 姓 名 指导教师 起止时间 一、 算法综述 银行家算法:在进程向系统提出资源分配请求时,算法会先对进程提出的请求进行合法性检查,即检查请求的是不大于需要的,是否不大于可利用的。若请求合法,则进行试分配。最后对试分配后的状态调用安全性检查算法进行安全性检查。若安全,则分配,否则,不分配,恢复原来状态,拒绝申请。二 算法分析2.1 银行家算法中的数据结构为资源的种类 i进程的数量 j可利用资源向量 int Availablej 最大需求矩阵 int Maxij
2、分配矩阵 int Allocationij 需求矩阵 int needij= Maxij- Allocationij申请各类资源数量 int Request ij i进程申请j资源的数量工作向量 int Workx int Finishy 2.2银行家算法设Requesti是进程Pi的请求向量,如果Requestij=K,表示进程Pi需要k个Rj类型的资源,当Pi发出资源请求后,系统按照下述步骤进行检查:(1)如果RequestijNeedj,便转向步骤(2);否则认为出错,因为它所需要的资源数已经超过它所宣布的最大值。(2)如果RequestijAvailablej,便转向步骤(3);否则,
3、表示尚无足够资源,Pi须等待。(3)系统试探着将资源分配给进程Pi,并修改下面数据结构中的数值:Availablej:=Availablej-Requestij;Allocationi,j:=Allocationi,j+Requestij;Needi,j:=Needi,j-Requestij;(4)系统执行安全性算法,检查此次资源分配后系统是否处于安全状态。若安全,才正式将资源分配给进程Pi,以完成本次分配;否则本次的试探分配作废,恢复原来的资源分配状态,让进程Pi等待。2.3安全性检查算法(Check_safe()函数)(1)设置两个向量:工作向量Work,它表示系统可提供给进程继续运行所需
4、的各类资源数目,在执行安全性算法开始时,Work= Available。Finish,它表示系统是否有足够的资源分配给进程,使之运行完成。开始时先做Finishi=0;当有足够的资源分配给进程时,再令Finishi=1。(2)在进程中查找符合以下条件的进程:条件1:Finishi=0;条件2:needij=Workj若找到,则执行步骤(3)否则,执行步骤(4)(3)当进程获得资源后,可顺利执行,直至完成,并释放出分配给它的资源,故应执行:Workj= Workj+ Allocationij;Finishi=1;goto step 2;(4) 如果所有的Finishi=1都满足,则表示系统处于安
5、全状态,否则,处于不安全状态。三、 算法设计初始化算法流程图:银行家算法流程图:(1)采用动态输入的方法对进程个数Pnum,资源种类数Stype,资源总数Ssum,最大需求Max,已分配Allocation进行初始化;(2)根据已输入数据计算出需求矩阵Need,可用资源数Available;(3)利用Check_safe()函数对此刻系统的安全性进行检测,如果安全,给出安全序列;(4)进程i提出资源请求,利用Ask_Distribution()函数检测请求是否合理;合理则满足请求,并给出安全序列;不合理则给出错误提示;(5)做出开始界面、选择界面、退出界面,使程序美观、易操作;四、 编码实现(
6、实验的java代码)import java.util.Scanner;public class YinHang Scanner in = new Scanner(System.in);int Pnum; / 进程个数int Stype; / 资源种类数int Ssum;/ 各类资源总数int Max;/ 最大需求矩阵int Allocation;/ 已分配矩阵int Need;/ 需求矩阵int Available; / 可用资源数int Work;/ Available的试分配向量boolean Finish = new boolean50;/ 试分配结果标识向量public YinHang
7、() start();public void start() System.out.println(*);System.out.println( 欢迎使用银行家算法);System.out.println( 罗巾英 );System.out.println(*);System.out.println(请选择操作:nt1.开始使用nt2.退出);int a;a = in.nextInt();if (a = 1) input(); else quit();public void input() System.out.println(请输入T0时刻进程个数Pnum:);this.Pnum = in.
8、nextInt();System.out.println(请输入资源种类数Stype:);this.Stype = in.nextInt();this.Ssum = getSsum();this.Max = getMax();this.Allocation = getAllocation();this.Need = getNeed();this.Available = getAvailable(Pnum, Stype);System.out.println(该时刻的资源分配表:);output();this.Check_Safe(Available);this.Ask_Distribution
9、(false);public int getSsum() Ssum = new intStype;System.out.println(请输入各类资源总数Ssum:);for (int i = 0; i Stype; i+) Ssumi = in.nextInt();return Ssum;public int getMax() Max = new intPnumStype;System.out.println(请输入最大需求矩阵Max:);for (int i = 0; i Pnum; i+) for (int j = 0; j Stype; j+) Maxij = in.nextInt()
10、;return Max;public int getAllocation() Allocation = new intPnumStype;System.out.println(请输入已分配资源情况矩阵Allocation);for (int i = 0; i Pnum; i+) for (int j = 0; j Stype; j+) Allocationij = in.nextInt();return Allocation;public int getNeed() Need = new intPnumStype;for (int i = 0; i Pnum; i+) for (int j =
11、 0; j Stype; j+) Needij = Maxij - Allocationij;return Need;public int getAvailable(int x, int y) Available = new intStype;Available = Ssum;System.out.println(进程的可用资源Available为:);for (int j = 0; j Stype; j+) for (int i = 0; i Pnum; i+) Availablej = Availablej - Allocationij;System.out.print(Available
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 操作系统 银行家 算法 实验 报告 15
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内