先进先出算法实验报告Word格式文档下载.docx
- 文档编号:14204325
- 上传时间:2022-10-20
- 格式:DOCX
- 页数:11
- 大小:21.57KB
先进先出算法实验报告Word格式文档下载.docx
《先进先出算法实验报告Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《先进先出算法实验报告Word格式文档下载.docx(11页珍藏版)》请在冰豆网上搜索。
2.字迹要清楚,保持卷面清洁。
3.交卷时请将本答卷和题签一起上交,题签作为封面下一页装订。
1、Candidatesshouldfillintheinformationappropriately.
2、Keepthehandwritingclearandthepapertidy.
3、Candidateshouldhandinthiscoverandpapertogether;
theanswersheetshouldbeattachedtothecover.
机密(Confidential)编号(No.):
11-12-1-050154
试题(Test)
操作系统课程设计考核类别(Typeoftest):
考查
课程类别(Typeofcourse):
实践环节考试形式(Testtype):
论文
使用范围(Targetgroup):
计算机科学与技术
要求:
一、通过本课程设计,使学生在上机实验中体会计算机操作系统的基本原理,训练学生模拟实现操作系统管理和控制资源的能力。
二、学生可在下列14个题目中任选1个。
(1)先来先服务调度算法、短作业优先调度算法、时间片轮转调度算法、优先级调度算法
(2)生产者-消费者问题、读者-写者问题
(3)最先适应算法、最佳适应算法、最坏适应算法
(4)先进先出算法、最久未使用淘汰算法、理想淘汰算法
(5)银行家算法
(6)进程通信
(7)小型文件系统
三、模拟实现算法在Windows平台下,可用C语言、C++语言和Java语言等。
摘要
本文围绕Java编程,按照进程进入就绪队列的先后次序来分配处理器,对先进先出程序进行需求分析、概要设计、详细设计,最后使用Java编程实现的全过程。
关键词:
操作系统先进先出算法java语言
一、设计题目
《先来先服务调度算法》。
二、设计内容
1、综合应用下列知识点设计并实现操作系统的进程调度:
先进先出,进程控制块,进程状态转换,多级反馈队列进程调度算法。
2、加深理解操作系统进程调度的过程。
3、加深理解先进先出调度算法。
4、由于在单道批处理系统中,作业一投入运行,它就占有计算机的一切资源直到作业完成为止,因此调度作业时不必考虑它所需要的资源是否得到满足,它所占用的CPU时限等因素。
5、作业调度算法:
采用先来先服务(FCFS)调度算法,即按作业提交的先后次序进行调度。
6、总是首先调度在系统中等待时间最长的作业。
每个作业由一个作业控制块JCB表示,JCB可以包含如下信息:
作业名、提交时间、所需的运行时间、所需的资源、作业状态、链指针等等。
7、作业的状态可以是等待W(Wait)、运行R(Run)和完成F(Finish)三种状态之一。
每个作业的最初状态总是等待W。
8、各个等待的作业按照提交时刻的先后次序排队,总是首先调度等待队列中队首的作业。
9、每个作业完成后要打印该作业的开始运行时刻、完成时刻、周转时间和带权周转时间,这一组作业完成后
10、要计算并打印这组作业的平均周转时间、带权平均周转时间。
三、设计过程
3.1需求分析
1.由于在单道批处理系统中,作业一投入运行,它就占有计算机的一切资源直到作业完成为止,因此调度作业时不必考虑它所需要的资源是否得到满足,它所占用的CPU时限等因素。
2.每个作业由一个作业控制块JCB表示,JCB可以包含如下信息:
作业的状态可以是等待W(Wait)、运行R(Run)和完成F(Finish)三种状态之一。
例如,三个作业同时到达系统并立即进入调度:
作业名所需CPU时间
作业128
作业29
作业33
采用FCFS算法,三个作业的周转时间分别为:
28、37和40,因此,平均作业周转时间T=(28+37+40)/3=35
若三个作业提交顺序改为作业2、1、3,平均作业周转时间约为29。
((9+37+40)/329)
若三个作业提交顺序改为作业3、2、1,平均作业周转时间约为18。
((3+12+40)/318)
FCFS调度算法的平均作业周转时间与作业提交的顺序有关。
3.2概要设计
设计、编写一个进程调度程序,允许多个进程共同运行的进程调度程序。
(1)进程调度算法:
采用先进先出算法
(2)每个进程有一个进程控制块(PCB)表示。
进程控制块可以包含如下信息:
进程名、优先数、到达时间、需要运行时间、已用CPU时间、进程状态等等。
(3)进程的优先数及需要的运行时间可以事先人为地指定(也可以由随机数产生)。
进程的到达时间为输入进程的时间。
(4)进程的运行时间以时间片为单位进行计算。
(5)进程状态及状态转换。
1)每个进程的状态可以是就绪W(Wait)、运行R(Run)、或完成F(Finish)三种状态之一;
2)就绪进程获得CPU后都只能运行一个时间片。
用已占用CPU时间加1来表示;
3)如果运行一个时间片后,进程的已占用CPU时间已达到所需要的运行时间,则撤消该进程,如果运行一个时间片后进程的已占用CPU时间还未达所需要的运行时间,也就是进程还需要继续运行,然后把它插入就绪队列等待CPU;
4)每进行一次调度程序都打印一次运行进程、就绪队列、以及各个进程的PCB,以便进行检查;
5)重复以上过程,直到所要进程都完成为止。
(6)进程的到达时间为输入进程时间,进程的运行时间以时间片的计算单位计算。
(7)每一个进程的状态可以使就绪W(wait),运行R(Run)或完成F(Fish)三种状态之一
(8)建立一个类PCB控制进程
建立一个类TestFrame测试进程
建立一个类List__Test管理进程
建立一个类Main写主函数
主流程图:
调用初始化子程序
调用运行子程序
结束
开始
3.3详细设计
设定系统中有n个进程,每一个进程用一个进程控制块(PCB)表示,进程队列采
用链表数据结构。
进程控制块包含如下信息:
进程名、优先数、需要运行时间、已用CPU时间、进程状态等等。
每次运行设计的处理调度程序之前,由终端输入n个进程的“优先数”和“要求运行时间”。
进程的优先数及需要的运行时间人为地指定.进程的运行时间以时间片为单位进行计算。
采用优先权调度算法,将五个进程按给定的优先数从大到小连成就绪队列。
用头指针指出队列首进程,队列采用链表结构。
处理机调度总是选队列首进程运行。
采用动态优先数办法,进程每运行一次将已运行时间加“1”。
进程运行一次后,若要求运行时间不等于已运行时间,则再将它加入就绪队列;
否则将其状态置为“结束”,且退出就绪队列。
“就绪”状态的进程队列不为空,则重复上面6,7步骤,直到所有进程都成为“结束”状态。
在计的程序中有输入语句,输入n个进程的“优先数”和“要求运行时间”,也有显示或打印语句,能显示或打印每次被选中进程的进程名、运行一次后队列的变化,以及结束进程的进程名。
最后,为n个进程任意确定一组“优先数”和“要求运行时间”,运行并调试所设计的程序,显示或打印出逐次被选中进程的进程名及其进程控制块的动态变化过程。
:
程序说明:
在先来先服务算法中,按作业提交的先后次序进行调度。
程序中使用的数据结构及符号说明:
#definenum5//假定系统中进程个数为5
structPCB{
charID;
//进程名
intruntime;
//要求运行时间
charstate;
//状态,R-就绪,F-结束
};
structPCBpcblist[num];
//定义进程控制块数组
流程图:
3.4代码实现
经过前面的工作,最后在集成编辑环境中,编写的程序代码如下:
{publicclassFCFSextendsJFrameimplementsActionListener
VectorworkVector;
intstatus[]={0,0,0,0,0};
Stringworkname[]={"
作业名"
"
提交时刻"
要求运行时间"
运行时刻"
完成时刻"
周转时间"
带权周转时间"
Stringworktable[][]=newString[5][7];
JTableworkjtable;
JScrollPanemessageScrollPane;
JToolBartoolBar=newJToolBar();
JButtonInputButton;
JButtonFCFSButton;
JButtonexitButton;
JTextFieldshow;
JTextAreasource;
publicvoidactionPerformed(ActionEvente)
{
Objectobj=e.getSource();
if(obj==InputButton)
{
Stringstringnum;
Workwork=newWork();
stringnum=JOptionPane.showInputDialog(this,"
作业名、提交时刻、要求运行时间"
).trim();
StringTokenizerst0=newStringTokenizer(stringnum);
;
if(st0.hasMoreTokens())
{
work.workname=(String)st0.nextToken();
source.append("
作业:
"
+work.workname);
}
if(st0.hasMoreTokens())
work.refertime=Double.valueOf(st0.nextToken()).doubleValue();
提交时间为:
+work.refertime);
work.needtime=Double.valueOf(st0.nextToken()).doubleValue();
要求运行时间为:
"
+work.needtime);
source.append("
\n"
);
workVector.add(work);
}
if(obj==FCFSButton)
for(inta=0;
a<
5;
a++)
status[a]=0;
inti=0;
doubleminrefertime,finishtime=0,T=0,sunT=0,sunW=0,W=0;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 先进 算法 实验 报告