死锁检测和解除

本文介绍了通过资源分配图描述系统死锁状态的方法,并详细解释了死锁定理及其检测手段。此外,还探讨了三种主要的死锁解除策略:资源剥夺法、撤销进程法和进程回退法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

   若系统为进程分配资源时不采取任何措施,则应该是提供死锁检测和解除的手段。

 1.资源分配图:

     系统死锁,可利用资源分配图来描述。

       如上图, 用圆圈代表一个进程,用框代表一类资源。由于一种类型的资源可能有多个,用框中的一个点代表一类资源中的一个资源。从

   进程到资源的有向边叫请求边,表示该进程申请一个单位的该类资源;从资源到进程的边叫分配边,表示该类资源已经有一个资源被分配

    给了该进程。

2.死锁定理:

       可以通过将资源分配图简化的方法来检测系统状态  S  是否为死锁状态。简化方法如下:

       (1)、在资源分配图中,找到既不阻塞又不是孤点的进程 Pi (即找出一条有向边与它相连,且该有向边对应资源的申请数量小于等于系统中

                    已有空闲资源数量)。消去它所有的请求边和分配边,使之成为孤立的结点。

                    在这里要注意一个问题,判断某种资源是否有空闲,应该用它的资源数量减去它在资源分配图中的出度。

       (2)、进程 Pi 所释放的资源,可以唤醒某些因等待这些资源而阻塞的进程,原来的阻塞进程可以变为非阻塞进程。根据(1)中的方法进行一系列

                   简化后,若能消去图中所有的边,则称该图是可完全简化的。

          S为死锁的条件是:当且仅当 S 状态的资源分配图是不可完全简化的,该条件为死锁定理

3.死锁解除:

          一旦检测出死锁,就应立即采取相应的措施,以解除死锁。死锁解除的主要方法有:

         (1)、资源剥夺法。挂起某些死锁进程,并抢占它的资源,将这些资源分配给其他的死锁进程。但应防止被挂起的进程长时间得不到资源,而处于

                     资源匮乏的状态。

         (2)、撤销进程法。强制撤销部分、甚至全部死锁进程并剥夺这些进程的资源。撤销的原则可以按进程优先级和撤销进程代价的高低进行。

         (3)、进程回退法。让一(或多)个进程回退足以回避死锁的地步,进程回退时自愿释放资源而不是被剥夺。要求系统保持进程的历史信息,设置

                       还原点。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小达人Fighting

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值