一、问题分析
1.系统中有一组生产者进程和消费者进程,生产者进程每次生产一个产品放入缓冲区,消费者进程每次从缓冲区中取出一个产品并使用。(注:这里的“产品”理解为某种数据)
2.生产者、消费者共享一个初始为空,大小为n的缓冲区。
3.只有缓冲区没满时,生产者才能把产品放入到缓冲区,否则必须等待。(缓冲区没满—>生产者生产)
4.只有缓冲区不空时,消费者才能从中取出产品,否则必须等待。(缓冲区没空–》消费者消费)
5.缓冲区是临界资源,各进程必须互斥的访问。(互斥关系)
二、能否改变相邻P、V操作的顺序
注意:
实现互斥的P操作一定要在实现同步的P操作之后,否则导致进程阻塞,并会造成死锁。
V操作不会导致进程阻塞,因此两个V操作的顺序可以交换。