操作系统课程设计银行家算法模拟实现

上传人:m**** 文档编号:512856058 上传时间:2022-10-10 格式:DOC 页数:16 大小:310.50KB
返回 下载 相关 举报
操作系统课程设计银行家算法模拟实现_第1页
第1页 / 共16页
操作系统课程设计银行家算法模拟实现_第2页
第2页 / 共16页
操作系统课程设计银行家算法模拟实现_第3页
第3页 / 共16页
操作系统课程设计银行家算法模拟实现_第4页
第4页 / 共16页
操作系统课程设计银行家算法模拟实现_第5页
第5页 / 共16页
点击查看更多>>
资源描述

《操作系统课程设计银行家算法模拟实现》由会员分享,可在线阅读,更多相关《操作系统课程设计银行家算法模拟实现(16页珍藏版)》请在金锄头文库上搜索。

1、操作系统课程设计课 程 设 计 报 告课程设计名称: 银行家算法模拟实现 系 : 学生姓名: 班 级: 学 号: 成 绩: 指导教师: 开课时间: 学年 学期题目要求:一设计题目 银行家算法模拟实现二主要内容设计目的1、 了解多道程序系统中,多个进程并发执行的资源分配。2、 掌握思索的产生原因、产生死锁的必要条件和处理死锁的基本方法。3、 掌握预防死锁的方法,系统安全状态的基本概念。4、 掌握银行家算法,了解资源在进程并发执行中的资源分配策略。5、 理解死锁避免在当前计算机系统不常使用的原因。三具体要求设计一个n个并发进程共享m个系统资源的系统,进程可动态申请资源和释放资源,系统按各进程的申请

2、动态的分配资源。要求采用银行家算法实现。四进度安排序号内 容时间(天)1熟悉课题、分析课题0.52对系统进行模块分解,问题分析和确定解决方案13编程调试34测试和差错15书写课程设计报告16考核1合 计7.5五成绩评定考核方法:根据学生平时表现、测试检查、课程设计报告、运行演示和学生回答问题相结合的形式作为考核依据,考察学生的动手能力,独立分析解决问题的能力和创新精神,并根据学生的学习态度综合考评。平时表现(占30%),课程设计报告(占40%),课程答辩(占30%)。成绩评定:成绩分“优秀”、“良好”、“中等”、“及格”、“不及格”五个级别。“优秀”为100分到90分,“良好”为89分到80分

3、,“中等”为79分到70分,“及格”为69分到60分,“不及格”为60分以下。目录1.需求分析42.概要设计43.详细设计64.调试分析125.总结166.参考文献161.需求分析1、始化这组进程的最大资源请求和一次申请的资源序列。把各进程已占用和需求资源情况记录在进程控制块中。假定进程控制块的内容包括:进程名,状态,当前申请量,资源需求总量,已占资源量,能执行完标志。其中,进程的状态有:就绪,等待和完成。当系统不能满足进程的资源请求时,进程出于等待状态。资源需求总量表示进程运行过程中对资源的总的需求量。已占资源量表示进程目前已经得到但还为归还的资源量。因此,进程在以后还需要的剩余资源量等于资

4、源需要总量减去已占资源量。陷入每个进程的资源需求总量不应超过系统拥有的资源总量。2、银行家算法分配资源的原则是:当某个进程提出资源请求时,假定先分配资源给它,然后查找各进程的剩余请求,检查系统的剩余资源量是否由于进程的分配而导致系统死锁。若能,则让进程等待,否则,让进程的假分配变为真分配。A) 查找各进程的剩余请求,检查系统的剩余资源量是否能满足其中一进程,如果能,则转B)。B)将资源分配给所选的进程,这样,该进程已获得资源最大请求,最终能运行完成。标记这个进程为终止进程,并将其占有的全部资源归还给系统。重复第A)步和B)步,直到所有进程都标记为终止进程,或知道一个死锁发生。若所有进程都标记为

5、终止进程,则系统的初始状态是安全的,否则为不安全的。若安全,则正式将资源分配给它,否则,假定的分配作废,让其等待。2.概要设计2.1设计思想当某个进程提出资源请求时,假定先分配资源给它,然后查找各进程的剩余请求,检查系统的剩余资源量是否由于进程的分配而导致系统死锁。若能,则让进程等待,否则,让进程的假分配变为真分配。2.2数据结构假设有m个进程,则有如下数据结构:#define w 50 /宏定义#define r 50 /宏定义int m; /总进程数 int allw;/各种资源的数目总和int maxwr; /m个进程最大资源需求量int availabler; /系统可用资源数int

6、allocationwr; /m个进程已经得到资源的资源量int needwr; /m个进程还需要资源的资源量int requestr; /请求资源个数2.3程序流程图开始输入进程数m,各资源总数,初始化Available向量i=1i=m输入进程i的最大需求向量max。maxAvailable,则进程i进入等待资源状态,返回。 (3)假设进程i的申请已获批准,于是修改下面数据结构中的数值: Available=Available-Request Allocation=Allocation+RequestNeed=Need-Request (4)系统执行安全性检查,如安全,则分配成立;否则恢复原

7、来的资源分配状态,系统恢复原状,进程等待。 程序void bank() /银行家算法 int i=0,j=0; char flag=Y; while(flag=Y|flag=y) i=-1; while(i=m) cout 请输入需申请资源的进程号(从0到m-1i; if(i=m)cout 该进程号不存在,请重新输入!endl; cout 请输入进程i申请的资源数:; for (j=0;j1;j+) coutrequestj; if(requestjneedij) /若请求的资源数大于进程还需要i类资源的资源量j cout 进程i申请的资源数大于进程i还需要资源的资源量!; cout申请不合理

8、,请重新选择!endlavailablej) /若请求的资源数大于可用资源数 cout 进程i申请的资源数大于系统可用资源的资源量!; cout申请不合理!请重新选择!endlendl; flag=1; break; if(flag=Y|flag=y) change(i); /调用change(i)函数,改变资源数 if(chkerr(i) /若系统安全 rstore(i); /调用rstore(i)函数,恢复资源数 show(); /输出资源分配情况 else /若系统不安全 show(); /输出资源分配情况 else /若flag=N|flag=n show(); coutendl; c

9、outflag; 3.3安全性检查算法(1)设置两个工作向量Work=Available;FinishM=False(2)从进程集合中找到一个满足下述条件的进程, Finish i=False Need=Work 如找到,执行(3);否则,执行(4) (3)设进程获得资源,可顺利执行,直至完成,从而释放资源。 Work=Work+Allocation Finish=True GO TO 2 (4)如所有的进程FinishM=true,则表示安全;否则系统不安全。程序int chkerr(int s) /检查安全性 int work,FInISHw; int i,j,k=0; for(i=0;im;i+)FInISHi=false; for(j=0;j1;j+) work=availablej; i=s; do if(FInISHi=false&needij=work)work=work+allocationij; FInISHi=true; i=0; else i+; while(im); for(i=0;im;i+) if(FInISHi=false) coutendl; cout 系统不安全! 本次资源申

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 研究生课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号