




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、实验四 银行家算法一实验目的1、 理解银行家算法。2、 掌握进程安全性检查的方法与资源分配的方法。 二实验内容与基本要求 编制模拟银行家算法的程序,并以下面给出的例子验证所编写的程序的正确性。进程已占资源最大需求数ABCDABCDP000120012P110001750P213542356P306320652P400140656现在系统中A、B、C、D 4类资源分别还剩1、5、2、0个,请按银行家算法回答:1、 现在系统是否处于安全状态?2、 如果现在进程P1提出需要(0、4、2、0)个资源的请求,系统能否满足它的请求?三实验原理银行家算法的基本思想是分配资源之前,判断系统是否是安全的;若是,
2、才分配。每分配一次资源就测试一次是否安全,不是资源全部就位后才测试,注意理解函数的循环顺序。我们可以把操作系统看作是银行家,操作系统管理的资源相当于银行家管理的资金,进程向操作系统请求分配资源相当于用户向银行家贷款。 为保证资金的安全,银行家规定:1. 当一个顾客对资金的最大需求量不超过银行家现有的资金时就可接纳该顾客(试探性分配)2. 顾客可以分期贷款,但贷款的总数不能超过最大需求量(可能一次并不能满足所需要的全部资源)3. 当银行家现有的资金不能满足顾客尚需的贷款数额时,对顾客的贷款可推迟支付,但总能使顾客在有限的时间里得到贷款(不存在死锁)4. 当顾客得到所需的全部资金后,一定能在有限的
3、时间里归还所有的资金(运行后释放) 操作系统按照银行家制定的规则为进程分配资源,当进程首次申请资源时,要测试该进程对资源的最大需求量,如果系统现存的资源可以满足它的最大需求量则按当前的申请量分配资源,否则就推迟分配。当进程在执行中继续申请资源时,先测试该进程本次申请的资源数是否超过了该资源所剩余的总量。若超过则拒绝分配资源,若能存在安全状态,则按当前的申请量分配资源,否则也要推迟分配。四实验程序流程框图五实验程序#include 1#define M 100 #define N 50 /全局变量定义 int AvailableM; /可利用资源数组 int MaxNM; /最大需求矩阵 int
4、 AllocationNM; /分配矩阵 int NeedNM; /需求矩阵 int RequestNM; /M个进程还需要N类资源的资源量 int FinishN; int pN; int m,n; /M个进程,N类资源 /安全性算法 int Safe() int i,j,l=0; int WorkM; /可利用资源数组 for (i=0;in;i+) Worki=Availablei; for (i=0;im;i+) Finishi=0; for (i=0;im;i+) if (Finishi=1) continue; else for (j=0;jWorkj) break; if (j=
5、n) Finishi=1; for(int k=0;kn;k+) Workk+=Allocationik; pl+=i; i=-1; else continue; if (l=m) printf(系统是安全的n); printf(系统安全序列是:n); for (i=0;i); printf(n); return 1; /银行家算法 nt main() int i,j,mi; printf(请输入进程的数目:n); scanf(%d,&m); printf(请输入资源的种类:n); scanf(%d,&n); printf(输入每个进程对资源的最大需求量,按照%d*%d矩阵输入n,m,n);
6、for (i=0;im;i+) for(j=0;jn;j+) scanf(%d%d,&Maxij); printf(输入每个进程资源的目前占有量,按照%d*%d矩阵输入n,m,n); for (i=0;im;i+) for(j=0;jn;j+) scanf(%d%d,Allocationij); Needij=Maxij-Allocationij; if (Needij0) printf(你输入的第%d个进程所拥有的第%d个资源错误请重新输入:n,i+1,j+1); j-; continue; printf(请输入系统剩余资源量:n); for (i=0;in;i+) scanf(%d,&Av
7、ailablei); Safe(); while (1) printf(输入要申请的资源的进程号第一个进程号为0第二个进、程号为1依此类n); scanf(%d,&mi); printf(输入进程所请求的各个资源的数量n); for (i=0;iNeedmii) printf(所请求资源数超过进程的需求量!n); return 0; if (RequestmiiAvailablei) printf(所请求资源数超过系统所有的资源数!n); return 0; for (i=0;in;i+) Availablei-=Requestmii; Allocationmii+=Requestmii; N
8、eedmii-=Requestmii; if (Safe() printf(同意分配请求n); else printf(SORRY你的请求被拒绝n); for (i=0;in;i+) Availablei+=Requestmii; Allocationmii-=Requestmii; Needmii+=Requestmii; for (i=0;im;i+) Finishi=0; char Flag; /标志位 printf(是否再次请求分配是请按Y/y否请按N/n); while (1) scanf(%d,&Flag); if (Flag=Y|Flag=y|Flag=N|Flag=n) break; else printf(请按要求重新输入:n); continue; if (Flag=Y|Flag=y) continue; else break; 六运行结果与结论由题意输入数据可以看出现在系统处于安全状态可以看出系统满足P1提出的要求通过本次上机
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 培训机构入股合同范本
- 海尔空调采购合同范本
- 海绵鞋料售卖合同范本
- 社区广告合作合同范本
- 商场店面装修合同范本
- 宜州租房转租合同范本
- 石材施工采购合同范本
- 简单的付款合同范本
- 工程押金协议合同范本
- 外卖代理合同范本
- 2025年跨境电商物流服务佣金结算合作协议
- 2025年公司主要负责人安全培训考试试题有完整答案
- 医院检验科微生物进修汇报
- 主播跟运营合作合同协议
- 化工操作工培训课件
- 血透室设备维护与操作规范
- 2025至2030高校后勤行业发展趋势分析与未来投资战略咨询研究报告
- 2025中国电信安全公司春季校园招聘笔试参考题库附带答案详解(10套)
- 新版(七步法案例)PFMEA
- 会计师事务所7(报告流转签发制度12)
- TCECS 20007-2021 城镇污水处理厂污泥厌氧消化工艺设计与运行管理指南
评论
0/150
提交评论