操作系统课程设计生产者-消费者问题附代码.doc

操作系统课程设计生产者-消费者问题附代码.doc

  1. 1、本文档共16页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
枣 庄 学 院 信息科学与工程学院 课程设计任务书 题目: 生产者-消费者问题的实现 姓 名: 学 号: 专 业: 计算机科学与技术 课 程: 操作系统 指导教师: 刘彩霞 职称: 讲师 完成时间: 2012年 5月2012 年 6月 枣庄学院信息科学与工程学院制 课程设计任务书及成绩评定 课程设计的任务和具体要求 1、课程设计的任务:利用所学知识模拟并实现生产者消费者问题; 2、课程设计的具体要求: (1)为每个生产者/消费者产生一个线程,设计正确的同步算法。 (2)每个生产者和消费者对有界缓冲区进行操作后,即时显示有界缓冲区的当前全部内容、当前指针位置和生产者/消费者线程的自定义标识符。 (3)生产者和消费者各有两个以上。 (4)多个生产者或多个消费者之间须共享对缓冲区进行操作的函数代码。 (5)要求所撰写的课程设计任务书的内容和格式符合要求。 指导教师签字: 日期: 指导教师评语 成绩: 指导教师签字: 日期: 课程设计所需软件、硬件等 Windows xp系统 VM虚拟机并安装redhat linux系统 软件:Vi编辑器 GCC4.41 设计语言:C语言 课程设计进度计划 起至日期 工作内容 备注 2012.5.1—5.15 2012.5.16—6.10 2012.6.11—6.15 2012.6.16—6.20 确定课题并收集资料 整体规划并进行初步定位 编写程序代码并进行试验 撰写课程设计任务书 参考文献、资料索引 序号 文献、资料名称 编著者 出版单位 [1]《操作系统概念(第六版)》,(美)Abraham Silberschatz ,Peter Baer Galvin,Greg Gagne著,郑扣根 译, 高等教育出版社 [2] 《深入理解LINUX内核(第三版)》 (美) 博韦,西斯特 著,陈莉君,张琼声,张宏伟 译,中国电力出版社 目 录 TOC \o 1-3 \h \z \u 第1章 引言 1 1.1 设计背景 1 1.2 问题分类 1 1.3 解决方案 1 第2章 设计思路及原理 2 第3章 程序详细设计 3 3.1程序模块设计 3 3.2程序代码结构 5 第4章 实验结果 7 第5章 实验总结 8 附录:实验代码 9 PAGE 1 第1章 引言 1.1 设计背景 生产者-消费者问题是一个经典的进程同步问题,该问题最早由Dijkstra提出,用以演示他提出的信号量机制。在同一个进程地址空间内执行的两个线程。生产者线程生产物品,然后将物品放置在一个空缓冲区中供消费者线程消费。消费者线程从缓冲区中获得物品,然后释放缓冲区。当生产者线程生产物品时,如果没有空缓冲区可用,那么生产者线程必须等待消费者线程释放出一个空缓冲区。当消费者线程消费物品时,如果没有满的缓冲区,那么消费者线程将被阻塞,直到新的物品被生产出来。 1.2 问题分类 根据缓冲区的个数、大小以及生产者消费者的个数可以分为以下几类: 1.单缓冲区(适合单或多生产消费者); 2.环行多缓冲区(或无穷缓冲区)单生产消费者; 3.环行多缓冲区多生产消费者; 1.3 解决方案 1.用进程通信(信箱通信)的方法解决; 2.进程消息缓冲通信; 3.进程信箱通信; 第2章 设计思路及原理 设计了两个主要函数:生产者函数、消费者函数; 设计了三个信号量:full信号量 ,判断缓冲区是否有值,初值为0; empty信号量,判断缓冲区是否有空缓冲区,初值为缓冲区数; mutex信号量作为互斥信号量,用于互斥的访问缓冲区。 生产者函数通过执行P操作信号量empty减1,判断缓冲区是否有空。有空则互斥的访问缓冲区并放入数据,然后释放缓冲区,执行V操作,信号量full加1。 消费者函数执行P操作,信号量full减1,判断是否有数据,有则互斥的访问缓冲区并取走数据,然后释放缓冲区,执行V操作,empty信号量加1。 第3章 程序详细设计 3.1程序模块设计 该实验主要分为三大模块: 主程序,创建并控制程序的流程, 其中控制线程的活动以及信号量的操作,如图3-1-1所示; 2.生产者模块

文档评论(0)

yurixiang1314 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档