6-7 PV 操作与进程同步

任务

  • 理解 PV 操作解决进程同步的方法;
  • 研习 PV 操作解决进程同步的简单例子。

1. 问题的提出

1)进程同步:
并发进程为完成共同任务,基于某个条件来协调执行先后关系,而产生的协作制约关系;
一个进程的执行等待来自于其他进程的消息;

2)解决思路

  • 定义一个信号量:其数值代表可用消息数;
  • 等待消息进程:执行 P,无消息则等待;
  • 发出消息进程:执行 V,有等待进程则释放;

2. 生产/消费问题

1 生产者、1 消费者、1 缓冲区;
生产者和消费者共享缓冲区;
缓冲区有空位时,生产者放入产品,否则等待;
缓冲区有产品时,消费者可取出产品,否则等待。


生产/消费问题

3. 程序框架

正确的执行顺序,P-C-P-C-......;
消费者:需等待产品;
生产者:需等待缓冲区空;


生产/消费程序框架

信号量仅仅解决信号传递问题;
数据传送需要共享缓冲区;

4. 解决思路

1)同步关系1:
消费者一开始在等待产品到来,考虑设置一个信号量(等待产品);一开始无产品,初值为 0;

2)同步关系2:
消费者则在等待缓冲区中有空位,也可设置一个信号量(等待缓冲区);一开始缓冲区有空位,初值为 1;

3)程序设计
两个程序中的 P/V分别对应,sput和sget,这使得进程只能P-V-P-V-...的持续运行。


生产/消费问题程序

你可能感兴趣的:(6-7 PV 操作与进程同步)