多进程同步橘子苹果问题完整报告(附源代码).doc

多进程同步橘子苹果问题完整报告(附源代码).doc

  1. 1、本文档共42页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
多进程同步橘子苹果问题完整报告(附源代码).doc

课程设计目的 本次实验进行操作系统课程设计采用可视化界面,系统系统分析 2、系统设计:模块设计: 2.2、数据结构 2.缓冲区操作的类图,实现对缓冲区的实际操作 2.3、算法流程图: 1.生产苹果算法 2.消费苹果算法 3.绘图算法 4.生产苹果者人工智能算法(生产橘子人工智能相似) 5.苹果消费者人工智能算法(生产橘子算法类似) 四、 (1)因为当苹果生产者在缓冲区满了以后自动阻塞,需要苹果消费者唤醒,所以需要测试唤醒的实现是否正常。 测试说明 测试名称 用多进程同步方法演示“桔子-苹果”问题 测试目的 验证苹果生产者能被苹果消费者唤醒 测试技术 单元测试 测试方法 黑盒测试法 测试用例 测试内容 当生产者生产满缓冲区后,开始增加消费者,唤醒生产者 测试步骤 增加苹果生产者 等待缓冲区被用完 增加苹果消费者 测试数据 增加苹果生产者到3 缓冲区苹果数量20 缓冲区空闲位为0 苹果消费者增加到4 预期结果 缓冲区开始增加苹果 缓冲区满 苹果生产者阻塞 苹果生产者被唤醒,缓冲区中苹果数量减少 测试结果 与预期相符 与预期相符 与预期相符 (2)因为当苹果生产者在缓冲区满了以后自动阻塞,需要苹果消费者唤醒,所以需要测试 唤醒的实现是否正常。 测试说明 测试名称 用多进程同步方法演示“桔子-苹果”问题 测试目的 验证多个苹果橘子生产者和苹果、橘子消费者互斥操作缓冲区 测试技术 单元测试 测试方法 黑盒测试法 测试用例 测试内容 缓冲区为空,消费者阻塞时,生产者唤醒消费者 测试步骤 开始生产产品,缓冲区为空 空闲位20 开始消费产品,终止生产线程 开始增加生产者 减少消费者 测试数据 橘子生产者数量5 苹果生产者数量5 苹果生产者减少到0 橘子生产者减少到0 增加橘子消费者到5 增加苹果消费者到5 增加苹果生产者到5 增加橘子生产者到5 减少橘子消费者到2 减少苹果消费者到2 预期结果 缓冲区内产品数量每次减少10个 消费完成产品,消费者阻塞 唤醒消费者,缓冲区中产品增加 测试结果 与预期相符 与预期相符 与预期相符 (3)测试生产者和消费者的速度是否可以调节 测试说明 测试名称 用多进程同步方法演示“桔子-苹果”问题 测试目的 苹果、橘子生产者和苹果、橘子消费者速度可以调节 测试技术 单元测试 测试方法 黑盒测试法 测试用例 测试内容 调节生产者和消费者速度 测试步骤 开始程序运行 输入生产者、消费者速度值 点击修改按钮 测试数据 苹果、橘子生产者速度 2000 苹果、橘子消费者速度 2000 生产者的速度值 1000 消费者速度值1000 点击修改 预期结果 缓冲区开始被操作 界面文本框中显示速度值 生产者、消费者速度变化到1000 测试结果 与预期相符 与预期相符 与预期相符 (4)实现了人工智能操作:即系统自动保持生产者和消费者的相对平衡,测试功能的正确实现 测试说明 测试名称 用多进程同步方法演示“桔子-苹果”问题 测试目的 测试编写的人工智能是否实现 测试技术 单元测试 测试方法 黑盒测试法 测试用例 测试内容 自动维持缓冲区的稳定 测试步骤 开始程序的运行 运行人工智能操作 测试数据 苹果生产者 5 苹果消费者 5 橘子生产者 3 橘子消费者 0 减少苹果生产者到0 增加苹果消费者数量到6 预期结果 缓冲区开始被操作 生产者、消费者数量都靠拢至4 测试结果 与预期相符 与预期相符 与预期相符 2、调试分析:、、程序清单import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import java.awt.geom.Ellipse2D; import java.awt.geom.Rectangle2D; import java.awt.*; import java.net.MalformedURLException; import java.util.ArrayList; import javax.print.attribute.AttributeSet; import javax.swing.*; import org.w3c.dom.css.Rect; public class Apple { /** * 生成一个缓冲池类对应的对象叫myStorage,以后所有的生产者线程 和消费者线程都对这个myStorage对象进行操作! */ s

文档评论(0)

2232文档 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档