考虑使用通用信号量S、F和E解决有界缓冲区生产者/消费者问题。信号量S是初始化为1的互斥信号量。信号量F对应缓冲区中空闲槽的数量并被初始化到 N。 信号量 E 对应缓冲区中的元素数,并初始化为 0。
以下哪个交换操作可能会导致死锁?
- Producer进程中的Wait(F)和Wait(S)互换
- 在消费者进程中交换信号(S)和信号(F)
(A)我只有
(B)仅 II
(C)既不是 I 也不是 II
(D) I 和 II答案:(一)
说明:假设 F = 0。现在,如果 Wait(F) 和 Wait(S) 互换并且生产者中的 Wait(S) 成功,则生产者将等待在消费者中发出信号的 Wait(F),这永远不会成功,因为它正在等待 Wait(S) 由生产者发出信号。因此,可能会发生死锁。
这个问题的测验