先来先服务调度算法和短作业优先调度算法Word下载.docx
- 文档编号:21557385
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:10
- 大小:138.02KB
先来先服务调度算法和短作业优先调度算法Word下载.docx
《先来先服务调度算法和短作业优先调度算法Word下载.docx》由会员分享,可在线阅读,更多相关《先来先服务调度算法和短作业优先调度算法Word下载.docx(10页珍藏版)》请在冰豆网上搜索。
//周转时间
floatdqzztime;
//带权周转时间
};
structsjf//定义进程的结构体
fcfsa[100];
//定义先来先服务算法进程的最大数量
sjfb[100];
//定义短作业优先算法进程的最大数量
voidFinput(fcfs*p,intN)//输入函数
{
inti;
printf("
intputtheprocess'
sname&
arrivetime&
servicetime:
\nforexmple:
a0100\n"
);
for(i=0;
i<
=N-1;
i++)
{
printf("
inputthe%dthprocess'
sinformation:
\n"
i+1);
scanf("
%s%f%f"
&
p[i].name,&
p[i].arrivetime,&
p[i].servicetime);
}
}
//输出函数
voidFPrint(fcfs*p,floatarrivetime,floatservicetime,floatstarttime,floatfinishtime,floatzztime,floatdqzztime,intN)
intk;
\nrunorder:
%s"
p[0].name);
for(k=1;
k<
N;
k++)
-->
p[k].name);
\n\ntheprocess'
\nname\tarrive\tservice\tstart\tfinish\tzz\tdqzz\n\n"
for(k=0;
{
%s\t%-.2f\t%-.2f\t%-.2f\t%-.2f\t%-.2f\t%-.2f\t\n\n"
p[k].name,p[k].arrivetime,p[k].servicetime,p[k].starttime,p[k].finishtime,p[k].zztime,p[k].dqzztime);
voidFsort(fcfs*p,intN)//按到达时间排序,先到达排在前面
for(inti=0;
for(intj=0;
j<
=i;
j++)
if(p[i].arrivetime<
p[j].arrivetime)
{
fcfstemp;
temp=p[i];
p[i]=p[j];
p[j]=temp;
}
//运行结果
voidFdeal(fcfs*p,floatarrivetime,floatservicetime,floatstarttime,floatfinishtime,float&
zztime,float&
dqzztime,intN)
if(k==0)
{
p[k].starttime=p[k].arrivetime;
p[k].finishtime=p[k].arrivetime+p[k].servicetime;
}
else
{
p[k].starttime=p[k-1].finishtime;
//开始时间=前一个进程的完成时间
p[k].finishtime=p[k-1].finishtime+p[k].servicetime;
//结束时间=前一个进程的完成时间+现在进程的服务时间
p[k].zztime=p[k].finishtime-p[k].arrivetime;
//周转时间=完成时间-到达时间
p[k].dqzztime=p[k].zztime/p[k].servicetime;
//带权周转时间=周转时间/服务时间
//先来先服务
voidFCFS(fcfs*p,intN)
floatarrivetime=0,servicetime=0,starttime=0,finishtime=0,zztime=0,dqzztime=0;
Fsort(p,N);
Fdeal(p,arrivetime,servicetime,starttime,finishtime,zztime,dqzztime,N);
FPrint(p,arrivetime,servicetime,starttime,finishtime,zztime,dqzztime,N);
voidSinput(sjf*p,intN)//输入函数
a0100\n\n"
voidSPrint(sjf*p,floatarrivetime,floatservicetime,floatstarttime,floatfinishtime,floatzztime,floatdqzztime,intN)
\nname\tarrive\tservice\tstart\tfinish\tzz\tdqzz\n"
voidSsort(sjf*p,intN)//按短作业优先算法排序
for(inti=1;
for(intj=1;
if(p[i].servicetime<
p[j].servicetime)
sjftemp;
}
voidSdeal(sjf*p,floatarrivetime,floatservicetime,floatstarttime,floatfinishtime,float&
voidSJF(sjf*p,intN)
Ssort(p,N);
Sdeal(p,arrivetime,servicetime,starttime,finishtime,zztime,dqzztime,N);
SPrint(p,arrivetime,servicetime,starttime,finishtime,zztime,dqzztime,N);
voidmain()//主函数
while
(1)
intn;
选择哪种算法?
1、先来先服务算法(FCFS)2、段作业优先算法(SJF)\n"
%d"
n);
if(n==1)//先来先服务算法(FCFS)
intN;
printf("
------先来先服务调度算法------\n"
inputtheprocess'
snumber:
scanf("
N);
Finput(a,N);
FCFS(a,N);
if(n==2)//短作业优先算法(SJF)
intM;
------短作业优先调度算法------\n"
M);
Sinput(b,M);
SJF(b,M);
charo;
继续工作吗?
(Y/N):
"
o);
if(o=='
Y'
)
continue;
N'
break;
THANKS!
!
致力为企业和个人提供合同协议,策划案计划书,学习课件等等
打造全网一站式需求
欢迎您的下载,资料仅供参考
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 先来先 服务 调度 算法 作业 优先