先进先出算法实验报告_第1页
先进先出算法实验报告_第2页
先进先出算法实验报告_第3页
先进先出算法实验报告_第4页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、文档来源为 :从网络收集整理.word 版本可编辑 .欢迎下载支持.答卷封面(COVER)评阅结果Final mark评阅人Examiner课程名称( Subject):操作系统课程设计编号 (No.) :系别 (Department):专业 (Major) :姓名 (Name):学号 (Students Number):注意事项( Notes )1. 考生需将上述有关项目填写清楚2. 字迹要清楚,保持卷面清洁。3. 交卷时请将本答卷和题签一起上交,题签作为封面下一页装订。1、Candidates should fill in the information appropriately.2、K

2、eep the handwriting clear and the paper tidy.3、Candidate should hand in this cover and paper together; the answer sheet should be attached to the cover.文档来源为 :从网络收集整理.word 版本可编辑 .欢迎下载支持.机密( Confidential )编号( No.): 11-12-1-050154试 题( Test)课程名称 (Subject ):操作系统课程设计考核类别( Type of test):考查课程类别(Type of cou

3、rse ) :实践环节考试形式(Test type) :论文使用范围(Target group ):计算机科学与技术要求:一、通过本课程设计, 使学生在上机实验中体会计算机操作系统的基本原理,训练学生模拟实现操作系统管理和控制资源的能力。二、学生可在下列14 个题目中任选 1 个。( 1)先来先服务调度算法、短作业优先调度算法、时间片轮转调度算法、优先级调度算法( 2)生产者 -消费者问题、读者 -写者问题( 3)最先适应算法、最佳适应算法、最坏适应算法( 4)先进先出算法、最久未使用淘汰算法、理想淘汰算法( 5)银行家算法( 6)进程通信( 7)小型文件系统三、模拟实现算法在 Windows

4、 平台下,可用 C 语言、C+语言和 Java 语言等。摘要本文围绕 Java 编程,按照进程进入就绪队列的先后次序来分配处理器,对先进先出程序进行需求分析、概要设计、详细设计,最后使用Java 编程实现的全过程。关键词: 操作系统先进先出算法java语言文档来源为 :从网络收集整理.word 版本可编辑 .欢迎下载支持.目录一、设计题目.二、设计内容.三、设计过程.3.1 需求分析 .3.2 概要设计 .3.3 详细设计 .3.4 代码实现 .3.5 程序运行 .四、总结 .五、参考文献.文档来源为 :从网络收集整理.word 版本可编辑 .欢迎下载支持.一、设计题目先来先服务调度算法。二、

5、设计内容1、 综合应用下列知识点设计并实现操作系统的进程调度:先进先出,进程控制块,进程状态转换,多级反馈队列进程调度算法。2、 加深理解操作系统进程调度的过程。3、 加深理解先进先出调度算法。4、由于在单道批处理系统中,作业一投入运行,它就占有计算机的一切资源直到作业完成为止,因此调度作业时不必考虑它所需要的资源是否得到满足,它所占用的CPU限等因素。5、作业调度算法:采用先来先服务(FCFS)调度算法,即按作业提交的先后次序进时行调度。6、总是首先调度在系统中等待时间最长的作业。每个作业由一个作业控制块JCB表示, JCB 可以包含如下信息:作业名、提交时间、所需的运行时间、所需的资源、作

6、业状态、链指针等等。7、作业的状态可以是等待W(Wait) 、运行 R(Run) 和完成 F(Finish) 三种状态之一。每个作业的最初状态总是等待W。8、各个等待的作业按照提交时刻的先后次序排队,总是首先调度等待队列中队首的作业。9、每个作业完成后要打印该作业的开始运行时刻、完成时刻、周转时间和带权周转时间,这一组作业完成后10、要计算并打印这组作业的平均周转时间、带权平均周转时间。三、设计过程3.1 需求分析1. 由于在单道批处理系统中, 作业一投入运行, 它就占有计算机的一切资源直到作业完成为止,因此调度作业时不必考虑它所需要的资源是否得到满足,它所占用的CPU 时限等因素。2. 每个

