作业调度实验报告
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
{
p=getpch(JCB);
printf("\n输入作业名:");
sca nf("%s",p->n ame);
getch();
p->reachtime=i;
printf("作业默认到达时间:%d",i);
sea nf("%d",&p-> needtime);
p->state二'W';
p->n ext二NULL;
if(ready==NULL) ready=q=p;
else{
q->n ext=p;
q=p;
}
void disp(JCB* q,i nt m)
//显示作业运行后的周转时间及带权
周转时间等
{
if(m==3)
//
显示高响应比算法调度作业后的运行情
况
{
prin tf("\n
作业%s正在运行,估计其运行情况
每个作业的最初状态总是等待W
3、对每种调度算法都要求打印每个作业幵始运行时刻、完成时刻、周转时
间、带权周转时间,以及这组作业的平均周转时间及带权平均周转时间
3) 流程图:
图一.先来先服务流程图
4)源程序:
#in elude <stdio.h>
#in elude <stdlib.h> #in elude vconi o.h> #defi ne getpeh(type) (type*)malloc(sizeof(type))
2
本实验要求用高级语言(C语言实验环境)编写和调试一个或多个作业调度 的模拟程序,了解作业调度在操作系统中的作用,以加深对作业调度算法的 理解
3
<
1)单道处理程序作业调度实验的源程序:zuoye.c
执行程序:zuoye.exe
2)实验分析:
1、由于在单道批处理系统中,作业一投入运行,它就占有计算机的一切资
**\t\t\n");
prin tf("\t\t\t\t
*******************************************
\t\n");
prin tf("\t\t\t\t\t
蓝小花\n");
prin tf("\t\t\t\t\t
完成日期:2006年11月17号");
prin tf("\n\n\n\t\t
T1+=p->cycletime;
T2+=p->cltime;
disp(p,m);//调用disp()函数,显示作业运行情 况
times+=p->needtime;
源直到作业完成为止,因此调度作业时不必考虑它所需要的资源是否得到
满足,它所占用的CPU时限等因素。
2、每个作业由一个作业控制块JCB表示,JCB可以包含如下信息:作业名、
提交时间、所需的运行时间、所需的资源、作业状态、链指针等等。作业
的状态可以是等待W(Wait)、运行R(Run)和完成F(Finish)三种状态之一
请输入任意键进入演示过程\n");
计算机学院软件四班\n");
prin tf("\n\n\n\t\t\t\t\t
getch();
void in ital()//
建立作业控制块队列
,先将其排成先来先服务的
模式队列
{
int i;
printf("\n输入作业数:");
sca nf("%d",&n);
for(i=0;i< n;i++)
(3)响应比高者优先算法:是在每次调度前都要计算所有被选作业(在后备队
列中)的响应比,然后选择响应比最高的作业执行。
2、编写并调度一个多道程序系统的作业调度模拟程序。
作业调度算法:采用 基于先来先服务的调度算法 。可以参考课本中的方法进
行设计。
对于多道程序系统,要假定系统中具有的各种资源及数量、调度作业时必须 考虑到每个作业的资源要求。
prin tf("周转时间:%f\n",q->cycletime);
prin tf("带权周转时间:%f\n",q->cltime);
getch();
}
}
void runnin g(JCB *p,i nt m)//运行作业
{
if(p==ready) //先将要运行的作业从队列中分
离出来
{
ready二p->n ext;
p->n ext二NULL;
else
{
q=ready;
while(q->next!=p) q=Biblioteka Baidu->next;
q->next=p->next;
}
p->starttime=times;//计算作业运行后的完成时间 周转时间等等
p->state='R'; p->finishtime=p->starttime+p->needtime; p->cycletime=(float)(p->finishtime-p->reachtime); p->cltime=(float)(p->cycletime/p->needtime);
实验二 作业调度
一
1、编写并调试一个单道处理系统的作业等待模拟程序。
作业调度算法:分别采用先来先服务(FCFS,最短作业优先(SJF)、响应
比高者优先(HRN的调度算法。
(1) 先来先服务算法:按照作业提交给系统的先后顺序来挑选作业,先提交 的先被挑选。
(2)最短作业优先算法: 是以进入系统的作业所提出的“执行时间”为标准, 总是优先选取执行时间最短的作业。
#defi ne NULL 0 int n;
float T1=0,T2=0;
int times=0;
struct jcb
//
作业控制块
作业名
作业到达时间
作业幵始时间
作业需要运行的时间
作业的响应比
作业完成时间
作业周转时间
作业带权周转时间 作业状态 结构体指针
初始化界面
*******************************************
getch();
}
else //显示先来先服务,最短作业优先算法调度后作业的
运行情况
{
prin tf("\n作业%s正在运行,估计其运行情况:\n",q-> name);
prin tf("幵始运行时刻:%d\n",q->starttime);
prin tf("完成时刻:%d\n",q->fi nishtime);
\n",q->n ame);
printf("
幵始运行时刻:%d\n",q->starttime);
printf("
完成时刻:
%d\n",q->fi nishtime);
printf("
周转时间:
%f\n",q->cycletime);
printf("
带权周转时间:%f\n",q->cltime);
printf("相应比:%f\n",q->super);
p=getpch(JCB);
printf("\n输入作业名:");
sca nf("%s",p->n ame);
getch();
p->reachtime=i;
printf("作业默认到达时间:%d",i);
sea nf("%d",&p-> needtime);
p->state二'W';
p->n ext二NULL;
if(ready==NULL) ready=q=p;
else{
q->n ext=p;
q=p;
}
void disp(JCB* q,i nt m)
//显示作业运行后的周转时间及带权
周转时间等
{
if(m==3)
//
显示高响应比算法调度作业后的运行情
况
{
prin tf("\n
作业%s正在运行,估计其运行情况
每个作业的最初状态总是等待W
3、对每种调度算法都要求打印每个作业幵始运行时刻、完成时刻、周转时
间、带权周转时间,以及这组作业的平均周转时间及带权平均周转时间
3) 流程图:
图一.先来先服务流程图
4)源程序:
#in elude <stdio.h>
#in elude <stdlib.h> #in elude vconi o.h> #defi ne getpeh(type) (type*)malloc(sizeof(type))
2
本实验要求用高级语言(C语言实验环境)编写和调试一个或多个作业调度 的模拟程序,了解作业调度在操作系统中的作用,以加深对作业调度算法的 理解
3
<
1)单道处理程序作业调度实验的源程序:zuoye.c
执行程序:zuoye.exe
2)实验分析:
1、由于在单道批处理系统中,作业一投入运行,它就占有计算机的一切资
**\t\t\n");
prin tf("\t\t\t\t
*******************************************
\t\n");
prin tf("\t\t\t\t\t
蓝小花\n");
prin tf("\t\t\t\t\t
完成日期:2006年11月17号");
prin tf("\n\n\n\t\t
T1+=p->cycletime;
T2+=p->cltime;
disp(p,m);//调用disp()函数,显示作业运行情 况
times+=p->needtime;
源直到作业完成为止,因此调度作业时不必考虑它所需要的资源是否得到
满足,它所占用的CPU时限等因素。
2、每个作业由一个作业控制块JCB表示,JCB可以包含如下信息:作业名、
提交时间、所需的运行时间、所需的资源、作业状态、链指针等等。作业
的状态可以是等待W(Wait)、运行R(Run)和完成F(Finish)三种状态之一
请输入任意键进入演示过程\n");
计算机学院软件四班\n");
prin tf("\n\n\n\t\t\t\t\t
getch();
void in ital()//
建立作业控制块队列
,先将其排成先来先服务的
模式队列
{
int i;
printf("\n输入作业数:");
sca nf("%d",&n);
for(i=0;i< n;i++)
(3)响应比高者优先算法:是在每次调度前都要计算所有被选作业(在后备队
列中)的响应比,然后选择响应比最高的作业执行。
2、编写并调度一个多道程序系统的作业调度模拟程序。
作业调度算法:采用 基于先来先服务的调度算法 。可以参考课本中的方法进
行设计。
对于多道程序系统,要假定系统中具有的各种资源及数量、调度作业时必须 考虑到每个作业的资源要求。
prin tf("周转时间:%f\n",q->cycletime);
prin tf("带权周转时间:%f\n",q->cltime);
getch();
}
}
void runnin g(JCB *p,i nt m)//运行作业
{
if(p==ready) //先将要运行的作业从队列中分
离出来
{
ready二p->n ext;
p->n ext二NULL;
else
{
q=ready;
while(q->next!=p) q=Biblioteka Baidu->next;
q->next=p->next;
}
p->starttime=times;//计算作业运行后的完成时间 周转时间等等
p->state='R'; p->finishtime=p->starttime+p->needtime; p->cycletime=(float)(p->finishtime-p->reachtime); p->cltime=(float)(p->cycletime/p->needtime);
实验二 作业调度
一
1、编写并调试一个单道处理系统的作业等待模拟程序。
作业调度算法:分别采用先来先服务(FCFS,最短作业优先(SJF)、响应
比高者优先(HRN的调度算法。
(1) 先来先服务算法:按照作业提交给系统的先后顺序来挑选作业,先提交 的先被挑选。
(2)最短作业优先算法: 是以进入系统的作业所提出的“执行时间”为标准, 总是优先选取执行时间最短的作业。
#defi ne NULL 0 int n;
float T1=0,T2=0;
int times=0;
struct jcb
//
作业控制块
作业名
作业到达时间
作业幵始时间
作业需要运行的时间
作业的响应比
作业完成时间
作业周转时间
作业带权周转时间 作业状态 结构体指针
初始化界面
*******************************************
getch();
}
else //显示先来先服务,最短作业优先算法调度后作业的
运行情况
{
prin tf("\n作业%s正在运行,估计其运行情况:\n",q-> name);
prin tf("幵始运行时刻:%d\n",q->starttime);
prin tf("完成时刻:%d\n",q->fi nishtime);
\n",q->n ame);
printf("
幵始运行时刻:%d\n",q->starttime);
printf("
完成时刻:
%d\n",q->fi nishtime);
printf("
周转时间:
%f\n",q->cycletime);
printf("
带权周转时间:%f\n",q->cltime);
printf("相应比:%f\n",q->super);