您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 销售管理 > 生产者与消费者算法实现
I课程设计说明书题目:生产者与消费者算法模拟院系:计算机科学与工程专业班级:信息安全(xxxx)班学号:201130xxxx学生姓名:xxxx指导教师:xxxx2013年xx月xx日IIxxxx大学课程设计(论文)任务书计算机院系计算机教研室学号20113xxxxx学生姓名xxxx专业(班级)xxxxx设计题目生产者与消费者算法模拟设计技术参数(1)系统作业或进程的数目;(2)系统资源的种类和数目;(3)系统作业或进程的对每类资源的最大需求数目;(4)系统作业或进程已分配的资源数目。设计要求(1)检查系统安全状态:根据系统作业或进程的对每类资源的最大需求数目、已分配的资源数目等计算是否存在安全序列。(2)检查系统是否可以继续某个进程资源分配请求。工作量要求设计说明书的字数在3000字以上。工作计划2012.11.25-11.26根据课程设计的要求,查找相关资料,完成需求分析;2012.11.26-11.27进行系统的概要设计;2012.11.27-11.28进行系统的详细设计和源代码的书写;2013.11.29-11.30对系统进行调试分析,写出课程设计报告。参考资料[1]CayS.Horstmann,GaryCornell编著.JAVA核心技术卷I.北京:机械工业出版社,2008.[2]郑莉编著.Java语言程序设计(第二版).北京:清华大学出版社,2011.[3]吕国英等编著.算法设计与分析.北京:清华大学出版社,2009.[4]马小军等编.软件工程项目案例与实践指导.北京:清华大学出版社,2013.[5]汤子瀛等编著.计算机操作系统.西安:西安电子科技大学出版社,2011.指导教师签字教研室主任签字2012年xx月xx日IIIxxxx大学课程设计(论文)成绩评定表指导教师评语:成绩:指导教师:年月日IV目录1.问题描述.....................................................................................................................11.1目的....................................................................................................................................11.2设计要求............................................................................................................................12.需求分析.....................................................................................................................13.概要设计...................................................................................................................13.1程序流程图........................................................................................................................14.详细设计...................................................................................................................24.1程序框架............................................................................................................................24.1.1生产者与消费者的父类........................................................................................24.1.2生产者类...............................................................................................................54.1.3消费者类...............................................................................................................64.1.4主程序入口...........................................................................................................64.2基本算法分析....................................................................................................................74.2.1wait(mutex)与signal()数值信号....................................................................74.2.2isBufferEmpty()与isBufferFull()信号........................................................74.2.3produce()存数方法与consume()取数方法......................................................85.调试分析.................................................................................................................105.1不启动生产者线程测试结果分析..................................................................................105.2不启动消费者线程测试结果分析..................................................................................116.用户手册.................................................................................................................117.测试结果.................................................................................................................128.设计体会.................................................................................................................13参考文献......................................................................................................................13附录..............................................................................................................................1311.问题描述1.1目的掌握信号的使用方法和P、V操作的定义,掌握使用P、V操作实现进程之间同步与互斥的方法,加深对进程同步互斥概念的理解。1.2设计要求设计一程序,由一个进程创建三个子进程,三个子进程一个是生产者进程,两个是消费者进程,且要求:父子进程都使用父进程创建的共享存储区进行通信,由生产者进程将一个数组中的十个数值发送到由5个缓冲区组成的共享内存中;两个消费者进程轮流接收并输出这十个数值,同时将两个消费者进程读出的数值进行累加求各和。考虑生产者进程生产的速度和消费者进程速度。2.需求分析生产者--消费者问题是一个著名的进程同步问题。既然有进程间的同步,也就必将涉及到进程之间的互斥与通信问题,对于这个问题的解决有着很强的现实意义。它的现实意义在于可以类比到计算机中对于临界资源的互斥共享。生产者与消费者就好比是对计算机临界资源访问的程序或用户,而临界资源如打印机、磁带机等设备。3.概要设计3.1程序流程图说明:图3.1程序流程图所示,首先生产者与消费者线程创建,便就去访问缓冲区。对于生产者若缓冲区没有被其他线程访问,且缓冲区未满则生产数据存放到缓冲区,若其中有一条件没有满足则生产者线程进入阻塞状态。而对于消费者同样也需要缓冲区没有被其他线程访问,但同时要求缓冲区未空才能从缓冲区取数据,若其中有一个条件为满足则同样进入阻塞状态。2图3.1程序流程图4.详细设计4.1程序框架4.1.1生产者与消费者的父类publicclassSuperThreadextendsJPanel{//定义缓冲区的读写锁privateLockbufferLock;//共享缓冲区publicstaticIntBufferbuffer=IntBuffer.allocate(5);//生产者数组publicintarray[]={1,5,6,9,8,11,13,10,7,3};//生产者执行的次数publicstaticintcount=0;//两个生产者取出数据的累加publicstaticintconsumerSum=0;//记录消费者取数次数publicstaticintconsumerCount=0;“生产者”线程创建是否有线程访问缓冲区是否“消费者”线程创建是否有线程访问缓冲区“生产者”阻塞“消费者”从缓冲区中取数“消费者”阻塞“生产者”向缓冲区放入数据缓冲区是否满“消费者”或“生产者”阻塞缓冲区是否空否是是否否3//存放从缓冲区中取得的数据privatestaticintconsumerData;//定义线程名publicStringnameString;//线程互斥信号,值为0表示生产者进程,值为1表示消费者进程publicstaticintmutex=0;/*构造函数*/publicSuperThread(Stringname){//主要完成一些变量的初始化}/*获得线程名*/publicStringgetNameString(){returnnameString;}/*设置线程名*/publicvoidsetNameString(StringnameString){this.nameString=nameString;}/*获得互斥信号*/publicstaticintgetMutex(){returnmutex;}/*设置互斥信号*/publicst
本文标题:生产者与消费者算法实现
链接地址:https://www.777doc.com/doc-4986842 .html