磁盘调度算法实验报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

磁盘调度算法实验报告文档

1.依次输入9个磁道数:40 90 170 38 110 20 144 48 59

2.选择调度算法:

先来先服务算法访问顺序和平均寻道长度:

最短寻道时间优先的访问顺序和平均寻道长度:

扫描算法的磁道访问顺序和平均寻道长度:1.移动壁由里向外

2.移动壁由外向里

循环算法的磁道访问顺序和平均寻道长度:1.移动壁由里向外

2.移动壁由外向里

源代码为:

#include

#include

void FCFS(int b[],int n,int init) //先来先服务{

int i,s,sum;

int a[20];

for(i=0;i

a[i]=b[i];

s=init;

sum=0;

for(i=0;i

{

printf("第%d次访问的磁道:%d\n",i+1,a[i]);

sum+=abs(s-a[i]);

s=a[i];

}

printf("平均寻道长度:%f\n",sum*1.0/n);

}

void SSTF(int b[],int n,int k) //最短寻道法

{

int i,j,s,sum=0,p;

int a[20];

for(i=0;i

a[i]=b[i];

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

{

s=a[0];

p=0;

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

if(abs(a[j]-k)

{

s=a[j];

p=j;

}

a[p]=a[i];

printf("第%d次访问的磁道:%d\n",n-i,s);

sum+=abs(s-k);

k=s;

}

printf("平均寻道长度:%f\n",sum*1.0/n);

}

void SCAN1(int b[],int n,int k) //扫描算法{

int i,j,s,sum=0,p,biaoji;

int a[20];

for(i=0;i

a[i]=b[i];

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

{

biaoji=0;

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

if(a[j]-k<0)

{

biaoji=1;

p=j;

break;

}

if(biaoji==1)

{

s=a[p];

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

if(a[j]

{

s=a[j];

p=j;

}

a[p]=a[i];

printf("第%d次访问的磁道:%d\n",n-i,s);

sum+=k-s;

k=s;

}

else

{

s=a[0];

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

if(a[j]-k<=s-k)

{

s=a[j];

p=j;

}

a[p]=a[i];

printf("第%d次访问的磁道:%d\n",n-i,s);

sum+=abs(k-s);

k=s;

}

}

printf("平均寻道长度:%f\n",sum*1.0/n);

}

void SCAN2(int b[],int n,int k) //循环算法

{

int i,j,s,sum=0,p,biaoji;

int a[20];

for(i=0;i

a[i]=b[i];

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

{

biaoji=0;

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

if(a[j]-k>0)

{

biaoji=1;

p=j;

break;

}

if(biaoji==1)

{

s=a[p];

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

if(a[j]>k&&a[j]-k

{

s=a[j];

p=j;

}

a[p]=a[i];

printf("第%d次访问的磁道:%d\n",n-i,s);

sum+=s-k;

k=s;

}

else

{

s=a[0];

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

if(k-a[j]<=k-s)

{

s=a[j];

p=j;

}

a[p]=a[i];

printf("第%d次访问的磁道:%d\n",n-i,s);

sum+=abs(k-s);

k=s;

}

}

printf("平均寻道长度:%f\n",sum*1.0/n);

}

void C_SCAN(int array[],int m)

{

int temp;

int k=1;

int now,l,r,d;

int i,j,sum=0;

int avg;

for(i=0;i

{

for(j=i+1;j

相关文档
最新文档