Skip to content

2014年 408 操作系统 第 24 题

操作系统2014年选择题2分

题目

某系统有 n 台互斥使用的同类设备,三个并发进程分别需要 3、4、5 台设备,可确保系统不发生死锁的设备数 n 最小为( )。

错因

A

把三个进程的最大需求直接相加再减点:3+4+5 = 12,再随手减 3 凑出 9。但这没考虑"最坏分配"——如果只有 9 台,可能每人各拿 3、剩 0 台,三人都凑不齐自己的需求,立即死锁。直觉减出来的数没经过推导,多半不对。

C

走对了"最坏每人差 1 台"的方向,但留的余量多了 1:算成 (3-1)+(4-1)+(5-1) + 2 = 11。其实只需要"再额外多 1 台"就够——这 1 台给任意一个进程,它就能凑齐,跑完释放后链式推动其他人。多算的那 1 台是冗余。

D

直接选了三人需求之和 3+4+5 = 12,认为"凑齐三人最大需求"就稳。这确实绝对不死锁,但远远超过最少需求——题问"最小",12 是过度配置。

总解析

死锁的本质是"每人都拿了点资源、都不够、都在互等"。要保证不死锁,最坏情况下系统必须至少能让一个进程凑齐——它跑完后释放资源,链式推动其他进程。

最坏分配推导:

让每个进程都"差 1 台才完成"——这是最危险的状态。三个进程在差 1 台时各自持有:

进程最大需求已分配(最坏:差 1 台)
P132
P243
P354
合计已分配2 + 3 + 4 = 9

如果总台数 = 9:所有人都差 1 台、可用 = 0 → 死锁

如果总台数 = 10:所有人都差 1 台后,还多 1 台——把这 1 台给任意一人(比如 P1),它就能凑齐 3 台并跑完 → 释放 3 台 → 总可用 = 4 → 喂给 P2 凑齐 4 台 → 释放 → 喂给 P3 凑齐 5 台 → 全部完成。

如果总台数 < 10:总有最坏分配让所有人差 1 台、还无余量。

通用公式(k 个同类资源进程,每个最多需 台,同类资源):

代入本题

最终答案是 B

最后更新:

⚠️ 这道题暂未配可视化,欢迎在 CodeBrick 反馈区告诉我们你想看哪道题