-->
当前位置:首页 > 题库

主观题:h565.在生产者-消费者问题中,若缺少了V(full)或V(empty),对进程的执行有什么影响?

Luz4年前 (2022-11-03)题库351
在生产者-消费者问题中,若缺少了V(full)或V(empty),对进程的执行有什么影响?







答案:解:
如果缺少了V(full),那么表明从第一个生产者进程开始就没有对信号量full值改变,即使缓冲池存放的产品已满了,但full的值还是0,这样消费者进程在执行P(full)时会认为缓冲池是空的而取不到产品,那么消费者进程则会一直处于等待状态。(5分)
如果缺少了V(empty),例如在生产者进程向n个缓冲区放满产品后消费者进程才开始从中取产品,这时empty=0,full=n,那么每当消费者进程取走一个产品时empty并没有被改变,直到缓冲池中的产品都取走了,empty的值也一直是0,即使目前缓冲池有n个空缓冲区,生产者进程要想再往缓冲池中投放产品会因申请不到空缓冲区而被阻塞。(5分)