死锁实验三玲语2.doc

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

死锁实验三玲语2

VisualVB2005程序设计语言

PAGE2

PAGE19

专业班级:计科1602S学号:2016190432105姓名:lsimplehappy

实验三

死锁的避免

一、实验目的

当系统的总资源数m小于或等于所有进程对资源的最大需求时,就可能产生死锁。死锁会引起计算机系统的瘫痪。银行家算法是在实现资源分配时避免死锁的一个著名算法,该算法是在能确保系统处于安全状态时才把资源分配给申请者。通过本实验使学生能进一步理解死锁的概念,并能选择一个算法来避免死锁。

采用银行家算法来预防死锁是可靠的,但也是非常保守的,因为它限制了进程对资源的存取,从而降低了进程的并发运行程度。死锁检测并不限制进程对资源的申请,只要有,就分配,但这也可能造成死锁。但由于死锁并不是经常发生的,故大大提高了系统运行的效率。通过本实验,可使学生进一步加深理解和掌握死锁的检测算法。

二、实验环境

C/C++/C#

Cfree/MicrosoftVisualStudio6.0/MicrosoftVisualStudio.NET2005

三、实验的重点和难点

1、避免死锁的实质在于如何防止系统进入不安全状态。

2、在银行家算法中用到了可利用资源向量Available、最大需求矩阵Max、分配矩阵Allocation、需求矩阵Need等数据结构,而在安全性检查算法中则还要用到工作向量Work和完成向量Finish等数据结构。

3、安全性检查算法的目的是寻找一个安全序列。

四、实验内容

系统中有m个同类资源被n个进程共享,每个进程对资源的最大需求数分别为S1,S2,…,Sn,且Max(Si)=m,(i=1,2,…n)。进程可以动态地申请资源和释放资源。编写一个程序,实现银行家算法,当系统将资源分配给某一进程而不会死锁时,就分配之。否则,推迟分配,并显示适当的信息。

数据结构和操作说明参照教材上有关银行家算法的资源分配表,设计适当的数据结构。进程要分配的资源数可由随机数决定或命令行输入,但要注意数据的有效范围。

分别使用检测“进程—资源循环等待链”的方法来检测进程的死锁状态。对于相同的进程资源分配、占用次序,比较两个算法的结果。

数据结构死锁检测算法的数据结构参考书教材资源占用矩阵、进程等待资源矩阵Q、资源总数向量和可用资源向量W。检测“进程—资源循环等待链”的算法可对所有的资源和进程进行编号,并设置一张资源分配表和一张进程等待表。

五、实验要求:

画出实现银行家算法的程序框图,说明数据结构。在每当进程要分配资源时以及释放资源后,打印输出资源分配或释放后的分配情况表,如可能产生死锁,显示适当信息;如不会产生死锁,更新系统的资源分配状态表。

画出所实现算法的框图,说明所采用的数据结构。进程和所申请的资源可用命令行或随机数决定,进行一次分配就检测死锁,输出所涉及的表格数据。

结果截图:

七、实验过程遇到的问题及其解决:

银行家分配算法原则是:当进程申请资源时,如果系统中现存资源数能满足进程的当前资源申请量以及申请的资源数要小于需要的资源数(request[j]=need[i][j]||request[j]=available[j])并且还要验证是否有安全,只有在安全情况下才能将资源分配给它,也即银行家算法能避免死锁的发生。

操作系统按照银行家制定的规则为进程分配资源,当进程首次申请资源时,要测试该进程对资源的最大需求量,如果系统现存的资源可以满足它的最大需求量则按当前的申请量分配资源,否则就推迟分配。当进程在执行中继续申请资源时,先测试该进程已占用的资源数与本次申请的资源数之和是否超过了该进程对资源的最大需求量。若超过则拒绝分配资源,若没有超过则再测试系统现存的资源能否满足该进程尚需的最大资源量,若能满足则按当前的申请量分配资源,否则也要推迟分配,从而达到死锁的避免。通过上网查阅资料最后解决了这一问题,有待改进和优化。

设计开始的时候,由于整体对银行家算法还没有完全理解透,再加上没认真预习、思考不够认真、对书本的知识不够扎实,所以一脸惘然,不知道从哪里开始着手.才发现这次课程设计没我想得那么简单,回寝室后,连忙查看相关的书,以及通过上网查找相关的资料,最终对银行家算思想有了彻底的了解。

八、实验总结

?银行家算法是一个经典的避免死锁的算法,它可以有效的避免资源分配时产生死锁。但死锁的避免时相当复杂的,而且浪费时间。每次分配时都要进行分配检查看是否会产生死锁,通过实验加深对银行家算法的了解和认识,同时对避免死锁的

文档评论(0)

151****2506 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档