操作系统作业调度.docx
《操作系统作业调度.docx》由会员分享,可在线阅读,更多相关《操作系统作业调度.docx(13页珍藏版)》请在冰点文库上搜索。
![操作系统作业调度.docx](https://file1.bingdoc.com/fileroot1/2023-5/7/5ec62bce-ea21-42a5-97a6-21d70302fa2c/5ec62bce-ea21-42a5-97a6-21d70302fa2c1.gif)
操作系统作业调度
课程实验报告
专业年级
课程名称操作系统
指导教师
学生姓名
学号
实验日期
实验地点
实验成绩
教务处制
20年月日
实验项目
名称
作业调度
实验
目的及要求
(二)实验目标
1、加深作业概念的理解;
2、掌握选择作业调度算法的准则;
3、掌握作业调度算法。
(三)实验要求
1、编写程序完成实验内容;
2、对测试数据进行分析;
3、撰写实验报告。
实验
内容
1、设计可用于该实验的作业控制块;
2、动态或静态创建多个作业;
3、模拟先来先服务调度算法和短作业优先调度算法。
4、调度所创建的作业并显示调度结果(要求至少显示出各作业的到达时间,服务时间,开始时间,完成时间,周转时间和带权周转时间);
5、比较两种调度算法的优劣
实验步骤
1、该实验的作业控制块为:
structjcb//作业控制块
{
charname[10];//作业名
intreachtime;//作业到达时间
intstarttime;//作业开始时间
intneedtime;//作业需要运行的时间
intfinishtime;//作业完成时间
floatcycletime;//作业周转时间
floatcltime;//作业带权周转时间
charstate;//作业状态
structjcb*next;//结构体指针
}
2、动态或静态创建多个作业:
本实验创建了3个作业。
作业创建的代码如下:
voidinital()//建立作业控制块队列
{inti;
printf("\n输入作业数:
");
scanf("%d",&n);
for(i=0;i{
p=getpch(JCB);
printf("\n输入作业名:
");
scanf("%s",p->name);
getch();
p->reachtime=i;
printf("作业默认到达时间:
%d",i);
printf("\n输入作业需运行时间:
");
scanf("%d",&p->needtime);
p->state='W';
p->next=NULL;
if(ready==NULL)
ready=q=p;
else{
q->next=p;
q=p;
}
}
}
3、模拟先来先服务调度算法和短作业优先调度算法:
先来先服务算法:
voidfcfs(intm)
{inti,iden;
system("cls");
inital();
for(i=0;ip=ready;iden=1;
do{
if(p->state=='W'&&p->reachtime<=times)
iden=0;
if(iden)p=p->next;
}while(p!
=NULL&&iden);
if(iden)
{
i--;
printf("\n没有满足要求的进程,需等待");
times++;
if(times>100){printf("\n时间过长");getch();
}
}
else{
running(p,m);//调用running()函数
}
}
final();//调用running()函数
}
短作业优先调度算法:
voidsjf(intm){
JCB*min;
inti,iden;
system("cls");
inital();
for(i=0;ip=min=ready;iden=1;
do{
if(p->state=='W'&&p->reachtime<=times)
if(iden){
min=p;iden=0;
}
elseif(p->needtimeneedtime)min=p;
p=p->next;
}while(p!
=NULL);
if(iden){
i--;
times++;
if(times>100)
{printf("\nruntimeistoolong...error");
getch();
}
}
else{
running(min,m);//调用running()函数
}
}
final();//调用running()函数
}
4、调度所创建的作业并显示调度结果如下:
算法1先来先服务算法:
算法2最短优先算法:
5.比较两种调度算法的优劣:
两种算法所使用的数据如下:
作业名
作业所需的运行时间
yyyy
4
zzzz
6
从上面算法的运行结果看出:
先来先服务算法中:
三个作业的的平均周转时间为:
6.500000
三个作业的的平均带权周转时间为:
1.250000
最短优先算法中:
三个作业的的平均周转时间为:
49.500000
三个作业的的平均带权周转时间为:
10.000000
从三组数据的分析可知:
先来先服务算法比最短优先算法的在作业运行效率方面较好。
实验环境
计算机Window7MicrosoftVisualC++6.0、“记事本”程序
实验结果与
分析
该实验程序的结果的截图如下:
1、开始界面:
2、算法选择:
3、算法1先来先服务:
4、算法1下作业的运行情况:
5、算法2最短作业优先:
6、算法2下作业的运行情况:
本实验用三组数据得出了先来先服务算法比最短优先算法更有效,使用不同的数据得出的结论可能会有偏差。
教师评语
注:
可根据实际情况加页