Skip to content

2009年 408 操作系统 第 25 题

操作系统2009年选择题2分

题目

某计算机系统中有 8 台打印机,由 K 个进程竞争使用,每个进程最多需要 3 台打印机。该系统可能会发生死锁的 K 的最小值是( )。

错因

A

K = 2 时两进程总共最多需要 6 台打印机,8 台远远够分——不可能死锁。把"竞争资源就可能死锁"绝对化是没算最坏分配下的资源数对比。

B

K = 3 时最坏每人持 2 台共 6 台,剩 8 - 6 = 2 台空闲——任意一人能拿到第 3 台凑齐 → 释放 → 链式推动其他人。3 个进程不会死锁

D

K = 5 已经能死锁,但题问"最小"K 值——5 是死锁集合的成员之一,不是最小元素。K = 4 已经能死锁了,5 不是最小答案。

总解析

死锁需要"每人都拿了一些资源、都不够、都在互等"。同类资源场景的判定:

最坏分配:每人持 (max - 1) 台资源、还差 1 台才完成。本题每人最多需 3 台,最坏每人持 2 台。

K最坏每人持有总占用剩余能否凑齐?是否死锁?
22 台44任意一人能拿到第 3 台(剩 4 ≥ 1)→ 完成不可能
32 台62任意一人能拿到第 3 台(剩 2 ≥ 1)→ 完成不可能
42 台80没人能再拿到一台 → 全卡住可能死锁
52 台10 > 8(资源不够分了),实际最坏只能让 4 人各持 2 台、第 5 人持 0 台。第 5 人无资源也无法运行——但这不算"循环等待"。需要重看。可能

临界条件

代入:

K = 4 时:4 人各 2 台正好用完 8 台、剩 0 台。每人差 1 台才完成,没人能补齐 → 可能死锁

K = 3 时:3 人各 2 台占 6 台、剩 2 台。这 2 台中任意 1 台分给某人就让它凑齐 3 台 → 完成 → 释放 3 台 → 链式推动其他人。绝对不死锁

通用公式(n 个同类资源、k 个进程每个最多需 m 个、求"会死锁的最小 K"):

本题:

与"保证不死锁的最小资源数"相反公式(2014-24 那题):那题给定进程数求资源下限,本题给定资源数求让 K 能死锁的下限。两条公式可以互推。

最终答案是 C

最后更新:

🎬 可视化演示
加载中...

提示:可在可视化区直接操作播放、步进、修改参数