操作系统实验报告批处理系统的作业调度Word格式.doc
- 文档编号:13168710
- 上传时间:2022-10-07
- 格式:DOC
- 页数:6
- 大小:42.50KB
操作系统实验报告批处理系统的作业调度Word格式.doc
《操作系统实验报告批处理系统的作业调度Word格式.doc》由会员分享,可在线阅读,更多相关《操作系统实验报告批处理系统的作业调度Word格式.doc(6页珍藏版)》请在冰豆网上搜索。
structtask{
stringname;
/*作业号*/
intarrTime;
/*作业到达时间*/
intserTime;
/*作业要求服务时间*/
intwaiTime;
/*等待时间*/
intbegTime;
/*开始运行时间*/
intfinTime;
/*结束运行时间*/
intturTime;
/*周转时间*/
intwTuTime;
/*带权周转时间*/
intpriority;
/*优先权*/
intfinish;
/*是否已经完成*/
}JCB[10];
存放作业控制块的区域:
#definen10
JCBjobtable[10];
intjobcount;
将作业控制块组织成一个队列,实验中采用静态链表的方式模拟作业的后备队列,作业队列头指针定义为:
int*head;
主程序为:
#include<
dos.h>
time.h>
stdlib.h>
stdio.h>
conio.h>
string.h>
typedefcharstring[10];
/*//定义string为含有10个字符元素的字符数组类型*/
intnum;
voidinput()
{
inti;
system("
cls"
);
printf("
\n请输入作业数量:
"
scanf("
%d"
&
num);
for(i=0;
i<
num;
i++)
{
printf("
\n请输入作业NO.%d:
\n"
i);
作业名称:
scanf("
%s"
JCB[i].name);
到达时间:
&
JCB[i].arrTime);
服务时间:
JCB[i].serTime);
JCB[i].priority=0;
JCB[i].finish=0;
}
}
intHRN(intpre)
intcurrent=1,i,j;
/*优先权=(等待时间+服务时间)/服务时间*/
i<
i++)
JCB[i].waiTime=JCB[pre].finTime-JCB[i].arrTime;
/*等待时间=上一个作业的完成时间-到达时间*/
JCB[i].priority=(JCB[i].waiTime+JCB[i].serTime)/JCB[i].serTime;
if(!
JCB[i].finish)
{
current=i;
/*找到第一个还没完成的作业*/
break;
}
for(j=i;
j<
j++)/*和后面的作业比较*/
if(!
JCB[j].finish)/*还没完成(运行)*/
if(JCB[current].arrTime<
=JCB[pre].finTime)/*如果作业在上一个作业完成之前到达*/
{
if(JCB[j].arrTime<
=JCB[pre].finTime&
&
JCB[j].priority>
JCB[current].priority)
current=j;
/*找出到达时间在上一个作业完成之前,优先权高的作业*/
}
else/*如果作业是在上一个作业完成之后到达*/
JCB[current].arrTime)
current=j;
/*找出比较早到达的一个*/
if(JCB[j].arrTime==JCB[current].arrTime)/*如果同时到达*/
if(JCB[j].priority>
JCB[current].priority)
current=j;
/*找出服务时间比较短的一个*/
returncurrent;
/*返回当前作业*/
voidruning(inti,inttimes,intpre,intstaTime,intendTime)
if(times==0)
JCB[i].begTime=JCB[i].arrTime;
JCB[i].finTime=JCB[i].begTime+JCB[i].serTime;
JCB[i].turTime=JCB[i].serTime;
JCB[i].wTuTime=1.0;
staTime=JCB[i].begTime;
else
if(JCB[i].arrTime>
JCB[pre].finTime)
JCB[i].begTime=JCB[i].arrTime;
else
JCB[i].begTime=JCB[pre].finTime;
JCB[i].turTime=JCB[i].finTime-JCB[i].arrTime;
JCB[i].wTuTime=JCB[i].turTime/JCB[i].serTime;
if(times==num-1)
endTime=JCB[i].finTime;
JCB[i].finish=1;
voidprint(inti,inttimes)
名称到达时间服务时间开始时间完成时间周转时间带权周转时间\n"
%9s%9d%9d%9d%9d%9d%9d\n"
JCB[i].name,JCB[i].arrTime,JCB[i].serTime,
JCB[i].begTime,JCB[i].finTime,JCB[i].turTime,JCB[i].wTuTime);
voidcheck()
intstaTime,endTime,sumTurTime=0.0,sumWTuTime=0.0,aveTurTime,aveWTuTime;
intcurrent=0,times=0,pre=0;
JCB[pre].finTime=0;
JCB[i].finish=0;
staTime,endTime,sumTurTime=0.0,sumWTuTime=0.0,aveTurTime,aveWTuTime;
current=0;
times=0;
pre=0;
-------------------------------------------------------------------------\n"
\n--HRRN-----------------------------------------------------------------\n"
for(times=0;
times<
times++)
current=HRN(pre);
runing(current,times,pre,staTime,endTime);
print(current,times);
pre=current;
{
sumTurTime+=JCB[i].turTime;
sumWTuTime+=JCB[i].wTuTime;
aveTurTime=sumTurTime/num;
aveWTuTime=sumWTuTime/num;
(计与平均值)%9d%9d%9d%9d\n"
NULL,sumTurTime,aveTurTime,aveWTuTime);
voidmain()
charagain;
do{
system("
/*清屏*/
pleaseinput4groupsofdatas:
input();
check();
Continue...(Y/N):
do{
aga
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 操作系统 实验 报告 批处理 系统 作业 调度