操作系统实验四磁盘调度算法实验报告.doc

上传人:b****1 文档编号:152872 上传时间:2022-10-04 格式:DOC 页数:15 大小:273KB
下载 相关 举报
操作系统实验四磁盘调度算法实验报告.doc_第1页
第1页 / 共15页
操作系统实验四磁盘调度算法实验报告.doc_第2页
第2页 / 共15页
操作系统实验四磁盘调度算法实验报告.doc_第3页
第3页 / 共15页
操作系统实验四磁盘调度算法实验报告.doc_第4页
第4页 / 共15页
操作系统实验四磁盘调度算法实验报告.doc_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

操作系统实验四磁盘调度算法实验报告.doc

《操作系统实验四磁盘调度算法实验报告.doc》由会员分享,可在线阅读,更多相关《操作系统实验四磁盘调度算法实验报告.doc(15页珍藏版)》请在冰豆网上搜索。

操作系统实验四磁盘调度算法实验报告.doc

实验四实验报告

实验源码:

#include"stdio.h"

#include

#include

inta[20];

inti,n,k,init,flag1=1;

//先来先服务

voidFCFS(inta[],intn,intinit)

{

inti,s,sum,temp=0;

intb[20];

for(i=0;i

b[i]=a[i];

s=init;

sum=0;

printf("\nFCFS调度结果:

\n");

for(i=0;i

{

//被访问的磁道号

printf("%3d\t",b[i]);

//计算移动距离

temp=abs(s-b[i]);

printf("%3d\n",temp);

sum+=temp;

s=b[i];

}

printf("平均寻道长度:

%.1f%%\n\n",sum*1.0/n);

}

//最短寻道法

voidSSTF(inta[],intn,intinit)

{

inti,j,s,sum=0,p,temp=0;

intb[20];

for(i=0;i

b[i]=a[i];

printf("\nSSTF调度结果:

\n");

for(i=n-1;i>=0;i--)

{

s=b[0];

p=0;

for(j=0;j<=i;j++)

if(abs(b[j]-init)

{

s=b[j];

p=j;

}

b[p]=b[i];

//被访问的磁道号

printf("%3d\t",s);

//计算移动距离

temp=abs(s-init);

printf("%3d\n",temp);

sum+=temp;

init=s;

}

printf("平均寻道长度:

%.1f%%\n\n",sum*1.0/n);

}

//扫描算法

voidSCAN(inta[],intn,intinit)

{

inti,j,s,sum=0,p,biaoji,temp=0,k1;

intb[20];

for(i=0;i

b[i]=a[i];

printf("\n*****************SCAN扫描算法******************\n");

printf("1.移动臂向磁道号减少的方向2.移动臂向磁道号增加的方向\n");

printf("*******************************************************\n");

printf("请在下面输入您的选择:

");

scanf("%d",&k1);

switch(k1)

{

case1:

//磁道号减小方向

printf("\nSCAN(磁道号减少的方向)调度结果:

\n");

for(i=n-1;i>=0;i--)

{

biaoji=0;

for(j=0;j<=i;j++)

if(b[j]-init<0)

{

biaoji=1;

p=j;

break;

}

if(biaoji==1)

{

s=b[p];

for(j=0;j<=i;j++)

if(b[j]

{

s=b[j];

p=j;

}

b[p]=b[i];

//被访问的磁道号

printf("%3d\t",s);

//计算移动距离

temp=init-s;

printf("%3d\n",temp);

sum+=temp;

init=s;

}

else

{

s=b[0];

for(j=0;j<=i;j++)

if(b[j]-init<=s-init)

{

s=b[j];

p=j;

}

b[p]=b[i];

//被访问的磁道号

printf("%3d\t",s);

//计算移动距离

temp=abs(init-s);

printf("%3d\n",temp);

sum+=temp;

init=s;

}

}

break;

case2:

//磁道号增加方向

printf("\nSCAN(磁道号增加方向)调度结果:

\n");

for(i=n-1;i>=0;i--)

{

biaoji=0;

for(j=0;j<=i;j++)

if(b[j]-init>0)

{

biaoji=1;

p=j;

break;

}

if(biaoji==1)

{

s=b[p];

for(j=0;j<=i;j++)

if(b[j]>init&&b[j]-init

{

s=b[j];

p=j;

}

b[p]=b[i];

//被访问的磁道号

printf("%3d\t",s);

//计算移动距离

temp=s-init;

printf("%3d\n",temp);

sum+=s-init;

init=s;

}

else

{

s=b[0];

for(j=0;j<=i;j++)

if(init-b[j]<=init-s)

{

s=b[j];

p=j;

}

b[p]=b[i];

//被访问的磁道号

printf("%3d\t",s);

//计算移动距离

temp=abs(init-s);

printf("%3d\n",temp);

sum+=temp;

init=s;

}

}

break;

default:

printf("\n请输入1-2之间的整数!

\n");

break;

}

printf("平均寻道长度:

%.1f%%\n\n",sum*1.0/n);

}

//循环算法

voidCSCAN(inta[],intn,intinit)

{

inttemp;

intk=1;

intl,r,d;

intb[20];

inti,j,sum=0;

intinit_temp=init;

for(i=0;i

b[i]=a[i];

for(i=0;i

{

for(j=i+1;j

{

if(b[i]>b[j])//对磁道号进行从小到大排列

{

temp=b[i];

b[i]=b[j];

b[j]=temp;

}

}

}

if(b[n-1]<=init)//判断整个数组里的数是否都小于当前磁道号

{

printf("\nCSCAN调度结果:

\n");

for(i=0;i

{

//被访问的磁道号

printf("%3d\t",b[i]);

//计算移动距离

printf("%3d\n",abs(init_temp-b[i]));

init_temp=b[i];

}

sum=init-b[0]+b[n-1];//计算移动距离

}

elseif(b[0]>=init)//判断整个数组里的数是否都大于当前磁道号

{

printf("\nCSCAN调度结果:

\n");

for(i=0;i

{

//被访问的磁道号

printf("%3d\t",b[i]);

//计算移动距离

printf("%3d\n",abs(init_temp-b[i]));

init_temp=b[i];

}

sum=b[n-1]-init;//计算移动距离

}

else

{

while(b[k]

{

k++;

}

l=k-1;

r=k;

printf("\n*************循环算法**************\n");

printf("1.移动臂向磁道号减少的方向2.移动臂向磁道号增加的方向\n");

printf("***********************************\n");

printf("请在下面输入您的选择:

");

scanf("%d",&d);

printf("\nCSCAN调度结果:

\n");

switch(d)

{

case1:

//磁道号减小方向

for(j=l;j>=0;j--)

{

//被访问的磁道号

printf("%3d\t",b[j]);

//计算移动距离

printf("%3d\n",abs(init_temp-b[j]));

init_temp=b[j];

}

for(j=n-1;j>=r;j--)

{

//被访问的磁道号

printf("%3d\t",b[j]);

//计算移动距离

printf("%3d\n",abs(init_temp-b[j]));

init_temp=

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 党团建设

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1