操作系统实验四磁盘调度算法实验报告Word下载.doc
《操作系统实验四磁盘调度算法实验报告Word下载.doc》由会员分享,可在线阅读,更多相关《操作系统实验四磁盘调度算法实验报告Word下载.doc(15页珍藏版)》请在冰豆网上搜索。
![操作系统实验四磁盘调度算法实验报告Word下载.doc](https://file1.bdocx.com/fileroot1/2022-10/4/cd359797-9b22-4731-ae4a-565b8cc339ac/cd359797-9b22-4731-ae4a-565b8cc339ac1.gif)
s=init;
sum=0;
printf("
\nFCFS调度结果:
\n"
);
{
//被访问的磁道号
printf("
%3d\t"
b[i]);
//计算移动距离
temp=abs(s-b[i]);
printf("
%3d\n"
temp);
sum+=temp;
s=b[i];
}
平均寻道长度:
%.1f%%\n\n"
sum*1.0/n);
}
//最短寻道法
voidSSTF(inta[],intn,intinit)
inti,j,s,sum=0,p,temp=0;
\nSSTF调度结果:
for(i=n-1;
i>
=0;
i--)
s=b[0];
p=0;
for(j=0;
j<
=i;
j++)
if(abs(b[j]-init)<
abs(s-init))
{
s=b[j];
p=j;
}
b[p]=b[i];
s);
temp=abs(s-init);
sum+=temp;
init=s;
//扫描算法
voidSCAN(inta[],intn,intinit)
inti,j,s,sum=0,p,biaoji,temp=0,k1;
\n*****************SCAN扫描算法******************\n"
1.移动臂向磁道号减少的方向2.移动臂向磁道号增加的方向\n"
*******************************************************\n"
请在下面输入您的选择:
"
scanf("
%d"
&
k1);
switch(k1)
case1:
//磁道号减小方向
printf("
\nSCAN(磁道号减少的方向)调度结果:
for(i=n-1;
{
biaoji=0;
for(j=0;
if(b[j]-init<
0)
{
biaoji=1;
p=j;
break;
}
if(biaoji==1)
{
s=b[p];
for(j=0;
if(b[j]<
init&
&
init-b[j]<
init-s)
{
s=b[j];
p=j;
}
b[p]=b[i];
//被访问的磁道号
printf("
//计算移动距离
temp=init-s;
sum+=temp;
init=s;
}
else
s=b[0];
if(b[j]-init<
=s-init)
temp=abs(init-s);
}
break;
case2:
//磁道号增加方向
\nSCAN(磁道号增加方向)调度结果:
if(b[j]-init>
{
biaoji=1;
p=j;
break;
}
if(b[j]>
b[j]-init<
s-init)
temp=s-init;
sum+=s-init;
if(init-b[j]<
=init-s)
default:
\n请输入1-2之间的整数!
sum*1.0/n);
//循环算法
voidCSCAN(inta[],intn,intinit)
inttemp;
intk=1;
intl,r,d;
inti,j,sum=0;
intinit_temp=init;
for(j=i+1;
{
if(b[i]>
b[j])//对磁道号进行从小到大排列
temp=b[i];
b[i]=b[j];
b[j]=temp;
}
if(b[n-1]<
=init)//判断整个数组里的数是否都小于当前磁道号
{
\nCSCAN调度结果:
for(i=0;
//被访问的磁道号
//计算移动距离
abs(init_temp-b[i]));
init_temp=b[i];
sum=init-b[0]+b[n-1];
//计算移动距离
elseif(b[0]>
=init)//判断整个数组里的数是否都大于当前磁道号
sum=b[n-1]-init;
else
while(b[k]<
init)//逐一比较以确定K值
k++;
l=k-1;
r=k;
\n*************循环算法**************\n"
***********************************\n"
scanf("
d);
switch(d)
//磁道号减小方向
for(j=l;
j>
j--)
//被访问的磁道号
printf("
b[j]);
//计算移动距离
abs(init_temp-b[j]));
init_temp=b[j];
for(j=n-1;
=r;
init_temp=