资源描述:
《银行家算法,操作系统,实验报告》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、为了适应公司新战略的发展,保障停车场安保新项目的正常、顺利开展,特制定安保从业人员的业务技能及个人素质的培训计划银行家算法,操作系统,实验报告 计算机操作系统实验报告 一、实验名称:银行家算法 二、实验目的:银行家算法是避免死锁的一种重要方法,通过编写一个简单的银行家算法程序,加深了解有关资源申请、避免死锁等概念,并体会和了解死锁和避免死锁的具体实施方法。 三、问题分析与设计: 1、算法思路:先对用户提出的请求进行合法性检查,即检查请求是否大于需要的,是否大于可利用的。若请求合法,则进行预分配,对分配后的状态调用安全性算法
2、进行检查。若安全,则分配;若不安全,则拒绝申请,恢复到原来的状态,拒绝申请。 2、银行家算法步骤:如果Requesti<or=Need,则转向步骤(2);否则,认为出错,因为它所需要的资源数已超过它所宣布的最大值。 如果Request<or=Available,则转向步骤;否则,表示系统中尚无足够的资源,进程必须等待。 系统试探把要求的资源分配给进程Pi,并修改下面数据结构中的数值:目的-通过该培训员工可对保安行业有初步了解,并感受到安保行业的发展的巨大潜力,可提升其的专业水平,并确保其在这个行业的安全感。为了适应公司新战略的
3、发展,保障停车场安保新项目的正常、顺利开展,特制定安保从业人员的业务技能及个人素质的培训计划 Available=Available-Request[i]; Allocation=Allocation+Request; Need=Need-Request; (4)系统执行安全性算法,检查此次资源分配后,系统是否处于安全状态。 3、安全性算法步骤: 设置两个向量 ①工作向量Work。它表示系统可提供进程继续运行所需要的各类资源数目,执行安全算法开始时,Work=Allocation; ②布尔向量Finish。它表示系统
4、是否有足够的资源分配给进程,使之运行完成,开始时先做Finish[i]=false,当有足够资源分配给进程时,令Finish[i]=true。 从进程集合中找到一个能满足下述条件的进程: ①Finish[i]=false ②Need #defineW5//最大进程数W=5 #defineR3//最大资源总数=3 intAvailable[3];//可利用资源向量 intMax[5][3];//最大需求矩阵 intAllocation[5][3];//分配矩阵 intNeed[5][3];//需求矩阵 intReq
5、uest[3];//进程请求向量目的-通过该培训员工可对保安行业有初步了解,并感受到安保行业的发展的巨大潜力,可提升其的专业水平,并确保其在这个行业的安全感。为了适应公司新战略的发展,保障停车场安保新项目的正常、顺利开展,特制定安保从业人员的业务技能及个人素质的培训计划 voiddispose() { printf("请输入可利用资源向量Available(格式:a,b,c)");scanf("%d,%d,%d",&Available[0],&Available[1],&Available[2]); printf("请输
6、入最大需求数Max(格式:a,b,c)"); for(intj=0;j(称为序列为安全序列),为每个进程分配所需的资源,直至最大需求,使得每个进程都能顺利完成。二、银行家算法 假设在进程并发执行时进程i提出请求j类资源k个后,表示为Requesti[j]=k。系统按下述步骤进行安全检查: 如果Requesti≤Needi则继续以下检查,否则显示需求申请超出最大需求值的错误。 如果Requesti≤Available则继续以下检查,否则显示系统无足够资源,Pi阻塞等待。 系统试探着把资源分配给进程Pi,并修改下面数据结构
7、中的数值:Available[j]∶=Available[j]-Requesti[j];Allocation[i,j]∶=Allocation[i,j]+Requesti[j];Need[i,j]∶=Need[i,j]-Requesti[j];目的-通过该培训员工可对保安行业有初步了解,并感受到安保行业的发展的巨大潜力,可提升其的专业水平,并确保其在这个行业的安全感。为了适应公司新战略的发展,保障停车场安保新项目的正常、顺利开展,特制定安保从业人员的业务技能及个人素质的培训计划 系统执行安全性算法,检查此次资源分配后,系统是
8、否处于安全状态。若安全,才正式将资源分配给进程Pi,以完成本次分配;否则,将本次的试探分配作废,恢复原来的资源分配状态,让进程Pi等待。三、安全性算法 设置两个向量:①工作向量Work:它表示系统可提供给进程继续运行所 需的各类资