计算机操作系统作业_银行家算法.doc
上传人:qw****27 上传时间:2024-09-12 格式:DOC 页数:19 大小:184KB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

计算机操作系统作业_银行家算法.doc

计算机操作系统作业_银行家算法.doc

预览

免费试读已结束,剩余 9 页请下载文档后查看

15 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

上海理工大学08级操作系统《银行家算法》《计算机操作系统—组队作业》银行家算法设计报告目录TOC\o"1-3"\h\z\uHYPERLINK\l"_Toc263776158"一、课程设计的目的PAGEREF_Toc263776158\h2HYPERLINK\l"_Toc263776159"二、课程设计的要求PAGEREF_Toc263776159\h2HYPERLINK\l"_Toc263776160"三、课程设计题目描述PAGEREF_Toc263776160\h3HYPERLINK\l"_Toc263776161"四、课程设计之银行家算法原理PAGEREF_Toc263776161\h3HYPERLINK\l"_Toc263776162"五、源程序结构分析及代码实现PAGEREF_Toc263776162\h5HYPERLINK\l"_Toc263776163"六、课程设计的总结PAGEREF_Toc263776163\h19一、课程设计的目的操作系统是计算机系统的核心系统软件,它负责控制和管理整个系统的资源并组织用户协调使用这些资源,使计算机高效的工作。对知识进行实践是《计算机操作系统》理论课的必要补充,是复习和检验所学课程的重要手段,本课程设计的目的是综合应用学生所学知识,通过实验环节,加深学生对操作系统基本原理和工作过程的理解,提高学生独立分析问题、解决问题的能力,增强学生的动手能力。二、课程设计的要求1.分析设计内容,给出解决方案(要说明设计实现的原理,采用的数据结构)。2.对程序的每一部分要有详细的设计分析说明。3.源代码格式要规范。4.设计合适的测试用例,对得到的运行结果要有分析。5.设计中遇到的问题,设计的心得体会。6.按期提交完整的程序代码、可执行程序和课程设计报告。三、课程设计题目描述银行家算法是一种最有代表性的避免死锁的算法。要解释银行家算法,必须先解释操作系统安全状态和不安全状态。安全状态:如果存在一个由系统中所有进程构成的安全序列P1,…,Pn,则系统处于安全状态。安全状态一定是没有死锁发生。不安全状态:不存在一个安全序列。不安全状态不一定导致死锁。那么什么是安全序列呢?安全序列:一个进程序列{P1,…,Pn}是安全的,如果对于每一个进程Pi(1≤i≤n),它以后尚需要的资源量不超过系统当前剩余资源量与所有进程Pj(j<i)当前占有资源量之和。银行家算法:我们可以把操作系统看作是银行家,操作系统管理的资源相当于银行家管理的资金,进程向操作系统请求分配资源相当于用户向银行家贷款。操作系统按照银行家制定的规则为进程分配资源,当进程首次申请资源时,要测试该进程对资源的最大需求量,如果系统现存的资源可以满足它的最大需求量则按当前的申请量分配资源,否则就推迟分配。当进程在执行中继续申请资源时,先测试该进程已占用的资源数与本次申请的资源数之和是否超过了该进程对资源的最大需求量。若超过则拒绝分配资源,若没有超过则再测试系统现存的资源能否满足该进程尚需的最大资源量,若能满足则按当前的申请量分配资源,否则也要推迟分配。四、课程设计之银行家算法原理1.银行家算法的思路先对用户提出的请求进行合法性检查,即检查请求的是不大于需要的,是否不大于可利用的。若请求合法,则进行试分配。最后对试分配后的状态调用安全性检查算法进行安全性检查。若安全,则分配,否则,不分配,恢复原来状态,拒绝申请。2.银行家算法中用到的主要数据结构可利用资源向量intAvailable[j]j为资源的种类。最大需求矩阵intMax[i][j]i为进程的数量。分配矩阵intAllocation[i][j]需求矩阵intneed[i][j]=Max[i][j]-Allocation[i][j]申请各类资源数量intRequesti[j]i进程申请j资源的数量工作向量intWork[x]intFinish[y]3.银行家算法bank()进程i发出请求申请k个j资源,Requesti[j]=k(1)检查申请量是否不大于需求量:Requesti[j]<=need[i,j],若条件不符重新输入,不允许申请大于需求量。(2)检查申请量是否小于系统中的可利用资源数量:Requesti[j]<=available[i,j],若条件不符就申请失败,阻塞该进程,用goto语句跳转到重新申请资源。(3)若以上两个条件都满足,则系统试探着将资源分配给申请的进程,并修改下面数据结构中的数值:Available[i,j]=Available[i,j]-Requesti[j];Allocation[i]