7、作业由一个作业控制块JCB 表示, JCB可以包含如下信息:作业名、提交时间、所需的运行时间、所需的资源、作业状态、链指针等等。作业的状态可以是等待W(Wait) 、运行R(Run) 和完成F(Finish)三种状态之一。每个作业的最初状态总是等待W。例如,三个作业同时到达系统并立即进入调度:作业名所需CPU时间作业1 28作业2 9作业采用FCFS 算法,三个作业的周转时间分别为:28、 37和 40,因此,平均作业周转时间T = (28+37+40)/3 = 35文档来源为 :从网络收集整理.word 版本可编辑 .欢迎下载支持.若三个作业提交顺序改为作业2、 1、 3 ,平均作业周转时间

8、约为29 。(9+37+40)/3 29)若三个作业提交顺序改为作业3、 2、 1 ,平均作业周转时间约为18 。(3+12+40)/3 18)FCFS 调度算法的平均作业周转时间与作业提交的顺序有关。3.2 概要设计设计、编写一个进程调度程序,允许多个进程共同运行的进程调度程序。( 1)进程调度算法:采用先进先出算法( 2)每个进程有一个进程控制块(PCB)表示。进程控制块可以包含如下信息:进程名、优先数、到达时间、需要运行时间、已用CPU时间、进程状态等等。( 3)进程的优先数及需要的运行时间可以事先人为地指定 (也可以由随机数产生) 。进程的到达时间为输入进程的时间。( 4)进程的运行时

9、间以时间片为单位进行计算。( 5)进程状态及状态转换。 1)每个进程的状态可以是就绪 W( Wait )、运行 R(Run)、或完成 F( Finish )三种状态之一; 2)就绪进程获得 CPU 后都只能运行一个时间片。用已占用 CPU时间加 1 来表示; 3)如果运行一个时间片后,进程的已占用CPU 时间已达到所需要的运行时间, 则撤消该进程, 如果运行一个时间片后进程的已占用CPU时间还未达所需要开 始CPU; 4)每进行一的运行时间,也就是进程还需要继续运行,然后把它插入就绪队列等待次调度程序都打印一次运行进程、就绪队列、以及各个进程的PCB,以便进行检查; 5)重复以上过程,直到所要

10、进程都完成为止。( 6)进程的到达时间为输入进程时间,进程的运行时间以时间片的计算单位计算。调用初始化子程序( 7)每一个进程的状态可以使就绪W(wait), 运行 R(Run) 或完成 F(Fish) 三种状态之一( 8)建立一个类 PCB控制进程建立一个类 TestFrame 测试进程建立一个类List_Test管理进程建立一个类Main 写主函数调用运行子程序主流程图:结束3.3 详细设计设定系统中有n 个进程,每一个进程用一个进程控制块(PCB)表示,进程队列采用链表数据结构。进程控制块包含如下信息:进程名、优先数、需要运行时间、已用CPU时间、进程状态等等。每次运行设计的处理调度程序

11、之前,由终端输入n 个进程的 “优先数” 和“要求运行时间”。进程的优先数及需要的运行时间人为地指定. 进程的运行时间以时间片为单位进行计算。采用优先权调度算法, 将五个进程按给定的优先数从大到小连成就绪队列。 用头指针指出队列首进程,队列采用链表结构。处理机调度总是选队列首进程运行。采用动态优先数办法,进程每运行一次将已运行时间加“1”。进程运行一次后,若要求运行时间不等于已运行时间,则再将它加入就绪队列;否则文档来源为 :从网络收集整理.word 版本可编辑 .欢迎下载支持.将其状态置为“结束”, 且退出就绪队列。“就绪”状态的进程队列不为空,则重复上面 6,7 步骤,直到所有进程都成为“

12、结束”状态。在计的程序中有输入语句,输入n 个进程的“优先数”和“要求运行时间”,也有显示或打印语句, 能显示或打印每次被选中进程的进程名、 运行一次后队列的变化, 以及结束进程的进程名。最后,为 n 个进程任意确定一组“优先数”和“要求运行时间”,运行并调试所设计的程序,显示或打印出逐次被选中进程的进程名及其进程控制块的动态变化过程。:程序说明:在先来先服务算法中,按作业提交的先后次序进行调度。程序中使用的数据结构及符号说明:#define num 5/假定系统中进程个数为5struct PCBchar ID;/int runtime;/char state; /进程名要求运行时间状态, R

