Skip to content

2010年 408 操作系统 第 25 题

操作系统2010年选择题2分

题目

设与某资源关联的信号量初值为 3,当前值为 1。若 M 表示该资源的可用个数,N 表示等待该资源的进程数,则 M、N 分别是( )。

错因

A

把可用数当成 0——但信号量当前值 = 1(正数),意味着还有 1 个资源没被分配,可用 = 1 不是 0。把"被使用了 2 个"误推到"用完了"是没看清当前值还是正数。

C

把信号量值差 (3-1=2) 错算成等待进程数——但只有信号量为负时绝对值才等于等待进程数。当前值 = 1 > 0,说明没人等待。把"差值"自动当成等待数是公式记错了。

D

把可用数算成 2——可能用了 (3 - 1) = 2 但弄反了。当前值 = 1 直接就是可用数(信号量 ≥ 0 时),不是 3 - 当前值。

总解析

信号量值的语义

信号量当前值 S含义M(可用资源数)N(等待进程数)
S > 0还有 S 个资源可用S0
S = 0资源刚好用完,下一次 P 操作就会阻塞00
S < 0|S| 个进程正在阻塞等待0|S|

应用到本题

  • 初值 = 3:系统总共有 3 个该资源
  • 当前值 = 1:S > 0 → 可用 1 个无等待
含义
M(可用)1信号量 = 1 直接表示还剩 1 个资源
N(等待)0信号量 > 0 → 没人在等

反算"已分配多少个":初值 - 当前值 = 3 - 1 = 2 个已分配(被某些进程拿走在用),还有 1 个空闲,没人在等。

速记三种状态

S > 0: 还有空座位 (S 个),没人排队
S = 0: 座位刚好坐满,没人排队
S < 0: 满了 + 还有 |S| 人在排队

最终答案是 B

最后更新:

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

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