欢迎来到天天文库
浏览记录
ID:35396760
大小:59.17 KB
页数:8页
时间:2019-03-24
《磁盘调度算法实验要求及算法》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、磁盘调度算法编程序实现下述磁盘调度算法,并求出每种算法的平均寻道长度。设计要求:(1)能够输入程序要访问的磁道序列和磁头当前所在的磁道数。(2)可以选择某磁盘调度算法(先来先服务算法、最短寻道吋间优先算法、扫描算法和循环扫描算法)。(3)能够以下图形式显示磁盘调度顺序和平均寻道长度。FCFSq55二5&3318p90卩162150^3跳184^平均寻道长度*100p45工3a19p2"72p12112^146p55.32/*FCFS先来先服务:根据进程请求访问磁盘的先后次序进行调度;SSTF最短寻道时间优先:其要求访问的磁头与当
2、前磁头所在的磁道距离最近,以使每次的寻道时间最短;SCAN扫描算法:CSCAN循环扫描算法:T#includeviostream>usingnamespacestd;#include#definemaxsize1000int*bubble(intcidao[]Jntm)〃使用冒泡法按从小到大顺序排列{inti,j;inttemp;for(i=0;icidao[j]){temp=cidao[i];cidao[i]=cidao[j];cida
3、o[j]=temp;}}cout«n排序后的磁盘序列为:”;for(i=0;i4、输入当前的磁道号:”;cin»now;sum+=abs(cidao[0]-now);〃求绝对值cout«H磁盘扫描序列为:”;for(i=0;i5、ntk=l;intnow,l,r;intij,sum=0;floatave;cidao=bubble(cidao,m);〃调用冒泡排序算法排序从小到人cout«-请输入当前的磁道号:“;cin»now;if(cidao[m-l]<=now)〃若当前磁道号大于请求序列中最大者,则直接由外向内依次给予各请求服务coutvv”磁盘扫描序列为:";for(i=m-l;i>=0;i-)cout«cidao[i]«"sum二now-cidao[0];}讦(cidao[0]>=now)〃若当前磁道号小于请求序列中最小者,则直接由内向外依次给予6、各请求服务{cout«u磁盘扫描序列为:”;for(i=0;icidao[0]&&now=O)&&(r7、最近的请求给予服务讦((now-cidao[l])<=(cidao[r]-now))〃从当前磁道向前移动{cout«cidao[l]«"”;sum+=now-cidao[l];now=cidao[l];1=1-1;}else〃从当前磁道向后移动{cout«cidao[r]«"sum+=cidao[r]-now;now=cidao[r);r=r+l;}}讦(8、==-1)〃磁头移动到序列的最小号,返冋外侧扫描仍未扫描的磁道for(j=r;j9、];}else〃磁头移动到序列的最大号,返回内侧扫描仍未扫描的磁道{for(j=l;j>=0;j-){cout«cidao[j]«"}sum+=cidao[m-l]-cidao[0];}}ave=(float)(sum)/(float)(m);cout«endl
4、输入当前的磁道号:”;cin»now;sum+=abs(cidao[0]-now);〃求绝对值cout«H磁盘扫描序列为:”;for(i=0;i5、ntk=l;intnow,l,r;intij,sum=0;floatave;cidao=bubble(cidao,m);〃调用冒泡排序算法排序从小到人cout«-请输入当前的磁道号:“;cin»now;if(cidao[m-l]<=now)〃若当前磁道号大于请求序列中最大者,则直接由外向内依次给予各请求服务coutvv”磁盘扫描序列为:";for(i=m-l;i>=0;i-)cout«cidao[i]«"sum二now-cidao[0];}讦(cidao[0]>=now)〃若当前磁道号小于请求序列中最小者,则直接由内向外依次给予6、各请求服务{cout«u磁盘扫描序列为:”;for(i=0;icidao[0]&&now=O)&&(r7、最近的请求给予服务讦((now-cidao[l])<=(cidao[r]-now))〃从当前磁道向前移动{cout«cidao[l]«"”;sum+=now-cidao[l];now=cidao[l];1=1-1;}else〃从当前磁道向后移动{cout«cidao[r]«"sum+=cidao[r]-now;now=cidao[r);r=r+l;}}讦(8、==-1)〃磁头移动到序列的最小号,返冋外侧扫描仍未扫描的磁道for(j=r;j9、];}else〃磁头移动到序列的最大号,返回内侧扫描仍未扫描的磁道{for(j=l;j>=0;j-){cout«cidao[j]«"}sum+=cidao[m-l]-cidao[0];}}ave=(float)(sum)/(float)(m);cout«endl
5、ntk=l;intnow,l,r;intij,sum=0;floatave;cidao=bubble(cidao,m);〃调用冒泡排序算法排序从小到人cout«-请输入当前的磁道号:“;cin»now;if(cidao[m-l]<=now)〃若当前磁道号大于请求序列中最大者,则直接由外向内依次给予各请求服务coutvv”磁盘扫描序列为:";for(i=m-l;i>=0;i-)cout«cidao[i]«"sum二now-cidao[0];}讦(cidao[0]>=now)〃若当前磁道号小于请求序列中最小者,则直接由内向外依次给予
6、各请求服务{cout«u磁盘扫描序列为:”;for(i=0;icidao[0]&&now=O)&&(r7、最近的请求给予服务讦((now-cidao[l])<=(cidao[r]-now))〃从当前磁道向前移动{cout«cidao[l]«"”;sum+=now-cidao[l];now=cidao[l];1=1-1;}else〃从当前磁道向后移动{cout«cidao[r]«"sum+=cidao[r]-now;now=cidao[r);r=r+l;}}讦(8、==-1)〃磁头移动到序列的最小号,返冋外侧扫描仍未扫描的磁道for(j=r;j9、];}else〃磁头移动到序列的最大号,返回内侧扫描仍未扫描的磁道{for(j=l;j>=0;j-){cout«cidao[j]«"}sum+=cidao[m-l]-cidao[0];}}ave=(float)(sum)/(float)(m);cout«endl
7、最近的请求给予服务讦((now-cidao[l])<=(cidao[r]-now))〃从当前磁道向前移动{cout«cidao[l]«"”;sum+=now-cidao[l];now=cidao[l];1=1-1;}else〃从当前磁道向后移动{cout«cidao[r]«"sum+=cidao[r]-now;now=cidao[r);r=r+l;}}讦(
8、==-1)〃磁头移动到序列的最小号,返冋外侧扫描仍未扫描的磁道for(j=r;j9、];}else〃磁头移动到序列的最大号,返回内侧扫描仍未扫描的磁道{for(j=l;j>=0;j-){cout«cidao[j]«"}sum+=cidao[m-l]-cidao[0];}}ave=(float)(sum)/(float)(m);cout«endl
9、];}else〃磁头移动到序列的最大号,返回内侧扫描仍未扫描的磁道{for(j=l;j>=0;j-){cout«cidao[j]«"}sum+=cidao[m-l]-cidao[0];}}ave=(float)(sum)/(float)(m);cout«endl
此文档下载收益归作者所有