生产者与消费者实验报告

生产者和消费者实验报告

【实验目的】

1. 加深对进程概念的理解,明确进程和程序的区别。

2. 进一步认识并发执行的实质。

3. 验证用信号量机制实现进程互斥的方法。

4. 验证用信号量机制实现进程同步的方法。

【实验要求】

用c语言编程搭建“生产者和消费者”经典进程通信问题的环境。要求程序运行时,按任意键停止,显示当前系统的各个参数的值。提交实验报告,以及相关程序列表。打包成附件上传。

【实验环境】

Visual C++6.0

【实验内容】

1.了解经典同步问题“生产者和消费者”

生产者与消费者可以通过一个环形缓冲池联系起来,环形缓冲池由几个大小相等的缓冲块组成,每个缓冲块容纳一个产品。每个生产者可不断地每次往缓冲池中送一个生产产品,而每个消费者则可不断地每次从缓冲池中取出一个产品。指针i和指针j分别指出当前的第一个空缓冲块和第一个满缓冲块。

2.分析和理解

(1)既存在合作同步问题,也存在临界区互斥问题

合作同步:当缓冲池全满时,表示供过于求,生产者必须等待,同时唤醒消费者;当缓冲池全空时,表示供不应求,消费者应等待,同时唤醒生产者。

互斥:缓冲池显然是临界资源,所在生产者与消费都要使用它,而且都要改变它的状态。

(2)基于环形缓冲区的生产者与消费者关系形式描述:

公用信号量mutex:初值为1,用于实现临界区互斥

生产者私用信号量empty:初值为n,指示空缓冲块数目

消费者私用信号量full:初值为0,指示满缓冲块数目

整型量i和j初值为0,i指示首空缓冲块序号,j指示首满缓冲块序号

(3)PV原语

var mutex,empty,full:semaphore;

i,j:integer;buffer:array[0...n-1] of item;

i:=j:=1;

Procedure producer;

begin

while true do

begin

Word文档免费下载Word文档免费下载:生产者与消费者实验报告 (共9页,当前第1页)

生产者与消费者实验报告相关文档

最新文档

返回顶部