课程设计目的
本次实验进行操作系统课程设计采用可视化界面,系统系统分析
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