77范文网 - 专业文章范例文档资料分享平台

操作系统之生产者消费者问题(c++实现)

来源:网络收集 时间:2019-06-11 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

操作系统

课程设计报告

专业 计算机科学与技术

丁可 B计123班 1210704314 李先锋 2015年11月20日

学生姓名 班学

级 号

指导教师 完成日期

信息工程学院

题目:生产者-消费者问题的模拟实现

一、设计目的

本课程设计是学习完“操作系统原理”课程后进行的一次全面的综合训练,通过课程设计,更好地掌握操作系统的原理及实现方法,加深对操作系统基础理论和重要算法的理解,加强学生的动手能力。

二、设计内容

1、概述

用进程同步方法解决“生产者-消费者”问题,C或C++语言实现。 1、设计目的

通过研究进程并发和信号量机制,实现生产者-消费者问题的并发控制。 2、设计要求

1)每个生产者和消费者对有界缓冲区进行操作后,即时显示有界缓冲区的全部内容,当前指针位置和生产者/消费者进程的标识符。

说明:有界缓冲区(提示:有界缓冲区可用数组实现)内设有20个存储单元,放入/取出的数据项设定为1-20这20个整型数。

2)生产者和消费者各有两个以上。

3)多个生产者或多个消费者之间须有共享对缓冲区进行操作的函数代码。 2、设计原理

在同一个进程地址空间内执行的两个线程生产者线程生产物品,然后将物品放置在一个空缓冲区中供消费者线程消费。消费者线程从缓冲区中获得物品,然后释放缓冲区。当生产者线程生产物品时,如果没有空缓冲区可用,那么生产者线程必须等待消费者线程释放出一个空缓冲区。当消费者线程消费物品时,如果没有满的缓冲区,那么消费者线程将被阻塞,直到新的物品被生产出来。 3、详细设计及编码 定义两个信号量

HANDLE g_hFullSemaphore;//资源信号量:缓冲区满

HANDLE g_hEmptySemaphore;//资源信号量:缓冲区空 unsigned short in = 0;//用于记录生产者的指针位置 unsigned short out = 0;//用于记录消费者的指针位置 HANDLE g_hMutex;//线程间的互斥信号量

生产者进程 while(TRUE){

生产一个产品;

P(g_hEmptySemaphore); P(mutex1);

产品送往buffer(in); in=(in+1)mod n; V(mutex1);

V(g_hFullSemaphore); } 消费者进程 while(TRUE){

P(g_hFullSemaphore); P(mutex2);

从buffer(out)中取出产品; out=(out+1)mod n; V(mutex2);

V(g_hEmptySemaphore);

(算法流程图、编程及程序注释等) 主要的方法:

4、运行结果分析 1、运行示例

在 c++中运行源程序 ,程序主界面截图.按回车及申请资源和缓冲区进行 p 操作和申请互斥(生产者和消费者都是2个)

(运行界面截图、界面说明、输入输出数据说明和分析等) 附录代码:

#include #include

const unsigned short SIZE_OF_BUFFER = 20;//有界缓冲区长度

int g_buffer[SIZE_OF_BUFFER];//开辟缓冲区?用数组表示?可以看成是一个循环队列 unsigned short ProductID = 0;//新生产出来的产品的产品号 unsigned short ConsumeID = 0;//被消耗的产品的产品号

unsigned short in = 0;//产品进缓冲区时的缓冲区下标?用于记录生产者的指针位置 unsigned short out = 0;//产品出缓冲区时的缓冲区下标?用于记录消费者的指针位置 bool g_continue = 1;//控制程序运行:1 表示继续运行?0 表示停止运行 HANDLE g_hMutex;//线程间的互斥信号量

HANDLE g_hFullSemaphore;//资源信号量:缓冲区满 HANDLE g_hEmptySemaphore;//资源信号量:缓冲区空 DWORD WINAPI Producer(LPVOID);//生产者线程 DWORD WINAPI Consumer(LPVOID);//消费者线程

const unsigned short PRODUCERS_COUNT=2;//生产者的个数

const unsigned short CONSUMERS_COUNT=2;//消费者的个数 const unsigned short

THREADS_COUNT=PRODUCERS_COUNT+CONSUMERS_COUNT;//总线程数

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库操作系统之生产者消费者问题(c++实现)在线全文阅读。

操作系统之生产者消费者问题(c++实现).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/656486.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: