信号量变量 full、empty 和 mutex 分别初始化为 0、n 和 1。进程 P 1一次向大小为 n 的缓冲区重复添加一项,进程 P 2使用下面给出的程序一次从同一缓冲区中重复删除一项。在程序中,K、L、M 和 N 是未指定的语句。
P1
而 (1) {
K;
P(互斥);
向缓冲区添加一个项目;
V(互斥);
升;
}
P2
而 (1) {
米;
P(互斥);
从缓冲区中删除一个项目;
V(互斥);
否;
}
语句 K、L、M 和 N 分别是
(A) P(满), V(空), P(满), V(空)
(B) P(满), V(空), P(空), V(满)
(C) P(空), V(满), P(空), V(满)
(D) P(空), V(满), P(满), V(空)答案: (D)
解释:
进程P1是生产者,进程P2是消费者。信号量 ‘full’ 被初始化为 ‘0’。这意味着缓冲区中没有项目。
信号量 ’empty’ 被初始化为 ‘n’。这意味着缓冲区中有 n 个项目的空间。在进程 P1 中,等待信号量 ’empty’ 表示如果缓冲区中没有空间,则 P1 不能产生更多项目。信号量 ‘full’ 上的信号表示一项已添加到缓冲区中。在进程 P2 中,等待信号量 ‘full’ 表示如果缓冲区为空,则消费者不能不消费任何项目。信号量“空”上的信号在消耗项目后增加缓冲区中的空间。
因此,选项(D)是正确的。
如果您发现上面的帖子有任何错误,请在下面发表评论。这个问题的测验