银行家算法某实验报告材料.doc
《银行家算法某实验报告材料.doc》由会员分享,可在线阅读,更多相关《银行家算法某实验报告材料.doc(10页珍藏版)》请在三一办公上搜索。
1、word一、实验目的银行家算法是操作系统中防止死锁的典型算法,本实验可以加深对银行家算法的步骤和相关数据结构用法的更好理解。实验环境实验学时4学时,必做实验。二、实验内容用C语言编写一个简单的银行家算法模拟程序,用银行家算法实现资源分配。程序能模拟多个进程共享多种资源的情形。进程可动态地申请资源,系统按各进程的申请动态地分配资源。要求程序具有显示和打印各进程的某一时刻的资源分配表和安全序列;显示和打印各进程依次要求申请的资源数量以与为某进程分配资源后的有关资源数据的情况。3、 实验说明实验中进程的数量、资源的种类以与每种资源的总量Totalj最好允许动态指定。初始时每个进程运行过程中的最大资源
2、需求量Maxi,j和系统已分配给该进程的资源量Allocationi,j均为这些数值可以在程序运行时动态输入,而算法中其他数据结构的值包括Needi,j、Availablej如此需要由程序根据量的值计算产生。4、 实验步骤1、 理解本实验中关于两种调度算法的说明。2、 根据调度算法的说明,画出相应的程序流程图。3、 按照程序流程图,用C语言编程并实现。五、分析与思考1 要找出某一状态下所有可能的安全序列,程序该如何实现?答:要找出这个状态下的所有可能的安全序列,前提是要是使这个系统先处于安全状态,而系统的状态可通过以下来描述:进程剩余申请数=最大申请数-占有数;可分配资源数=总数-占有数之和;
3、通过这个描述来算出系统是否安全,从而找出所有的安全序列。2 银行家算法的局限性有哪些?答:银行家算法是一种最有代表性的防止死锁的算法。银行家算法即把操作系统看作是银行 家,操作系统管理的资源相当于银行家管理的资金,进程向操作系统请求分配资源相当于用户向银行家贷款。当进程在执行中继续申请资源时,先测试该进程已占用的资源数与本次申请的资源数之和是否超过了该进程对资源的最大需求量。假如超过如此拒绝分配资源,假如没有超过如此再测试系统现存的资源能否满足该进程尚需的最大资源量,假如能满足如此按当前的申请量分配资源,否如此也要推迟分配。但任何一种算法都存在其缺点,对各进程的资源分配要求严格,经常使其处于不
4、安全状态,银行家算法的主要局限是过于慎重和检查各申请者对各类资源的最大需求量开销较大。六、测试数据与实验结果银行家算法流程图1所示:开始输入参数RequestilNeedll出错返回YRequestilAvailablel出错返回假定分配NYN假定分配后,系统安全吗?申请成功,输出各数据变化。申请失败,以上分配作废,恢复原来分配完毕是否运行结果如下列图:图1图2七、实验心得与体会通过本次实验,我知道了可以把操作系统看作是银行家,操作系统管理的资源相当于银行家管理的资金,进程向操作系统请求分配资源相当于用户向银行家贷款。 为保证资金的安全,银行家规定: (1) 当一个顾客对资金的最大需求量不超过
5、银行家现有的资金时就可接纳该顾客; (2) 顾客可以分期贷款,但贷款的总数不能超过最大需求量; (3) 当银行家现有的资金不能满足顾客尚需的贷款数额时,对顾客的贷款可推迟支付,但总能使顾客在有限的时间里得到贷款; (4) 当顾客得到所需的全部资金后,一定能在有限的时间里归还所有的资金. 操作系统按照银行家制定的规如此为进程分配资源,当进程首次申请资源时,要测试该进程对资源的最大需求量,如果系统现存的资源可以满足它的最大需求量如此按当前的申请量分配资源,否如此就推迟分配。当进程在执行中继续申请资源时,先测试该进程本次申请的资源数是否超过了该资源所剩余的总量。假如超过如此拒绝分配资源,假如能满足如
6、此按当前的申请量分配资源,否如此也要推迟分配。这次的实验中还遇到一些问题,在同学的帮助下一一解决了。附录#include#include#include#define False 0#define True 1int Max100100=0;/各进程所需各类资源的最大需求int Avaliable100=0;/系统可用资源char name100=0;/资源的名称int Allocation100100=0;/系统已分配资源int Need100100=0;/还需要资源int Request100=0;/请求资源向量int temp100=0;/存放安全序列int Work100=0;/存放系
7、统可提供资源int M=100;/作业的最大数为100int N=100;/资源的最大数为100void showdata()/显示资源矩阵 int i,j; cout系统目前可用的资源Avaliable:endl; for(i=0;iN;i+) coutnamei ; coutendl; for (j=0;jN;j+) coutAvaliablej ;/输出分配资源 coutendl; cout Max Allocation Needendl; cout进程名 ; for(j=0;j3;j+) for(i=0;iN;i+) coutnamei ; cout ; coutendl; for(i
8、=0;iM;i+) cout i ; for(j=0;jN;j+) coutMaxij ; cout ; for(j=0;jN;j+) coutAllocationij ; cout ; for(j=0;jN;j+) coutNeedij ; coutendl; int changdata(int i)/进展资源分配 int j;for (j=0;jM;j+) Avaliablej=Avaliablej-Requestj; Allocationij=Allocationij+Requestj; Needij=Needij-Requestj;return 1;int safe()/安全性算法in
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 银行家 算法 实验 报告 材料
链接地址:https://www.31ppt.com/p-1135906.html