多进程同步方法演示“生产者-消费者”问题.docVIP

多进程同步方法演示“生产者-消费者”问题.doc

  1. 1、本文档共13页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
多进程同步方法演示“生产者-消费者”问题

青岛理工大学 操作系统课程设计报告 院(系): 计算机工程学院 专业: 计算机科学与技术专业 学生姓名: __ 班级:_______ 学号:      题目:用多进程同步方法演示“生产者-消费者”问题 起迄日期:    设计地点: 指 导 教 师: 年度 第 学期: 年 月 日 课程设计目的 本次进行操作系统课程设计的主要任务是设计一个模拟生产者消费者工作的系统。这个问题中有一种生产者和一种消费者,生产者和消费者对同一个缓冲区进行操作,互斥的访问缓冲区。本次课程设计的目的就是加深对多进程如何正确访问资源的认识,同时掌握信号量在互斥访问时应该如何正确有效地使用。掌握生产者消费者问题的解决流程和方法,提高编程能力、解决问题的能力和查阅文档的能力。 课程设计内容与要求 1、设计目的:通过研究Linux的进程同步机制和信号量,实现生产者消费者问题的并发控制。 2、说明:有界缓冲区内设有20个存储单元,放入取出的产品设定为20个100以内的随机整数。 3、设计要求: 生产者与消费者均有二个以上 生产者和消费者进程的数目在程序界面上可调,在运行时可随时单个增加与减少生产者与消费者 生产者的生产速度与消费者的消费速度均可在程序界面调节,在运行中,该值调整后立即生效 生产者生产的产品由随机函数决定 多个生产者或多个消费者之间必须有共享对缓冲区进行操作的函数代码 每个生产者和消费者对有界缓冲区进行操作后,即时显示有界缓冲区的全部内容、当前生产者与消费者的指针位置,以及生产者和消费者线程标识符 采用可视化界面,可在运行过程中随时暂停,查看当前生产者、消费者以及有界缓冲区的状态 系统系统分析 系统分析 2、系统设计:2.1、模块设计: 数据结构 2.3、算法流程图: 生产者流程图: 消费者流程图: 四、调试分析:、 图1:系统登录界面。 图2:生产者速度调节 图3:消费者速度调节 图4:生产者数量调节 图5:消费者数量调节 图 6::控制界面 图7:动态显示缓冲区 4.程序使用步骤: 1)单击开始按钮,程序开始初始化执行 2)点击增加按钮分别增加生产者和消费者,可以看到可视化缓冲区开始运动 3)在速度调节部分调节生产者和消费者的速度,可以看到缓冲区出现预期的产品种类和数量的变化。 六、程序清单七、体会与 浙江大学出版社2004 年 [5] 汤小丹 梁红兵 计算机操作系统学习指导与题解 西安电子科技大学 2008年 九、 成绩:教师: 年 月 日 开始、暂停、停止按钮区 进程工作情况动态显示区 进程数目调节区 程序速度控制调节区 主界面 系统主模块 消费者速度调节 生产者速度调节 消费者数目调节 生产者数目调节 有界缓冲区控制 消费者控制 生产者控制 主界面 产品指针 pointcp 缓冲区 同步信号量 empty full 消费 Consume 生产 Produce 缓冲区状态 E_F 互斥信号量 mutex 申请空缓冲区 信号量enmpty0 NO 仓库已满,线程阻塞 YES pointcp = pointcp+1 E_F[pointcp]=true 打印缓冲区状态 chanpin = chanpin+1 full = full+1 释放缓冲区 申请空缓冲区 full = full+1 信号量full0 仓库已满,线程阻塞 NO YES pointcp = pointcp-1 释放缓冲区 E_F[pointcp]=false chanpin = chanpin-1 empty = empty+1 打印缓冲区状态

文档评论(0)

shuwkb + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档