在操作系统中,生产者,消费者问题是典型的pv操作问题,实质上也是进程互斥与同步的问题。生产者-消费者问题的简单描述就是,每一个生产者都要把自己生产的产品放进缓冲区内,每一个消费者从缓冲区内取走自己需要的商品。在这种情况下,只有当缓冲区内存在有生产者生产的商品时,消费者才可以取走商品,生产者与消费者的进程同步,而生产者与消费者之间存在信息交流与互通,只有进行信息交流与互通,才能得知是否能够放入商品或者取出商品。所以,生产者与消费者之间存在互斥,即生产者,消费者必须互斥访问缓冲区, 缓冲区内不允许同时存在两个以上进行中的进程。
当生产者,消费者问题中的缓冲区为有界缓冲区时,两个进程共享一个固定大小的缓冲区,一边是生产者,负责生产商品并放入缓冲区内,另一边是消费者,负责从缓冲区内取走商品消费。
存在的两个问题分别是缓冲区饱和与缓冲区为空。当缓冲区饱和时,此时的生产者已经无法向缓冲区再存放新的数据项,因为此时的缓冲区已经拒绝新的数据项的插入,解决的办法就是让生产者进入睡眠状态,停止向缓冲区供应新的数据项,等待消费者从缓冲区取走一个或多个商品时,再将生产者唤醒。同理,当缓冲区为空时,消费者已经无法从缓冲区内取走任何新的数据项,此时将消费者进入睡眠状态,停止向缓冲区内索取数据,等待生产者将新的数据项放入缓冲区时,再将消费者唤醒。