死锁检测算法

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一、实验目的

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

二、实验题目

两个题目任选其一:

1、编写对每种类型多个资源的死锁检测算法。

2、使用检测“进程—资源循环等待链”的方法,编写死锁检测算法(有参考代码)

三、实验要求

题目2:

(1)利用“进程—资源循环等待链”的方法,编写死锁检测算法的具体方法可参考教材的算法,在了解此算法思想的基础上,也可参考给定代码;具体代码描述参

见3.3.5。

(2)对图3-2中的资源分配图完成对该算法的测试。

图3-2 资源分配图

四、实验报告要求

•画出所实现算法的详细框图;

•说明所采用的数据结构;

•列出输入数据(进程和所申请的资源数据可用命令行或文件输入);

•列出运算的输出结果(输入结果包括是否死锁,死锁进程有哪些,也可包含中间结果);

•实验总结与心得。

•根据情况可以列出代码。

五、实验结果

框图如下:

运行结果如下:

当把框图改为如下所示时:

再次执行可得此处没有死锁出现,说明程序的正确性。

六、试验总结

(1)通过这次实验,了解到进程死锁的具体过程,对死锁的各方面理解都有了更深层次的认识。系统在为进程分配资源时并不一定能满足进程的需求,因此检测系统的安全性是非常有必要的,安全性的检测使用银行家算法得以实现。

(2)在刚开始的学习中,对于死锁理解,只是认为从第一个进程开始剥夺其资源,也不管它是不是发生了死锁,一直剥夺到死锁解除为止。虽然利用银行家算法来预防死锁是可靠的,但也是非常保守的,因为它限制了进程对资源的存取,从而降低了进程的并发运行程度。

(3)死锁检测并不限制进程对资源的申请,只要有,就分配,但这也可能造成死锁。但由于死锁并不是经常发生的,故大大提高了系统运行的效率。通过本实验,进一步加深理解和掌握死锁的检测算法。

(4)本次试验需要自己编写进程的调度图,通过自己画出的进程图,经过算法演示,得到预期的结果,然后通过改变回路,进一步证明了算法检测死锁的有效性。

相关文档
最新文档