信号量变量full,empty和Mutex分别初始化为0,n和1。处理P 1一次一次将一个项重复添加到大小为n的缓冲区中,而处理P 2使用以下给出的程序一次一次从同一缓冲区中重复删除一项。在程序中,K,L,M和N是未指定的语句。
P1
而(1){
K;
P(互斥体);
向缓冲区添加一个项目;
V(互斥体);
L;
}
P2
而(1){
M;
P(互斥体);
从缓冲区中删除一个项目;
V(互斥体);
N;
}
语句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”。这意味着缓冲区中没有任何项目。
信号量“空”被初始化为“ n”。这意味着缓冲区中有n个项目的空间。在进程P1中,等待信号量“空”表示如果缓冲区中没有空间,则P1无法产生更多的项。信号量“满”时的信号表示已将一项添加到缓冲区。在过程P2中,等待信号量“满”表示如果缓冲区为空,那么使用者将无法消耗任何物品。信号量“空”上的信号在消耗一项后会增加缓冲区中的空间。
因此,选项(D)是正确的。
如果您在以上文章中发现任何错误,请在下面发表评论。这个问题的测验