1438 字
4 分钟
考研专业课学习记录2026-08-25
考研专业课学习记录 | 2026-08-25
今日学习内容
学习时长:2小时 核心专题:操作系统死锁模块,涵盖死锁定义、产生原因、预防策略、避免方法与检测解除手段,为408统考高频考点。
AI知识点带复盘
一、死锁核心概念与产生原因
- 死锁定义:多个进程在执行过程中,因争夺共享资源而陷入互相等待的状态,若无外力干预,所有进程都将无法继续推进。
- 死锁的四个必要条件(缺一不可,同时满足才会触发死锁):
- 互斥条件:某段时间内某资源仅能被一个进程独占使用
- 请求与保持条件:进程已持有部分资源,同时发起新的资源请求,且不释放已占有的资源
- 不可剥夺条件:进程已获得的资源在未主动释放前,不能被其他进程强行收回
- 循环等待条件:存在进程等待序列
{P1,P2,...,Pn},其中Pi等待Pi+1占有的资源,最终Pn等待P1占有的资源,形成闭环等待
- 死锁产生的原因:
- 根本原因:系统可用资源总量不足、进程推进顺序非法
- 直接原因:四个必要条件同时成立
二、死锁预防
通过破坏至少一个必要条件,从根源上杜绝死锁发生,常见策略如下:
- 破坏互斥条件:将独占资源改造为共享资源,比如通过SPooling技术将打印机改为共享输出设备,仅针对非临界必需的独占资源生效。
- 破坏请求与保持条件:采用静态资源分配策略,进程运行前一次性申请全部所需资源,资源全部满足后才启动进程,进程运行中不再申请新资源。缺点是资源利用率极低,易引发饥饿。
- 破坏不可剥夺条件:当进程申请新资源无法立即满足时,强制收回其已占有的资源,适用于CPU、内存等易回收的资源,需配合进程回滚机制避免数据丢失。
- 破坏循环等待条件:对系统所有资源进行线性编号,规定进程必须按资源编号递增顺序申请资源,避免闭环等待,优点是实现简单,资源利用率优于静态分配。
三、死锁避免
无需破坏必要条件,通过动态检测系统安全状态,确保资源分配后系统始终处于安全状态,避免死锁。核心算法为银行家算法:
- 安全状态:存在至少一种进程推进顺序(安全序列),可让所有进程依次获得所需资源并顺利完成。
- 算法核心:当进程发起资源申请时,先假设完成资源分配,再校验系统是否仍处于安全状态,若安全则正式分配,否则拒绝申请。
- 考研高频考点:给定系统资源总量、各进程最大资源需求、已分配资源量、剩余可用资源量,推导安全序列或判断当前状态是否安全。
四、死锁的检测与解除
当未采用预防或避免策略时,通过检测机制发现死锁并进行修复:
- 死锁检测:通过资源分配图化简法完成检测:找到既不阻塞又不孤立的进程节点,释放其占有的全部资源,重复该流程直至无法化简,若所有进程均可被化简则无死锁,反之存在死锁。
- 死锁解除手段:
- 资源剥夺:从非死锁进程处剥夺资源,分配给死锁进程
- 撤销进程:终止部分或全部死锁进程,回收其资源
- 进程回滚:将死锁进程回滚至此前的检查点,重新分配资源
问题与反思
- 对死锁预防四种策略的适用场景和优缺点区分不够清晰,尤其是破坏请求保持与破坏循环等待的策略边界容易混淆。
- 银行家算法的安全序列推导步骤还不够熟练,需要结合更多统考真题例题进行练习巩固。
- 资源分配图化简的阻塞进程判断逻辑还需要进一步梳理,避免出现化简步骤错误。
收获与总结
- 完整搭建了死锁模块的408考点框架,明确了死锁的核心触发条件与三类死锁处理策略的差异:预防是静态破坏必要条件,避免是动态保障安全状态,检测解除是事后修复手段。
- 清晰区分了死锁预防与避免的核心不同:预防以牺牲资源利用率为代价彻底避免死锁,避免则在保证资源利用率的前提下动态规避死锁风险。
- 掌握了银行家算法的核心逻辑与安全序列的计算方法,以及资源分配图化简的标准化步骤。
💡 碎碎念:踏实吃透每一个知识点!
文档内容由 AI 辅助生成
分享
如果这篇文章对你有帮助,欢迎分享给更多人!
考研专业课学习记录2026-08-25
https://elysiaweb.vercel.app/posts/408/8-25/ 部分信息可能已经过时
相关文章 智能推荐