2025年操作系统任务调度算法分析与实现实验研究报告.docx
试验二作业调度
一.试验题目
1、编写并调试一种单道处理系统的作业等待模拟程序。
作业调度算法:分别采用先来先服务(FCFS),最短作业优先(SJF)的调度算法。
(1)先来先服务算法:按照作业提交给系统的先后次序来挑选作业,先提交的先被挑选。
(2)最短作业优先算法:是以进入系统的作业所提出的“执行时间”为原则,总是优先选用执行时间最短的作业。
二.试验目的:
本试验规定用高级语言(C语言试验环境)编写和调试一种或多种作业调度的模拟程序,理解作业调度在操作系统中的作用,以加深对作业调度算法的理解
三.试验过程
一单道处理系统作业调度
1)单道处理程序作业调度试验的源程序:zuoye.c执行程序:zuoye.exe
2)试验分析:
1、由于在单道批处理系统中,作业一投入运行,它就占有计算机的一切资源直到作业完毕为
止,因此调度作业时不必考虑它所需要的
止,因此调度作业时不必考虑它所需要的资源与否得到满足,它所占用的CPU时限等原因。
2、每个作业由一种作业控制块JCB表达,JCB可以包括如下信息:作业名、提交时间、所需的运行时间、所需的资源、作业状态、链指针等等。作业的状态可以是等待W(Wait)、运行R(Run)和完毕F(Finish)三种状态之一。每个作业的最初状态总是等待W。
3、对每种调度算法都规定打印每个作业开始运行时刻、完毕时刻、周转时间、带权周转时间,以及这组作业的平均周转时间及带权平均周转时间。
3)流程图:
开始
初始化所有的JCB
使JCB按作业提交的时刻的先后顺序排队时间量tines:=0
调度队首的作业投入运行:
(更改队首指针,使作业的状态为R.记住作业开始运行的时刻starttime等等
计算并打印运行作业i的完成时刻finishtime
周转时间cycletime带权周转时间cltime
完成时间:=开始运行时间+需要运行时间
带周权转周时转间时:间=:完周时转间时-/达需时要间运行时间
更改时间量times的值
times;=times+作业i的需要
L运行时间
不空等待队列空?
空
计算并打印这组作业的平均周转时间及带权平均周转时间
结束
替代
替代
总是选择执行时问量短的作业为此时要运行的作业并修改相应的指针,还要记下此作业开始运行时间tine等等信息
二.最短作业优先算法
先计算队列中所有作业的高响应比,总是选择响应比量高的那个作业作为此刻素运行的作亚,并修改相应的指针,记下作亚开始时间starttine等等
三.高响应比算法
图一.先来先服务流程图
4)源程序:
#includestdio.h#includestdlib.h
#includeconio.h
#definegetpch(type)(type*)malloc(sizeof(type))
#defineNULL0intn;
floatT1=0,T2=0;inttimes=0;
structjcb//作业控制块
(
charname[10]://作业名
intreachtime;//作业抵达时间intstarttime;//作业开始时间
intneedtime;//作业需要运行的时间
floatsuper;//作业的响应比
intfinishtime;//作业完毕时间
floatcycletime;//作业周转时间
floatcltime;//作业带权周转时间
charstate;//作业状态
structjcb*next;//构造体指针
}*ready=NULL,*p,*q:
typedefstructjcbJCB;
voidinize()//初始化界面(
printf(\n\n\t\t*********************************************\t\t\n);
printf(\t\t\t\t试验二作业调度\n);
printf(\t\t*******************************************