操作系统进程调度C语言代码Word格式文档下载.docx
- 文档编号:16403782
- 上传时间:2022-11-23
- 格式:DOCX
- 页数:24
- 大小:18.92KB
操作系统进程调度C语言代码Word格式文档下载.docx
《操作系统进程调度C语言代码Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《操作系统进程调度C语言代码Word格式文档下载.docx(24页珍藏版)》请在冰豆网上搜索。
scanf("
%d"
&
a);
\n"
switch(a)
{
case1:
fcfs();
break;
case2:
sjf();
case3:
sjp();
case4:
yxj();
default:
break;
}
if(a<
0&
&
a>
4)break;
}
voidsjp()
inti,j,n,min,px,sjp,time;
floatsum1,sum2;
boolflag=true;
\t请输入有n个进程(0<
n<
=50):
n);
while(n>
50||n<
=0)
printf("
n\t请重新输入:
"
scanf("
\t请输入时间片大小(0<
sjp):
sjp);
while(sjp<
structGzuo{
intid;
//进程名字
intdt;
//到达时刻
intst;
//服务时间
intwct;
//完成时刻
intst2;
//标志是否完成
floatzt;
//周转时间
floatdczt;
//带权周转时间
};
Gzuoa[N];
for(i=0;
i<
n;
i++)
a[i].id=i+1;
\t到达时间:
a[i].dt);
\t服务时间:
a[i].st);
a[i].st2=a[i].st;
for(j=n-1;
j>
=0;
j--)
{
for(i=0;
j;
{
if(a[i].dt>
a[i+1].dt)
{
min=a[i].dt;
a[i].dt=a[i+1].dt;
a[i+1].dt=min;
min=a[i].st;
a[i].st=a[i+1].st;
a[i+1].st=min;
min=a[i].st2;
a[i].st2=a[i+1].st2;
a[i+1].st2=min;
min=a[i].id;
a[i].id=a[i+1].id;
a[i+1].id=min;
}
}
time=a[0].dt;
//printf("
赋值后TIME值为:
%d\n"
time);
min=0;
while(min<
n)
flag=true;
for(i=0;
if(a[i].st2>
a[i].dt<
=time)
flag=false;
if(a[i].st2>
0)
if(a[i].dt<
{
//printf("
当前a[%d].st2值为:
i,a[i].st2);
a[i].st2=a[i].st2-sjp;
运算后当前a[%d].st2值为:
当前TIME值为:
time=time+sjp;
增加之后TIME值为:
if(a[i].st2<
{
a[i].wct=time+a[i].st2;
a[i].zt=(float)(a[i].wct-a[i].dt);
a[i].dczt=a[i].zt/a[i].st;
min++;
}
}elseif(flag)
for(i=0;
{
if(a[i].st2>
a[i].dt>
time)
{
time=a[i].dt;
break;
}
}
}
\t1、按id号依次输出\n"
\t2、按完成顺序依次输出\n"
\n\t请选择输出顺序:
px);
\nid:
到达时间\t服务时间\t完成时间\t周转时间\t带权周转时间\n"
sum1=0;
sum2=0;
switch(px)
{
for(i=0;
{
printf("
%d:
%d\t\t%d\t\t%d\t\t%.0f\t\t%.2f\n"
a[i].id,a[i].dt,a[i].st,a[i].wct,a[i].zt,a[i].dczt);
sum1+=a[i].zt;
sum2+=a[i].dczt;
printf("
\n平均周转时间:
%.2f\n"
sum1/n);
\n平均带权周转时间:
%.2f\n\n"
sum2/n);
break;
for(j=0;
j<
j++)
for(i=0;
if(a[i].id==j+1)
printf("
sum1+=a[i].zt;
sum2+=a[i].dczt;
voidfcfs()
inti,j,n,min,px;
//服务时间
a[0].wct=a[0].st+a[0].dt;
a[0].zt=(float)a[0].st;
a[0].dczt=a[0].zt/a[0].st;
for(i=1;
if(a[i].dt>
a[i-1].wct)
a[i].wct=a[i].dt+a[i].st;
a[i].zt=(float)a[i].st;
a[i].dczt=a[i].zt/a[i].st;
else
a[i].wct=a[i-1].wct+a[i].st;
a[i].zt=(float)(a[i].wct-a[i].dt);
}
voidsjf()
intb=0,z;
\n\t\t请输入有n个进程(0<
%d/n"
min=a[0].dt;
if(a[i].dt==a[i+1].dt&
a[i].st>
a[i+1].st)
a[0].wct);
elseb=b+1;
for(j=b-1;
=1;
for(i=1;
if(a[i].st>
a[i+1].st)
}
for(j=i+1,b=j;
if(a[j].dt>
a[i].wct);
elseb=b+1;
for(j=b-1;
=i;
for(z=i;
z<
z++)
if(a[z].st>
a[z+1].st)
min=a[z].dt;
a[z].dt=a[z+1].dt;
a[z+1].dt=min;
min=a[z].st;
a[z].st=a[z+1].st;
a[z+1].st=min;
min=a[i].id;
a[i].id=a[i+1].id;
a[i+1].id=min;
}
\n\t请选择输出顺序\n"
{for(i=0;
if(a[i].id==j+1)
voidyxj()
intyxj;
//优先级
\t优先级:
a[i].yxj);
min=a[i].yxj;
a[i].yxj=a[i+1].yxj;
a[i+1].yxj=min;
a[i].yxj<
a[i+1].yxj)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 操作系统 进程 调度 语言 代码