13、-就绪,F- 结束;struct PCB pcblistnum;/定义进程控制块数组流程图:3.4 代码实现经过前面的工作,最后在集成编辑环境中,编写的程序代码如下: public class FCFS extends JFrame implements ActionListener Vector workVector;int status=0,0,0,0,0;String workname=" 作业名 "," 提交时刻 "," 要求运行时间 "," 运行时刻 "," 完成时刻 ","

14、 周转时间 "," 带权周转时间 "String worktable=new String57;JTable workjtable;JScrollPane messageScrollPane;JToolBar toolBar = new JToolBar();JButton InputButton;JButton FCFSButton;JButton exitButton;JTextField show;JTextArea source;public void actionPerformed(ActionEvent e)Object obj = e.getSour

15、ce();if (obj =InputButton)String stringnum;Work work=new Work();stringnum=JOptionPane.showInputDialog(this," 作业名、 提交时刻、 要求运行时间 ").trim();文档来源为 :从网络收集整理.word 版本可编辑 .欢迎下载支持.StringTokenizer st0 = new StringTokenizer(stringnum);if(st0.hasMoreTokens()work.workname=(String)st0.nextToken();source

16、.append("作业 : "+work.workname);if(st0.hasMoreTokens()work.refertime=Double.valueOf(st0.nextToken().doubleValue();source.append("提交时间为 : "+work.refertime);if(st0.hasMoreTokens()work.needtime=Double.valueOf(st0.nextToken().doubleValue(); source.append(" 要求运行时间为 : "+work.n

17、eedtime);source.append("n");workVector.add(work);if ( obj = FCFSButton)for(int a=0;a<5;a+)statusa=0;int i=0;double minrefertime,finishtime=0,T=0,sunT=0,sunW=0,W=0;Work work=new Work();Work work1=new Work();Work work2=new Work();String msg;while(i<workVector.size()if(statusi=0)work=(W

18、ork)workVector.elementAt(i);worktablei0=String.valueOf(work.workname);worktablei1=String.valueOf(work.refertime);worktablei2= String.valueOf(work.needtime);minrefertime=work.refertime;int j=0,k=i;while(j<workVector.size() /找出最先到达的进程work1=(Work)workVector.elementAt(j);/指定索引处if(minrefertime>work

19、1.refertime&&statusj=0)文档来源为 :从网络收集整理.word 版本可编辑 .欢迎下载支持.minrefertime=work1.refertime;k=j;j+;T=sunT/i;W=sunW/i;msg=" 平均周转时间 T="+T+" 时间单位 "+","+" 平均带权周转时间 W="+W; workjtable=new JTable(worktable,workname); show=new JTextField(30);show.setText(msg);messag

20、eScrollPane = new JScrollPane(workjtable, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);messageScrollPane.setPreferredSize(new Dimension(400, 101); messageScrollPane.revalidate();JFrame frame=new JFrame();frame.setSize(400,180);frame.setLocation(200,300);frame

21、.setTitle("FCFS的作业调度 ");frame.setLayout(new BorderLayout();frame.add(messageScrollPane,BorderLayout.NORTH);frame.add(show,BorderLayout.CENTER);frame.setVisible(true);if ( obj = exitButton)int j=JOptionPane.showConfirmDialog(this,"真的要停止服务吗"," 停止服务 ",JOptionPane.YES_OPTIO

22、N,JOptionPane.QUESTION_MESSAGE); if(j=JOptionPane.YES_OPTION)System.exit(0);public static void main(String arg)FCFS FCFS1=new FCFS();class WorkString workname=null;double refertime=0;double needtime=0;double starttime=0;double finishtime=0;文档来源为 :从网络收集整理.word 版本可编辑 .欢迎下载支持.double alltime=0;double ratealltime=0;3.5 程序运行测试用例:屏幕显示:请输入进程个数输入:4<回车>屏幕显示:请输入 进程名称 ( 字母 ) 提交时刻 运行时间输入:进程

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论