分享
分销 收藏 举报 申诉 / 10
播放页_导航下方通栏广告

类型生产者消费者问题设计与实现.docx

  • 上传人:w****g
  • 文档编号:2405079
  • 上传时间:2024-05-29
  • 格式:DOCX
  • 页数:10
  • 大小:151.11KB
  • 下载积分:8 金币
  • 播放页_非在线预览资源立即下载上方广告
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    生产者 消费者 问题 设计 实现
    资源描述:
    HEN system office room 【HEN16H-HENS2AHENS8Q8-HENH1688】 生产者消费者问题设计与实现 操作系统 课程设计任务书 学 院 计算机与信息工程 专 业 计算机科学与技术 课程名称 操作系统 题 目 生产者消费者问题设计与实现 完成期限 自2015年6月23日至2015年6月29日共1周 内 容 及 任 务 一、项目的目的 1.理生产者消费者问题基本概念和工作原理,以及实现技术; 2.理解并掌握生产者消费者问题相关算法,以及它的实现方法; 3.掌握在eclipse环境下,系统开发的基本步骤和方法; 4.掌握在eclipse环境下,设计和开发一个简单的生产者消费者问题系统来模拟操作系统中生产者消费者问题。 二、项目任务的主要内容和要求 1.精读并理解和掌握生产者消费者问题; 2.编写程序来模拟生产者消费者问题的实现; 3.编写应用程序测试生产者消费者问题,并显示结果。 三、项目设计(研究)思路 本课程设计的基本思路是,首先理解和掌握生产者消费者问题的基本思想和原理,然后根据理解的基本思想和原理编程实现生产者消费者问题,最后通过数据分析生产者消费者问题。 四、具体成果形式和要求 成果:生产者消费者问题程序语言实现;设计说明书。 要求:编写好的生产者消费者问题程序能够正确启动运行;设计说明书规范、合理。 进 度 安 排 起止日期 工作内容 熟悉相关内容 系统设计和实现 系统实现和撰写相关文档 主 要 参 考 资 料 1.《计算机操作系统》汤子瀛哲凤屏 汤小丹主编 西安电子科技大学出版社. 2.《计算机操作系统概论》陈宏 杨忠耀主编 重庆邮电大学出版社. 3.《计算机操作系统基本知识》廖成 崔阳 主编 电子工业出版社. 4.《操作系统实现与设计》陆刚 望能主编 电子工业出版社. 5.《java程序语言设计》丁振凡主编,薛清华副主编清华大学出版社. 指导教师 意见 (签字): 年 月 日 系(教研室)主任意见 (签字): 年 月 日 目录 1.选题背景 生产者消费者问题是研究多线程程序时绕不开的经典问题之一,它描述是有一块缓冲区作为仓库,生产者可以将产品放入仓库,消费者则可以从仓库中取走产品。解决生产者/消费者问题的方法可分为两类:(1)采用某种机制保护生产者和消费者之间的同步;(2)在生产者和消费者之间建立一个管道。第一种方式有较高的效率,并且易于实现,代码的可控制性较好,属于常用的模式。第二种管道缓冲区不易控制,被传输数据对象不易于封装等,实用性不强。因此本文只介绍同步机制实现的生产者/消费者问题。 同步问题核心在于:如何保证同一资源被多个线程并发访问时的完整性。常用的同步方法是采用信号或加锁机制,保证资源在任意时刻至多被一个线程访问。Java语言在多线程编程上实现了完全对象化,提供了对同步机制的良好支持。在Java中一共有四种方法支持同步,其中前三个是同步方法,一个是管道方法。 2.设计思路 .生产者—消费者问题是一种同步问题的抽象描述。 计算机系统中的每个进程都可以消费或生产某类资源。当系统中某一进程使用某一资源时,可以看作是消耗,且该进程称为消费者。 而当某个进程释放资源时,则它就相当一个生产者 3.过程论述 首先,生产者和消费者可能同时进入缓冲区,甚至可能同时读/写一个存储单元,将导致执行结果不确定。这显然是不允许的。所以,必须使生产者和消费者互斥进入缓冲区。即某时刻只允许一个实体(生产者或消费者)访问缓冲区,生产者互斥消费者和其他任何生产者。 其次,生产者不能向满的缓冲区写数据,消费者也不能在空缓冲区中取数据,即生产者与消费者必须同步。当生产者产生出数据,需要将其存入缓冲区之前,首先检查缓冲区中是否有“空”存储单元,若缓冲区存储单元全部用完,则生产者必须阻塞等待,直到消费者取走一个存储单元的数据,唤醒它。若缓冲区内有“空”存储单元,生产者需要判断此时是否有别的生产者或消费者正在使用缓冲区,若是有,则阻塞等待,否则,获得缓冲区的使用权,将数据存入缓冲区,释放缓冲区的使用权。消费者取数据之前,首先检查缓冲区中是否存在装有数据的存储单元,若缓冲区为“空”,则阻塞等待,否则,判断缓冲区是否正在被使用,若正被使用,若正被使用,则阻塞等待,否则,获得缓冲区的使用权,进入缓冲区取数据,释放缓冲区的使用权。 系统流程图 消费者流程图: 主程序流程图: roduct = -1; pBuffer[i].hasProduct = false; } } roduct; roduct = 0; asProduct = false; roduct = productNo; asProduct = true; roduct+"\t"+pBuffer[i].hasProduct+"\n"); } } } /* 一个缓冲单元 */ class ProductBuffer { int product; 果分析 运行主程序得到一个GUI窗口,在文本域中输出结果,一共10个缓冲单元,三个生产者随机生产产品依次从0编号的缓冲区放入产品,消费者按照生产的先后顺序消费产品。 当缓冲单元有产品时,状态栏显示true,否则显示false。并且当消费者取走产品后,产品编号会变成0. 5.结论 这次生产者与消费者之间的关系的实验我用Java语言编写的,用关键字synchronized来实现多个线程同步,用继承Thread来将生产者线程与消费者线程实例化。其实,在做这个实验之前我的Java语言编程老师讲过这些知识,正好可以巩固Java的一些知识。我还学过C++语言,这是大一下学期学的事了,我想要实现书上的P、V操作可以用C++语言来编写。 总之,通过该实验我更加清楚的认识到生产者与消费者这个经典问题实际上是线程同步问题的抽象描述,即计算机系统中的每个进程都可以消费(使用)或生产(释放)数据,进程释放数据相当于生产者,使用数据相当于消费者。 从Java 的多线程机制出发, 研究了操作系统中经典的同步问题—生产者消费者问题, 提出了两种解决此问题的模型, 及其Java 解决方案。提出的两个模型充分利用了Java 中面向对象和管程机制, 模拟了操作系统中进程同步的经典问题—生产者消费者问题。在第一个模型中, 我们按照生产者消费者问题典型的解决方案给出了Java 解决模型; 在第二个模型中, 我们分析了信号量mutex 在问题中所起的作用, 并为了提高缓冲区读写的效率, 提出了将信号量mutex 分为两个分别控制生产者和消费者的信号量,并讨论了此方案的可行性。 参考文献 [1] 《计算机操作系统》汤子瀛哲凤屏 汤小丹主编 西安电子科技大学出版社 [2] 《计算机操作系统概论》陈宏 杨忠耀主编 重庆邮电大学出版社 [3] 《计算机操作系统基本知识》廖成 崔阳 主编 电子工业出版社 [4] 《操作系统实现与设计》陆刚 望能主编 电子工业出版社 [5] 《java程序语言设计》丁振凡主编,薛清华副主编清华大学出版社 致谢 本组全体成员在此向所有关心我们的及帮助我们的老师和同学们致以最真诚的感谢。在本次毕业设计中,尤其要感谢杨传健老师,对我们的课程设计时刻的关注,当我们遇到困难时给了我们很大的帮助,交给了我们团队的合作理念,使得我们能够按时完成这次的课程设计。 学生签名: 填表日期: 年 月 日 附录 import import import import import import import import import roduct = -1; pBuffer[i].hasProduct = false; } } roduct; roduct = 0; asProduct = false; roduct = productNo; asProduct = true; roduct+"\t"+pBuffer[i].hasProduct+"\n"); } } } /* 一个缓冲单元 */ class ProductBuffer { int product; tart(); } for(int j=0; j<consumerNum; j++){ conThread[j] = new ConsumerThread(j+1); consumer[j] = new Thread(conThread[j]); consumer[j].start(); } } private void createNewUI() { JFrame frame=new JFrame("Leo"); } //创建界面 public void createUI() { JFrame frame = new JFrame("生产者消费者"); JPanel panel = new JPanel(new BorderLayout()); //; JScrollPane scrPane = new JScrollPane(ta); (scrPane, ; JButton button = new JButton("停止"); (this); (button, ; ; (panel); (true); (1000,500); ; } //按钮响应事件 public void actionPerformed(ActionEvent e){ isRun = false; //控制线程结束 "停止"); } public static void main(String args[]){ Producer_and_Customer producerConsumer = new Producer_and_Customer(); } //定义生产者线程 class ProducerThread implements Runnable { int productNo = 0; //产品编号 int id; //生产者ID public ProducerThread(int id){ = id; } public void run(){ while(isRun){ productNo++; //生产产品 (productNo, id); //将产品放入缓冲队列 try{ (1000); }catch(Exception e){ (); } } } } //定义消费者线程 class ConsumerThread implements Runnable { int id; //消费者ID public ConsumerThread(int id){ = id; } public void run(){ while(isRun){ (id); //从缓冲队列中取出产品 try{ (1000); }catch(Exception e){ (); } } } } } 指导教师评语 成绩评定 指导教师签名: 填表日期: 年 月 日
    展开阅读全文
    提示  咨信网温馨提示:
    1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
    2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
    3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
    4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
    5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
    6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

    开通VIP折扣优惠下载文档

    自信AI创作助手
    关于本文
    本文标题:生产者消费者问题设计与实现.docx
    链接地址:https://www.zixin.com.cn/doc/2405079.html
    页脚通栏广告

    Copyright ©2010-2026   All Rights Reserved  宁波自信网络信息技术有限公司 版权所有   |  客服电话:0574-28810668    微信客服:咨信网客服    投诉电话:18658249818   

    违法和不良信息举报邮箱:help@zixin.com.cn    文档合作和网站合作邮箱:fuwu@zixin.com.cn    意见反馈和侵权处理邮箱:1219186828@qq.com   | 证照中心

    12321jubao.png12321网络举报中心 电话:010-12321  jubao.png中国互联网举报中心 电话:12377   gongan.png浙公网安备33021202000488号  icp.png浙ICP备2021020529号-1 浙B2-20240490   


    关注我们 :微信公众号  抖音  微博  LOFTER               

    自信网络  |  ZixinNetwork