生产者与消费者

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

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

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

2、度(占总成绩 10%)完善基本完善不完善(10 分)(8 分)(5 分)程序结构的合理性(占总成绩 10%)合理基本合理不太合理(10 分)(8 分)(5 分)对问题的答辩情况(占总成绩 40%) 概念正确有创新 能正确回答所有问题 基本能正确回答(40 分)(35 分)(30 分)部分问题回答概念不清晰(20 分)学生的工作态度与 独立工作能力(占总成绩 10%)工作态度认真能独立完成任务工作态度认真但独立性较差(10 分)(8 分)工作态度基本认真但缺乏独立性(5 分)设计报告的规范性(占总成绩 10%)符合规范基本符合规范规范性较差(10 分)(8 分)(5 分)重庆交通学院信息科学与工

3、程学院课程设计任务书课 程计算机操作系统班级软件2013级 2班指导教师刘洋题 目生产者/消费者与FCFS完成时间2015年6月 30日至2015年12月8 日主要内容1 生产者与消费者问题;2 先来先服务问题。设计报告要求1封面;2课程设计成绩单、课程设计任务书3内容提要;4“课程设计报告”正文部分:主要应包括:问题分析和任务定义;环境简介;设计:主要是指数据结构与核心算法的设计描述;操作界面的设计;主要功能的算法框架;测试用例设计等内容。编译参数与步骤的说明;上机调试总结与分析;用户使用说明;测试数据与测试结果等内容。课程设计总结:可以包括课程设计过程的收获、遇到的问题及解决过程的思考、对

4、数据结构这门课程的思考和认识等内容。附录程序清单5参考文献版面要求1. 题目用黑体三号,段后距18磅(或1行),居中对齐;2. 标题用黑体四号,段前、段后距6磅(或0.3行);3. 正文用小四号宋体,行距为1.25倍行距;4. 标题按“一”、“”、“1”、“”顺序编号。指导时间安排星期周次一二三四五六17周18周指导地点语音大楼801生产者/消费者与FCFS一、内容提要操作系统是计算机的核心软件,是计算机专业学生的专业必修课。进程同步问题是计算机操作系统中的重点内容,而生产者-消费者问题是进程同步问题中的经典,它是计算机中相互合作进程关系的一种抽象,该问题具有很大的代表性和使用价值。在计算机系

5、统中,很多问题都可以归结为生产者与消费者问题,提别是在通讯和控制系统中。因此,对该类问题的研究是非常必要的。一般而言,我们把提供给某种资源的进程(线程)称之为生产者,二吧消耗资源的进程(线程)称之为消费者。在大多数情况下,生产者和消费者的数目都是多于一个的。下面以多个进程(线程)共享一有界缓冲池为例来说明。nn-1n-2 .321如图,左端箭头表示生产者,右端箭头表示消费者,设P1、P2、PK是k个想缓冲池装入数据的进程(线程)(生产者)C1、C2、Cm是m个冲缓冲池中取出数据进行处理的进程(线程)(消费者),假设对任何Pi每次向缓冲区中申请一空白缓冲区,并把数据装入其中;而对于常见的情况是任

6、何Ci每次都从缓冲池中取出一满缓冲区的内容,并进行相应的处理,并把缓冲区清空。而每次生产者装入数据和消费者取出数据都是相同的(这是最常见的情况)。针对以上进程(线程)通信,如不对生产者进程(线程)和消费者(线程)的操作进行限制,则可能破坏数据的完整性。一种情况是一个生产者进程(线程)正在装入数据到缓冲区时,另外的生产者进程(线程)可能同时把数据写入相同区域,造成数据破坏,另一种情况是一个生产者进程(线程)正在装入数据到缓冲区时,另外的消费者进程(线程)可能读入该区域数据,由于数据未写完,从而造成消费者读到的数据是不完整的。对于先来先服务,如果早就绪的进程排在就绪队列的前面,迟就绪的进程排在就绪

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

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

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

10、品数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()/库存量(生产数量 - 消费数量)public void s

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

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

13、下:private JFrame myframe;/private Button pbutton;/生产者按钮private Button cbutton;/消费者按钮private MyCanvas mycanvas;/轨道private Storage storage;/仓库对象private final int TABLE_WIDTH = 400;/界面宽度private final int TABLE_HEIGHT = 300;/界面长度其中,为按钮添加事件监听器。由构造函数public MyFrame()完成界面的搭建。界面图如下:(3)主要功能算法描述点击生产按钮,进行模拟生产,若

14、仓库满则停止生产。点击消费按钮,进行模拟消费,若仓库空则停止消费。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;/宽度private final int TABLE_HEIGHT = 300

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

当前位置:首页 > 建筑/环境 > 施工组织

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