操作系统实验报告-三大经典问题之生产者与消费者问题.pdfVIP

操作系统实验报告-三大经典问题之生产者与消费者问题.pdf

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
计算机操作系统实验报告 题 目 三 大 经 典 问 题 之 生 产 者 与 消 费 者 问 题 一、 课程设计的性质与任务 1、加深对并发协作进程同步与互斥概念的理解。 通 过 编写 程 序 实 现 进 程 同步 和 互斥 , 使 学生 掌 握有 关 进 程( 线 程) 同步 与互 斥 的 原 理, 以 及解 决 进 程( 线 程) 同 步 和互 斥 的算 法 , 从而 进 一 步 巩固 进 程( 线 程 )同 步 和互 斥 等 有关 的 内容 。 2 、掌 握进 程 和线程 的概 念,进 程( 线 程 )的 控 制原 语 或 系统 调 用 的使用 。 3、 了 解 Windows2000/XP 中多 线 程的 并 发 执行 机 制, 线 程 间 的 同 步 和互 斥 。学习 使 用 Windows2000/XP 中基 本 的同步 对 象 , 掌 握 相 应的 API 函 数。 4、培养学生能够独立进行知识综合,独立开发较大程序的能力。 5、培养提高学生软件开发能力和软件的调试技术。 6、培养学生开发大型程序的方法和相互合作的精神。 7、培养学生的创新意识。 8、培养学生的算法设计和算法分析能力。 9、培养学生对问题进行文字论述和文字表达的能力。 二 、课程设计的内容及其要求 在 Windows?XP 、Windows?2000 等 操作 系 统 下 ,使用 的 VC、 VB、 Java 或 C 等编 程 语 言, 采 用进 程 (线程 ) 同步 和 互 斥的 技 术 编 写程 序 实现 生 产 者消 费 者问 题 或 哲学 家 进餐 问题 或读 者 - 写 者 问题 或 自己 设 计 一个 简 单进 程( 线程 )同步 和 互 斥的 实 际 问题。 要 求 : (1 )经 调试 后 程 序能 够 正常 运 行 。 (2 )采 用多 进 程或 多 线 程方 式 运行 ,体 现了 进 程( 线 程 ) 同 步互 斥 的关 系 。 (3 ) 程 序界 面 美观 。 三、实验原理 本 实 验 要求 利用 PV操 作 实现 解 决生产 者 — —消 费者问 题 中 的 同步问 题 。此 问 题 描述 的 是一 群 生 产者 进 程在 生 产 产品 并 将 这 些产 品 提供 给 消 费者 进 程去 消 费 ,在 两 者之 间 设 置了 一 个 具 有 n 个 缓冲 区 的 缓冲 池 ,生 产 者 进程 将 它所 生 产 的产 品放 入 一个 缓 冲区 , 消 费者 进 程可 从 缓 冲区 中取走 产 品 去消 费 , 但 它们 之 间必 须 保 持同 步 ,即 不 允 许消 费 者进 程 到 一个 空 缓 冲 区去 取 产品 , 也 不允 许 生产 者 进 程向 一 个已 装 满 且尚 未 取 出 的缓 冲 区中 投 放 产品 , 并且 生 产 者消 费 者互 斥 使 用缓 冲 区 。 四、实验原理图 五、算法实现 (1)有一个生产者线程 ProduceThread ,有 1 个消费者进程 CustomerThread ;缓冲区为 shareList 。 (2)使用线程同步:用 synchonized 关键字(加锁)使得一个时间 内只能有一个线程得到执行, 另一个线程必须等待当前线程执行完这 个代码块以后才能执行该代码块 ;wait() 让线程进入等待状态; notify ()函数唤醒一个处于等待状态的线程。 (3)程序运行流程图如下: (如不在外部中断,程序将一直循环运行) 开始 生产者 消费者 仓库是否满? 否 生产者生产 消费者等待

文档评论(0)

tianya189 + 关注
官方认证
文档贡献者

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

认证主体阳新县融易互联网技术工作室
IP属地上海
统一社会信用代码/组织机构代码
92420222MA4ELHM75D

1亿VIP精品文档

相关文档