模拟卷 操作系统 信号量 选择题
第 24 题

有一个计数信号量 S,若干个进程对 S 进行了 28 次 P 操作和 18 次 V 操作后,信号量 S 的值为 0。然后又对信号量 S 进行了 3 次 V 操作。此时有( )个进程等待在信号量 S 的队列中。

A. 2 B. 0 C. 3 D. 7

信号量

[tag_link]

正确答案:B

首先,设信号量 S 的初始值为 X。 根据信号量的操作规则,P 操作会使 S 减 1,V 操作会使 S 加 1。 经过 28 次 P 操作和 18 次 V 操作后,S 的值为 X - 28 + 18 = X - 10。 已知此时 S 的值为 0,因此 X - 10 = 0,解得初始值 X = 10。

然后,在 S 值为 0 的情况下,又进行了 3 次 V 操作。 每次 V 操作使 S 加 1,所以 S 变为 0 + 3 = 3。

在计数信号量中,当 S 的值大于或等于 0 时,表示没有进程等待在信号量的队列中。 具体地,若 S > 0,表示有可用资源; 若 S = 0,表示资源刚好用完且无进程等待; 若 S < 0,其绝对值表示等待进程数。 在 28 次 P 和 18 次 V 操作后 S = 0,说明等待队列已空。 后续 3 次 V 操作使 S 变为 3,S 仍为正数,因此等待队列中依然没有进程。

故此时有 0 个进程等待在信号量 S 的队列中。