资源简介
实验四、生产者消费者问题(15分)
• 一个大小为3的缓冲区,初始为空
• 2个生产者
– 随机等待一段时间,往缓冲区添加数据,
– 若缓冲区已满,等待消费者取走数据后再添加
– 重复6次
• 3个消费者
– 随机等待一段时间,从缓冲区读取数据
– 若缓冲区为空,等待生产者添加数据后再读取
– 重复4次
说明:
• 显示每次添加和读取数据的时间及缓冲区的状态
• 生产者和消费者用进程模拟,缓冲区用共享内存来实现
代码片段和文件信息
/*消费者*/
#include “head.h“
main(int argcchar * argv[])
{
struct queue *buf*out;
int sem_id = semget(SEM_ALL_KEY 3 IPC_CREAT|0660);
int ij;
buf = getQueue();//打开共享主存
out = buf;
for(i=0;i<4;i++)
{
p(sem_id SEM_FULL); //P(FULL) FULL开始值为0,表明开始的时候没有数据,无法取得,当producer释放一个数据时,这里开始有数据
p(sem_id SEM_MUTEX); //P(MUTEX)
(buf + buf->buf) ->buf = 0; //取出产品后缓冲区置0
buf->buf--; //产品数-1
//获取当前时间
struct timeval curtime;
gettimeofday(&curtimeNULL);
//输出信息
printf(“ No.%s consumer get product at %ld:%ld.\n“
argv[0]curtime.tv_seccurtime.tv_usec);
printf(“ Now the buffer is as follows: “);
for(j=1;j<=3;j++)
printf(“%4d“(out+j)->buf);
printf(“\n“);
v(sem_id SEM_MUTEX); //V(MUTEX
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 970 2009-03-31 22:47 LinuxPC\consumer.c
文件 1121 2008-05-28 21:53 LinuxPC\head.h
文件 790 2009-03-31 21:35 LinuxPC\pc.c
文件 999 2009-03-31 22:49 LinuxPC\producer.c
..A.SH. 16384 2009-04-02 08:29 LinuxPC\Thumbs.db
目录 0 2012-03-23 15:27 LinuxPC
----------- --------- ---------- ----- ----
20264 6
- 上一篇:信息化系统建设方案编写参考模板
- 下一篇:Visio工具时序图教程
相关资源
- 操作系统精髓与设计第八版英文答案
- 王道考研-操作系统整理笔记.pdf(共
- 王道2020操作系统-考研复习指导
- UCDOS7.0
- 操作系统教程 (宗大华 宗涛 著) 人
- 操作系统课程设计-文件系统源码+文档
- 操作系统课程设计 目录查询
- 哈工大 操作系统实验4 linux0.01信号量
- 实现虚拟内存管理的nachos操作系统实
- 09-17年408统考操作系统真题及答案
- 福州大学Linux 操作系统设计实践报告
- 计算机操作系统课后习题答案word PD
- 操作系统教程答案
- Win7系统无法验证文件数字签名0xcooo
- JOS lab3代码与报告
- 操作系统复习指导
- 操作系统课程设计 处理机调度程序
- 进程创建模拟实验
- 文件管理系统-操作系统课程设计
- 网络操作系统基本知识
- 操作系统实验三 作业调度
- 哈工大威海操作系统试验报告答案
- 操作系统实验报告 时间片轮转算法
- 操作系统课程设计小型命令处理器s
- 同步机构操作系统 课程设计 PV操作
- 操作系统的实验作业之文件管理
- 操作系统实验 cpu调度算法
- 操作系统实验二进程控制 实验报告
- 中科大软件工程考研408书和答案
- 操作系统虚拟存储
评论
共有 条评论