生产者与消费者算法模拟课程设计.docx
《生产者与消费者算法模拟课程设计.docx》由会员分享,可在线阅读,更多相关《生产者与消费者算法模拟课程设计.docx(12页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、生产者与消费者算法模拟课程设计 课程设计说明书 题目: 生产者与消费者算法模拟 院 系: 计算机科学与工程 专业班级: 信息平安(xxxx)班 学 号: 学生姓名: xxxx 指导老师: xxxx 2013年 xx月 xx 日 xxxx高校课程设计(论文)任务书 计算机 院系 计算机 教研室 学 号 20113xxxxx 学生姓名 xxxx 专业(班级) xxxxx 设计题目 生产者与消费者算法模拟 设 计 技 术 参 数 (1)系统作业或进程的数目; (2)系统资源的种类和数目; (3)系统作业或进程的对每类资源的最大需求数目; (4)系统作业或进程已安排的资源数目。 设 计 要 求 (1)
2、检查系统平安状态:依据系统作业或进程的对每类资源的最大需求数目、已安排的资源数目等计算是否存在平安序列。 (2)检查系统是否可以接着某个进程资源安排恳求。 工 作 量 要求设计说明书的字数在3000字以上。 工 作 计 划 2012.11.25-11.26 依据课程设计的要求,查找相关资料,完成需求分析; 2012.11.26-11.27 进行系统的概要设计; 2012.11.27-11.28 进行系统的具体设计和源代码的书写; 2013.11.29-11.30 对系统进行调试分析,写出课程设计报告。 参 考 资 料 1 Cay S.Horstmann,Gary Cornell编著.JAVA核
3、心技术 卷 I.北京:机械工业出版社,2008. 2 郑莉编著.Java语言程序设计(其次版).北京:清华高校出版社,2011. 3 吕国英等编著.算法设计与分析.北京:清华高校出版社,2009. 4 马小军等编.软件工程项目案例与实践指导. 北京:清华高校出版社,2013. 5 汤子瀛等编著. 计算机操作系统.西安:西安电子科技高校出版社,2011. 指导老师签字 教研室主任签字 2012年xx月xx日 指导老师评语: 成果: 指导老师: 年 月 日 xxxx高校课程设计(论文)成果评定表 书目 1.问题描述 1 1.1目的 1 1.2设计要求 1 2.需求分析 1 3. 概要设计 1 3.
4、1程序流程图 1 4. 具体设计 2 4.1程序框架 2 4.1.1生产者与消费者的父类 2 4.1.2 生产者类 5 4.1.3 消费者类 6 4.1.4 主程序入口 6 4.2基本算法分析 7 4.2.1 wait(mutex)与signal()数值信号 7 4.2.2 isBufferEmpty()与isBufferFull()信号 7 4.2.3 produce()存数方法与consume()取数方法 8 5. 调试分析 10 5.1不启动生产者线程测试结果分析 10 5.2不启动消费者线程测试结果分析 11 6. 用户手册 11 7. 测试结果 12 8. 设计体会 13 参考文献
5、13 附录 13 1.问题描述 1.1目的 驾驭信号的运用方法和P、V操作的定义,驾驭运用P、V操作实现进程之间同步与互斥的方法,加深对进程同步互斥概念的理解。 1.2设计要求 设计一程序,由一个进程创建三个子进程,三个子进程一个是生产者进程,两个是消费者进程,且要求: l 父子进程都运用父进程创建的共享存储区进行通信,由生产者进程将一个数组中的十个数值发送到由5个缓冲区组成的共享内存中; l 两个消费者进程轮番接收并输出这十个数值,同时将两个消费者进程读出的数值进行累加求各和。l 考虑生产者进程生产的速度和消费者进程速度。2.需求分析 生产者-消费者问题是一个闻名的进程同步问题。既然有进程间
6、的同步,也就必将涉及到进程之间的互斥与通信问题,对于这个问题的解决有着很强的现实意义。它的现实意义在于可以类比到计算机中对于临界资源的互斥共享。生产者与消费者就好比是对计算机临界资源访问的程序或用户,而临界资源如打印机、磁带机等设备。3. 概要设计 3.1程序流程图 说明:图3.1 程序流程图所示,首先生产者与消费者线程创建,便就去访问缓冲区。对于生产者若缓冲区没有被其他线程访问,且缓冲区未满则生产数据存放到缓冲区,若其中有一条件没有满意则生产者线程进入堵塞状态。而对于消费者同样也须要缓冲区没有被其他线程访问,但同时要求缓冲区未空才能从缓冲区取数据,若其中有一个条件为满意则同样进入堵塞状态。“
7、生产者”线程创建 “消费者”堵塞 “生产者”向缓冲区放入数据 否 是否有线程访问缓冲区 否 是 是 “消费者”或“生产者”堵塞 缓冲区是否满 否 是否有线程访问缓冲区 是 缓冲区是否空 否 “消费者”线程创建 “生产者”堵塞 “消费者”从缓冲区中取数 图3.1 程序流程图 4. 具体设计 4.1程序框架 4.1.1生产者与消费者的父类 public class SuperThread extends JPanel /定义缓冲区的读写锁 private Lock bufferLock; / 共享缓冲区 public static IntBuffer buffer = IntBuffer.allo
8、cate(5); /生产者数组 public int array = 1,5,6,9,8,11,13,10,7,3; /生产者执行的次数 public static int count = 0; /两个生产者取出数据的累加 public static int consumerSum = 0; /记录消费者取数次数 public static int consumerCount = 0; /存放从缓冲区中取得的数据 private static int consumerData; /定义线程名 public String nameString; /线程互斥信号,值为 0 表示生产者进程,值为 1
9、 表示消费者进程 public static int mutex = 0; /* 构造函数 */ public SuperThread(String name) /主要完成一些变量的初始化 /* 获得线程名 */ public String getNameString() return nameString; /* 设置线程名 */ public void setNameString(String nameString) this.nameString = nameString; /* 获得互斥信号 */ public static int getMutex() return mutex; /
10、* 设置互斥信号 */ public static void setMutex(int mutex) SuperThread.mutex = mutex; /* 推断是否有线程访问缓冲区,没有则对线程进行加锁 */ public boolean wait(int mutex) if (mutex = 1) return false; else return true; /* 释放进程操作完成信号,其实本质就是修改mutex的信号值 */ public static void signal() mutex = 0; /* 推断缓冲区是否为空 */ public boolean isBufferE
11、mpty() /依据缓冲区中是否有0存在来推断是否为空 /若0的个数为5则为空,反之则不为空 /* 推断缓冲区是否为满 */ public boolean isBufferFull() /依据缓冲区中是否有0存在来推断是否为空 /若0的个数为0则为满,反之则不满 /* 消费数,即在缓冲区中取数 */ public void consume() if (wait(mutex) !isBufferEmpty() /推断是否访问缓冲区 /加锁 bufferLock.lock(); try /设置互斥信号 /从缓冲区取数 /将取数后的缓冲区置0 /释放互斥信号 finally /解锁 bufferLo
12、ck.unlock(); /* 消费者取得缓冲区数据*/ public int getBufferData(int index) /完成取数操作 return data; /* 生产数,即向缓冲区中存数*/ public void produce() if (wait(mutex) !isBufferFull() /推断是否访问缓冲区 bufferLock.lock();/加锁 try /设置互斥信号 /向缓冲区存数 /释放互斥信号 finally /解锁 bufferLock.unlock(); /* 生产者向公共缓冲区放数据*/ public void putBufferData(int
13、index) /完成想缓冲区存数操作 4.1.2 生产者类 public class Producer extends SuperThread implements Runnable / 生产者休眠时间 private int producerDelay; /* 生产者构造函数 */ public Producer(String name) super(name); /* 获得生产者休眠时间 */ public int getProducerDelay() return producerDelay; /* 设置生产者休眠时间*/ public void setProducerDelay(int
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 生产者 消费者 算法 模拟 课程设计
限制150内