您好,欢迎访问三七文档
一、实验目的采用银行家算法来预防死锁是可靠的,但也是非常保守的,因为它限制了进程对资源的存取,从而降低了进程的并发运行程度。死锁检测并不限制进程对资源的申请,只要有,就分配,但这也可能造成死锁。但由于死锁并不是经常发生的,故大大提高了系统运行的效率。通过本实验,可使学生进一步加深理解和掌握死锁的检测算法。二、实验题目两个题目任选其一:1、编写对每种类型多个资源的死锁检测算法。2、使用检测“进程—资源循环等待链”的方法,编写死锁检测算法(有参考代码)三、实验要求题目2:(1)利用“进程—资源循环等待链”的方法,编写死锁检测算法的具体方法可参考教材的算法,在了解此算法思想的基础上,也可参考给定代码;具体代码描述参见3.3.5。(2)对图3-2中的资源分配图完成对该算法的测试。图3-2资源分配图四、实验报告要求画出所实现算法的详细框图;说明所采用的数据结构;列出输入数据(进程和所申请的资源数据可用命令行或文件输入);列出运算的输出结果(输入结果包括是否死锁,死锁进程有哪些,也可包含中间结果);实验总结与心得。根据情况可以列出代码。五、实验结果框图如下:运行结果如下:R(1)S(8)A(2)F(6)W(5)C(3)D(7)K(4)X(9)M(11)N(12)当把框图改为如下所示时:再次执行可得此处没有死锁出现,说明程序的正确性。R(1)S(8)A(2)F(6)W(5)C(3)D(7)K(4)X(9)M(11)N(12)六、试验总结(1)通过这次实验,了解到进程死锁的具体过程,对死锁的各方面理解都有了更深层次的认识。系统在为进程分配资源时并不一定能满足进程的需求,因此检测系统的安全性是非常有必要的,安全性的检测使用银行家算法得以实现。(2)在刚开始的学习中,对于死锁理解,只是认为从第一个进程开始剥夺其资源,也不管它是不是发生了死锁,一直剥夺到死锁解除为止。虽然利用银行家算法来预防死锁是可靠的,但也是非常保守的,因为它限制了进程对资源的存取,从而降低了进程的并发运行程度。(3)死锁检测并不限制进程对资源的申请,只要有,就分配,但这也可能造成死锁。但由于死锁并不是经常发生的,故大大提高了系统运行的效率。通过本实验,进一步加深理解和掌握死锁的检测算法。(4)本次试验需要自己编写进程的调度图,通过自己画出的进程图,经过算法演示,得到预期的结果,然后通过改变回路,进一步证明了算法检测死锁的有效性。
本文标题:死锁检测算法
链接地址:https://www.777doc.com/doc-6059775 .html