【操作系统】死锁的基本概念与必要条件 📅 2026/6/30 20:15:35 考点频率★★★★★死锁的必要条件是选择题必考也是理解银行家算法的基础难度⭐⭐建议必须背下四个必要条件的名称理解其含义并能判断实际场景中破坏了哪个条件1️⃣ 什么是死锁死锁是指多个进程在运行过程中因争夺资源而造成的一种互相等待的僵局。具体来说一组进程中的每个进程都在等待一个事件而该事件只能由这组进程中的另一个进程触发导致所有进程都无法继续执行。用更通俗的话说每个人都拿着别人需要的东西但谁也不肯先松手结果所有人都卡住了。生活类比十字路口被四辆车堵死——每辆车都占据了另一辆车的前进方向且没有一辆车能够后退或转向交通彻底瘫痪。这就是一个典型的死锁场景每个进程车都占用了一部分资源路面同时在等待另一个进程释放资源让路。2️⃣ 死锁的四个必要条件死锁的发生必须同时满足以下四个条件。只要破坏其中任意一个死锁就不会发生。这也是死锁预防的理论依据。2.1 互斥Mutual Exclusion含义涉及的资源是临界资源一次只能被一个进程使用。说明如果资源允许多个进程同时使用就不会有人因等待该资源而阻塞。但现实中有很多资源如打印机本身就是独占的因此这个条件通常无法破坏。示例打印机同一时刻只能被一个作业占用。2.2 持有并等待Hold and Wait含义一个进程已经占有了至少一个资源同时在等待获取其他进程占有的资源。说明进程在等待新资源时不释放已有的资源。示例进程A持有打印机又在等待扫描仪进程B持有扫描仪又在等待打印机。2.3 不可抢占No Preemption含义进程已获得的资源在使用完之前不能被强行剥夺只能由进程自己主动释放。说明如果系统允许强制回收资源就不会出现死等。示例操作系统不能强行把打印机从进程A手中夺走转交给进程B。2.4 循环等待Circular Wait含义存在一个进程等待链P1等待P2占有的资源P2等待P3占有的资源……Pn等待P1占有的资源形成一个首尾相连的环。说明这是死锁发生的直接表现——有环不一定死锁如果资源有多个实例但死锁一定有环。示例进程A等BB等CC等A。这四个条件必须同时满足才会死锁。缺一不可。3️⃣ 死锁与饥饿的区别这两个概念容易混淆但本质不同对比项死锁饥饿定义多个进程互相等待对方占有的资源某个进程长期得不到所需资源涉及进程数≥2个1个或多个但总是同一个进程被冷落进程状态所有涉事进程都阻塞无法推进被饿死的进程阻塞但其他进程可能正常运行能否自行解除不能需要外部干预如果系统调度策略改变如优先级老化可能自行解除原因资源竞争和循环等待调度策略不公平如低优先级任务一直得不到CPU4️⃣ 处理死锁的四种策略预览这是后续文章会展开的内容先建立一个整体框架策略思路典型方法预防Prevention破坏四个必要条件之一资源一次性分配、资源有序分配避免Avoidance系统在分配资源前判断是否安全银行家算法检测Detection定期检查是否有死锁发生资源分配图、死锁检测算法恢复Recovery检测到死锁后解除终止进程、资源抢占其中银行家算法避免是软考计算题的重点下一篇文章会详细讲解。5️⃣ 经典例题例题1下列四个条件中不属于死锁必要条件的是 。A. 互斥条件B. 持有并等待条件C. 资源剥夺条件D. 循环等待条件解析死锁的四个必要条件是互斥、持有并等待、不可抢占非剥夺、循环等待。资源剥夺或称为“可抢占”是破坏死锁的手段而不是产生死锁的条件。选C。例题2某系统中有3个进程和若干资源若进程P1占用了资源R1并等待R2进程P2占用了R2并等待R3进程P3占用了R3并等待R1。此时系统发生了 。A. 饥饿B. 死锁C. 互斥D. 同步解析P1→R2→P2→R3→P3→R1→P1形成了循环等待环且每个进程都持有资源等待另一个资源满足四个必要条件发生了死锁。选B。例题3判断只要系统中存在循环等待就一定会发生死锁。 解析错误。循环等待是死锁的必要条件但不是充分条件。如果资源有多个实例存在循环等待并不一定导致死锁例如环上的某个进程可能通过其他路径获得资源。只有同时满足四个条件时才会死锁。但如果资源是单实例的则存在环一定等价于死锁。本题表述过于绝对错误。6️⃣ 记忆口诀死锁条件记四个互斥、持有且等待。不可抢占、循环等缺一不可同时存。预防破坏任一环避免检测来处置。7️⃣ 小测验评论区对答案某系统中进程A持有资源X请求资源Y进程B持有资源Y请求资源X。以下说法正确的是 。A. 系统一定发生了饥饿B. 系统一定发生了死锁C. 系统满足死锁的四个必要条件可能发生死锁D. 系统不满足死锁的必要条件本专栏日更2篇点击头像 → 专栏《软考中级高频考点》订阅第一时间接收新内容#软考中级 #软件设计师 #死锁 #必要条件 #操作系统