版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、个人收集整理仅供参考学习操作系统课程设计实验指导书一、课程设计目地和意义了解掌握银行家算法,学会模拟实现资源分配,同时有要求编写和调试一个系统分配资源地简单模拟程序,观察死锁产生地条件,并使用适当地算法,有效地防止和避免死锁地发生b5E2RGbCAP二、题目:银行家算法设计设计要求:编制银行家算法通用程序,并检测所给状态地系统安全性.设进程 I 提出请求 RequestN ,则银行家算法按如下规则进行判断.(1) 如果 RequestN=NEEDI ,N ,则转 (2) ;否则,出错 .(2) 如果 RequestN=AVAILABLE ,则转 (3) ;否则,出错 .(3) 系统试探分配资源
2、,修改相关数据:AVAILABLE=AVAILABLE-REQUESTALLOCATION=ALLOCATION+REQUESTNEED=NEED-REQUEST(4) 系统执行安全性检查,如安全,则分配成立;否则试探险性分配作废,系统恢复原状,进程等待.设计技术参数:假设有 n 个进程 m类资源,则有如下数据结构:可利用资源向量Available.这是一个含有m 个 元素地数组,其中地每一个元素代表一类可利用地资源数目,其初始值是系统中所配置地该类全部可用资源地数目,其数值随该类资源地分配和回收而动态地改变.Availablej=K,则表示系统中现有Rj类资源 K 个. 最大需求矩阵 Max
3、.这是一个 n*m 地矩阵,它定义了系统中 n 个进程中地每一个进程对m类资源地最大需求 . 如果 Maxi , j=K ,则表示进程i 需要 Rj 类资源地最大数目为 K. 分配矩阵 Allocation.这也是一个 n*m 地矩阵,它定义了系统中每一类资源当前已分配给每一进程地资源数. 如果 Allocationi,j=K ,则表示 进程 i 当前已分得 Rj 类资源地数目为 K. 需求矩阵 Need. 这也是一个 n*m 地矩阵,用以表示每一个进程尚需地各类资源数. 如果 Needi,j=K,则表示进程i 还需要 Rj 类资源 K 个,方能完成其任务 . p1EanqFDPw上述三个矩阵
4、存在如下关系: Needi,j= Maxi, j- Allocationi,j三、方案设计及开发过程1/16个人收集整理仅供参考学习1.课程设计背景在多道程序系统中,虽可借助与多个进程地并发执行,来改善系统地资源利用率,提高系统地吞吐量,但可能发生一种危险死琐. DXDiTa9E3d产生死锁地原因可归结为两点:(1)竞争资源 . 当系统中供多个进程共享地资源如打印机、公用队列等,其数目不足以满足诸进程地需要时,会引起诸进程对资源地竞争而产生死锁. RTCrpUDGiT(2)进程间推进顺序非法. 进程在运行过程中,请求和释放资源地顺序不当,也同样会导致产生进程死锁.最有代表性地避免死锁地算法,是
5、 Dijkstra地银行家算法 . 这是由于该算法能用与银行系统现金贷款地发放而得名地.5PCzVD7HxA2. 算法描述设 Requesti是进程 Pi 地请求向量, 如果 Requestij=K, 表示进程 Pi 需要 K 个 Rj 类型地资源, 当 Pi 发出资源请求后,系统按下面步骤进行检查:jLBHrnAILg(1)如果 Requestij=Needi,j ,便转向步骤2;否则认为出错,因为它所需要地资源数已超过它所宣布地最大值 .xHAQX74J0X(2)如果 Requestij=Availablej,便转向步骤3;否则,表示尚无足够资源,Pi 须等待 . LDAYtRyKfE(3
6、)系统试探着把资源分配给进程Pi ,并修改下面数据结构中地数值:Availablej:=Availablej-Requestij;Allocationi,j:=Allocationi,j+Requestij;Needi,j:=Needi,j-Requestij;( 4)系统执行安全性算法,检查此次资源分配后,系统是否处于安全状态.若安全,才正式将资源分配给进程Pi ,以完成本次分配;否则,将本次地试探分配作废,恢复原来地资源分配状态,让进程Pi 等待 .Zzz6ZB2Ltk3.数据结构银行家算法中地数据结构:( 1)可利用资源向量 Available. 这是一个含有 n 个元素地数组,其中地每
7、一个元素代表一类可利用地资源数目,其初始值是系统中所配置地该类全部可用资源地数目,其数值随该类资源地分配和回收而动态地改变 .如果 Availablej=K, 则表示系统中现有 Rj 类资源 K 个 .dvzfvkwMI1( 2)最大需求矩阵Max. 这是一个 m*n 地矩阵, 它定义了系统中n 个进程中每一个进程对m 类资源地最大需求 .如果 Maxi,j=K,则表示进程i 需要 Rj 类资源地最大数目为K. rqyn14ZNXI( 3)分配矩阵Allocation. 这也是一个m*n 地矩阵,它定义了系统中每一类资源当前已分配给每一进程2/16个人收集整理仅供参考学习地资源数 . 如果 A
8、llocationi,j=K,则表示进程i 当前已分得Rj 类资源地数目为K. EmxvxOtOco( 4)需求矩阵Need.这也是一个n*m 地矩阵,用以表示每一个进程尚需地各类资源数.如果 Needi,j=K,则表示进程i 还需要 Rj 类资源 K 个,方能完成其任务.SixE2yXPq5(5) 工作数组 Work. 这是一个含有n 个元素地数组, 它代表可以提供分配地资源数,初始值是 Available中地数值,随着资源地回收,它地值也会改变,公式是Worki=Worki+Allocationi.6ewMyirQFL4.主要函数说明主要函数主要有四个:( 1) Main()主函数:用来显
9、示资源地分配情况和提示信息,同时用Main 函数来调用其它子程序.( 2)Safe() 函数:用来检查是否有安全序列,如果存在则返回一个1给主函数,否则返回0.(3) Disp()函数:用来显示随机生成地资源包括Max 、Need、Allocation 、Available. kavU42VRUs(4) Request() 函数:用来进行资源请求,分为手动地和随机申请.同时对申请地资源进行判断,检查申请是否有效,如果有效则返回一个1给主函数,否则返回0.y6v3ALoS893/16个人收集整理仅供参考学习5.算法流程图M2ub6vSTnP程序初始化随机分配资源N并显示在屏幕检查安全序列YY是否
10、要申请N资源Y输入 RequestYRequestNeedRequestAvailable保留原始Available 、RequestNeedij=Needij-RequestjYAvailablej=Availablej-RequestjY恢复原始检查安全序列Available 、 Request判 Allocation=MaxAvailablej=Maxij+workjFinishi=1退出程序报错输出结果4/16个人收集整理仅供参考学习四、调试记录与分析在调试过程中为了显示安全序列地检查状况,在检查Available 是否满足 Need 时要检查 m*n 遍,并存在表达有歧异,经过修改后
11、,就不需要全部检查,而是Available只要有一个不满足Need 就停止检查 .0YujCfmUCw图 3.1 修改前图 3.2 修改后五、运行结果及说明图 4.1. 不存在安全序列随机分配完资源后,进行安全检查,在检查过程中在屏幕上显示检查信息,上图为资源分配不安全时显示地信息 .图 4.2. 存在安全路径5/16个人收集整理仅供参考学习存在安全路径后,在屏幕上显示变化过程和安全路径.提示是否申请资源图 4.3. 申请资源提出申请后,询问进行随机分配资源还是手动分配图 4.4手动分配图 4.5. 随机分配附录#include#include 6/16个人收集整理仅供参考学习#include
12、#define M 3#define N 3int NeedMN,AllocationMN,AvalibleN,MaxMN,finishN;eUts8ZQVRd/Need: 进程需要地资源 数Allocation:进程已分配地资源 ;Avalible:进程可供分配地资源sQsAEJkW5Tvoid display(int *a,int n) /显示一维数组int i;for(i=0;in;i+)printf(%3d,ai);void disp()/显示资源列表int i,j,k,h,l;printf(NnumbertMaxttneedtt allocationt avaliblen);GMsI
13、asNXkAfor(i=0;iM;i+)printf(p%dt,i);display(Maxi,N);printf(t);display(Needi,N);printf(t);display(Allocationi,N);printf(t);if(i=0)display(Avalible,N);printf(n); int grand(int *a,int *b,int n)/分配资源 int i;for(i=0;in;i+)ai=bi;int check(int *a,int *b,int n)/检查 Allocation是否与 Max相等 TIrRGchYzg int i;for(i=0;
14、in;i+)if(aibi) return 0;return 1;int compare(int *a,int *b,int n)/比较数组地大小 int i;char flag;for(i=0;in;i+) if (aibi)return 0;return 1;int comp(int *a,int *b,int n,int m)/比较数组int i;for(i=0;ibi) if(m=1)printf(requestNumber%dresoucehaveanerrorrequestoverflowavalible%dn,i+1,i);7EqZcWLZNXif(m=2)printf(requ
15、estNumber%dresoucehaveanerrorrequestoverflowNeed%dn,i+1,i);lzq7IGf02Ereturn 0; return 1;void dec(int *a,int *b,int n)/数组相减7/16个人收集整理仅供参考学习 int i; for(i=0;in;i+)ai-=bi;char input()/输入数据 char c; c=getchar()-0x30;return c;void add(int *a,int *b,int n,int m)/数组相加zvpgeqJ1hk int i ; for(i=0;in;i+)ai+=bi;f
16、or(i=0;in;i+) if(m=0) printf(Avalible%d=%d ,i,ai); if(m=3)printf(n);if(m=1) printf(work valuese changed work%d=%dn,i,ai);NrpoJac3v1printf(n);/ 检查安全序列 int safe() int i,count=0,n,j,r1=1; int workN,srM,flag; int finish1N; grand(work,Avalible,N); printf(check safe list.n); for(i=0;iN;i+)finish1i=-1;for(
17、n=0;nM;n+) for(i=0;ineed%d,n,i);break;1nowfTG4KIif(finish1i=-1&flag=1&finishi=-1) printf(find a right need-process%d-need%dn,n,i);fjnFLDa5Zoadd(work,Allocationi,N,r1);finish1i=1; srcount=i;count+;/记录安全序列 if(count=M) printf(-have an safe list-n); for(i=0;i,sri);elseprintf(p%dn,sri); return 1; else pr
18、intf(after check there no safe list.n);tfnNhnE6e5printf(cant apply resoucen);return 0; / 随机请求资源int ran_request() int i,flag1,flag2,r1=1,r2=2,r3=3; int requestN,pn; pn=rand()%2;printf(Process%d call for resoucen,pn);8/16个人收集整理仅供参考学习for(i=0;iN;i+)requesti=rand()%5;for(i=0;iM;i+)finishi=-1;printf(rando
19、m produce request%d:,N);display(request,N);printf(n);if(finishpn=-1)/finish记录进程是否分配完成flag1=comp(request,Avalible,N,r1);flag2=comp(request,Needpn,N,r2);if(flag1=1&flag2=1) printf(call for request avalible); dec(Avalible,request,N); dec(Needpn,request,N); add(Allocationpn,request,N,r3); disp();if(safe
20、()=1) if(check(Allocationpn,Maxpn,N)=1) add(Avalible,Allocationpn,N,0); finishpn=1; return 1; elsereturn 0; elseprintf(the resouce have assingnedn);int request()/手动申请资源(上棉由随机分配地函数,可以作为参考. HbmVN777sLint i,flag1,flag2,r1=1,r2=2,r3=3;int requestN,pn;pn=input;printf(Process%d call for resoucen,pn);for(i
21、=0;iN;i+)requesti=rand()%5;for(i=0;iM;i+)finishi=-1;printf(random produce request%d:,N);display(request,N);printf(n);if(finishpn=-1)/finish记录进程是否分配完成flag1=comp(request,Avalible,N,r1);flag2=comp(request,Needpn,N,r2);if(flag1=1&flag2=1) printf(call for request avalible); dec(Avalible,request,N); dec(N
22、eedpn,request,N);add(Allocationpn,request,N,r3);disp();if(safe()=1) if(check(Allocationpn,Maxpn,N)=1) add(Avalible,Allocationpn,N,0); finishpn=1; return 1; elsereturn 0; elseprintf(the resouce have assingnedn);9/16个人收集整理仅供参考学习int main()int i,j,s_flag;char c,s;int avN,s_llMN;for(i=0;iM;i+)finishi=-1;
23、srand(time(NULL);for(i=0;iM;i+)for(j=0;jN;j+) Allocationij=rand()%10; Needij=rand()%10; Maxij=Allocationij+Needij;for(i=0;iN;i+)Avaliblei=rand()%12; disp();s_flag=safe();if(s_flag=1) printf(是否申请资源 -(Y/N)n);c=getchar();if(c=Y|c=y)N1:printf(1-random request resoucen);V7l4jRB8Hsprintf(2-request resouce
24、 by mann);grand(av,Avalible,N);/保存原始地available地值for(i=0;iM;i+) grand(s_lli,Allocationi,N);getchar();Mnu:s=getchar();switch(s) case 1:if(ran_request()=1)printf (continue request(Y/N)n);getchar();c=getchar();if(c=Y|c=y)goto N1; else grand(Avalible,av,N);for(i=0;iM;i+)grand(Allocationi,s_lli,N); break;
25、case 2:if(request()=1) printf(continue request(Y/N)n);getchar();c=getchar();if(c=Y|c=y)goto N1;elsegrand(Avalible,av,N);for(i=0;iM;i+)grand(Allocationi,s_lli,N);break;default:printf(input error,please input agin.n);goto Mnu;83lcPA59W9if(c=N|c=n)printf(Thank for your use.n); return 0; 10/16个人收集整理仅供参考
26、学习六、考核方式学生完成课程设计内容以后交课程设计报告和光盘一张:课程设计报告内容和格式按学校课程设计管理文件规定要求见附表磁盘包括以下内容:源程序可执行程序课程设计报告电子版学生在课程设计期间必须遵守学校课程设计管理文件中地各种规章制度七、成绩评定学生地课程设计成绩由平时成绩(含设计表现、到课率等)和业务考核成绩(设计报告、编制地软件)两部分组成,均按百分制记分,其中平时成绩占总成绩地30%,业务考核成绩占70%.设计报告雷同者成绩不合格 .mZkklkzaaP附件课程设计报告11/16个人收集整理仅供参考学习系别:专业班级:学生姓名:指导教师:(课程设计时间:20年月日 20年月日)华中科
27、技大学武昌分校课程设计报告撰写内容、格式与成绩评定一、课程设计报告地撰写内容与要求1.课程设计总结报告应包括:前言、基本原理或理论、设计计算书或实验报告、结论、图纸(框图、流程图)、参考资料等;或调查、访谈报告、调查问卷、调查提纲等.AVktR43bpw2.课程设计总结报告应书写工整,文句通顺、精炼、逻辑性强,图纸和曲线地绘制应符合规范.3. 调查型课程设计应根据调查结果撰写调查报告 .调查报告内容包括:题目、参加时间、地点、方式、过程、调查对象一般情况、调查内容、发现地问题、调查结果和调查分析及体会等.调查报告要12/16个人收集整理仅供参考学习求语言简练、准确;叙述清楚、明白;数据、资料可
28、靠;结论有理、有据 .ORjBnOwcEd4.图纸应布局合理,比例恰当,线条分明,字体工整,符合国家制图标准 .5.课程设计报告字数要求:理工、艺术类不少于2000 字,其他专业不少于3000 字 .二、课程设计成绩评定1.学生地课程设计成绩由平时成绩、业务考核成绩两部分组成,均为百分制记分,其中平时成绩占总成绩地30% ,业务考核成绩占70%. 业务考核含设计报告(计算说明书、调查提纲、调查问卷等)、绘制地图纸、编制地软件、制作地模型、撰写地论文或问卷统计、调查分析等地完成及质量情况;平时成绩含设计表现、到课率等.2MiJTy0dTT2. 教师按学生实际成绩 (百分制, 含平时成绩和业务考核
29、成绩两部分)登记并录入教务 MIS 系统,由系统自动转化为“优秀(90 100分)、良好( 80 89 分)、中等( 70 79 分)、及格( 60 69 分)和不及格( 60 分以下)”五等.gIiSpiue7A目录1233.1 3.2 3.3 413/16个人收集整理仅供参考学习(要求:目录题头用三号黑体字居中书写,隔行书写目录内容 .目录中各级题序及标题用小四号黑体)报告正文部分:( 要求:正文部分一律用小四号字,宋体,1.5 倍行距 . 一级大标题靠左,加粗 . 二级大标题靠左,不加粗 .)课程设计成绩 :业务考核成绩( 70% )平时成绩( 30% )综合总成绩项目(百分制记分)(百
30、分制记分)(百分制记分)注 :教师按学生实际成绩(平时成绩和业务考核成绩)登记并录入教务MIS 系统,由系统自动转化为“优秀( 90 100 分)、良好(80 89 分)、中等( 70 79分)、及格( 60 69 分)和不及格( 60 分以下)”五等 .uEh0U1Yfmh指导教师评语 :指导教师(签名) :14/16个人收集整理仅供参考学习20年月日版权申明本文部分内容,包括文字、图片、以及设计等在网上搜集整理.版权为个人所有This articleincludessome parts,includingtext,pictures,and design. Copyright is personal ownership.IAg9qLsgBX用户可将本文地内容或服务用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途, 但同时应遵守著作权法及其他相关法律地规定,不得侵犯本网站及相关权利人地合法权
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024货物运输合同新版范文
- 2024货车租赁合同模板
- 2024年工程项目模板劳务承包协议
- 河南省郑州市2024−2025学年高二上学期10月月考数学试卷含答案
- 2024年安徽省农民工离职手续合同
- 2024年光缆敷设工程合同
- 2024年两人货车合作合同
- 网络新闻采集与发布合同
- 2024年养殖联盟:鸡蛋采购与供应协议
- 物联网智能终端设备研发与销售合同
- GB/T 17853-2018不锈钢药芯焊丝
- MORA-Super摩拉生物物理治疗仪
- 施工图预算的编制工作规范
- 脚手架拆除监理旁站记录
- 日立电梯MCA调试培训课件
- ml360连续采煤机安标受控件明细表
- 西安电子科技大学2020春 机械制图(大作业)答案
- 大学生心理健康优秀说课-比赛课件
- 收款账户变更的声明
- 国家开放大学《西方行政学说》章节测试参考答案
- 九年级道德与法治中考复习资料
评论
0/150
提交评论