下载此文档

队列调度算法.docx


文档分类:IT计算机 | 页数:约5页 举报非法文档有奖
1/5
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/5 下载此文档
文档列表 文档介绍
一、 实验设计题目
调度算法,要求用先来先服务(FCFS)和段作业优先(SJF)算法实现。
二、 设计思路
1、 先来先服务调度算法(FCFS)
先来先服务调度算法是一种简单的调度算法,该算法可以用于作业调度也 可以用于进程调度。作 0
// 2 1
// 3 2
// 4 3
〃以数组形式保存如下
Job_type job[]={l,0,66,2,l,100,3,2,88,4,3,100};
void load() { int i;
printf("输入作业名称:\n");
for(i=0;ivSIZE;i++) scanf("%d,%d,%d",&job[i].no,&job[i].tb,&job[i].tr);
printf(" 作业名到达时间运行时间\n"); 〃载入作业 for(i=0;ivSIZE;i++)
printf("\t%d\t%d\t%d\n",job[i].no,job[i].tb,job[i].tr);
}
void fcfs() //调用 FCFS 算法
{ int i,j,t=O,tw=O,tt=O; 〃t为完成时间,tw为等待时间,tt为周转时间 for(i=0;ivSIZE-l;i++) //判断作业开始时间的大小,按照从小到大的排列
for(j=i+l;jvSIZE;j++)
if(job[i].tb>job[j].tb) // i作业的tb大于j作业的tb,则i和j调换位置
{x=job[i];
job[i]=job[j];
job[j]=x;
}
printf("FCFS 调度结果:\n");
printf("开始时间作业号到达时间运行时间完成时间等待时间周转时间
\n");
for(i=0;i<SIZE;i++) //计算每个作业的各个时间
{
printf(“ %d",t); //t是前一个作业的完成时间
t=t+job[i].tr; //i作业完成时间=前一个作业完成时间+i作业的运行时间 tw=t-job[i].tb-job[i].tr; //i作业等待时间=i完成时间-i运行时间 tt=t-job[i].tb; //i周转时间=i完成时间-i开始时间 printf("\t%d\t%d\t%d\t%d\t%d \t%d\n",job[i].no,job[i].tb,job[i].tr,t,tw,tt);//对应输出
}
void sjf() //短作业调度函数
{ int i,j,t=O,tw=O; 〃t为总时间,tw为等待时间
for(i=0;ivSIZE-l;i++) //判断每个作业的运行时间长短,按小到大排列
for(j=i+l;jvSIZE;j++)
if(job[i].tr>job[j].tr) //i作业的tr大于j作业的tr,则调换位置
{x=job[i];
job[i]=job[j];
job[j]=x;
}
printf(”短作业优先调度结果:\n");
printf("开始时间作业号 到达时间运行时间总时间等待时间\n");
for(i=0;i<SIZE;i++) //计算每个作业的各个时间
{
printf(“ %d",t); //t为上一个作业的总时间
t=t+job[i].tr; /

队列调度算法 来自淘豆网www.taodocs.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数5
  • 收藏数0 收藏
  • 顶次数0
  • 上传人zhuwo11
  • 文件大小22 KB
  • 时间2022-05-29