程序死锁详解

死锁的必要条件

产生死锁的四个必要条件:

  1. 互斥: 一个资源一次只能分配给一个进程使用。
  2. 占有且等待: 一个进程在等待其他进程释放资源的同时,继续占有已经拥有的资源。
  3. 不可抢占: 一个进程不能强行占有其他进程已占有的资源。
  4. 循环等待:若干进程由于等待其他进程释放资源,而形成相互等待的循环。如进程A等待进程B,进程B等待进程C,•••,进程X等待进程Y,进程Y等待进程A。

如何检测死锁

(1)操作系统周期性地执行算法检测是有存在循环等待,如果存在,则对死锁进行恢复

(2)可以利用资源分配图,检测有向图中是否存在环。如果存在环,表明死锁可能发生,采取措施进行恢复

具体实现: 从一个节点出发进行深度优先搜索(DFS),对访问过的节点进行标记。如果访问了已经标记的节点,就表示有向图存在环,即检测到死锁的发生。

下面这个资源分配图存在环,并且死锁已经发生:
在这里插入图片描述

下面这个资源分配图存在环,但是死锁并没有发生(因为每种类型存在多个资源):

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值