短作业优先算法Word文档下载推荐.docx
《短作业优先算法Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《短作业优先算法Word文档下载推荐.docx(6页珍藏版)》请在冰豆网上搜索。
charname[10];
floatarrivetime;
floatservicetime;
floatstarttime;
floatfinishtime;
floatzztime;
floatdqzztime;
};
sjfa[100];
voidinput(sjf*p,intN)
{inti;
printf("
intputtheprocess'
sname&
arrivetime&
servicetime:
\nforexmple:
a0100\n"
);
for(i=0;
i<
=N-1;
i++)
{
inputthe%dthprocess'
sinformation:
\n"
i+1);
scanf("
%s%f%f"
&
p[i].name,&
p[i].arrivetime,&
p[i].servicetime);
}
voidPrint(sjf*p,floatarrivetime,floatservicetime,floatstarttime,floatfinishtime,floatzztime,floatdqzztime,intN)
{intk;
printf("
runorder:
"
%s"
p[0].name);
for(k=1;
k<
N;
k++)
{printf("
-->
p[k].name);
}
\ntheprocess'
\nname\tarrive\tservice\tstart\tfinish\tzz\tdqzz\n"
for(k=0;
{printf("
%s\t%-.2f\t%-.2f\t%-.2f\t%-.2f\t%-.2f\t%-.2f\t\n"
p[k].name,p[k].arrivetime,p[k].servicetime,p[k].starttime,p[k].finishtime,p[k].zztime,p[k].dqzztime);
//paixu
voidsort(sjf*p,intN)
for(inti=0;
for(intj=0;
j<
=i;
j++)
if(p[i].arrivetime<
p[j].arrivetime)
{
sjftemp;
temp=p[i];
p[i]=p[j];
p[j]=temp;
}
//yunxingjieduan
voiddeal(sjf*p,floatarrivetime,floatservicetime,floatstarttime,floatfinishtime,float&
zztime,float&
dqzztime,intN)
{intk;
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;
voidsjff(sjf*p,intN)
{floatarrivetime=0,servicetime=0,starttime=0,finishtime=0,zztime=0,dqzztime=0;
sort(p,N);
for(intm=0;
m<
N-1;
m++)
{if(m==0)
p[m].finishtime=p[m].arrivetime+p[m].servicetime;
p[m].finishtime=p[m-1].finishtime+p[m].servicetime;
inti=0;
for(intn=m+1;
n<
n++)
{if(p[n].arrivetime<
=p[m].finishtime)
i++;
floatmin=p[m+1].servicetime;
intnext=m+1;
//m+1=n
for(intk=m+1;
m+i;
if(p[k+1].servicetime<
min)
{min=p[k+1].servicetime;
next=k+1;
temp=p[m+1];
p[m+1]=p[next];
p[next]=temp;
deal(p,arrivetime,servicetime,starttime,finishtime,zztime,dqzztime,N);
Print(p,arrivetime,servicetime,starttime,finishtime,zztime,dqzztime,N);
intmain()
{intN;
------短作业优先调度算法------\n"
inputtheprocess'
snumber:
scanf("
%d"
N);
input(a,N);
sjf*b=a;
sjf*c=a;
sjff(b,N);
system("
PAUSE"
4.运行结果
5.心得体会
课程设计结束了,在这次的课程设计中不仅检验了我所学习的知识,也培养了我如何去做一件事情,又如何完成一件事情的能力。
通过模拟进程的调度问题,更加深了我对于操作系统理论的理解,在自己的动手操作过程中,能够体会成功的喜悦和遇到问题自己解决的能力,对于我来说是一次提高,让自己多多的在实践中可以加深对理论的理解,也让我明白了以后应该如何更好,更高效的学习,在以后,我会更加努力。