生产者与消费者

上传人:hs****ma 文档编号:493844270 上传时间:2023-05-04 格式:DOC 页数:36 大小:622.50KB
返回 下载 相关 举报
生产者与消费者_第1页
第1页 / 共36页
生产者与消费者_第2页
第2页 / 共36页
生产者与消费者_第3页
第3页 / 共36页
生产者与消费者_第4页
第4页 / 共36页
生产者与消费者_第5页
第5页 / 共36页
点击查看更多>>
资源描述

《生产者与消费者》由会员分享,可在线阅读,更多相关《生产者与消费者(36页珍藏版)》请在金锄头文库上搜索。

1、重 庆 交 通 大 学计算机操作系统课程设计报告班级:计软专业2013级2班姓名:学号:课程设计题目:生产者/消费者与FCFS所属课程:计算机操作系统实验室(中心):语音大喽801指导教师:刘洋完成时间:2015 年 12 月 5 日信息科学与工程学院课程设计成绩单课程名称:计算机操作系统指导教师:刘洋姓名刘沅良性别男学号631306050202班级软件1302综合成绩程序运行情况能正确运行基本能正确运行能运行但结果不完善(占总成绩20%(20 分)(15 分)(10 分)程序功能完善程度完善基本完善不完善(占总成绩10%(10 分)(8分)(5分)程序结构的合理性合理基本合理不太合理(占总成

2、绩10%(10 分)(8分)(5分)概念正确有创新 能正确回答所有问题基本能正确回答对问题的答辩情况(40 分)(35 分)(30 分)(占总成绩40%部分问题回答概念不清晰(20 分)学生的工作态度与工作态度认真能独立完成任务工作态度认真但独立性较差独立工作能力(10 分)(8分)(占总成绩10%工作态度基本认真但缺之独立性(5分)设计报-告的规范性符合规范基本符合规范规范性较差(占总成绩10%(10 分)(8分)(5分)重庆交通学院信息科学与工程学院课程设计任务书课程计算机操作系统班级软件2013级2班 指导教师刘洋题目生产者/消费者与FCFS完成时间2015年6月30日 至2015年12

3、月8 日主要 内容1.生产者与消费者问题;2 .先来先服务问题。设计报 告要求1.封面;2 课程设计成绩单、课程设计任务书3内容提要;4“课程设计报告”正文部分:主要应包括: 问题分析和任务定义; 环境简介; 设计:主要是指数据结构与核心算法的设计描述;操作界面的设计;主要 功能的算法框架;测试用例设计等内容。 编译参数与步骤的说明; 上机调试总结与分析; 用户使用说明; 测试数据与测试结果等内容。 课程设计总结:可以包括课程设计过程的收获、遇到的问题及解决过程的 思考、对数据结构这门课程的思考和认识等内容。 附录程序清单5.参考文献版面要 求1. 题目用黑体三号,段后距18磅(或1行),居中

4、对齐;2. 标题用黑体四号,段前、段后距6磅(或0.3行);3. 正文用小四号宋体,行距为 1.25倍行距;4标题按“一”、“”、“1”、“”顺序编号。指导时 间安排星期周次、-一一二二二-三四五六17周18周指导 地点语音大楼801生产者/消费者与FCFS一、内容提要操作系统是计算机的核心软件,是计算机专业学生的专业必修课。进程同步 问题是计算机操作系统中的重点内容,而生产者 -消费者问题是进程同步问题中 的经典,它是计算机中相互合作进程关系的一种抽象,该问题具有很大的代表性 和使用价值。在计算机系统中,很多问题都可以归结为生产者与消费者问题,提别是在通 讯和控制系统中。因此,对该类问题的研

5、究是非常必要的。一般而言,我们把提 供给某种资源的进程(线程)称之为生产者,二吧消耗资源的进程(线程)称之 为消费者。在大多数情况下,生产者和消费者的数目都是多于一个的。 下面以多 个进程(线程)共享一有界缓冲池为例来说明。123n-2n-1n如图,左端箭头表示生产者,右端箭头表示消费者,设Pi、P2、Pk是k个想缓冲池装入数据的进程(线程)(生产者)C、C2、Cm是 m个冲缓冲池中取出数据进行处理的进程(线程)(消费者),假设对任何P每次向缓冲区中申请一空白缓冲区,并把数据装入其中;而对于常见的情况是任何C每次都从缓冲池中取出一满缓冲区的内容, 并进行相应的处理,并把缓冲区清空。而每 次生产

6、者装入数据和消费者取出数据都是相同的(这是最常见的情况)。针对以 上进程(线程)通信,如不对生产者进程(线程)和消费者(线程)的操作进行 限制,则可能破坏数据的完整性。一种情况是一个生产者进程(线程)正在装入 数据到缓冲区时,另外的生产者进程(线程)可能同时把数据写入相同区域,造 成数据破坏,另一种情况是一个生产者进程(线程)正在装入数据到缓冲区时, 另外的消费者进程(线程)可能读入该区域数据,由于数据未写完,从而造成消 费者读到的数据是不完整的。对于先来先服务,如果早就绪的进程排在就绪队列的前面, 迟就绪的进程排 在就绪队列的后面,那么先来先服务总是把当前处于就绪队列之首的那个进程调 度到运

7、行状态。也就是说,它只考虑进程进入就绪队列的先后,而不考虑它的下 一个CPU的长短及其他因素。二、正文(一)问题分析和任务定义1、生产者 / 消费者(1) 生产者与消费者之间的关系问题。作为消费者(Pl、P2、Pk)它每次都 需要消耗缓冲池中空白缓冲区;而消费者( c、C2、cm)它每次都需要消耗 缓冲池中的满缓冲区, 并给缓冲池中提供空白缓冲区。 因此,生产者群体和消费 者之间首先存在同步问题。 为了提高系统的效率, 也就是说有生产者正在装入数 据到空白数据缓冲区时, 消费者可以提取已经装满数据的满缓冲区, 因此,生产 者和消费者之间可以不应该存在互斥关系。(2) 生产者(R、P2、R)群体

8、内部的关系问题:当有生产者 P正在装入数 据时,如果这时又有生产者 Pj 到达,如允许其也进行装入数据工作,则有可能 导致数据装入同一缓冲区,造成数据 丢失,因此,必须让所有生产者以互斥方 式对缓冲区进行操作。(3) 消费者(C、Q、G)群体内部的关系问题。当有消费者 C正在取出数 据时,如果这时又有消费者 Cj 到达,如果允许其取出数据工作,则有可可能导 致同一缓冲区多次取用, 这也是不能允许的, 因为一个数据只能使用一次。 因此, 必须让所有消费者以互斥方式对缓冲池进行操作。2、FCFS先来先服务算法按照作业进入系统后备作业队列的先后次序挑选作业 , 先进 入系统的作业将优先被挑选进入主存

9、 ,创建用户进程 ,分配所需资源 , 然后, 移入 就绪队列.这是一种非剥夺式调度算法 ,易于实现,但效率不高 .只顾及作业的等 候时间 , 未考虑作业要求服务时间的长短 , 不利于短作业而优待长作业 ,不利于 I/O繁忙型作业而有利于CPI繁忙型作业.有时为了等待场作业执行结束,短作业 的周转时间和带全周转时间将变得很大 , 从而若干作业的平均周转时间和平均带 权周转时间也变得很大。二)环境简介Win dows系统电脑一台;JDK环境下用EditPlus软件编写程序。三)设计1、生产者 / 消费者(1) 数据结构与核心算法描述 Storage 类模拟缓冲池,包含数据成员如下:private

10、int pnumber;/生产商品数private int cnumber;/消耗商品数private int number;/缓冲区商品数private boolean flag1;/private boolean flag2;/private boolean flag3;/private boolean flag4;/包含的方法如下:public void setPNumber(int pnumber)/获取当前生产的商品数public void setCNumber(int cnumber)/或取当前消耗的商品数public int countNumber()/ 库存量(生产数量 - 消

11、费数量) public void setStorageBallFlag()/public boolean getFlag1()public boolean getFlag2()public boolean getFlag3() 生产者Productor类并实现接口 Runnable,包含的数据成员如下:private Storage storage;/ 仓库private MyCanvas mycanvas;/ 画图包含的方法如下:public void run()/run 方法中调用 product ()方法进行生产throwsthrowspublic void product(Storag

12、e storage,MyCanvas mycanvas)InterruptedException/ 生产商品,并进行相应的画图 消费者Customer类并实现接口 Runnable,包含的数据成员如下:private Storage storage; / 仓库 private MyCanvas mycanvas; / 画图包含的方法如下:public void run()/run 方法中调用 cast ()方法进行生产public void cast(Storage storage,MyCanvas mycanvas)InterruptedException/ 生产商品,并进行相应的画图(2)

13、 操作界面的设计MyFrame类进行界面的搭建,包含的数据成员如下: private JFrame myframe;/private Button pbutto n;/生产者按钮private Button cbutt on;/消费者按钮private MyCa nvas myca nv as;/ 轨道 private Storage storage;/仓库对象界面宽度界面长度public MyFrame()完成界面的private fi nal int TABLE_WIDTH = 400;/ private fi nal int TABLE_HEIGHT = 300;/ 其中,为按钮添加事件

14、监听器。由构造函数 搭建。界面图如下:(3) 主要功能算法描述点击生产按钮,进行模拟生产,若仓库满则停止生产 点击消费按钮,进行模拟消费,若仓库空则停止消费2、FCFS(1)数据结构与核心算法描述核心算法如下:class TBall1 implements Runnableclass TBall2 implements Runnableclass TBall3 implements Runnableclass TBall4 implements Runnable 以上四个方法对小球进行控制,先到的先进入 CPU。(2)操作界面的设计View 类进行界面的搭建,包含的数据成员如下:private JFrame f = new JFrame( 先来先服务 -631306050202-刘沅良 );private final int T = 200;private final int TABLE_WIDTH = 400;/宽度

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 资格认证/考试 > 自考

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号