早教吧 育儿知识 作业答案 考试题库 百科 知识分享

操作系统概论中的问题如果一个生产者和一个消费者共享的缓冲器容量为可以存放n件物品,那么只要把信号量SP的初值定位n.当缓冲器中没有放满n件物品时,生产者调用P(SP)都不会成为等待

题目详情
操作系统概论中的问题
如果一个生产者和一个消费者共享的缓冲器容量为可以存放n件物品,那么只要把信号量SP的初值定位n.当缓冲器中没有放满n件物品时,生产者调用P(SP)都不会成为等待状态,可以吧物品存入缓冲器.但当缓冲器中已经有n件物品时,生产者想再存入一件物品将被拒绝.每存入一件物品后,由于调用V(SG),故SG的值表示缓冲器中可用的物品数.只要SG>0,消费者调用P(SG)后总可去去物品.每取走一件物品后,由于调用V(SP),便增加了一个可用来存放物品的位置.用指针k和t分别指示生产者往缓冲器中存放物品和消费者从缓冲器中取物品的相对位置.它们的初值为0.这样,一个消费者和一个生产者共用容量为n的缓冲区时,可如下同步工作:
begin
B:array[0..(n-1)] of integer;
k,t:integer;
SP,SG:semaphore;
k:=0;t:=0;
SP:=n;SG:=0;
cobegin
process producer
begin L1:produce a product;
P(SP);
B[k] := product;
k := (k+1) mod n;………………①
v(SG);
go to L1
end;
process consumer
begin L2:P(SG);
take a product from B[t];
t := (t+1) mod n;………………②
V(SP);
consume;
go to L2;
end;
coend;
end;
▼优质解答
答案和解析
k := (k+1) mod n
下一个存的位置 由k 变成 k+1, 但当 k=n-1时, 即最后一个时, k变成0. 即第一个位置.
t也一样.
看了操作系统概论中的问题如果一个生...的网友还看了以下: