




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、计算机操作系统实验报告一、实验名称: 银行家算法二、实验目的: 银行家算法是避免死锁的一种重要方法,通过编写 一个简单的银行家算法程序,加深了解有关资源申请、避免死 锁等概念,并体会和了解死锁和避免死锁的具体实施方法。三、问题分析与设计:1、算法思路 :先对用户提出的请求进行合法性检查,即检查 请求是否大于需要的,是否大于可利用的。若请求合法,则进 行预分配,对分配后的状态调用安全性算法进行检查。若安 全,则分配;若不安全,则拒绝申请,恢复到原来的状态,拒 绝申请。2、银行家算法步骤:(1)如果Requestk or二Need则转向步骤(2);否则,认为出错,因为它所需要的资源数已超过它所宣布
2、的最大值。(2) 如果Request or二Available,则转向步骤(3);否则,表示系统中尚无足够的资源,进程必须等待。(3) 系统试探把要求的资源分配给进程Pi,并修改下面数据结构中的数值:Available=Available-Requesti;Allocation=Allocation+Request;Need=Need-Request;(4)系统执行安全性算法,检查此次资源分配后,系统是否处于 安全状态。3、安全性算法步骤:(1)设置两个向量工作向量 Work 。它表示系统可提供进程继续运行所需要的各类资 源数目,执行安全算法开始时, Work=Allocation;布尔向量F
3、inish。它表示系统是否有足够的资源分配给进程,使 之运行完成,开始时先做 Finishi=false ,当有足够资源分配给进程 时,令 Finishi=true 。(2)从进程集合中找到一个能满足下述条件的进程: Finishi=false Needor=Work如找到,执行步骤( 3);否则,执行步骤( 4)。(3)当进程 P 获得资源后,可顺利执行,直至完成,并释放出分配给它的资源,故应执行:Work=Work+Allocation;Finishi=true;转向步骤( 2)。( 4)如果所有进程的 Finishi=true, 则表示系统处于安全状态;否 则,系统处于不安全状态。4、流
4、程图:系统主要过程流程图银行家算法流程图安全性算法流程图四、实验代码:#defi ne M 5#defi ne N 3本实验中使用到的库函数开始定义银行家算法中需要用到的数据#i nclude II#i nclude #in elude int max 51;/int allocation51;int need 51;int available1;int request51;char *fini sh5;int safe5;int n,i,m;int k=0;int j=0;int work1;int works51;void line() / 美化程序,使程序运行时更加明朗美观n);prin
5、tf(void start()/表示银行家算法开始line();printf(银行家算法开始 n);printf(死锁避免方法n);line();void end()/表示银行家算法结束line();printf(银行家算法结束,谢谢使用 n);line();void input()/输入银行家算法起始各项数据for (n=0;n5;n+)printf(”请输入进程P%d的相关信息:n,n);printf(Max:);for (m=0;m1;m+)scanf(%d,&maxnm);printf(Allocation:);for (m=0;m1;m+)scanf(%d,&allocationnm
6、);for (m=0;m1;m+)neednm=maxnm-allocationnm;printf( 请输入系统可利用资源数 Available:);for (m=0;m1;m+)scanf(%d,&availablem);void output() / 输出系统现有资源情况line();printf( 资源情况 Max Allocation Need Availablen);printf( 进程 A A A A n);line();for(n=0;n5;n+)printf(P%d%3d%3d%3d,n,maxn0,allocationn0,needn0);if (n=0)printf(%3d
7、%3dn,available0);elseprintf(n);line();void change() / 当 Requesti,j=Availablej 时,系统把资源分配给 进程 Pi , Availablej 和 Needi,j 发生改变for (m=0;m1;m+)availablem-=requestim;allocationim+=requestim;needim-=requestim;void outputsafe() /输出安全序列的资源分配表printf(该安全序列的资源分配图如下:n);line();printf(资源情况 WorkNeedAllocation Work+A
8、llocationFinishn);printf(进程 A AAA n);line();for(n=0;n5;n+)printf(P%d%9d%3d%3d%5d%12sn,safen,workssafen0,needsaf en0,allocationsafen0,workssafen0+allocationsafen0 ,finishn);line();int check() / 安全性算法printf(”开始执行安全性算法n ”);for (m=0;m1;m+) / 数组 work 和 finish 初始化workm=availablem;for (n=0;n5;n+)finishn=fa
9、lse;safen=0;k=0;for (m=0;m5;m+)for (n=0;n5;n+)if(strcmp(finishn,false)=0 &needn0=work0 ) / 查找可以分配资源但尚未分配到资源的进程safek=n; / 以数组 safek 记下各个进程得到 分配的资源的顺序workssafek0=work0;work0+=allocationn0; / 进程执行后释 放出分配给它的资源finishn=ture; /finishn 变为 1 以示该进 程完成本次分k+;for (m=0;mP%d-P%d-P%d- P%d 系统是安全的 n,safe0,safe1,safe2
10、,safe3,safe4);j=1;outputsafe(); /输出安全序列的资源分配表return 1;void main() / 主程序开始start();for (;j=0;) / 确认输入数据的正确性,若输入错误,重新输入input();printf( 以下为进程资源情况,请确认其是否正确: n);output();printf( 数据是否无误: n 正确:输入 1n 错误:输入 0n 请输 入: );scanf(%d,&j);printf( 数据确认无误,算法继续。 n);if (check()=0) / 若 check 函数返回值为 0,表示输入的初始数据 找不到安全序列,无法进
11、行下一步,程序结束end();exit(0);for(;j=1;) / 当有多个进程请求资源时,循环开始printf( 请输入请求资源的进程 i(0 、1、2、3、 4):); / 输入 发出请求向量的进程及请求向量scanf(%d,&i);printf(请输入进程P%d的请求向量Request%d: ,i,i);for(n=0;nneedi0;) /若请求向量大于需求资源,则认为是输入错误,要求重新输入printf(”数据输入有误,请重试!n请输入进程P%d的请求向量 Request%d: ,i,i);for(n=0;n1;n+)scanf(%d,&requestin);if(request
12、i0=available0) / 判断系统是否有足够资源 提供分配printf(”系统正在为进程P%d分配资源n”,i);change(); / 分配资源j=0;elseprintf(”系统没有足够的资源,进程P%d需要等待。n,i);if (j=0) /j=0表示系统有足够资源分配的情况printf( 当前系统资源情况如下: n); / 输出分配资源 后的系统资源分配情况output();if(check()=0) / 若找不到安全系列,则之前的资源分配无效printf( 本次资源分配作废,恢复原来的资源分配 状态。 n);for (m=0;mP3-P4-P0-P2?系统是安全的L J, I
13、 rl L * j I w 二 I全序列的资源分配图妇下;资源情况 Work 进程ANeedAllocation Work+Allocation FinishAAA13402351111047622003577110ture ture ture ture tore请输入请求浚源的进程i (CK K 2、MO 2|请输入进程P2的请求向量Request2: 1 系统正在为进程巴分配资源 当前系统资源情况如下:Max Allocatiun NeedAvailableAAAA0 12 3 4 -p p p P7 15 0 421703744开始执厅女全性鼻法找到安全序列Pl-P3-P4-P2-P0,系统是安全的 该安全序列的资源分配图如下:资源情况 VorkNeed Allocation Vork+Allocat
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 汽车检测技术试卷及答案
- 2025金属矿山试题及答案
- 采油平台水手技能比武考核试卷及答案
- 钢琴调律师质量追溯知识考核试卷及答案
- 机场地勤岗位知识考试题及答案
- 冷食品制作工技术考核试卷及答案
- 2025年起重机械指挥新版试题及答案
- 重症监护技术试题及答案
- 信息通信业务员专项考核试卷及答案
- 危险废物处理工综合考核试卷及答案
- 肾动脉狭窄介入治疗讲课件
- 征迁岗位笔试题目及答案
- 2025-2030年中国拆船行业市场现状供需分析及投资评估规划分析研究报告
- DB13T 5470-2021 30%氧气-氦气混合气中氧气及杂质的检测色谱法
- T/SHPTA 033-2022聚氯乙烯软制品用钙锌复合热稳定剂
- T/CHES 42-2020水质涕灭威、克百威和甲萘威的测定液相色谱法
- 黑河市重点中学2025届八下数学期末统考模拟试题含解析
- 上门灭蚊合同范例
- 认识多面绘画-绘画的工具与材料 课件-2023-2024学年高一下学期美术人美版(2019)选择性必修1 绘画
- 2025-2030中国微藻行业市场发展趋势与前景展望战略研究报告
- 双休背景下的自律学习的重要性课件-高一下学期自律的力量主题班会
评论
0/150
提交评论