先来先服务问题java程序设计报告

上传人:第*** 文档编号:61592732 上传时间:2018-12-05 格式:DOC 页数:31 大小:492KB
返回 下载 相关 举报
先来先服务问题java程序设计报告_第1页
第1页 / 共31页
先来先服务问题java程序设计报告_第2页
第2页 / 共31页
先来先服务问题java程序设计报告_第3页
第3页 / 共31页
先来先服务问题java程序设计报告_第4页
第4页 / 共31页
先来先服务问题java程序设计报告_第5页
第5页 / 共31页
点击查看更多>>
资源描述

《先来先服务问题java程序设计报告》由会员分享,可在线阅读,更多相关《先来先服务问题java程序设计报告(31页珍藏版)》请在金锄头文库上搜索。

1、重庆交通大学计算机操作系统课程设计报告班 级: 计软专业 2013 级 班 姓 名: 学 号: 课程设计题目: 先来先服务问题 所 属 课 程 : 计算机操作系统 实验室(中心): 语音楼801 指 导 教 师 : 完 成 时 间 : 2015 年 11 月20 日信息科学与工程学院课程设计成绩单课程名称:计算机操作系统指导教师:刘洋姓名 刘克性别男学号631306050224班级软件 1302班综合成绩 程序运行情况 (占总成绩20%)能正确运行基本能正确运行能运行但结果不完善(20分) (15分) (10分)程序功能完善程度(占总成绩 10%)完善基本完善不完善(10 分)(8 分)(5

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

3、师刘洋题 目先来先服务问题完成时间2015年6月 日至2015年11月 日主要内容1.利用进程调度算法来模拟CPU先来先服务的特点。设计报告要求1封面;2课程设计成绩单、课程设计任务书3内容提要;4“课程设计报告”正文部分:主要应包括:问题分析和任务定义;环境简介;设计:主要是指数据结构与核心算法的设计描述;操作界面的设计;主要功能的算法框架;测试用例设计等内容。编译参数与步骤的说明;上机调试总结与分析;用户使用说明;测试数据与测试结果等内容。课程设计总结:可以包括课程设计过程的收获、遇到的问题及解决过程的思考、对数据结构这门课程的思考和认识等内容。附录程序清单5参考文献版面要求1. 题目用黑

4、体三号,段后距18磅(或1行),居中对齐;2. 标题用黑体四号,段前、段后距6磅(或0.3行);3. 正文用小四号宋体,行距为1.25倍行距;4. 标题按“一”、“”、“1”、“”顺序编号。指导时间安排星期周次一二三四五六17周18周指导地点一、 问题分析和任务定义(1) 问题分析本问题是要模拟CPU先来先服务进程调度,即多个进程谁先得到CPU资源谁就先执行,其余的进入等待序列。等到进程执行完毕,释放CPU资源之后,最早进入等待序列的进程优先执行。依次类推,直到所有的进程执行完毕。先来先服务(First Come First Server)是典型的进程常见的进程调度算法。FCFS总是把当前处于

5、就绪队列之首的那个进程调度到运行状态。也就说,它只考虑进程进入就绪队列的先后,而不考虑它的下一个CPU周期的长短及其他因素。FCFS算法简单易行,但性能却不大好。(2) 任务定义对于FCFS算法,一般使用队列来完成,因为队列有着先来先服务的特点。利用java编写可视化程序,在界面上绘制4个小球,绘制一个就绪队列的矩形和一个CPU矩形。点击“开始”,则4个小球以不同的速度(速度每次开始运行程序随机生成)开始运动,最先到达CPU边缘的小球优先通过CPU矩形,其余的小球在就绪队列矩形开始等待。小球通过CPU矩形之后,先进入就绪队列的小球优先通过CPU矩形。直到所有的小球通过CPU矩形。二、 环境简介

6、开发工具:eclipse操作系统:win10三、 设计:主要是指数据结构与核心算法的设计描述;操作界面的设计;主要功能的算法框架;测试用例设计等内容。(1) 界面设计如上所示:左侧是初始状态的小球,右侧是就绪队列和CPU矩形。下面是“开始”、“关闭”、“重置”按钮。(2) 算法设计首先定义两个队列waitQueue(等待队列)和runQueue(运行队列),定义move函数来控制小球的运动。小球开始运动到CPU边缘时首先判断runQueue队列之中是否有元素,如果没有则将小球的序号进队,如果有元素,则要判断该元素是否是它本身(因为move函数要不断的调用,下次判断时队列之中的元素有可能是它本身

7、),如果不是,则进入waitQueue。进入runQueue之中的小球可以继续前进,等到小球运动出CPU矩形之后,则从runQueue出队并且从waitQueue弹出一个元素进入runQueu之中。这样最早进入等待序列中是小球就可以继续前进了。move函数代码如下:public void move(int i)/i为小球编号,n为移动速度 if(finishnum=3&moveXi770) moveXi+; else if(moveXi490) moveXi+=speedi; else if(runQueue.size()=0) runQueue.offer(i);/把i压入队列 else i

8、f (x=runQueue.peek()=i&moveXi770)/如果运行队列中的元素就是它自己,继续行进 moveXi+; else if(numi=0) waitQueue.offer(i);/如果不是它自己则进入就绪队列numi+;/保障只进一次队 if(moveXi=770) moveXi+; finishnum+; if(runQueue.size()!=0) runQueue.remove();/到达终点之后则出运行队列 if(waitQueue.size()!=0)/如果就绪队列之中有值,则出队 runQueue.offer(waitQueue.poll(); (3) 测试用例

9、设计在界面上有“开始”、“关闭”、“重置”按钮,点击“开始”按钮则四个小球开始移动,点击“重置”按钮则小球恢复至本次的初始状态,重新执行。四、 上机调试总结与分析调试结果显示:先来先服务的基本功能已经实现,基本没有bug。在界面上可以添加“暂停”,“继续”按钮来控制小球的运动。五、 用户使用说明点击“开始”按钮就可以看到小球开始运动,最先到达CPU边缘的小球会继续前进,其余的小球则在CPU边缘之外开始等待,等到小球通过CPU矩形后,小球停止在CPU矩形之外。这时,最先开始等待的小球开始通过CPU矩形。直到所有的小球通过CPU矩形为止。最终小球会停止在CPU边缘之外。点击“重置”则重复此次小球运

10、行状态。点击“关闭”则关闭程序界面。六、 测试数据与测试结果等内容。测试结果如下:初始界面红球通过CPU,其余小球开始等待小球全部通过CPU八、课程设计总结这次的实验花了我不少的时间,因为一开始不知道怎么做。使用C#来写是很简单的,但是这是个典型的线程问题,虽然有线程但是我们并没有学,所以也不会使用。我们这学期学了java,所以我最终决定使用java来写这个实验。而java使用线程以及搭建界面都是比较麻烦的,但是功夫不负有心人,我还是完成这个实验。总体来说这次课程设计的收获还是很多的,首先是我们这学期刚学了java语言,但是由于课时较少,只有八周的学习时间,所有说编的程序并不是很多,对于jav

11、a语言了解的也不够深入,尤其是java可视化程序更是不太会写,通过这次的课程设计,我基本掌握了java界面的搭建方法,以及界面布局的方法。更多的收获是对于java的一大特色线程有了更深入的了解。之前很少使用线程去写程序的。这次使用了线程之后我才发现java线程的应用还是非常方便的。在写此程序的过程中遇到的问题还是很多的,比如说界面的搭建以及小球和矩形的绘制等,但这些都是属于java编程的内容,基本上在网上可以找到比较好的解决方案。最大的问题就是小球移动的算法设计了,在我对于先来先服务的算法进行分析之后,最终找到了使用队列解决该问题的方法。九、附录程序清单 (1)FCFS.java清单packa

12、ge 先来先服务;import java.awt.Frame;public class FCFS public static void main(String args) / TODO Auto-generated method stub MyFrame frame=new MyFrame(先来先服务); frame.setVisible(true); (2)MoveThread.java清单package 先来先服务;import java.awt.Frame;/线程类public class MoveThread extends Threadpublic int id;/小球编号 MyFrame frame; public MoveThread(int i,MyFrame fra) id=i; frame=fra; public void run() while (true) frame.move(id); frame.repaint(); try sleep(10); catch (Exception e) / TODO: handle exception(3)MyFrame.java清单package 先来先服务;import java.awt

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 大学课件

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