预防死锁 避免死锁

预防死锁的方法是通过破坏产生死锁的四个必要条件中的一个或几个,以避免发生死锁。由于互斥条件是非共享设备所必须的,不仅不能改变,还应加以保证,因此主要是破坏产生死锁的后三个条件。

破坏“请求和保持”条件   为了能破坏“请求和保持”条件,系统必须保证做到:当一个进程在请求资源时,它不能持有不可抢占资源。该保证可通过如下两个不同的协议实现:  1. 第一种协议  该协议规定,所有进程在开始运行之前,必须一次性地申请其在整个运行过程中所需的全部资源。2. 第二种协议  该协议是对第一种协议的改进,它允许一个进程只获得运行初期所需的资源后,便开始运行。、

破坏“不可抢占”条件    为了能破坏“不可抢占”条件,协议中规定,当一个已经保持了某些不可被抢占资源的进程,提出新的资源请求而不能得到满足时,它必须释放已经保持的所有资源,待以后需要时再重新申请。这意味着进程已占有的资源会被暂时地释放,或者说是被抢占了,从而破坏了“不可抢占”条件。

破坏“循环等待”条件   一个能保证“循环等待”条件不成立的方法是,对系统所有资源类型进行线性排序,并赋予不同的序号。

避免死锁同样是属于事先预防的策略,但并不是事先采取某种限制措施,破坏产生死锁的必要条件,而是在资源动态分配过程中,防止系统进入不安全状态,以避免发生死锁。这种方法所施加的限制条件较弱,可能获得较好的系统性能,目前常用此方法来避免发生死锁。

posted on 2022-04-10 14:36  只爱敲代码  阅读(450)  评论(0编辑  收藏  举报

导航