操作系统---(23)生产者消费者问题
例:一个生产者与一个消费者共享n块Buffer的例子
例:经典生产者-消费者问题
系统里有若干个合作的进程互斥使用由r (r>0) 个缓冲块组成的缓冲块环,其中n (n>0) 个生产者进程,m (m>0) 个消费者进程。任何一个生产者进程都可以将自己的产品存入环内的一个缓冲块中;任何一个消费者可以将环内的一个产品取出。生产者源源不断地生产并存入产品;消费者周而复始地从环内取出产品并消费掉。
假定的约束条件是:
- 当环中有空闲缓冲块时,允许任一生产者进程把它的产品存入。
- 当环中无空闲缓冲块时,则试图将产品存入缓冲区环的任何生产者进程必须阻塞等待。
- 当环中尚有未取出的产品时,允许任一个消费者进程把其中的一个产品取出。
- 当环中没有未取出的产品时,试图从该环内取出产品的任何消费者进程必须阻塞等待。
缓冲块环
生产者进程的同步控制算法描述:
消费者进程的同步控制算法描述: