死锁条件、资源分配图与安全性
约 48 分钟
考点目标
本课深挖“死锁条件、资源分配图与安全性”。要求你能从真实参数建模、完成逐步计算,并用边界或反例检查答案;只背结论、不写过程不算掌握。
一、严格定义与机制
死锁需互斥、请求并保持、不可剥夺和循环等待四个必要条件同时成立。安全状态保证存在安全序列,非安全状态不等于当前已经死锁,但可能进入死锁。
做题先标对象、单位、位宽和状态。组成原理中同一比特串在有符号、无符号和浮点解释下数值不同;操作系统中同一事件在用户态、内核态和硬件层承担的责任也不同。
二、计算或推演规则
单类可重用资源、n个进程每个最多需要k个时,为保证最坏情况下仍至少一进程可完成,需要资源数不小于n(k-1)+1;多类资源则用安全性算法检查Need≤Work。
草稿必须保留中间量。地址题写位段,性能题写路径概率,调度题画时间线或状态表,存储题区分数据块和管理开销。若题目改变前提,应从公式来源重新判断,而不是机械替换数字。
三、带参数例题
4个进程每个最多需要3个同类资源,若共9个,即使每个先占2个仍剩1个,可使某进程达到3并完成释放,因此保证不死锁。
计算后至少做一种复核:数量级、范围、单位、极端输入或反向代入。若结果违反位宽、地址边界、资源守恒或时间下界,应回到建模步骤查错。
四、高频陷阱
把非安全直接等同已经死锁,或只检测四条件中的一个就断言死锁。
纠错时写出最小反例,并指出错误发生在定义、条件、运算还是结论。这样面对变式题,才能保持同一推理链。
五、在线验收
本课下方有单选、多选以及数值计算或应用问答。单选检验概念边界,多选检验完整步骤,定量题使用题面真实参数并由后端判分;应用题要求明确同步对象或机制,不接受只写名词。
Practice
本课练习
先独立作答再提交;编程题会在隔离沙箱中真实编译、运行并对拍。