问答题
有一个仓库,可以存放A和B两种产品,但要求:
(1) 每次只能存入一种产品(A或B);
(2) -N<A产品的数量-B产品的数量<M。
其中,N和M是正整数。试用P,V操作描述产品A与产品B的入库过程。
【正确答案】
【答案解析】首先设置一个初值为1的互斥信号量mutex,以保证每次只存入一种产品。为了保证“-N<A产品的数量-B产品的数量<M”,还需设置信号量SA,保证目前可再存放的A产品数量,其初值为M-1;SB,表示目前还可以再存放的B产品数量,其初值为N-1。
A产品入库的过程可描述为:
while(ture)
{
P(SA);//还可再存放一个A产品吗?
P(mutex);
将A产品放入仓库;
V(mutex);
V(SB);//可存放的B产品数量增1
}
B产品入库的过程可描述为:
while(ture)
{
P(SB);//还可再存放一个B产品吗?
P(mutex);
将B产品放入仓库;
V(mutex):
V(SA);//可存放的A产品数量增1
}