操作系统磁盘算法 2Word格式.docx

上传人:b****6 文档编号:21933494 上传时间:2023-02-01 格式:DOCX 页数:12 大小:104.84KB
下载 相关 举报
操作系统磁盘算法 2Word格式.docx_第1页
第1页 / 共12页
操作系统磁盘算法 2Word格式.docx_第2页
第2页 / 共12页
操作系统磁盘算法 2Word格式.docx_第3页
第3页 / 共12页
操作系统磁盘算法 2Word格式.docx_第4页
第4页 / 共12页
操作系统磁盘算法 2Word格式.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

操作系统磁盘算法 2Word格式.docx

《操作系统磁盘算法 2Word格式.docx》由会员分享,可在线阅读,更多相关《操作系统磁盘算法 2Word格式.docx(12页珍藏版)》请在冰豆网上搜索。

操作系统磁盘算法 2Word格式.docx

先来先服务:

最短寻道时间优先:

扫描算法:

循环算法:

代码:

#include<

stdio.h>

math.h>

stdlib.h>

voidFCFS(intb[],intn,intinit)//先来先服务

{

inti,s,sum,t;

inta[20];

for(i=0;

i<

n;

i++)//数组赋值

a[i]=b[i];

s=init;

//当前磁道

sum=0;

i++)

{

t=abs(s-a[i]);

//绝对值

printf("

第%d次访问的磁道:

%d移动距离%d\n"

i+1,a[i],t);

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

s=a[i];

}

printf("

平均寻道长度:

%f\n"

sum*1.0/n);

}

voidSSTF(intb[],intn,intk)//最短寻道法

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

for(i=n-1;

i>

=0;

i--)

s=a[0];

p=0;

for(j=1;

j<

=i;

j++)//求最短值

if(abs(a[j]-k)<

abs(s-k))

{

s=a[j];

p=j;

}

a[p]=a[i];

%d移动距离:

%d\n"

n-i,s,abs(s-k));

sum+=abs(s-k);

k=s;

voidSCAN1(intb[],intn,intk)//扫描算法

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

biaoji=0;

for(j=0;

j++)

if(a[j]-k<

0)

biaoji=1;

p=j;

break;

if(biaoji==1)

s=a[p];

if(a[j]<

k&

&

k-a[j]<

k-s)

n-i,s,abs(k-s));

sum+=k-s;

else

s=a[0];

for(j=0;

if(a[j]-k<

=s-k)

{

s=a[j];

p=j;

}

a[p]=a[i];

printf("

sum+=abs(k-s);

voidSCAN2(intb[],intn,intk)

if(a[j]-k>

if(a[j]>

a[j]-k<

s-k)

sum+=s-k;

if(k-a[j]<

=k-s)

voidC_SCAN(intarray[],intm,intn)//循环算法

inttemp;

intk=0;

intnow,l,r,d;

inti,j,sum=0;

floatavg;

m;

for(j=i+1;

if(array[i]>

array[j])//对磁道号进行从小到大排列

temp=array[i];

array[i]=array[j];

array[j]=temp;

请输入当前的磁道号:

"

);

scanf("

%d"

&

now);

if(array[m-1]<

=now)//判断整个数组里的数是否都小于当前磁道号

{

CSCAN调度结果:

"

for(i=0;

{

%d"

array[i]);

//将磁道号从小到大输出

sum=now-array[0]+array[m-1];

//计算移动距离

elseif(array[0]>

=now)//判断整个数组里的数是否都大于当前磁道号

sum=array[m-1]-now;

else

while(array[k]<

now)//逐一比较以确定K值

k++;

l=k-1;

r=k;

*************循环算法**************\n"

0.移动臂由外向里1.移动臂由里向外\n"

***********************************\n"

请在下面输入您的选择:

scanf("

d);

if(d==0)

for(j=l;

j>

j--)

printf("

array[j]);

for(j=m-1;

=r;

sum=2*(array[m-1]-array[0])-array[r]+now;

}//磁道号减小方向

for(j=r;

r;

sum=2*(array[m-1]-array[0])+array[r-1]-now;

}//磁道号增加方向

avg=sum*1.0/m;

\n平均寻道长度:

%f\n"

avg);

voidmain()

inta[20]={55,58,39,18,90,160,150,38,184};

inti,n=9,k,k1,init;

/*printf("

请输入需要访问的磁道总数:

n);

*/

需要访问的磁道%d:

i+1,a[i]);

请输入指针所在磁道:

init);

k=1;

while(k)

*********************************************\n"

磁盘调度算法\n"

1.先来先服务(FCFS)2.最短寻道时间优先(SSTF)\n"

3.扫描算法(SCAN)4.循环算法(C-SCAN)\n"

k);

switch(k)

case1:

FCFS(a,n,init);

break;

case2:

SSTF(a,n,init);

case3:

k1=1;

while(k1)

*************扫描算法**************\n"

1.移动臂由里向外2.移动臂由外向里\n"

0.返回上一层\n"

scanf("

k1);

switch(k1)

case1:

SCAN1(a,n,init);

case2:

SCAN2(a,n,init);

case4:

C_SCAN(a,n,init);

default:

exit(0);

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

当前位置:首页 > 教学研究 > 教学案例设计

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

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