有P1,P2,…,Pm等m个生产者进程和CA、CB两个消费者进程。它们共享可存放一个产品的缓冲区BUFFER。序号为奇数的生产者进程生产的产品供CA消费,而序号为偶数的生产者进程生产的产品供CH消费,CA或CB一取出产品,则各生产者均有权申请向BUFFER

admin2017-10-26  25

问题 有P1,P2,…,Pm等m个生产者进程和CA、CB两个消费者进程。它们共享可存放一个产品的缓冲区BUFFER。序号为奇数的生产者进程生产的产品供CA消费,而序号为偶数的生产者进程生产的产品供CH消费,CA或CB一取出产品,则各生产者均有权申请向BUFFER存放产品。试用PV操作实现进程的并发执行(如图所示)。

选项

答案设3个信号量:S表示生产者能否将产品放入BUFFER,即实现生产者间互斥将产品放入BUFFER;SA表示奇数生产者进程是否已将产品放入BUFFER,即CA能否取产品进行消费;SB表示偶数生产者进程是否已将产品放入BUFFER,即CB能否取产品进行消费;并发程序如下: begin S,SA,SB:semaphore; S:=1; SA:=0; SB:=0; cobegin process Pi(1,2,…,m) begin L1:生产一个产品; P(S); 将产品放入BUFFER; if i是奇数then V(SA); else V(SB): goto L1; end; process CA begin L2:P(SA); 从BUFFER取出产品; V(S); 消费; goto L2; end; process CB begin L3:P(SB); 从BUFFER取出产品; V(S); 消费; goto L3; end; coend; end;

解析
转载请注明原文地址:https://kaotiyun.com/show/Vqkx777K
0

最新回复(0)