操作系统磁盘调度算法97120Word格式文档下载.docx

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

操作系统磁盘调度算法97120Word格式文档下载.docx

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

操作系统磁盘调度算法97120Word格式文档下载.docx

voidFCFS(inta[],intn);

voidSSTF(inta[],intn);

voidSCAN(inta[],intn);

intmain()

{

intn;

//磁道的个数

//ints;

//选择键

intw;

//磁道号生成方式

int*a=newint[n];

//磁道号

//说明

cout<

<

"

请输入磁道的个数:

;

cin>

>

n;

endl;

请选择磁道号的生成方式(1—随机生成,2—手动输入):

w;

do{

if(w!

=1&

&

w!

=2)

{

cout<

请选择1或2:

cin>

}

if(w==1)

{

/////////////////////////////////////////随机数产生

srand((unsigned)time(NULL));

for(inti=0;

i<

i++)

{

a[i]=rand()%100;

}

/////////////////////////////////////////随机数产生end

}

elseif(w==2)

////////////////////////////////////手动输入磁道号

{

cin>

a[i];

////////////////////////////////////手动输入磁道号end

}

}while(w!

=2);

ints;

while

(1)

{

/////////////////////////////////////////磁道号显示

生成的磁道号:

for(inti=0;

{

cout<

a[i]<

"

}

/////////////////////////////////////////磁道号显示end

|*************************************|"

|请选择何种算法:

|"

|1、先来先服务算法(FCFS)|"

|2、最短寻道时间算法(SSTF)|"

|3、扫描算法(SCAN)|"

|4、清除界面|"

|0、退出|"

请选择要用的功能:

s;

if(s!

s!

=2&

=3&

=0&

=4)

输入有误!

}

else

{

switch(s)

{

case0:

cout<

|感谢使用|"

|如遇bug或有疑问联系|"

|企鹅号:

595296310|"

|by-无风嘟嘟|"

exit(0);

break;

}

case1:

FCFS(a,n);

break;

case2:

SSTF(a,n);

break;

case3:

SCAN(a,n);

case4:

system("

cls"

);

default:

cout<

请再次选择"

}

return0;

}

///////////////////////////////////////////////////////////////////先来先服务FCFS

voidFCFS(inta[],intn)

intsum=0,i,j,num1=0,now;

floataverag;

先来先服务算法(FCFS):

请输入当前磁道号:

now;

磁盘调度顺序为:

for(i=0;

i++)//按访问顺序输出磁道号

//////////////////////////////////计算sum

for(i=0,j=1;

j<

i++,j++)

num1+=abs(a[j]-a[i]);

//外围磁道与最里面磁道的距离

sum+=num1+abs(now-a[0]);

移动的总磁道数:

sum<

averag=float(sum)/n;

平均寻道长度:

averag<

//////////////////////////////////////////最短寻道时间算法SSTF

voidSSTF(inta[],intn)

inttemp;

intk=1;

intnow,l,r;

inti,j,sum=0;

最短寻道时间算法(SSTF):

////////////////////////将磁道号按递增排序

for(j=i+1;

j++)

if(a[i]>

a[j])

temp=a[i];

a[i]=a[j];

a[j]=temp;

////////////////////将磁道号按递增排序end

///////////////输出排好的磁道顺序

按递增顺序排好的磁道:

for(i=0;

///////////////输出排好的磁道顺序end

请输入当前的磁道号:

//确定当前磁头所在位置

////////////////////////////////////////////////////////以下算法确定磁道访问顺序

if(a[n-1]<

=now)//当前磁头位置大于最外围欲访问磁道

for(i=n-1;

i>

=0;

i--)

}

sum=now-a[0];

elseif(a[0]>

=now)//当前磁头位置小于最里欲访问磁道

for(i=0;

 "

sum=a[n-1]-now;

while(a[k]<

now)//确定当前磁道在已排的序列中的位置

k++;

l=k-1;

///////////////在磁头位置的前一个欲访问磁道

r=k;

///////////////////////////////磁头欲访问磁道

while((l>

=0)&

(r<

n))

if((now-a[l])<

=(a[r]-now))//选择离磁头近的磁道(磁头靠左近)

a[l]<

sum+=now-a[l];

now=a[l];

l=l-1;

else//选择离磁头近的磁道(磁头靠右近)

a[r]<

sum+=a[r]-now;

now=a[r];

r=r+1;

if(l==-1)//磁头位置里侧的磁道已访问完

for(j=r;

j++)//访问磁头位置外侧的磁道

a[j]<

sum+=a[n-1]-a[0];

if(r==n)//磁头位置外侧的磁道已访问完

for(j=k-1;

j>

-1;

j--)//访问磁头位置里侧的磁道

sum+=a[n-1]-a[0];

移动的总道数:

/////////////////////////////////////////////////////////////////////////扫描算法SCAN

voidSCAN(inta[],intn)

intx;

扫描算法(SCAN):

///////////////////按磁道递增排序

for(j=i+1;

if(a[i]>

///////////////////按磁道递增排序end

///////////////////输出按磁道递增排序end

////////////////////////////////////////////////////以下算法确定磁道访问顺序

=now)//磁头位置大于最外围欲访问磁道

for(i=n-1;

=now)//磁头位置小于最里欲访问磁道

sum=a[n-1]-now;

else//磁头位置在最里侧磁道与最外侧磁道之间

do{

intd;

while(a[k]<

now)

{//确定当前磁道在已排的序列中的位置

k++;

l=k-1;

//在磁头位置的前一个欲访问磁道

r=k;

//磁头欲访问磁道

请选择当前磁头移动的方向(0—向内,1—向外):

d;

//确定磁头访问的方向

if(d==0||d==1)

if(d==0)//磁头向左

for(j=l;

j--)

{

cout<

}

for(j=r;

sum=now-2*a[0]+a[n-1];

if(d==1)//磁头向右

{

for(j=r;

{

cout<

}

for(j=l;

sum=2*a[n-1]-now-a[0];

}

移动的总道数:

averag=float(sum)/n;

请选择是否继续测试(任意键—继续0—跳出)"

cin>

x;

请选择0或1:

}while(x!

=0);

 

实验心得:

通过这次实验,我对磁盘管理的算法有进一步的理解而且并不是很难。

但是不知道具体如何调用到系统里面。

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

当前位置:首页 > PPT模板 > 其它模板

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

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