信号量变量full、empty和mutex分别初始化为0、n和1。过程P 1. 一次重复向大小为n的缓冲区添加一项,然后处理P 2. 使用下面给出的程序,一次从同一缓冲区重复删除一项。在程序中,K、L、M和N是未指定的语句。
P1
而(1){
null
K
P(互斥);
向缓冲区添加一个项目;
V(互斥);
L
}
P2
而(1){
M
P(互斥);
从缓冲区中取出一个项目;
V(互斥);
N
}
N和L分别是
(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”表示如果缓冲区为空,则消费者不能消费任何商品。信号量“empty”上的信号在消耗一个项目后增加缓冲区中的一个空间。 因此,选项(D)是正确的。 如果你在上面的帖子中发现任何错误,请在下面发表评论。 这个问题的小测验
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END