操作系统实验四磁盘调度算法.docx
《操作系统实验四磁盘调度算法.docx》由会员分享,可在线阅读,更多相关《操作系统实验四磁盘调度算法.docx(19页珍藏版)》请在冰豆网上搜索。
操作系统实验四磁盘调度算法
实验四磁盘调度
一、实验目的:
本实验要求学生模拟设计一个磁盘调度程序,观察调度程序的动态运行过程。
通过实验让学生理解和掌握磁盘调度的职能。
二、实验容:
对磁盘进展移臂操作,模拟磁盘调度算法并计算平均寻道时间
三、实验准备:
1.相关理论知识:
〔1〕假设磁盘只有一个盘面,并且磁盘是可移动头磁盘。
〔3〕磁盘是高速、大容量、旋转型、可直接存取的存储设备。
它作为计算机系统的辅助存储器,担负着繁重的输入输出工作,在现代计算机系统中往往同时会有假设干个要求访问磁盘的输入输出要求。
系统可采用一种策略,尽可能按最正确次序执行访问磁盘的请求。
由于磁盘访问时间主要受寻道时间T的影响,为此需要采用适宜的寻道算法,以降低寻道时间。
〔2〕磁盘是可供多个进程共享的存储设备,但一个磁盘每个时刻只能为一个进程效劳。
当有进程在访问某个磁盘时,其它想访问该磁盘的进程必须等待,直到磁盘一次工作完毕。
当有多个进程提出输入输出请求而处于等待状态时,可用磁盘调度算法从假设干个等待访问者中选择一个进程,让它访问磁盘。
2.测试数据:
磁盘读写请求队列:
20,44,40,4,80,12,76
当前磁头位置:
50
试问采用FCFS、SSTF、SCAN磁盘调度算法时寻道顺序及平均寻道时间分别为多少?
四、实验过程:
1.流程图
SCAN算法〔扫描算法〕流程图:
2.源代码
#include
#definemaxsize1000
/*********************判断输入数据是否有效**************************/
intdecide(charstr[])//判断输入数据是否有效
{
inti=0;
while(str[i]!
='\0')
if(str[i]<'0'||str[i]>'9')
return0;
break;
}
i++;
returni;
/******************将字符串转换成数字***********************/
inttrans(charstr[],inta)//将字符串转换成数字
inti;
intsum=0;
for(i=0;i{sum=sum+(int)((str[i]-'0')*pow(10,a-i-1));}returnsum;}/*********************冒泡排序算法**************************/int*bubble(intcidao[],intm){inti,j;inttemp;for(i=0;ifor(j=i+1;j{if(cidao[i]>cidao[j]){temp=cidao[i];cidao[i]=cidao[j];cidao[j]=temp;}}cout<<"排序后的磁盘序列为:";for(i=0;i{cout<}cout<returncidao;}/*********************先来先效劳调度算法************************/voidFCFS(intcidao[],intm)//磁道号数组,个数为m{intnow;//当前磁道号intsum=0;//总寻道长度intj,i;inta;charstr[100];floatave;//平均寻道长度cout<<"磁盘请求序列为:";for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";B:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoB;}elsenow=trans(str,a);//输入当前磁道号sum+=abs(cidao[0]-now);cout<<"磁盘扫描序列为:";for(i=0;i{cout<}for(i=0,j=1;j{sum+=abs(cidao[j]-cidao[i]);ave=(float)(sum)/(float)(m);}cout<cout<<"平均寻道长度:"<}/**********************最短寻道时间优先调度算法********************/voidSSTF(intcidao[],intm){intk=1;intnow,l,r;inti,j,sum=0;inta;charstr[100];floatave;cidao=bubble(cidao,m);//调用冒泡排序算法排序cout<<"请输入当前的磁道号:";C:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoC;}elsenow=trans(str,a);//输入当前磁道号if(cidao[m-1]<=now)//假设当前磁道号大于请求序列中最大者,那么直接由外向依次给予各请求效劳{cout<<"磁盘扫描序列为:";for(i=m-1;i>=0;i--)cout<sum=now-cidao[0];}if(cidao[0]>=now)//假设当前磁道号小于请求序列中最小者,那么直接由向外依次给予各请求效劳{cout<<"磁盘扫描序列为:";for(i=0;icout<sum=cidao[m-1]-now;}if(now>cidao[0]&&now{cout<<"磁盘扫描序列为:";while(cidao[k]{k++;}l=k-1;r=k;while((l>=0)&&(r{if((now-cidao[l])<=(cidao[r]-now))//选择与当前磁道最近的请求给予效劳{cout<sum+=now-cidao[l];now=cidao[l];l=l-1;}else{cout<sum+=cidao[r]-now;now=cidao[r];r=r+1;}}if(l==-1)//磁头移动到序列的最小号,返回外侧扫描仍未扫描的磁道{for(j=r;j{cout<}sum+=cidao[m-1]-cidao[0];}else//磁头移动到序列的最大号,返回侧扫描仍未扫描的磁道{for(j=l;j>=0;j--){cout<}sum+=cidao[m-1]-cidao[0];}}ave=(float)(sum)/(float)(m);cout<cout<<"平均寻道长度:"<} /*************************扫描调度算法*************************/voidSCAN(intcidao[],intm)//先要给出当前磁道号和移动臂的移动方向{intk=1;intnow,l,r,d;inti,j,sum=0;inta;charstr[100];floatave;cidao=bubble(cidao,m);//调用冒泡排序算法排序cout<<"请输入当前的磁道号:";D:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoD;}elsenow=trans(str,a);//输入当前磁道号if(cidao[m-1]<=now)//假设当前磁道号大于请求序列中最大者,那么直接由外向依次给予各请求效劳,此情况同最短寻道优先{cout<<"磁盘扫描序列为:";for(i=m-1;i>=0;i--)cout<sum=now-cidao[0];}if(cidao[0]>=now)//假设当前磁道号小于请求序列中最小者,那么直接由向外依次给予各请求效劳,此情况同最短寻道优先{cout<<"磁盘扫描序列为:";for(i=0;icout<sum=cidao[m-1]-now;}if(now>cidao[0]&&now{while(cidao[k]{k++;}l=k-1;r=k;cout<<"请输入当前移动臂的移动的方向(1表示向外,0表示向):";cin>>d;if(d==0)//选择移动臂方向向,那么先向扫描{cout<<"磁盘扫描序列为:";for(j=l;j>=0;j--){cout<}for(j=r;j{cout<}sum=now-2*cidao[0]+cidao[m-1];}else//选择移动臂方向向外,那么先向外扫描{cout<<"磁盘扫描序列为:";for(j=r;j{cout<}for(j=l;j>=0;j--)//磁头移动到最大号,那么改变方向向扫描未扫描的磁道{cout<}sum=-now-cidao[0]+2*cidao[m-1];}}ave=(float)(sum)/(float)(m);cout<cout<<"平均寻道长度:"<}/************************循环扫描调度算法*****************************/voidCSCAN(intcidao[],intm){intk=1;intnow,l,r;inti,j,sum=0;inta;charstr[100];floatave;cidao=bubble(cidao,m);//调用冒泡排序算法排序cout<<"请输入当前的磁道号:";E:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoE;}elsenow=trans(str,a);//输入当前磁道号if(cidao[m-1]<=now)//假设当前磁道号大于请求序列中最大者,那么直接将移动臂移动到最小号磁道依次向外给予各请求效劳{cout<<"磁盘扫描序列为:";for(i=0;icout<sum=now-2*cidao[0]+cidao[m-1];}if(cidao[0]>=now)//假设当前磁道号小于请求序列中最小者,那么直接由向外依次给予各请求效劳,此情况同最短寻道优先{cout<<"磁盘扫描序列为:";for(i=0;icout<sum=cidao[m-1]-now;}if(now>cidao[0]&&now{cout<<"磁盘扫描序列为:";while(cidao[k]{k++;}l=k-1;r=k;for(j=r;j{cout<}for(j=0;j{cout<}sum=2*cidao[m-1]+cidao[l]-now-2*cidao[0];}ave=(float)(sum)/(float)(m);cout<cout<<"平均寻道长度:"<}voidmain(){inta;intc;//菜单项intcidao[maxsize];inti=0,count;charstr[100];cout<<"请输入磁道序列〔0完毕〕:"<A:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoA;//输入错误,跳转到A,重新输入}elsecidao[i]=trans(str,a);i++;while(cidao[i-1]!=0){cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0)cout<<"输入数据的类型错误,请重新输入!"<else{cidao[i]=trans(str,a);i++;}}count=i-1;//要访问的磁道数cout<<"你输入的磁道序列为:";for(i=0;i{cout<}cout<while(1){cout<cout<<"**********************************************"<cout<<"系统菜单"<cout<<"******"<cout<<"**1.先来先效劳**"<cout<<"****"<cout<<"**2.最短寻道时间优先**"<cout<<"****"<cout<<"**3.扫描调度**"<cout<<"****"<cout<<"**4.循环扫描**"<cout<<"****"<cout<<"**5.退出**"<cout<<"******"<G:cout<<"请选择算法:";F:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoF;//输入错误,跳转到F,重新输入}elsec=trans(str,a);if(c==5)break;if(c>5){cout<<"数据输入错误!请重新输入"<gotoG;}switch(c){case1://使用FCFS算法FCFS(cidao,count);break;case2://使用SSTF算法SSTF(cidao,count);break;case3://使用SCAN算法SCAN(cidao,count);break;case4://使用CSCAN算法CSCAN(cidao,count);break;}}}3.运行界面:五、实验心得:通过本次实验,学习了解磁盘调度的工作原理及四种调度方法的工作原理,并且在当中发现了自己的缺乏,对以前所学过的知识理解得不够深刻,掌握得不够结实,看到了自己的实践经历还是比拟缺乏,理论联系实际的能力还急需提高。
sum=sum+(int)((str[i]-'0')*pow(10,a-i-1));
returnsum;
/*********************冒泡排序算法**************************/
int*bubble(intcidao[],intm)
inti,j;
inttemp;
for(i=0;ifor(j=i+1;j{if(cidao[i]>cidao[j]){temp=cidao[i];cidao[i]=cidao[j];cidao[j]=temp;}}cout<<"排序后的磁盘序列为:";for(i=0;i{cout<}cout<returncidao;}/*********************先来先效劳调度算法************************/voidFCFS(intcidao[],intm)//磁道号数组,个数为m{intnow;//当前磁道号intsum=0;//总寻道长度intj,i;inta;charstr[100];floatave;//平均寻道长度cout<<"磁盘请求序列为:";for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";B:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoB;}elsenow=trans(str,a);//输入当前磁道号sum+=abs(cidao[0]-now);cout<<"磁盘扫描序列为:";for(i=0;i{cout<}for(i=0,j=1;j{sum+=abs(cidao[j]-cidao[i]);ave=(float)(sum)/(float)(m);}cout<cout<<"平均寻道长度:"<}/**********************最短寻道时间优先调度算法********************/voidSSTF(intcidao[],intm){intk=1;intnow,l,r;inti,j,sum=0;inta;charstr[100];floatave;cidao=bubble(cidao,m);//调用冒泡排序算法排序cout<<"请输入当前的磁道号:";C:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoC;}elsenow=trans(str,a);//输入当前磁道号if(cidao[m-1]<=now)//假设当前磁道号大于请求序列中最大者,那么直接由外向依次给予各请求效劳{cout<<"磁盘扫描序列为:";for(i=m-1;i>=0;i--)cout<sum=now-cidao[0];}if(cidao[0]>=now)//假设当前磁道号小于请求序列中最小者,那么直接由向外依次给予各请求效劳{cout<<"磁盘扫描序列为:";for(i=0;icout<sum=cidao[m-1]-now;}if(now>cidao[0]&&now{cout<<"磁盘扫描序列为:";while(cidao[k]{k++;}l=k-1;r=k;while((l>=0)&&(r{if((now-cidao[l])<=(cidao[r]-now))//选择与当前磁道最近的请求给予效劳{cout<sum+=now-cidao[l];now=cidao[l];l=l-1;}else{cout<sum+=cidao[r]-now;now=cidao[r];r=r+1;}}if(l==-1)//磁头移动到序列的最小号,返回外侧扫描仍未扫描的磁道{for(j=r;j{cout<}sum+=cidao[m-1]-cidao[0];}else//磁头移动到序列的最大号,返回侧扫描仍未扫描的磁道{for(j=l;j>=0;j--){cout<}sum+=cidao[m-1]-cidao[0];}}ave=(float)(sum)/(float)(m);cout<cout<<"平均寻道长度:"<} /*************************扫描调度算法*************************/voidSCAN(intcidao[],intm)//先要给出当前磁道号和移动臂的移动方向{intk=1;intnow,l,r,d;inti,j,sum=0;inta;charstr[100];floatave;cidao=bubble(cidao,m);//调用冒泡排序算法排序cout<<"请输入当前的磁道号:";D:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoD;}elsenow=trans(str,a);//输入当前磁道号if(cidao[m-1]<=now)//假设当前磁道号大于请求序列中最大者,那么直接由外向依次给予各请求效劳,此情况同最短寻道优先{cout<<"磁盘扫描序列为:";for(i=m-1;i>=0;i--)cout<sum=now-cidao[0];}if(cidao[0]>=now)//假设当前磁道号小于请求序列中最小者,那么直接由向外依次给予各请求效劳,此情况同最短寻道优先{cout<<"磁盘扫描序列为:";for(i=0;icout<sum=cidao[m-1]-now;}if(now>cidao[0]&&now{while(cidao[k]{k++;}l=k-1;r=k;cout<<"请输入当前移动臂的移动的方向(1表示向外,0表示向):";cin>>d;if(d==0)//选择移动臂方向向,那么先向扫描{cout<<"磁盘扫描序列为:";for(j=l;j>=0;j--){cout<}for(j=r;j{cout<}sum=now-2*cidao[0]+cidao[m-1];}else//选择移动臂方向向外,那么先向外扫描{cout<<"磁盘扫描序列为:";for(j=r;j{cout<}for(j=l;j>=0;j--)//磁头移动到最大号,那么改变方向向扫描未扫描的磁道{cout<}sum=-now-cidao[0]+2*cidao[m-1];}}ave=(float)(sum)/(float)(m);cout<cout<<"平均寻道长度:"<}/************************循环扫描调度算法*****************************/voidCSCAN(intcidao[],intm){intk=1;intnow,l,r;inti,j,sum=0;inta;charstr[100];floatave;cidao=bubble(cidao,m);//调用冒泡排序算法排序cout<<"请输入当前的磁道号:";E:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoE;}elsenow=trans(str,a);//输入当前磁道号if(cidao[m-1]<=now)//假设当前磁道号大于请求序列中最大者,那么直接将移动臂移动到最小号磁道依次向外给予各请求效劳{cout<<"磁盘扫描序列为:";for(i=0;icout<sum=now-2*cidao[0]+cidao[m-1];}if(cidao[0]>=now)//假设当前磁道号小于请求序列中最小者,那么直接由向外依次给予各请求效劳,此情况同最短寻道优先{cout<<"磁盘扫描序列为:";for(i=0;icout<sum=cidao[m-1]-now;}if(now>cidao[0]&&now{cout<<"磁盘扫描序列为:";while(cidao[k]{k++;}l=k-1;r=k;for(j=r;j{cout<}for(j=0;j{cout<}sum=2*cidao[m-1]+cidao[l]-now-2*cidao[0];}ave=(float)(sum)/(float)(m);cout<cout<<"平均寻道长度:"<}voidmain(){inta;intc;//菜单项intcidao[maxsize];inti=0,count;charstr[100];cout<<"请输入磁道序列〔0完毕〕:"<A:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoA;//输入错误,跳转到A,重新输入}elsecidao[i]=trans(str,a);i++;while(cidao[i-1]!=0){cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0)cout<<"输入数据的类型错误,请重新输入!"<else{cidao[i]=trans(str,a);i++;}}count=i-1;//要访问的磁道数cout<<"你输入的磁道序列为:";for(i=0;i{cout<}cout<while(1){cout<cout<<"**********************************************"<cout<<"系统菜单"<cout<<"******"<cout<<"**1.先来先效劳**"<cout<<"****"<cout<<"**2.最短寻道时间优先**"<cout<<"****"<cout<<"**3.扫描调度**"<cout<<"****"<cout<<"**4.循环扫描**"<cout<<"****"<cout<<"**5.退出**"<cout<<"******"<G:cout<<"请选择算法:";F:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoF;//输入错误,跳转到F,重新输入}elsec=trans(str,a);if(c==5)break;if(c>5){cout<<"数据输入错误!请重新输入"<gotoG;}switch(c){case1://使用FCFS算法FCFS(cidao,count);break;case2://使用SSTF算法SSTF(cidao,count);break;case3://使用SCAN算法SCAN(cidao,count);break;case4://使用CSCAN算法CSCAN(cidao,count);break;}}}3.运行界面:五、实验心得:通过本次实验,学习了解磁盘调度的工作原理及四种调度方法的工作原理,并且在当中发现了自己的缺乏,对以前所学过的知识理解得不够深刻,掌握得不够结实,看到了自己的实践经历还是比拟缺乏,理论联系实际的能力还急需提高。
for(j=i+1;j{if(cidao[i]>cidao[j]){temp=cidao[i];cidao[i]=cidao[j];cidao[j]=temp;}}cout<<"排序后的磁盘序列为:";for(i=0;i{cout<}cout<returncidao;}/*********************先来先效劳调度算法************************/voidFCFS(intcidao[],intm)//磁道号数组,个数为m{intnow;//当前磁道号intsum=0;//总寻道长度intj,i;inta;charstr[100];floatave;//平均寻道长度cout<<"磁盘请求序列为:";for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";B:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoB;}elsenow=trans(str,a);//输入当前磁道号sum+=abs(cidao[0]-now);cout<<"磁盘扫描序列为:";for(i=0;i{cout<}for(i=0,j=1;j{sum+=abs(cidao[j]-cidao[i]);ave=(float)(sum)/(float)(m);}cout<cout<<"平均寻道长度:"<}/**********************最短寻道时间优先调度算法********************/voidSSTF(intcidao[],intm){intk=1;intnow,l,r;inti,j,sum=0;inta;charstr[100];floatave;cidao=bubble(cidao,m);//调用冒泡排序算法排序cout<<"请输入当前的磁道号:";C:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoC;}elsenow=trans(str,a);//输入当前磁道号if(cidao[m-1]<=now)//假设当前磁道号大于请求序列中最大者,那么直接由外向依次给予各请求效劳{cout<<"磁盘扫描序列为:";for(i=m-1;i>=0;i--)cout<sum=now-cidao[0];}if(cidao[0]>=now)//假设当前磁道号小于请求序列中最小者,那么直接由向外依次给予各请求效劳{cout<<"磁盘扫描序列为:";for(i=0;icout<sum=cidao[m-1]-now;}if(now>cidao[0]&&now{cout<<"磁盘扫描序列为:";while(cidao[k]{k++;}l=k-1;r=k;while((l>=0)&&(r{if((now-cidao[l])<=(cidao[r]-now))//选择与当前磁道最近的请求给予效劳{cout<sum+=now-cidao[l];now=cidao[l];l=l-1;}else{cout<sum+=cidao[r]-now;now=cidao[r];r=r+1;}}if(l==-1)//磁头移动到序列的最小号,返回外侧扫描仍未扫描的磁道{for(j=r;j{cout<}sum+=cidao[m-1]-cidao[0];}else//磁头移动到序列的最大号,返回侧扫描仍未扫描的磁道{for(j=l;j>=0;j--){cout<}sum+=cidao[m-1]-cidao[0];}}ave=(float)(sum)/(float)(m);cout<cout<<"平均寻道长度:"<} /*************************扫描调度算法*************************/voidSCAN(intcidao[],intm)//先要给出当前磁道号和移动臂的移动方向{intk=1;intnow,l,r,d;inti,j,sum=0;inta;charstr[100];floatave;cidao=bubble(cidao,m);//调用冒泡排序算法排序cout<<"请输入当前的磁道号:";D:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoD;}elsenow=trans(str,a);//输入当前磁道号if(cidao[m-1]<=now)//假设当前磁道号大于请求序列中最大者,那么直接由外向依次给予各请求效劳,此情况同最短寻道优先{cout<<"磁盘扫描序列为:";for(i=m-1;i>=0;i--)cout<sum=now-cidao[0];}if(cidao[0]>=now)//假设当前磁道号小于请求序列中最小者,那么直接由向外依次给予各请求效劳,此情况同最短寻道优先{cout<<"磁盘扫描序列为:";for(i=0;icout<sum=cidao[m-1]-now;}if(now>cidao[0]&&now{while(cidao[k]{k++;}l=k-1;r=k;cout<<"请输入当前移动臂的移动的方向(1表示向外,0表示向):";cin>>d;if(d==0)//选择移动臂方向向,那么先向扫描{cout<<"磁盘扫描序列为:";for(j=l;j>=0;j--){cout<}for(j=r;j{cout<}sum=now-2*cidao[0]+cidao[m-1];}else//选择移动臂方向向外,那么先向外扫描{cout<<"磁盘扫描序列为:";for(j=r;j{cout<}for(j=l;j>=0;j--)//磁头移动到最大号,那么改变方向向扫描未扫描的磁道{cout<}sum=-now-cidao[0]+2*cidao[m-1];}}ave=(float)(sum)/(float)(m);cout<cout<<"平均寻道长度:"<}/************************循环扫描调度算法*****************************/voidCSCAN(intcidao[],intm){intk=1;intnow,l,r;inti,j,sum=0;inta;charstr[100];floatave;cidao=bubble(cidao,m);//调用冒泡排序算法排序cout<<"请输入当前的磁道号:";E:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoE;}elsenow=trans(str,a);//输入当前磁道号if(cidao[m-1]<=now)//假设当前磁道号大于请求序列中最大者,那么直接将移动臂移动到最小号磁道依次向外给予各请求效劳{cout<<"磁盘扫描序列为:";for(i=0;icout<sum=now-2*cidao[0]+cidao[m-1];}if(cidao[0]>=now)//假设当前磁道号小于请求序列中最小者,那么直接由向外依次给予各请求效劳,此情况同最短寻道优先{cout<<"磁盘扫描序列为:";for(i=0;icout<sum=cidao[m-1]-now;}if(now>cidao[0]&&now{cout<<"磁盘扫描序列为:";while(cidao[k]{k++;}l=k-1;r=k;for(j=r;j{cout<}for(j=0;j{cout<}sum=2*cidao[m-1]+cidao[l]-now-2*cidao[0];}ave=(float)(sum)/(float)(m);cout<cout<<"平均寻道长度:"<}voidmain(){inta;intc;//菜单项intcidao[maxsize];inti=0,count;charstr[100];cout<<"请输入磁道序列〔0完毕〕:"<A:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoA;//输入错误,跳转到A,重新输入}elsecidao[i]=trans(str,a);i++;while(cidao[i-1]!=0){cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0)cout<<"输入数据的类型错误,请重新输入!"<else{cidao[i]=trans(str,a);i++;}}count=i-1;//要访问的磁道数cout<<"你输入的磁道序列为:";for(i=0;i{cout<}cout<while(1){cout<cout<<"**********************************************"<cout<<"系统菜单"<cout<<"******"<cout<<"**1.先来先效劳**"<cout<<"****"<cout<<"**2.最短寻道时间优先**"<cout<<"****"<cout<<"**3.扫描调度**"<cout<<"****"<cout<<"**4.循环扫描**"<cout<<"****"<cout<<"**5.退出**"<cout<<"******"<G:cout<<"请选择算法:";F:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoF;//输入错误,跳转到F,重新输入}elsec=trans(str,a);if(c==5)break;if(c>5){cout<<"数据输入错误!请重新输入"<gotoG;}switch(c){case1://使用FCFS算法FCFS(cidao,count);break;case2://使用SSTF算法SSTF(cidao,count);break;case3://使用SCAN算法SCAN(cidao,count);break;case4://使用CSCAN算法CSCAN(cidao,count);break;}}}3.运行界面:五、实验心得:通过本次实验,学习了解磁盘调度的工作原理及四种调度方法的工作原理,并且在当中发现了自己的缺乏,对以前所学过的知识理解得不够深刻,掌握得不够结实,看到了自己的实践经历还是比拟缺乏,理论联系实际的能力还急需提高。
if(cidao[i]>cidao[j])
temp=cidao[i];
cidao[i]=cidao[j];
cidao[j]=temp;
cout<<"排序后的磁盘序列为:
";
for(i=0;i{cout<}cout<returncidao;}/*********************先来先效劳调度算法************************/voidFCFS(intcidao[],intm)//磁道号数组,个数为m{intnow;//当前磁道号intsum=0;//总寻道长度intj,i;inta;charstr[100];floatave;//平均寻道长度cout<<"磁盘请求序列为:";for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";B:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoB;}elsenow=trans(str,a);//输入当前磁道号sum+=abs(cidao[0]-now);cout<<"磁盘扫描序列为:";for(i=0;i{cout<}for(i=0,j=1;j{sum+=abs(cidao[j]-cidao[i]);ave=(float)(sum)/(float)(m);}cout<cout<<"平均寻道长度:"<}/**********************最短寻道时间优先调度算法********************/voidSSTF(intcidao[],intm){intk=1;intnow,l,r;inti,j,sum=0;inta;charstr[100];floatave;cidao=bubble(cidao,m);//调用冒泡排序算法排序cout<<"请输入当前的磁道号:";C:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoC;}elsenow=trans(str,a);//输入当前磁道号if(cidao[m-1]<=now)//假设当前磁道号大于请求序列中最大者,那么直接由外向依次给予各请求效劳{cout<<"磁盘扫描序列为:";for(i=m-1;i>=0;i--)cout<sum=now-cidao[0];}if(cidao[0]>=now)//假设当前磁道号小于请求序列中最小者,那么直接由向外依次给予各请求效劳{cout<<"磁盘扫描序列为:";for(i=0;icout<sum=cidao[m-1]-now;}if(now>cidao[0]&&now{cout<<"磁盘扫描序列为:";while(cidao[k]{k++;}l=k-1;r=k;while((l>=0)&&(r{if((now-cidao[l])<=(cidao[r]-now))//选择与当前磁道最近的请求给予效劳{cout<sum+=now-cidao[l];now=cidao[l];l=l-1;}else{cout<sum+=cidao[r]-now;now=cidao[r];r=r+1;}}if(l==-1)//磁头移动到序列的最小号,返回外侧扫描仍未扫描的磁道{for(j=r;j{cout<}sum+=cidao[m-1]-cidao[0];}else//磁头移动到序列的最大号,返回侧扫描仍未扫描的磁道{for(j=l;j>=0;j--){cout<}sum+=cidao[m-1]-cidao[0];}}ave=(float)(sum)/(float)(m);cout<cout<<"平均寻道长度:"<} /*************************扫描调度算法*************************/voidSCAN(intcidao[],intm)//先要给出当前磁道号和移动臂的移动方向{intk=1;intnow,l,r,d;inti,j,sum=0;inta;charstr[100];floatave;cidao=bubble(cidao,m);//调用冒泡排序算法排序cout<<"请输入当前的磁道号:";D:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoD;}elsenow=trans(str,a);//输入当前磁道号if(cidao[m-1]<=now)//假设当前磁道号大于请求序列中最大者,那么直接由外向依次给予各请求效劳,此情况同最短寻道优先{cout<<"磁盘扫描序列为:";for(i=m-1;i>=0;i--)cout<sum=now-cidao[0];}if(cidao[0]>=now)//假设当前磁道号小于请求序列中最小者,那么直接由向外依次给予各请求效劳,此情况同最短寻道优先{cout<<"磁盘扫描序列为:";for(i=0;icout<sum=cidao[m-1]-now;}if(now>cidao[0]&&now{while(cidao[k]{k++;}l=k-1;r=k;cout<<"请输入当前移动臂的移动的方向(1表示向外,0表示向):";cin>>d;if(d==0)//选择移动臂方向向,那么先向扫描{cout<<"磁盘扫描序列为:";for(j=l;j>=0;j--){cout<}for(j=r;j{cout<}sum=now-2*cidao[0]+cidao[m-1];}else//选择移动臂方向向外,那么先向外扫描{cout<<"磁盘扫描序列为:";for(j=r;j{cout<}for(j=l;j>=0;j--)//磁头移动到最大号,那么改变方向向扫描未扫描的磁道{cout<}sum=-now-cidao[0]+2*cidao[m-1];}}ave=(float)(sum)/(float)(m);cout<cout<<"平均寻道长度:"<}/************************循环扫描调度算法*****************************/voidCSCAN(intcidao[],intm){intk=1;intnow,l,r;inti,j,sum=0;inta;charstr[100];floatave;cidao=bubble(cidao,m);//调用冒泡排序算法排序cout<<"请输入当前的磁道号:";E:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoE;}elsenow=trans(str,a);//输入当前磁道号if(cidao[m-1]<=now)//假设当前磁道号大于请求序列中最大者,那么直接将移动臂移动到最小号磁道依次向外给予各请求效劳{cout<<"磁盘扫描序列为:";for(i=0;icout<sum=now-2*cidao[0]+cidao[m-1];}if(cidao[0]>=now)//假设当前磁道号小于请求序列中最小者,那么直接由向外依次给予各请求效劳,此情况同最短寻道优先{cout<<"磁盘扫描序列为:";for(i=0;icout<sum=cidao[m-1]-now;}if(now>cidao[0]&&now{cout<<"磁盘扫描序列为:";while(cidao[k]{k++;}l=k-1;r=k;for(j=r;j{cout<}for(j=0;j{cout<}sum=2*cidao[m-1]+cidao[l]-now-2*cidao[0];}ave=(float)(sum)/(float)(m);cout<cout<<"平均寻道长度:"<}voidmain(){inta;intc;//菜单项intcidao[maxsize];inti=0,count;charstr[100];cout<<"请输入磁道序列〔0完毕〕:"<A:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoA;//输入错误,跳转到A,重新输入}elsecidao[i]=trans(str,a);i++;while(cidao[i-1]!=0){cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0)cout<<"输入数据的类型错误,请重新输入!"<else{cidao[i]=trans(str,a);i++;}}count=i-1;//要访问的磁道数cout<<"你输入的磁道序列为:";for(i=0;i{cout<}cout<while(1){cout<cout<<"**********************************************"<cout<<"系统菜单"<cout<<"******"<cout<<"**1.先来先效劳**"<cout<<"****"<cout<<"**2.最短寻道时间优先**"<cout<<"****"<cout<<"**3.扫描调度**"<cout<<"****"<cout<<"**4.循环扫描**"<cout<<"****"<cout<<"**5.退出**"<cout<<"******"<G:cout<<"请选择算法:";F:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoF;//输入错误,跳转到F,重新输入}elsec=trans(str,a);if(c==5)break;if(c>5){cout<<"数据输入错误!请重新输入"<gotoG;}switch(c){case1://使用FCFS算法FCFS(cidao,count);break;case2://使用SSTF算法SSTF(cidao,count);break;case3://使用SCAN算法SCAN(cidao,count);break;case4://使用CSCAN算法CSCAN(cidao,count);break;}}}3.运行界面:五、实验心得:通过本次实验,学习了解磁盘调度的工作原理及四种调度方法的工作原理,并且在当中发现了自己的缺乏,对以前所学过的知识理解得不够深刻,掌握得不够结实,看到了自己的实践经历还是比拟缺乏,理论联系实际的能力还急需提高。
cout<}cout<returncidao;}/*********************先来先效劳调度算法************************/voidFCFS(intcidao[],intm)//磁道号数组,个数为m{intnow;//当前磁道号intsum=0;//总寻道长度intj,i;inta;charstr[100];floatave;//平均寻道长度cout<<"磁盘请求序列为:";for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";B:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoB;}elsenow=trans(str,a);//输入当前磁道号sum+=abs(cidao[0]-now);cout<<"磁盘扫描序列为:";for(i=0;i{cout<}for(i=0,j=1;j{sum+=abs(cidao[j]-cidao[i]);ave=(float)(sum)/(float)(m);}cout<cout<<"平均寻道长度:"<}/**********************最短寻道时间优先调度算法********************/voidSSTF(intcidao[],intm){intk=1;intnow,l,r;inti,j,sum=0;inta;charstr[100];floatave;cidao=bubble(cidao,m);//调用冒泡排序算法排序cout<<"请输入当前的磁道号:";C:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoC;}elsenow=trans(str,a);//输入当前磁道号if(cidao[m-1]<=now)//假设当前磁道号大于请求序列中最大者,那么直接由外向依次给予各请求效劳{cout<<"磁盘扫描序列为:";for(i=m-1;i>=0;i--)cout<sum=now-cidao[0];}if(cidao[0]>=now)//假设当前磁道号小于请求序列中最小者,那么直接由向外依次给予各请求效劳{cout<<"磁盘扫描序列为:";for(i=0;icout<sum=cidao[m-1]-now;}if(now>cidao[0]&&now{cout<<"磁盘扫描序列为:";while(cidao[k]{k++;}l=k-1;r=k;while((l>=0)&&(r{if((now-cidao[l])<=(cidao[r]-now))//选择与当前磁道最近的请求给予效劳{cout<sum+=now-cidao[l];now=cidao[l];l=l-1;}else{cout<sum+=cidao[r]-now;now=cidao[r];r=r+1;}}if(l==-1)//磁头移动到序列的最小号,返回外侧扫描仍未扫描的磁道{for(j=r;j{cout<}sum+=cidao[m-1]-cidao[0];}else//磁头移动到序列的最大号,返回侧扫描仍未扫描的磁道{for(j=l;j>=0;j--){cout<}sum+=cidao[m-1]-cidao[0];}}ave=(float)(sum)/(float)(m);cout<cout<<"平均寻道长度:"<} /*************************扫描调度算法*************************/voidSCAN(intcidao[],intm)//先要给出当前磁道号和移动臂的移动方向{intk=1;intnow,l,r,d;inti,j,sum=0;inta;charstr[100];floatave;cidao=bubble(cidao,m);//调用冒泡排序算法排序cout<<"请输入当前的磁道号:";D:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoD;}elsenow=trans(str,a);//输入当前磁道号if(cidao[m-1]<=now)//假设当前磁道号大于请求序列中最大者,那么直接由外向依次给予各请求效劳,此情况同最短寻道优先{cout<<"磁盘扫描序列为:";for(i=m-1;i>=0;i--)cout<sum=now-cidao[0];}if(cidao[0]>=now)//假设当前磁道号小于请求序列中最小者,那么直接由向外依次给予各请求效劳,此情况同最短寻道优先{cout<<"磁盘扫描序列为:";for(i=0;icout<sum=cidao[m-1]-now;}if(now>cidao[0]&&now{while(cidao[k]{k++;}l=k-1;r=k;cout<<"请输入当前移动臂的移动的方向(1表示向外,0表示向):";cin>>d;if(d==0)//选择移动臂方向向,那么先向扫描{cout<<"磁盘扫描序列为:";for(j=l;j>=0;j--){cout<}for(j=r;j{cout<}sum=now-2*cidao[0]+cidao[m-1];}else//选择移动臂方向向外,那么先向外扫描{cout<<"磁盘扫描序列为:";for(j=r;j{cout<}for(j=l;j>=0;j--)//磁头移动到最大号,那么改变方向向扫描未扫描的磁道{cout<}sum=-now-cidao[0]+2*cidao[m-1];}}ave=(float)(sum)/(float)(m);cout<cout<<"平均寻道长度:"<}/************************循环扫描调度算法*****************************/voidCSCAN(intcidao[],intm){intk=1;intnow,l,r;inti,j,sum=0;inta;charstr[100];floatave;cidao=bubble(cidao,m);//调用冒泡排序算法排序cout<<"请输入当前的磁道号:";E:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoE;}elsenow=trans(str,a);//输入当前磁道号if(cidao[m-1]<=now)//假设当前磁道号大于请求序列中最大者,那么直接将移动臂移动到最小号磁道依次向外给予各请求效劳{cout<<"磁盘扫描序列为:";for(i=0;icout<sum=now-2*cidao[0]+cidao[m-1];}if(cidao[0]>=now)//假设当前磁道号小于请求序列中最小者,那么直接由向外依次给予各请求效劳,此情况同最短寻道优先{cout<<"磁盘扫描序列为:";for(i=0;icout<sum=cidao[m-1]-now;}if(now>cidao[0]&&now{cout<<"磁盘扫描序列为:";while(cidao[k]{k++;}l=k-1;r=k;for(j=r;j{cout<}for(j=0;j{cout<}sum=2*cidao[m-1]+cidao[l]-now-2*cidao[0];}ave=(float)(sum)/(float)(m);cout<cout<<"平均寻道长度:"<}voidmain(){inta;intc;//菜单项intcidao[maxsize];inti=0,count;charstr[100];cout<<"请输入磁道序列〔0完毕〕:"<A:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoA;//输入错误,跳转到A,重新输入}elsecidao[i]=trans(str,a);i++;while(cidao[i-1]!=0){cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0)cout<<"输入数据的类型错误,请重新输入!"<else{cidao[i]=trans(str,a);i++;}}count=i-1;//要访问的磁道数cout<<"你输入的磁道序列为:";for(i=0;i{cout<}cout<while(1){cout<cout<<"**********************************************"<cout<<"系统菜单"<cout<<"******"<cout<<"**1.先来先效劳**"<cout<<"****"<cout<<"**2.最短寻道时间优先**"<cout<<"****"<cout<<"**3.扫描调度**"<cout<<"****"<cout<<"**4.循环扫描**"<cout<<"****"<cout<<"**5.退出**"<cout<<"******"<G:cout<<"请选择算法:";F:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoF;//输入错误,跳转到F,重新输入}elsec=trans(str,a);if(c==5)break;if(c>5){cout<<"数据输入错误!请重新输入"<gotoG;}switch(c){case1://使用FCFS算法FCFS(cidao,count);break;case2://使用SSTF算法SSTF(cidao,count);break;case3://使用SCAN算法SCAN(cidao,count);break;case4://使用CSCAN算法CSCAN(cidao,count);break;}}}3.运行界面:五、实验心得:通过本次实验,学习了解磁盘调度的工作原理及四种调度方法的工作原理,并且在当中发现了自己的缺乏,对以前所学过的知识理解得不够深刻,掌握得不够结实,看到了自己的实践经历还是比拟缺乏,理论联系实际的能力还急需提高。
cout<returncidao;}/*********************先来先效劳调度算法************************/voidFCFS(intcidao[],intm)//磁道号数组,个数为m{intnow;//当前磁道号intsum=0;//总寻道长度intj,i;inta;charstr[100];floatave;//平均寻道长度cout<<"磁盘请求序列为:";for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";B:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoB;}elsenow=trans(str,a);//输入当前磁道号sum+=abs(cidao[0]-now);cout<<"磁盘扫描序列为:";for(i=0;i{cout<}for(i=0,j=1;j{sum+=abs(cidao[j]-cidao[i]);ave=(float)(sum)/(float)(m);}cout<cout<<"平均寻道长度:"<}/**********************最短寻道时间优先调度算法********************/voidSSTF(intcidao[],intm){intk=1;intnow,l,r;inti,j,sum=0;inta;charstr[100];floatave;cidao=bubble(cidao,m);//调用冒泡排序算法排序cout<<"请输入当前的磁道号:";C:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoC;}elsenow=trans(str,a);//输入当前磁道号if(cidao[m-1]<=now)//假设当前磁道号大于请求序列中最大者,那么直接由外向依次给予各请求效劳{cout<<"磁盘扫描序列为:";for(i=m-1;i>=0;i--)cout<sum=now-cidao[0];}if(cidao[0]>=now)//假设当前磁道号小于请求序列中最小者,那么直接由向外依次给予各请求效劳{cout<<"磁盘扫描序列为:";for(i=0;icout<sum=cidao[m-1]-now;}if(now>cidao[0]&&now{cout<<"磁盘扫描序列为:";while(cidao[k]{k++;}l=k-1;r=k;while((l>=0)&&(r{if((now-cidao[l])<=(cidao[r]-now))//选择与当前磁道最近的请求给予效劳{cout<sum+=now-cidao[l];now=cidao[l];l=l-1;}else{cout<sum+=cidao[r]-now;now=cidao[r];r=r+1;}}if(l==-1)//磁头移动到序列的最小号,返回外侧扫描仍未扫描的磁道{for(j=r;j{cout<}sum+=cidao[m-1]-cidao[0];}else//磁头移动到序列的最大号,返回侧扫描仍未扫描的磁道{for(j=l;j>=0;j--){cout<}sum+=cidao[m-1]-cidao[0];}}ave=(float)(sum)/(float)(m);cout<cout<<"平均寻道长度:"<} /*************************扫描调度算法*************************/voidSCAN(intcidao[],intm)//先要给出当前磁道号和移动臂的移动方向{intk=1;intnow,l,r,d;inti,j,sum=0;inta;charstr[100];floatave;cidao=bubble(cidao,m);//调用冒泡排序算法排序cout<<"请输入当前的磁道号:";D:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoD;}elsenow=trans(str,a);//输入当前磁道号if(cidao[m-1]<=now)//假设当前磁道号大于请求序列中最大者,那么直接由外向依次给予各请求效劳,此情况同最短寻道优先{cout<<"磁盘扫描序列为:";for(i=m-1;i>=0;i--)cout<sum=now-cidao[0];}if(cidao[0]>=now)//假设当前磁道号小于请求序列中最小者,那么直接由向外依次给予各请求效劳,此情况同最短寻道优先{cout<<"磁盘扫描序列为:";for(i=0;icout<sum=cidao[m-1]-now;}if(now>cidao[0]&&now{while(cidao[k]{k++;}l=k-1;r=k;cout<<"请输入当前移动臂的移动的方向(1表示向外,0表示向):";cin>>d;if(d==0)//选择移动臂方向向,那么先向扫描{cout<<"磁盘扫描序列为:";for(j=l;j>=0;j--){cout<}for(j=r;j{cout<}sum=now-2*cidao[0]+cidao[m-1];}else//选择移动臂方向向外,那么先向外扫描{cout<<"磁盘扫描序列为:";for(j=r;j{cout<}for(j=l;j>=0;j--)//磁头移动到最大号,那么改变方向向扫描未扫描的磁道{cout<}sum=-now-cidao[0]+2*cidao[m-1];}}ave=(float)(sum)/(float)(m);cout<cout<<"平均寻道长度:"<}/************************循环扫描调度算法*****************************/voidCSCAN(intcidao[],intm){intk=1;intnow,l,r;inti,j,sum=0;inta;charstr[100];floatave;cidao=bubble(cidao,m);//调用冒泡排序算法排序cout<<"请输入当前的磁道号:";E:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoE;}elsenow=trans(str,a);//输入当前磁道号if(cidao[m-1]<=now)//假设当前磁道号大于请求序列中最大者,那么直接将移动臂移动到最小号磁道依次向外给予各请求效劳{cout<<"磁盘扫描序列为:";for(i=0;icout<sum=now-2*cidao[0]+cidao[m-1];}if(cidao[0]>=now)//假设当前磁道号小于请求序列中最小者,那么直接由向外依次给予各请求效劳,此情况同最短寻道优先{cout<<"磁盘扫描序列为:";for(i=0;icout<sum=cidao[m-1]-now;}if(now>cidao[0]&&now{cout<<"磁盘扫描序列为:";while(cidao[k]{k++;}l=k-1;r=k;for(j=r;j{cout<}for(j=0;j{cout<}sum=2*cidao[m-1]+cidao[l]-now-2*cidao[0];}ave=(float)(sum)/(float)(m);cout<cout<<"平均寻道长度:"<}voidmain(){inta;intc;//菜单项intcidao[maxsize];inti=0,count;charstr[100];cout<<"请输入磁道序列〔0完毕〕:"<A:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoA;//输入错误,跳转到A,重新输入}elsecidao[i]=trans(str,a);i++;while(cidao[i-1]!=0){cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0)cout<<"输入数据的类型错误,请重新输入!"<else{cidao[i]=trans(str,a);i++;}}count=i-1;//要访问的磁道数cout<<"你输入的磁道序列为:";for(i=0;i{cout<}cout<while(1){cout<cout<<"**********************************************"<cout<<"系统菜单"<cout<<"******"<cout<<"**1.先来先效劳**"<cout<<"****"<cout<<"**2.最短寻道时间优先**"<cout<<"****"<cout<<"**3.扫描调度**"<cout<<"****"<cout<<"**4.循环扫描**"<cout<<"****"<cout<<"**5.退出**"<cout<<"******"<G:cout<<"请选择算法:";F:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoF;//输入错误,跳转到F,重新输入}elsec=trans(str,a);if(c==5)break;if(c>5){cout<<"数据输入错误!请重新输入"<gotoG;}switch(c){case1://使用FCFS算法FCFS(cidao,count);break;case2://使用SSTF算法SSTF(cidao,count);break;case3://使用SCAN算法SCAN(cidao,count);break;case4://使用CSCAN算法CSCAN(cidao,count);break;}}}3.运行界面:五、实验心得:通过本次实验,学习了解磁盘调度的工作原理及四种调度方法的工作原理,并且在当中发现了自己的缺乏,对以前所学过的知识理解得不够深刻,掌握得不够结实,看到了自己的实践经历还是比拟缺乏,理论联系实际的能力还急需提高。
returncidao;
/*********************先来先效劳调度算法************************/
voidFCFS(intcidao[],intm)//磁道号数组,个数为m
intnow;//当前磁道号
intsum=0;//总寻道长度
intj,i;
inta;
charstr[100];
floatave;//平均寻道长度
cout<<"磁盘请求序列为:
for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";B:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoB;}elsenow=trans(str,a);//输入当前磁道号sum+=abs(cidao[0]-now);cout<<"磁盘扫描序列为:";for(i=0;i{cout<}for(i=0,j=1;j{sum+=abs(cidao[j]-cidao[i]);ave=(float)(sum)/(float)(m);}cout<cout<<"平均寻道长度:"<}/**********************最短寻道时间优先调度算法********************/voidSSTF(intcidao[],intm){intk=1;intnow,l,r;inti,j,sum=0;inta;charstr[100];floatave;cidao=bubble(cidao,m);//调用冒泡排序算法排序cout<<"请输入当前的磁道号:";C:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoC;}elsenow=trans(str,a);//输入当前磁道号if(cidao[m-1]<=now)//假设当前磁道号大于请求序列中最大者,那么直接由外向依次给予各请求效劳{cout<<"磁盘扫描序列为:";for(i=m-1;i>=0;i--)cout<sum=now-cidao[0];}if(cidao[0]>=now)//假设当前磁道号小于请求序列中最小者,那么直接由向外依次给予各请求效劳{cout<<"磁盘扫描序列为:";for(i=0;icout<sum=cidao[m-1]-now;}if(now>cidao[0]&&now{cout<<"磁盘扫描序列为:";while(cidao[k]{k++;}l=k-1;r=k;while((l>=0)&&(r{if((now-cidao[l])<=(cidao[r]-now))//选择与当前磁道最近的请求给予效劳{cout<sum+=now-cidao[l];now=cidao[l];l=l-1;}else{cout<sum+=cidao[r]-now;now=cidao[r];r=r+1;}}if(l==-1)//磁头移动到序列的最小号,返回外侧扫描仍未扫描的磁道{for(j=r;j{cout<}sum+=cidao[m-1]-cidao[0];}else//磁头移动到序列的最大号,返回侧扫描仍未扫描的磁道{for(j=l;j>=0;j--){cout<}sum+=cidao[m-1]-cidao[0];}}ave=(float)(sum)/(float)(m);cout<cout<<"平均寻道长度:"<} /*************************扫描调度算法*************************/voidSCAN(intcidao[],intm)//先要给出当前磁道号和移动臂的移动方向{intk=1;intnow,l,r,d;inti,j,sum=0;inta;charstr[100];floatave;cidao=bubble(cidao,m);//调用冒泡排序算法排序cout<<"请输入当前的磁道号:";D:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoD;}elsenow=trans(str,a);//输入当前磁道号if(cidao[m-1]<=now)//假设当前磁道号大于请求序列中最大者,那么直接由外向依次给予各请求效劳,此情况同最短寻道优先{cout<<"磁盘扫描序列为:";for(i=m-1;i>=0;i--)cout<sum=now-cidao[0];}if(cidao[0]>=now)//假设当前磁道号小于请求序列中最小者,那么直接由向外依次给予各请求效劳,此情况同最短寻道优先{cout<<"磁盘扫描序列为:";for(i=0;icout<sum=cidao[m-1]-now;}if(now>cidao[0]&&now{while(cidao[k]{k++;}l=k-1;r=k;cout<<"请输入当前移动臂的移动的方向(1表示向外,0表示向):";cin>>d;if(d==0)//选择移动臂方向向,那么先向扫描{cout<<"磁盘扫描序列为:";for(j=l;j>=0;j--){cout<}for(j=r;j{cout<}sum=now-2*cidao[0]+cidao[m-1];}else//选择移动臂方向向外,那么先向外扫描{cout<<"磁盘扫描序列为:";for(j=r;j{cout<}for(j=l;j>=0;j--)//磁头移动到最大号,那么改变方向向扫描未扫描的磁道{cout<}sum=-now-cidao[0]+2*cidao[m-1];}}ave=(float)(sum)/(float)(m);cout<cout<<"平均寻道长度:"<}/************************循环扫描调度算法*****************************/voidCSCAN(intcidao[],intm){intk=1;intnow,l,r;inti,j,sum=0;inta;charstr[100];floatave;cidao=bubble(cidao,m);//调用冒泡排序算法排序cout<<"请输入当前的磁道号:";E:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoE;}elsenow=trans(str,a);//输入当前磁道号if(cidao[m-1]<=now)//假设当前磁道号大于请求序列中最大者,那么直接将移动臂移动到最小号磁道依次向外给予各请求效劳{cout<<"磁盘扫描序列为:";for(i=0;icout<sum=now-2*cidao[0]+cidao[m-1];}if(cidao[0]>=now)//假设当前磁道号小于请求序列中最小者,那么直接由向外依次给予各请求效劳,此情况同最短寻道优先{cout<<"磁盘扫描序列为:";for(i=0;icout<sum=cidao[m-1]-now;}if(now>cidao[0]&&now{cout<<"磁盘扫描序列为:";while(cidao[k]{k++;}l=k-1;r=k;for(j=r;j{cout<}for(j=0;j{cout<}sum=2*cidao[m-1]+cidao[l]-now-2*cidao[0];}ave=(float)(sum)/(float)(m);cout<cout<<"平均寻道长度:"<}voidmain(){inta;intc;//菜单项intcidao[maxsize];inti=0,count;charstr[100];cout<<"请输入磁道序列〔0完毕〕:"<A:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoA;//输入错误,跳转到A,重新输入}elsecidao[i]=trans(str,a);i++;while(cidao[i-1]!=0){cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0)cout<<"输入数据的类型错误,请重新输入!"<else{cidao[i]=trans(str,a);i++;}}count=i-1;//要访问的磁道数cout<<"你输入的磁道序列为:";for(i=0;i{cout<}cout<while(1){cout<cout<<"**********************************************"<cout<<"系统菜单"<cout<<"******"<cout<<"**1.先来先效劳**"<cout<<"****"<cout<<"**2.最短寻道时间优先**"<cout<<"****"<cout<<"**3.扫描调度**"<cout<<"****"<cout<<"**4.循环扫描**"<cout<<"****"<cout<<"**5.退出**"<cout<<"******"<G:cout<<"请选择算法:";F:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoF;//输入错误,跳转到F,重新输入}elsec=trans(str,a);if(c==5)break;if(c>5){cout<<"数据输入错误!请重新输入"<gotoG;}switch(c){case1://使用FCFS算法FCFS(cidao,count);break;case2://使用SSTF算法SSTF(cidao,count);break;case3://使用SCAN算法SCAN(cidao,count);break;case4://使用CSCAN算法CSCAN(cidao,count);break;}}}3.运行界面:五、实验心得:通过本次实验,学习了解磁盘调度的工作原理及四种调度方法的工作原理,并且在当中发现了自己的缺乏,对以前所学过的知识理解得不够深刻,掌握得不够结实,看到了自己的实践经历还是比拟缺乏,理论联系实际的能力还急需提高。
cout<}cout<cout<<"请输入当前的磁道号:";B:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoB;}elsenow=trans(str,a);//输入当前磁道号sum+=abs(cidao[0]-now);cout<<"磁盘扫描序列为:";for(i=0;i{cout<}for(i=0,j=1;j{sum+=abs(cidao[j]-cidao[i]);ave=(float)(sum)/(float)(m);}cout<cout<<"平均寻道长度:"<}/**********************最短寻道时间优先调度算法********************/voidSSTF(intcidao[],intm){intk=1;intnow,l,r;inti,j,sum=0;inta;charstr[100];floatave;cidao=bubble(cidao,m);//调用冒泡排序算法排序cout<<"请输入当前的磁道号:";C:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoC;}elsenow=trans(str,a);//输入当前磁道号if(cidao[m-1]<=now)//假设当前磁道号大于请求序列中最大者,那么直接由外向依次给予各请求效劳{cout<<"磁盘扫描序列为:";for(i=m-1;i>=0;i--)cout<sum=now-cidao[0];}if(cidao[0]>=now)//假设当前磁道号小于请求序列中最小者,那么直接由向外依次给予各请求效劳{cout<<"磁盘扫描序列为:";for(i=0;icout<sum=cidao[m-1]-now;}if(now>cidao[0]&&now{cout<<"磁盘扫描序列为:";while(cidao[k]{k++;}l=k-1;r=k;while((l>=0)&&(r{if((now-cidao[l])<=(cidao[r]-now))//选择与当前磁道最近的请求给予效劳{cout<sum+=now-cidao[l];now=cidao[l];l=l-1;}else{cout<sum+=cidao[r]-now;now=cidao[r];r=r+1;}}if(l==-1)//磁头移动到序列的最小号,返回外侧扫描仍未扫描的磁道{for(j=r;j{cout<}sum+=cidao[m-1]-cidao[0];}else//磁头移动到序列的最大号,返回侧扫描仍未扫描的磁道{for(j=l;j>=0;j--){cout<}sum+=cidao[m-1]-cidao[0];}}ave=(float)(sum)/(float)(m);cout<cout<<"平均寻道长度:"<} /*************************扫描调度算法*************************/voidSCAN(intcidao[],intm)//先要给出当前磁道号和移动臂的移动方向{intk=1;intnow,l,r,d;inti,j,sum=0;inta;charstr[100];floatave;cidao=bubble(cidao,m);//调用冒泡排序算法排序cout<<"请输入当前的磁道号:";D:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoD;}elsenow=trans(str,a);//输入当前磁道号if(cidao[m-1]<=now)//假设当前磁道号大于请求序列中最大者,那么直接由外向依次给予各请求效劳,此情况同最短寻道优先{cout<<"磁盘扫描序列为:";for(i=m-1;i>=0;i--)cout<sum=now-cidao[0];}if(cidao[0]>=now)//假设当前磁道号小于请求序列中最小者,那么直接由向外依次给予各请求效劳,此情况同最短寻道优先{cout<<"磁盘扫描序列为:";for(i=0;icout<sum=cidao[m-1]-now;}if(now>cidao[0]&&now{while(cidao[k]{k++;}l=k-1;r=k;cout<<"请输入当前移动臂的移动的方向(1表示向外,0表示向):";cin>>d;if(d==0)//选择移动臂方向向,那么先向扫描{cout<<"磁盘扫描序列为:";for(j=l;j>=0;j--){cout<}for(j=r;j{cout<}sum=now-2*cidao[0]+cidao[m-1];}else//选择移动臂方向向外,那么先向外扫描{cout<<"磁盘扫描序列为:";for(j=r;j{cout<}for(j=l;j>=0;j--)//磁头移动到最大号,那么改变方向向扫描未扫描的磁道{cout<}sum=-now-cidao[0]+2*cidao[m-1];}}ave=(float)(sum)/(float)(m);cout<cout<<"平均寻道长度:"<}/************************循环扫描调度算法*****************************/voidCSCAN(intcidao[],intm){intk=1;intnow,l,r;inti,j,sum=0;inta;charstr[100];floatave;cidao=bubble(cidao,m);//调用冒泡排序算法排序cout<<"请输入当前的磁道号:";E:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoE;}elsenow=trans(str,a);//输入当前磁道号if(cidao[m-1]<=now)//假设当前磁道号大于请求序列中最大者,那么直接将移动臂移动到最小号磁道依次向外给予各请求效劳{cout<<"磁盘扫描序列为:";for(i=0;icout<sum=now-2*cidao[0]+cidao[m-1];}if(cidao[0]>=now)//假设当前磁道号小于请求序列中最小者,那么直接由向外依次给予各请求效劳,此情况同最短寻道优先{cout<<"磁盘扫描序列为:";for(i=0;icout<sum=cidao[m-1]-now;}if(now>cidao[0]&&now{cout<<"磁盘扫描序列为:";while(cidao[k]{k++;}l=k-1;r=k;for(j=r;j{cout<}for(j=0;j{cout<}sum=2*cidao[m-1]+cidao[l]-now-2*cidao[0];}ave=(float)(sum)/(float)(m);cout<cout<<"平均寻道长度:"<}voidmain(){inta;intc;//菜单项intcidao[maxsize];inti=0,count;charstr[100];cout<<"请输入磁道序列〔0完毕〕:"<A:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoA;//输入错误,跳转到A,重新输入}elsecidao[i]=trans(str,a);i++;while(cidao[i-1]!=0){cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0)cout<<"输入数据的类型错误,请重新输入!"<else{cidao[i]=trans(str,a);i++;}}count=i-1;//要访问的磁道数cout<<"你输入的磁道序列为:";for(i=0;i{cout<}cout<while(1){cout<cout<<"**********************************************"<cout<<"系统菜单"<cout<<"******"<cout<<"**1.先来先效劳**"<cout<<"****"<cout<<"**2.最短寻道时间优先**"<cout<<"****"<cout<<"**3.扫描调度**"<cout<<"****"<cout<<"**4.循环扫描**"<cout<<"****"<cout<<"**5.退出**"<cout<<"******"<G:cout<<"请选择算法:";F:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoF;//输入错误,跳转到F,重新输入}elsec=trans(str,a);if(c==5)break;if(c>5){cout<<"数据输入错误!请重新输入"<gotoG;}switch(c){case1://使用FCFS算法FCFS(cidao,count);break;case2://使用SSTF算法SSTF(cidao,count);break;case3://使用SCAN算法SCAN(cidao,count);break;case4://使用CSCAN算法CSCAN(cidao,count);break;}}}3.运行界面:五、实验心得:通过本次实验,学习了解磁盘调度的工作原理及四种调度方法的工作原理,并且在当中发现了自己的缺乏,对以前所学过的知识理解得不够深刻,掌握得不够结实,看到了自己的实践经历还是比拟缺乏,理论联系实际的能力还急需提高。
cout<cout<<"请输入当前的磁道号:";B:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoB;}elsenow=trans(str,a);//输入当前磁道号sum+=abs(cidao[0]-now);cout<<"磁盘扫描序列为:";for(i=0;i{cout<}for(i=0,j=1;j{sum+=abs(cidao[j]-cidao[i]);ave=(float)(sum)/(float)(m);}cout<cout<<"平均寻道长度:"<}/**********************最短寻道时间优先调度算法********************/voidSSTF(intcidao[],intm){intk=1;intnow,l,r;inti,j,sum=0;inta;charstr[100];floatave;cidao=bubble(cidao,m);//调用冒泡排序算法排序cout<<"请输入当前的磁道号:";C:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoC;}elsenow=trans(str,a);//输入当前磁道号if(cidao[m-1]<=now)//假设当前磁道号大于请求序列中最大者,那么直接由外向依次给予各请求效劳{cout<<"磁盘扫描序列为:";for(i=m-1;i>=0;i--)cout<sum=now-cidao[0];}if(cidao[0]>=now)//假设当前磁道号小于请求序列中最小者,那么直接由向外依次给予各请求效劳{cout<<"磁盘扫描序列为:";for(i=0;icout<sum=cidao[m-1]-now;}if(now>cidao[0]&&now{cout<<"磁盘扫描序列为:";while(cidao[k]{k++;}l=k-1;r=k;while((l>=0)&&(r{if((now-cidao[l])<=(cidao[r]-now))//选择与当前磁道最近的请求给予效劳{cout<sum+=now-cidao[l];now=cidao[l];l=l-1;}else{cout<sum+=cidao[r]-now;now=cidao[r];r=r+1;}}if(l==-1)//磁头移动到序列的最小号,返回外侧扫描仍未扫描的磁道{for(j=r;j{cout<}sum+=cidao[m-1]-cidao[0];}else//磁头移动到序列的最大号,返回侧扫描仍未扫描的磁道{for(j=l;j>=0;j--){cout<}sum+=cidao[m-1]-cidao[0];}}ave=(float)(sum)/(float)(m);cout<cout<<"平均寻道长度:"<} /*************************扫描调度算法*************************/voidSCAN(intcidao[],intm)//先要给出当前磁道号和移动臂的移动方向{intk=1;intnow,l,r,d;inti,j,sum=0;inta;charstr[100];floatave;cidao=bubble(cidao,m);//调用冒泡排序算法排序cout<<"请输入当前的磁道号:";D:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoD;}elsenow=trans(str,a);//输入当前磁道号if(cidao[m-1]<=now)//假设当前磁道号大于请求序列中最大者,那么直接由外向依次给予各请求效劳,此情况同最短寻道优先{cout<<"磁盘扫描序列为:";for(i=m-1;i>=0;i--)cout<sum=now-cidao[0];}if(cidao[0]>=now)//假设当前磁道号小于请求序列中最小者,那么直接由向外依次给予各请求效劳,此情况同最短寻道优先{cout<<"磁盘扫描序列为:";for(i=0;icout<sum=cidao[m-1]-now;}if(now>cidao[0]&&now{while(cidao[k]{k++;}l=k-1;r=k;cout<<"请输入当前移动臂的移动的方向(1表示向外,0表示向):";cin>>d;if(d==0)//选择移动臂方向向,那么先向扫描{cout<<"磁盘扫描序列为:";for(j=l;j>=0;j--){cout<}for(j=r;j{cout<}sum=now-2*cidao[0]+cidao[m-1];}else//选择移动臂方向向外,那么先向外扫描{cout<<"磁盘扫描序列为:";for(j=r;j{cout<}for(j=l;j>=0;j--)//磁头移动到最大号,那么改变方向向扫描未扫描的磁道{cout<}sum=-now-cidao[0]+2*cidao[m-1];}}ave=(float)(sum)/(float)(m);cout<cout<<"平均寻道长度:"<}/************************循环扫描调度算法*****************************/voidCSCAN(intcidao[],intm){intk=1;intnow,l,r;inti,j,sum=0;inta;charstr[100];floatave;cidao=bubble(cidao,m);//调用冒泡排序算法排序cout<<"请输入当前的磁道号:";E:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoE;}elsenow=trans(str,a);//输入当前磁道号if(cidao[m-1]<=now)//假设当前磁道号大于请求序列中最大者,那么直接将移动臂移动到最小号磁道依次向外给予各请求效劳{cout<<"磁盘扫描序列为:";for(i=0;icout<sum=now-2*cidao[0]+cidao[m-1];}if(cidao[0]>=now)//假设当前磁道号小于请求序列中最小者,那么直接由向外依次给予各请求效劳,此情况同最短寻道优先{cout<<"磁盘扫描序列为:";for(i=0;icout<sum=cidao[m-1]-now;}if(now>cidao[0]&&now{cout<<"磁盘扫描序列为:";while(cidao[k]{k++;}l=k-1;r=k;for(j=r;j{cout<}for(j=0;j{cout<}sum=2*cidao[m-1]+cidao[l]-now-2*cidao[0];}ave=(float)(sum)/(float)(m);cout<cout<<"平均寻道长度:"<}voidmain(){inta;intc;//菜单项intcidao[maxsize];inti=0,count;charstr[100];cout<<"请输入磁道序列〔0完毕〕:"<A:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoA;//输入错误,跳转到A,重新输入}elsecidao[i]=trans(str,a);i++;while(cidao[i-1]!=0){cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0)cout<<"输入数据的类型错误,请重新输入!"<else{cidao[i]=trans(str,a);i++;}}count=i-1;//要访问的磁道数cout<<"你输入的磁道序列为:";for(i=0;i{cout<}cout<while(1){cout<cout<<"**********************************************"<cout<<"系统菜单"<cout<<"******"<cout<<"**1.先来先效劳**"<cout<<"****"<cout<<"**2.最短寻道时间优先**"<cout<<"****"<cout<<"**3.扫描调度**"<cout<<"****"<cout<<"**4.循环扫描**"<cout<<"****"<cout<<"**5.退出**"<cout<<"******"<G:cout<<"请选择算法:";F:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoF;//输入错误,跳转到F,重新输入}elsec=trans(str,a);if(c==5)break;if(c>5){cout<<"数据输入错误!请重新输入"<gotoG;}switch(c){case1://使用FCFS算法FCFS(cidao,count);break;case2://使用SSTF算法SSTF(cidao,count);break;case3://使用SCAN算法SCAN(cidao,count);break;case4://使用CSCAN算法CSCAN(cidao,count);break;}}}3.运行界面:五、实验心得:通过本次实验,学习了解磁盘调度的工作原理及四种调度方法的工作原理,并且在当中发现了自己的缺乏,对以前所学过的知识理解得不够深刻,掌握得不够结实,看到了自己的实践经历还是比拟缺乏,理论联系实际的能力还急需提高。
cout<<"请输入当前的磁道号:
B:
cin>>str;//对输入数据进展有效性判断
a=decide(str);
if(a==0)
cout<<"输入数据的类型错误,请重新输入!
"<gotoB;}elsenow=trans(str,a);//输入当前磁道号sum+=abs(cidao[0]-now);cout<<"磁盘扫描序列为:";for(i=0;i{cout<}for(i=0,j=1;j{sum+=abs(cidao[j]-cidao[i]);ave=(float)(sum)/(float)(m);}cout<cout<<"平均寻道长度:"<}/**********************最短寻道时间优先调度算法********************/voidSSTF(intcidao[],intm){intk=1;intnow,l,r;inti,j,sum=0;inta;charstr[100];floatave;cidao=bubble(cidao,m);//调用冒泡排序算法排序cout<<"请输入当前的磁道号:";C:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoC;}elsenow=trans(str,a);//输入当前磁道号if(cidao[m-1]<=now)//假设当前磁道号大于请求序列中最大者,那么直接由外向依次给予各请求效劳{cout<<"磁盘扫描序列为:";for(i=m-1;i>=0;i--)cout<sum=now-cidao[0];}if(cidao[0]>=now)//假设当前磁道号小于请求序列中最小者,那么直接由向外依次给予各请求效劳{cout<<"磁盘扫描序列为:";for(i=0;icout<sum=cidao[m-1]-now;}if(now>cidao[0]&&now{cout<<"磁盘扫描序列为:";while(cidao[k]{k++;}l=k-1;r=k;while((l>=0)&&(r{if((now-cidao[l])<=(cidao[r]-now))//选择与当前磁道最近的请求给予效劳{cout<sum+=now-cidao[l];now=cidao[l];l=l-1;}else{cout<sum+=cidao[r]-now;now=cidao[r];r=r+1;}}if(l==-1)//磁头移动到序列的最小号,返回外侧扫描仍未扫描的磁道{for(j=r;j{cout<}sum+=cidao[m-1]-cidao[0];}else//磁头移动到序列的最大号,返回侧扫描仍未扫描的磁道{for(j=l;j>=0;j--){cout<}sum+=cidao[m-1]-cidao[0];}}ave=(float)(sum)/(float)(m);cout<cout<<"平均寻道长度:"<} /*************************扫描调度算法*************************/voidSCAN(intcidao[],intm)//先要给出当前磁道号和移动臂的移动方向{intk=1;intnow,l,r,d;inti,j,sum=0;inta;charstr[100];floatave;cidao=bubble(cidao,m);//调用冒泡排序算法排序cout<<"请输入当前的磁道号:";D:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoD;}elsenow=trans(str,a);//输入当前磁道号if(cidao[m-1]<=now)//假设当前磁道号大于请求序列中最大者,那么直接由外向依次给予各请求效劳,此情况同最短寻道优先{cout<<"磁盘扫描序列为:";for(i=m-1;i>=0;i--)cout<sum=now-cidao[0];}if(cidao[0]>=now)//假设当前磁道号小于请求序列中最小者,那么直接由向外依次给予各请求效劳,此情况同最短寻道优先{cout<<"磁盘扫描序列为:";for(i=0;icout<sum=cidao[m-1]-now;}if(now>cidao[0]&&now{while(cidao[k]{k++;}l=k-1;r=k;cout<<"请输入当前移动臂的移动的方向(1表示向外,0表示向):";cin>>d;if(d==0)//选择移动臂方向向,那么先向扫描{cout<<"磁盘扫描序列为:";for(j=l;j>=0;j--){cout<}for(j=r;j{cout<}sum=now-2*cidao[0]+cidao[m-1];}else//选择移动臂方向向外,那么先向外扫描{cout<<"磁盘扫描序列为:";for(j=r;j{cout<}for(j=l;j>=0;j--)//磁头移动到最大号,那么改变方向向扫描未扫描的磁道{cout<}sum=-now-cidao[0]+2*cidao[m-1];}}ave=(float)(sum)/(float)(m);cout<cout<<"平均寻道长度:"<}/************************循环扫描调度算法*****************************/voidCSCAN(intcidao[],intm){intk=1;intnow,l,r;inti,j,sum=0;inta;charstr[100];floatave;cidao=bubble(cidao,m);//调用冒泡排序算法排序cout<<"请输入当前的磁道号:";E:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoE;}elsenow=trans(str,a);//输入当前磁道号if(cidao[m-1]<=now)//假设当前磁道号大于请求序列中最大者,那么直接将移动臂移动到最小号磁道依次向外给予各请求效劳{cout<<"磁盘扫描序列为:";for(i=0;icout<sum=now-2*cidao[0]+cidao[m-1];}if(cidao[0]>=now)//假设当前磁道号小于请求序列中最小者,那么直接由向外依次给予各请求效劳,此情况同最短寻道优先{cout<<"磁盘扫描序列为:";for(i=0;icout<sum=cidao[m-1]-now;}if(now>cidao[0]&&now{cout<<"磁盘扫描序列为:";while(cidao[k]{k++;}l=k-1;r=k;for(j=r;j{cout<}for(j=0;j{cout<}sum=2*cidao[m-1]+cidao[l]-now-2*cidao[0];}ave=(float)(sum)/(float)(m);cout<cout<<"平均寻道长度:"<}voidmain(){inta;intc;//菜单项intcidao[maxsize];inti=0,count;charstr[100];cout<<"请输入磁道序列〔0完毕〕:"<A:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoA;//输入错误,跳转到A,重新输入}elsecidao[i]=trans(str,a);i++;while(cidao[i-1]!=0){cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0)cout<<"输入数据的类型错误,请重新输入!"<else{cidao[i]=trans(str,a);i++;}}count=i-1;//要访问的磁道数cout<<"你输入的磁道序列为:";for(i=0;i{cout<}cout<while(1){cout<cout<<"**********************************************"<cout<<"系统菜单"<cout<<"******"<cout<<"**1.先来先效劳**"<cout<<"****"<cout<<"**2.最短寻道时间优先**"<cout<<"****"<cout<<"**3.扫描调度**"<cout<<"****"<cout<<"**4.循环扫描**"<cout<<"****"<cout<<"**5.退出**"<cout<<"******"<G:cout<<"请选择算法:";F:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoF;//输入错误,跳转到F,重新输入}elsec=trans(str,a);if(c==5)break;if(c>5){cout<<"数据输入错误!请重新输入"<gotoG;}switch(c){case1://使用FCFS算法FCFS(cidao,count);break;case2://使用SSTF算法SSTF(cidao,count);break;case3://使用SCAN算法SCAN(cidao,count);break;case4://使用CSCAN算法CSCAN(cidao,count);break;}}}3.运行界面:五、实验心得:通过本次实验,学习了解磁盘调度的工作原理及四种调度方法的工作原理,并且在当中发现了自己的缺乏,对以前所学过的知识理解得不够深刻,掌握得不够结实,看到了自己的实践经历还是比拟缺乏,理论联系实际的能力还急需提高。
gotoB;
else
now=trans(str,a);//输入当前磁道号
sum+=abs(cidao[0]-now);
cout<<"磁盘扫描序列为:
for(i=0;i{cout<}for(i=0,j=1;j{sum+=abs(cidao[j]-cidao[i]);ave=(float)(sum)/(float)(m);}cout<cout<<"平均寻道长度:"<}/**********************最短寻道时间优先调度算法********************/voidSSTF(intcidao[],intm){intk=1;intnow,l,r;inti,j,sum=0;inta;charstr[100];floatave;cidao=bubble(cidao,m);//调用冒泡排序算法排序cout<<"请输入当前的磁道号:";C:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoC;}elsenow=trans(str,a);//输入当前磁道号if(cidao[m-1]<=now)//假设当前磁道号大于请求序列中最大者,那么直接由外向依次给予各请求效劳{cout<<"磁盘扫描序列为:";for(i=m-1;i>=0;i--)cout<sum=now-cidao[0];}if(cidao[0]>=now)//假设当前磁道号小于请求序列中最小者,那么直接由向外依次给予各请求效劳{cout<<"磁盘扫描序列为:";for(i=0;icout<sum=cidao[m-1]-now;}if(now>cidao[0]&&now{cout<<"磁盘扫描序列为:";while(cidao[k]{k++;}l=k-1;r=k;while((l>=0)&&(r{if((now-cidao[l])<=(cidao[r]-now))//选择与当前磁道最近的请求给予效劳{cout<sum+=now-cidao[l];now=cidao[l];l=l-1;}else{cout<sum+=cidao[r]-now;now=cidao[r];r=r+1;}}if(l==-1)//磁头移动到序列的最小号,返回外侧扫描仍未扫描的磁道{for(j=r;j{cout<}sum+=cidao[m-1]-cidao[0];}else//磁头移动到序列的最大号,返回侧扫描仍未扫描的磁道{for(j=l;j>=0;j--){cout<}sum+=cidao[m-1]-cidao[0];}}ave=(float)(sum)/(float)(m);cout<cout<<"平均寻道长度:"<} /*************************扫描调度算法*************************/voidSCAN(intcidao[],intm)//先要给出当前磁道号和移动臂的移动方向{intk=1;intnow,l,r,d;inti,j,sum=0;inta;charstr[100];floatave;cidao=bubble(cidao,m);//调用冒泡排序算法排序cout<<"请输入当前的磁道号:";D:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoD;}elsenow=trans(str,a);//输入当前磁道号if(cidao[m-1]<=now)//假设当前磁道号大于请求序列中最大者,那么直接由外向依次给予各请求效劳,此情况同最短寻道优先{cout<<"磁盘扫描序列为:";for(i=m-1;i>=0;i--)cout<sum=now-cidao[0];}if(cidao[0]>=now)//假设当前磁道号小于请求序列中最小者,那么直接由向外依次给予各请求效劳,此情况同最短寻道优先{cout<<"磁盘扫描序列为:";for(i=0;icout<sum=cidao[m-1]-now;}if(now>cidao[0]&&now{while(cidao[k]{k++;}l=k-1;r=k;cout<<"请输入当前移动臂的移动的方向(1表示向外,0表示向):";cin>>d;if(d==0)//选择移动臂方向向,那么先向扫描{cout<<"磁盘扫描序列为:";for(j=l;j>=0;j--){cout<}for(j=r;j{cout<}sum=now-2*cidao[0]+cidao[m-1];}else//选择移动臂方向向外,那么先向外扫描{cout<<"磁盘扫描序列为:";for(j=r;j{cout<}for(j=l;j>=0;j--)//磁头移动到最大号,那么改变方向向扫描未扫描的磁道{cout<}sum=-now-cidao[0]+2*cidao[m-1];}}ave=(float)(sum)/(float)(m);cout<cout<<"平均寻道长度:"<}/************************循环扫描调度算法*****************************/voidCSCAN(intcidao[],intm){intk=1;intnow,l,r;inti,j,sum=0;inta;charstr[100];floatave;cidao=bubble(cidao,m);//调用冒泡排序算法排序cout<<"请输入当前的磁道号:";E:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoE;}elsenow=trans(str,a);//输入当前磁道号if(cidao[m-1]<=now)//假设当前磁道号大于请求序列中最大者,那么直接将移动臂移动到最小号磁道依次向外给予各请求效劳{cout<<"磁盘扫描序列为:";for(i=0;icout<sum=now-2*cidao[0]+cidao[m-1];}if(cidao[0]>=now)//假设当前磁道号小于请求序列中最小者,那么直接由向外依次给予各请求效劳,此情况同最短寻道优先{cout<<"磁盘扫描序列为:";for(i=0;icout<sum=cidao[m-1]-now;}if(now>cidao[0]&&now{cout<<"磁盘扫描序列为:";while(cidao[k]{k++;}l=k-1;r=k;for(j=r;j{cout<}for(j=0;j{cout<}sum=2*cidao[m-1]+cidao[l]-now-2*cidao[0];}ave=(float)(sum)/(float)(m);cout<cout<<"平均寻道长度:"<}voidmain(){inta;intc;//菜单项intcidao[maxsize];inti=0,count;charstr[100];cout<<"请输入磁道序列〔0完毕〕:"<A:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoA;//输入错误,跳转到A,重新输入}elsecidao[i]=trans(str,a);i++;while(cidao[i-1]!=0){cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0)cout<<"输入数据的类型错误,请重新输入!"<else{cidao[i]=trans(str,a);i++;}}count=i-1;//要访问的磁道数cout<<"你输入的磁道序列为:";for(i=0;i{cout<}cout<while(1){cout<cout<<"**********************************************"<cout<<"系统菜单"<cout<<"******"<cout<<"**1.先来先效劳**"<cout<<"****"<cout<<"**2.最短寻道时间优先**"<cout<<"****"<cout<<"**3.扫描调度**"<cout<<"****"<cout<<"**4.循环扫描**"<cout<<"****"<cout<<"**5.退出**"<cout<<"******"<G:cout<<"请选择算法:";F:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoF;//输入错误,跳转到F,重新输入}elsec=trans(str,a);if(c==5)break;if(c>5){cout<<"数据输入错误!请重新输入"<gotoG;}switch(c){case1://使用FCFS算法FCFS(cidao,count);break;case2://使用SSTF算法SSTF(cidao,count);break;case3://使用SCAN算法SCAN(cidao,count);break;case4://使用CSCAN算法CSCAN(cidao,count);break;}}}3.运行界面:五、实验心得:通过本次实验,学习了解磁盘调度的工作原理及四种调度方法的工作原理,并且在当中发现了自己的缺乏,对以前所学过的知识理解得不够深刻,掌握得不够结实,看到了自己的实践经历还是比拟缺乏,理论联系实际的能力还急需提高。
cout<}for(i=0,j=1;j{sum+=abs(cidao[j]-cidao[i]);ave=(float)(sum)/(float)(m);}cout<cout<<"平均寻道长度:"<}/**********************最短寻道时间优先调度算法********************/voidSSTF(intcidao[],intm){intk=1;intnow,l,r;inti,j,sum=0;inta;charstr[100];floatave;cidao=bubble(cidao,m);//调用冒泡排序算法排序cout<<"请输入当前的磁道号:";C:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoC;}elsenow=trans(str,a);//输入当前磁道号if(cidao[m-1]<=now)//假设当前磁道号大于请求序列中最大者,那么直接由外向依次给予各请求效劳{cout<<"磁盘扫描序列为:";for(i=m-1;i>=0;i--)cout<sum=now-cidao[0];}if(cidao[0]>=now)//假设当前磁道号小于请求序列中最小者,那么直接由向外依次给予各请求效劳{cout<<"磁盘扫描序列为:";for(i=0;icout<sum=cidao[m-1]-now;}if(now>cidao[0]&&now{cout<<"磁盘扫描序列为:";while(cidao[k]{k++;}l=k-1;r=k;while((l>=0)&&(r{if((now-cidao[l])<=(cidao[r]-now))//选择与当前磁道最近的请求给予效劳{cout<sum+=now-cidao[l];now=cidao[l];l=l-1;}else{cout<sum+=cidao[r]-now;now=cidao[r];r=r+1;}}if(l==-1)//磁头移动到序列的最小号,返回外侧扫描仍未扫描的磁道{for(j=r;j{cout<}sum+=cidao[m-1]-cidao[0];}else//磁头移动到序列的最大号,返回侧扫描仍未扫描的磁道{for(j=l;j>=0;j--){cout<}sum+=cidao[m-1]-cidao[0];}}ave=(float)(sum)/(float)(m);cout<cout<<"平均寻道长度:"<} /*************************扫描调度算法*************************/voidSCAN(intcidao[],intm)//先要给出当前磁道号和移动臂的移动方向{intk=1;intnow,l,r,d;inti,j,sum=0;inta;charstr[100];floatave;cidao=bubble(cidao,m);//调用冒泡排序算法排序cout<<"请输入当前的磁道号:";D:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoD;}elsenow=trans(str,a);//输入当前磁道号if(cidao[m-1]<=now)//假设当前磁道号大于请求序列中最大者,那么直接由外向依次给予各请求效劳,此情况同最短寻道优先{cout<<"磁盘扫描序列为:";for(i=m-1;i>=0;i--)cout<sum=now-cidao[0];}if(cidao[0]>=now)//假设当前磁道号小于请求序列中最小者,那么直接由向外依次给予各请求效劳,此情况同最短寻道优先{cout<<"磁盘扫描序列为:";for(i=0;icout<sum=cidao[m-1]-now;}if(now>cidao[0]&&now{while(cidao[k]{k++;}l=k-1;r=k;cout<<"请输入当前移动臂的移动的方向(1表示向外,0表示向):";cin>>d;if(d==0)//选择移动臂方向向,那么先向扫描{cout<<"磁盘扫描序列为:";for(j=l;j>=0;j--){cout<}for(j=r;j{cout<}sum=now-2*cidao[0]+cidao[m-1];}else//选择移动臂方向向外,那么先向外扫描{cout<<"磁盘扫描序列为:";for(j=r;j{cout<}for(j=l;j>=0;j--)//磁头移动到最大号,那么改变方向向扫描未扫描的磁道{cout<}sum=-now-cidao[0]+2*cidao[m-1];}}ave=(float)(sum)/(float)(m);cout<cout<<"平均寻道长度:"<}/************************循环扫描调度算法*****************************/voidCSCAN(intcidao[],intm){intk=1;intnow,l,r;inti,j,sum=0;inta;charstr[100];floatave;cidao=bubble(cidao,m);//调用冒泡排序算法排序cout<<"请输入当前的磁道号:";E:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoE;}elsenow=trans(str,a);//输入当前磁道号if(cidao[m-1]<=now)//假设当前磁道号大于请求序列中最大者,那么直接将移动臂移动到最小号磁道依次向外给予各请求效劳{cout<<"磁盘扫描序列为:";for(i=0;icout<sum=now-2*cidao[0]+cidao[m-1];}if(cidao[0]>=now)//假设当前磁道号小于请求序列中最小者,那么直接由向外依次给予各请求效劳,此情况同最短寻道优先{cout<<"磁盘扫描序列为:";for(i=0;icout<sum=cidao[m-1]-now;}if(now>cidao[0]&&now{cout<<"磁盘扫描序列为:";while(cidao[k]{k++;}l=k-1;r=k;for(j=r;j{cout<}for(j=0;j{cout<}sum=2*cidao[m-1]+cidao[l]-now-2*cidao[0];}ave=(float)(sum)/(float)(m);cout<cout<<"平均寻道长度:"<}voidmain(){inta;intc;//菜单项intcidao[maxsize];inti=0,count;charstr[100];cout<<"请输入磁道序列〔0完毕〕:"<A:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoA;//输入错误,跳转到A,重新输入}elsecidao[i]=trans(str,a);i++;while(cidao[i-1]!=0){cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0)cout<<"输入数据的类型错误,请重新输入!"<else{cidao[i]=trans(str,a);i++;}}count=i-1;//要访问的磁道数cout<<"你输入的磁道序列为:";for(i=0;i{cout<}cout<while(1){cout<cout<<"**********************************************"<cout<<"系统菜单"<cout<<"******"<cout<<"**1.先来先效劳**"<cout<<"****"<cout<<"**2.最短寻道时间优先**"<cout<<"****"<cout<<"**3.扫描调度**"<cout<<"****"<cout<<"**4.循环扫描**"<cout<<"****"<cout<<"**5.退出**"<cout<<"******"<G:cout<<"请选择算法:";F:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoF;//输入错误,跳转到F,重新输入}elsec=trans(str,a);if(c==5)break;if(c>5){cout<<"数据输入错误!请重新输入"<gotoG;}switch(c){case1://使用FCFS算法FCFS(cidao,count);break;case2://使用SSTF算法SSTF(cidao,count);break;case3://使用SCAN算法SCAN(cidao,count);break;case4://使用CSCAN算法CSCAN(cidao,count);break;}}}3.运行界面:五、实验心得:通过本次实验,学习了解磁盘调度的工作原理及四种调度方法的工作原理,并且在当中发现了自己的缺乏,对以前所学过的知识理解得不够深刻,掌握得不够结实,看到了自己的实践经历还是比拟缺乏,理论联系实际的能力还急需提高。
for(i=0,j=1;j{sum+=abs(cidao[j]-cidao[i]);ave=(float)(sum)/(float)(m);}cout<cout<<"平均寻道长度:"<}/**********************最短寻道时间优先调度算法********************/voidSSTF(intcidao[],intm){intk=1;intnow,l,r;inti,j,sum=0;inta;charstr[100];floatave;cidao=bubble(cidao,m);//调用冒泡排序算法排序cout<<"请输入当前的磁道号:";C:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoC;}elsenow=trans(str,a);//输入当前磁道号if(cidao[m-1]<=now)//假设当前磁道号大于请求序列中最大者,那么直接由外向依次给予各请求效劳{cout<<"磁盘扫描序列为:";for(i=m-1;i>=0;i--)cout<sum=now-cidao[0];}if(cidao[0]>=now)//假设当前磁道号小于请求序列中最小者,那么直接由向外依次给予各请求效劳{cout<<"磁盘扫描序列为:";for(i=0;icout<sum=cidao[m-1]-now;}if(now>cidao[0]&&now{cout<<"磁盘扫描序列为:";while(cidao[k]{k++;}l=k-1;r=k;while((l>=0)&&(r{if((now-cidao[l])<=(cidao[r]-now))//选择与当前磁道最近的请求给予效劳{cout<sum+=now-cidao[l];now=cidao[l];l=l-1;}else{cout<sum+=cidao[r]-now;now=cidao[r];r=r+1;}}if(l==-1)//磁头移动到序列的最小号,返回外侧扫描仍未扫描的磁道{for(j=r;j{cout<}sum+=cidao[m-1]-cidao[0];}else//磁头移动到序列的最大号,返回侧扫描仍未扫描的磁道{for(j=l;j>=0;j--){cout<}sum+=cidao[m-1]-cidao[0];}}ave=(float)(sum)/(float)(m);cout<cout<<"平均寻道长度:"<} /*************************扫描调度算法*************************/voidSCAN(intcidao[],intm)//先要给出当前磁道号和移动臂的移动方向{intk=1;intnow,l,r,d;inti,j,sum=0;inta;charstr[100];floatave;cidao=bubble(cidao,m);//调用冒泡排序算法排序cout<<"请输入当前的磁道号:";D:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoD;}elsenow=trans(str,a);//输入当前磁道号if(cidao[m-1]<=now)//假设当前磁道号大于请求序列中最大者,那么直接由外向依次给予各请求效劳,此情况同最短寻道优先{cout<<"磁盘扫描序列为:";for(i=m-1;i>=0;i--)cout<sum=now-cidao[0];}if(cidao[0]>=now)//假设当前磁道号小于请求序列中最小者,那么直接由向外依次给予各请求效劳,此情况同最短寻道优先{cout<<"磁盘扫描序列为:";for(i=0;icout<sum=cidao[m-1]-now;}if(now>cidao[0]&&now{while(cidao[k]{k++;}l=k-1;r=k;cout<<"请输入当前移动臂的移动的方向(1表示向外,0表示向):";cin>>d;if(d==0)//选择移动臂方向向,那么先向扫描{cout<<"磁盘扫描序列为:";for(j=l;j>=0;j--){cout<}for(j=r;j{cout<}sum=now-2*cidao[0]+cidao[m-1];}else//选择移动臂方向向外,那么先向外扫描{cout<<"磁盘扫描序列为:";for(j=r;j{cout<}for(j=l;j>=0;j--)//磁头移动到最大号,那么改变方向向扫描未扫描的磁道{cout<}sum=-now-cidao[0]+2*cidao[m-1];}}ave=(float)(sum)/(float)(m);cout<cout<<"平均寻道长度:"<}/************************循环扫描调度算法*****************************/voidCSCAN(intcidao[],intm){intk=1;intnow,l,r;inti,j,sum=0;inta;charstr[100];floatave;cidao=bubble(cidao,m);//调用冒泡排序算法排序cout<<"请输入当前的磁道号:";E:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoE;}elsenow=trans(str,a);//输入当前磁道号if(cidao[m-1]<=now)//假设当前磁道号大于请求序列中最大者,那么直接将移动臂移动到最小号磁道依次向外给予各请求效劳{cout<<"磁盘扫描序列为:";for(i=0;icout<sum=now-2*cidao[0]+cidao[m-1];}if(cidao[0]>=now)//假设当前磁道号小于请求序列中最小者,那么直接由向外依次给予各请求效劳,此情况同最短寻道优先{cout<<"磁盘扫描序列为:";for(i=0;icout<sum=cidao[m-1]-now;}if(now>cidao[0]&&now{cout<<"磁盘扫描序列为:";while(cidao[k]{k++;}l=k-1;r=k;for(j=r;j{cout<}for(j=0;j{cout<}sum=2*cidao[m-1]+cidao[l]-now-2*cidao[0];}ave=(float)(sum)/(float)(m);cout<cout<<"平均寻道长度:"<}voidmain(){inta;intc;//菜单项intcidao[maxsize];inti=0,count;charstr[100];cout<<"请输入磁道序列〔0完毕〕:"<A:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoA;//输入错误,跳转到A,重新输入}elsecidao[i]=trans(str,a);i++;while(cidao[i-1]!=0){cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0)cout<<"输入数据的类型错误,请重新输入!"<else{cidao[i]=trans(str,a);i++;}}count=i-1;//要访问的磁道数cout<<"你输入的磁道序列为:";for(i=0;i{cout<}cout<while(1){cout<cout<<"**********************************************"<cout<<"系统菜单"<cout<<"******"<cout<<"**1.先来先效劳**"<cout<<"****"<cout<<"**2.最短寻道时间优先**"<cout<<"****"<cout<<"**3.扫描调度**"<cout<<"****"<cout<<"**4.循环扫描**"<cout<<"****"<cout<<"**5.退出**"<cout<<"******"<G:cout<<"请选择算法:";F:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoF;//输入错误,跳转到F,重新输入}elsec=trans(str,a);if(c==5)break;if(c>5){cout<<"数据输入错误!请重新输入"<gotoG;}switch(c){case1://使用FCFS算法FCFS(cidao,count);break;case2://使用SSTF算法SSTF(cidao,count);break;case3://使用SCAN算法SCAN(cidao,count);break;case4://使用CSCAN算法CSCAN(cidao,count);break;}}}3.运行界面:五、实验心得:通过本次实验,学习了解磁盘调度的工作原理及四种调度方法的工作原理,并且在当中发现了自己的缺乏,对以前所学过的知识理解得不够深刻,掌握得不够结实,看到了自己的实践经历还是比拟缺乏,理论联系实际的能力还急需提高。
sum+=abs(cidao[j]-cidao[i]);
ave=(float)(sum)/(float)(m);
cout<cout<<"平均寻道长度:"<}/**********************最短寻道时间优先调度算法********************/voidSSTF(intcidao[],intm){intk=1;intnow,l,r;inti,j,sum=0;inta;charstr[100];floatave;cidao=bubble(cidao,m);//调用冒泡排序算法排序cout<<"请输入当前的磁道号:";C:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoC;}elsenow=trans(str,a);//输入当前磁道号if(cidao[m-1]<=now)//假设当前磁道号大于请求序列中最大者,那么直接由外向依次给予各请求效劳{cout<<"磁盘扫描序列为:";for(i=m-1;i>=0;i--)cout<sum=now-cidao[0];}if(cidao[0]>=now)//假设当前磁道号小于请求序列中最小者,那么直接由向外依次给予各请求效劳{cout<<"磁盘扫描序列为:";for(i=0;icout<sum=cidao[m-1]-now;}if(now>cidao[0]&&now{cout<<"磁盘扫描序列为:";while(cidao[k]{k++;}l=k-1;r=k;while((l>=0)&&(r{if((now-cidao[l])<=(cidao[r]-now))//选择与当前磁道最近的请求给予效劳{cout<sum+=now-cidao[l];now=cidao[l];l=l-1;}else{cout<sum+=cidao[r]-now;now=cidao[r];r=r+1;}}if(l==-1)//磁头移动到序列的最小号,返回外侧扫描仍未扫描的磁道{for(j=r;j{cout<}sum+=cidao[m-1]-cidao[0];}else//磁头移动到序列的最大号,返回侧扫描仍未扫描的磁道{for(j=l;j>=0;j--){cout<}sum+=cidao[m-1]-cidao[0];}}ave=(float)(sum)/(float)(m);cout<cout<<"平均寻道长度:"<} /*************************扫描调度算法*************************/voidSCAN(intcidao[],intm)//先要给出当前磁道号和移动臂的移动方向{intk=1;intnow,l,r,d;inti,j,sum=0;inta;charstr[100];floatave;cidao=bubble(cidao,m);//调用冒泡排序算法排序cout<<"请输入当前的磁道号:";D:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoD;}elsenow=trans(str,a);//输入当前磁道号if(cidao[m-1]<=now)//假设当前磁道号大于请求序列中最大者,那么直接由外向依次给予各请求效劳,此情况同最短寻道优先{cout<<"磁盘扫描序列为:";for(i=m-1;i>=0;i--)cout<sum=now-cidao[0];}if(cidao[0]>=now)//假设当前磁道号小于请求序列中最小者,那么直接由向外依次给予各请求效劳,此情况同最短寻道优先{cout<<"磁盘扫描序列为:";for(i=0;icout<sum=cidao[m-1]-now;}if(now>cidao[0]&&now{while(cidao[k]{k++;}l=k-1;r=k;cout<<"请输入当前移动臂的移动的方向(1表示向外,0表示向):";cin>>d;if(d==0)//选择移动臂方向向,那么先向扫描{cout<<"磁盘扫描序列为:";for(j=l;j>=0;j--){cout<}for(j=r;j{cout<}sum=now-2*cidao[0]+cidao[m-1];}else//选择移动臂方向向外,那么先向外扫描{cout<<"磁盘扫描序列为:";for(j=r;j{cout<}for(j=l;j>=0;j--)//磁头移动到最大号,那么改变方向向扫描未扫描的磁道{cout<}sum=-now-cidao[0]+2*cidao[m-1];}}ave=(float)(sum)/(float)(m);cout<cout<<"平均寻道长度:"<}/************************循环扫描调度算法*****************************/voidCSCAN(intcidao[],intm){intk=1;intnow,l,r;inti,j,sum=0;inta;charstr[100];floatave;cidao=bubble(cidao,m);//调用冒泡排序算法排序cout<<"请输入当前的磁道号:";E:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoE;}elsenow=trans(str,a);//输入当前磁道号if(cidao[m-1]<=now)//假设当前磁道号大于请求序列中最大者,那么直接将移动臂移动到最小号磁道依次向外给予各请求效劳{cout<<"磁盘扫描序列为:";for(i=0;icout<sum=now-2*cidao[0]+cidao[m-1];}if(cidao[0]>=now)//假设当前磁道号小于请求序列中最小者,那么直接由向外依次给予各请求效劳,此情况同最短寻道优先{cout<<"磁盘扫描序列为:";for(i=0;icout<sum=cidao[m-1]-now;}if(now>cidao[0]&&now{cout<<"磁盘扫描序列为:";while(cidao[k]{k++;}l=k-1;r=k;for(j=r;j{cout<}for(j=0;j{cout<}sum=2*cidao[m-1]+cidao[l]-now-2*cidao[0];}ave=(float)(sum)/(float)(m);cout<cout<<"平均寻道长度:"<}voidmain(){inta;intc;//菜单项intcidao[maxsize];inti=0,count;charstr[100];cout<<"请输入磁道序列〔0完毕〕:"<A:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoA;//输入错误,跳转到A,重新输入}elsecidao[i]=trans(str,a);i++;while(cidao[i-1]!=0){cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0)cout<<"输入数据的类型错误,请重新输入!"<else{cidao[i]=trans(str,a);i++;}}count=i-1;//要访问的磁道数cout<<"你输入的磁道序列为:";for(i=0;i{cout<}cout<while(1){cout<cout<<"**********************************************"<cout<<"系统菜单"<cout<<"******"<cout<<"**1.先来先效劳**"<cout<<"****"<cout<<"**2.最短寻道时间优先**"<cout<<"****"<cout<<"**3.扫描调度**"<cout<<"****"<cout<<"**4.循环扫描**"<cout<<"****"<cout<<"**5.退出**"<cout<<"******"<G:cout<<"请选择算法:";F:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoF;//输入错误,跳转到F,重新输入}elsec=trans(str,a);if(c==5)break;if(c>5){cout<<"数据输入错误!请重新输入"<gotoG;}switch(c){case1://使用FCFS算法FCFS(cidao,count);break;case2://使用SSTF算法SSTF(cidao,count);break;case3://使用SCAN算法SCAN(cidao,count);break;case4://使用CSCAN算法CSCAN(cidao,count);break;}}}3.运行界面:五、实验心得:通过本次实验,学习了解磁盘调度的工作原理及四种调度方法的工作原理,并且在当中发现了自己的缺乏,对以前所学过的知识理解得不够深刻,掌握得不够结实,看到了自己的实践经历还是比拟缺乏,理论联系实际的能力还急需提高。
cout<<"平均寻道长度:
"<}/**********************最短寻道时间优先调度算法********************/voidSSTF(intcidao[],intm){intk=1;intnow,l,r;inti,j,sum=0;inta;charstr[100];floatave;cidao=bubble(cidao,m);//调用冒泡排序算法排序cout<<"请输入当前的磁道号:";C:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoC;}elsenow=trans(str,a);//输入当前磁道号if(cidao[m-1]<=now)//假设当前磁道号大于请求序列中最大者,那么直接由外向依次给予各请求效劳{cout<<"磁盘扫描序列为:";for(i=m-1;i>=0;i--)cout<sum=now-cidao[0];}if(cidao[0]>=now)//假设当前磁道号小于请求序列中最小者,那么直接由向外依次给予各请求效劳{cout<<"磁盘扫描序列为:";for(i=0;icout<sum=cidao[m-1]-now;}if(now>cidao[0]&&now{cout<<"磁盘扫描序列为:";while(cidao[k]{k++;}l=k-1;r=k;while((l>=0)&&(r{if((now-cidao[l])<=(cidao[r]-now))//选择与当前磁道最近的请求给予效劳{cout<sum+=now-cidao[l];now=cidao[l];l=l-1;}else{cout<sum+=cidao[r]-now;now=cidao[r];r=r+1;}}if(l==-1)//磁头移动到序列的最小号,返回外侧扫描仍未扫描的磁道{for(j=r;j{cout<}sum+=cidao[m-1]-cidao[0];}else//磁头移动到序列的最大号,返回侧扫描仍未扫描的磁道{for(j=l;j>=0;j--){cout<}sum+=cidao[m-1]-cidao[0];}}ave=(float)(sum)/(float)(m);cout<cout<<"平均寻道长度:"<} /*************************扫描调度算法*************************/voidSCAN(intcidao[],intm)//先要给出当前磁道号和移动臂的移动方向{intk=1;intnow,l,r,d;inti,j,sum=0;inta;charstr[100];floatave;cidao=bubble(cidao,m);//调用冒泡排序算法排序cout<<"请输入当前的磁道号:";D:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoD;}elsenow=trans(str,a);//输入当前磁道号if(cidao[m-1]<=now)//假设当前磁道号大于请求序列中最大者,那么直接由外向依次给予各请求效劳,此情况同最短寻道优先{cout<<"磁盘扫描序列为:";for(i=m-1;i>=0;i--)cout<sum=now-cidao[0];}if(cidao[0]>=now)//假设当前磁道号小于请求序列中最小者,那么直接由向外依次给予各请求效劳,此情况同最短寻道优先{cout<<"磁盘扫描序列为:";for(i=0;icout<sum=cidao[m-1]-now;}if(now>cidao[0]&&now{while(cidao[k]{k++;}l=k-1;r=k;cout<<"请输入当前移动臂的移动的方向(1表示向外,0表示向):";cin>>d;if(d==0)//选择移动臂方向向,那么先向扫描{cout<<"磁盘扫描序列为:";for(j=l;j>=0;j--){cout<}for(j=r;j{cout<}sum=now-2*cidao[0]+cidao[m-1];}else//选择移动臂方向向外,那么先向外扫描{cout<<"磁盘扫描序列为:";for(j=r;j{cout<}for(j=l;j>=0;j--)//磁头移动到最大号,那么改变方向向扫描未扫描的磁道{cout<}sum=-now-cidao[0]+2*cidao[m-1];}}ave=(float)(sum)/(float)(m);cout<cout<<"平均寻道长度:"<}/************************循环扫描调度算法*****************************/voidCSCAN(intcidao[],intm){intk=1;intnow,l,r;inti,j,sum=0;inta;charstr[100];floatave;cidao=bubble(cidao,m);//调用冒泡排序算法排序cout<<"请输入当前的磁道号:";E:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoE;}elsenow=trans(str,a);//输入当前磁道号if(cidao[m-1]<=now)//假设当前磁道号大于请求序列中最大者,那么直接将移动臂移动到最小号磁道依次向外给予各请求效劳{cout<<"磁盘扫描序列为:";for(i=0;icout<sum=now-2*cidao[0]+cidao[m-1];}if(cidao[0]>=now)//假设当前磁道号小于请求序列中最小者,那么直接由向外依次给予各请求效劳,此情况同最短寻道优先{cout<<"磁盘扫描序列为:";for(i=0;icout<sum=cidao[m-1]-now;}if(now>cidao[0]&&now{cout<<"磁盘扫描序列为:";while(cidao[k]{k++;}l=k-1;r=k;for(j=r;j{cout<}for(j=0;j{cout<}sum=2*cidao[m-1]+cidao[l]-now-2*cidao[0];}ave=(float)(sum)/(float)(m);cout<cout<<"平均寻道长度:"<}voidmain(){inta;intc;//菜单项intcidao[maxsize];inti=0,count;charstr[100];cout<<"请输入磁道序列〔0完毕〕:"<A:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoA;//输入错误,跳转到A,重新输入}elsecidao[i]=trans(str,a);i++;while(cidao[i-1]!=0){cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0)cout<<"输入数据的类型错误,请重新输入!"<else{cidao[i]=trans(str,a);i++;}}count=i-1;//要访问的磁道数cout<<"你输入的磁道序列为:";for(i=0;i{cout<}cout<while(1){cout<cout<<"**********************************************"<cout<<"系统菜单"<cout<<"******"<cout<<"**1.先来先效劳**"<cout<<"****"<cout<<"**2.最短寻道时间优先**"<cout<<"****"<cout<<"**3.扫描调度**"<cout<<"****"<cout<<"**4.循环扫描**"<cout<<"****"<cout<<"**5.退出**"<cout<<"******"<G:cout<<"请选择算法:";F:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoF;//输入错误,跳转到F,重新输入}elsec=trans(str,a);if(c==5)break;if(c>5){cout<<"数据输入错误!请重新输入"<gotoG;}switch(c){case1://使用FCFS算法FCFS(cidao,count);break;case2://使用SSTF算法SSTF(cidao,count);break;case3://使用SCAN算法SCAN(cidao,count);break;case4://使用CSCAN算法CSCAN(cidao,count);break;}}}3.运行界面:五、实验心得:通过本次实验,学习了解磁盘调度的工作原理及四种调度方法的工作原理,并且在当中发现了自己的缺乏,对以前所学过的知识理解得不够深刻,掌握得不够结实,看到了自己的实践经历还是比拟缺乏,理论联系实际的能力还急需提高。
/**********************最短寻道时间优先调度算法********************/
voidSSTF(intcidao[],intm)
intk=1;
intnow,l,r;
inti,j,sum=0;
floatave;
cidao=bubble(cidao,m);//调用冒泡排序算法排序
C:
"<gotoC;}elsenow=trans(str,a);//输入当前磁道号if(cidao[m-1]<=now)//假设当前磁道号大于请求序列中最大者,那么直接由外向依次给予各请求效劳{cout<<"磁盘扫描序列为:";for(i=m-1;i>=0;i--)cout<sum=now-cidao[0];}if(cidao[0]>=now)//假设当前磁道号小于请求序列中最小者,那么直接由向外依次给予各请求效劳{cout<<"磁盘扫描序列为:";for(i=0;icout<sum=cidao[m-1]-now;}if(now>cidao[0]&&now{cout<<"磁盘扫描序列为:";while(cidao[k]{k++;}l=k-1;r=k;while((l>=0)&&(r{if((now-cidao[l])<=(cidao[r]-now))//选择与当前磁道最近的请求给予效劳{cout<sum+=now-cidao[l];now=cidao[l];l=l-1;}else{cout<sum+=cidao[r]-now;now=cidao[r];r=r+1;}}if(l==-1)//磁头移动到序列的最小号,返回外侧扫描仍未扫描的磁道{for(j=r;j{cout<}sum+=cidao[m-1]-cidao[0];}else//磁头移动到序列的最大号,返回侧扫描仍未扫描的磁道{for(j=l;j>=0;j--){cout<}sum+=cidao[m-1]-cidao[0];}}ave=(float)(sum)/(float)(m);cout<cout<<"平均寻道长度:"<} /*************************扫描调度算法*************************/voidSCAN(intcidao[],intm)//先要给出当前磁道号和移动臂的移动方向{intk=1;intnow,l,r,d;inti,j,sum=0;inta;charstr[100];floatave;cidao=bubble(cidao,m);//调用冒泡排序算法排序cout<<"请输入当前的磁道号:";D:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoD;}elsenow=trans(str,a);//输入当前磁道号if(cidao[m-1]<=now)//假设当前磁道号大于请求序列中最大者,那么直接由外向依次给予各请求效劳,此情况同最短寻道优先{cout<<"磁盘扫描序列为:";for(i=m-1;i>=0;i--)cout<sum=now-cidao[0];}if(cidao[0]>=now)//假设当前磁道号小于请求序列中最小者,那么直接由向外依次给予各请求效劳,此情况同最短寻道优先{cout<<"磁盘扫描序列为:";for(i=0;icout<sum=cidao[m-1]-now;}if(now>cidao[0]&&now{while(cidao[k]{k++;}l=k-1;r=k;cout<<"请输入当前移动臂的移动的方向(1表示向外,0表示向):";cin>>d;if(d==0)//选择移动臂方向向,那么先向扫描{cout<<"磁盘扫描序列为:";for(j=l;j>=0;j--){cout<}for(j=r;j{cout<}sum=now-2*cidao[0]+cidao[m-1];}else//选择移动臂方向向外,那么先向外扫描{cout<<"磁盘扫描序列为:";for(j=r;j{cout<}for(j=l;j>=0;j--)//磁头移动到最大号,那么改变方向向扫描未扫描的磁道{cout<}sum=-now-cidao[0]+2*cidao[m-1];}}ave=(float)(sum)/(float)(m);cout<cout<<"平均寻道长度:"<}/************************循环扫描调度算法*****************************/voidCSCAN(intcidao[],intm){intk=1;intnow,l,r;inti,j,sum=0;inta;charstr[100];floatave;cidao=bubble(cidao,m);//调用冒泡排序算法排序cout<<"请输入当前的磁道号:";E:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoE;}elsenow=trans(str,a);//输入当前磁道号if(cidao[m-1]<=now)//假设当前磁道号大于请求序列中最大者,那么直接将移动臂移动到最小号磁道依次向外给予各请求效劳{cout<<"磁盘扫描序列为:";for(i=0;icout<sum=now-2*cidao[0]+cidao[m-1];}if(cidao[0]>=now)//假设当前磁道号小于请求序列中最小者,那么直接由向外依次给予各请求效劳,此情况同最短寻道优先{cout<<"磁盘扫描序列为:";for(i=0;icout<sum=cidao[m-1]-now;}if(now>cidao[0]&&now{cout<<"磁盘扫描序列为:";while(cidao[k]{k++;}l=k-1;r=k;for(j=r;j{cout<}for(j=0;j{cout<}sum=2*cidao[m-1]+cidao[l]-now-2*cidao[0];}ave=(float)(sum)/(float)(m);cout<cout<<"平均寻道长度:"<}voidmain(){inta;intc;//菜单项intcidao[maxsize];inti=0,count;charstr[100];cout<<"请输入磁道序列〔0完毕〕:"<A:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoA;//输入错误,跳转到A,重新输入}elsecidao[i]=trans(str,a);i++;while(cidao[i-1]!=0){cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0)cout<<"输入数据的类型错误,请重新输入!"<else{cidao[i]=trans(str,a);i++;}}count=i-1;//要访问的磁道数cout<<"你输入的磁道序列为:";for(i=0;i{cout<}cout<while(1){cout<cout<<"**********************************************"<cout<<"系统菜单"<cout<<"******"<cout<<"**1.先来先效劳**"<cout<<"****"<cout<<"**2.最短寻道时间优先**"<cout<<"****"<cout<<"**3.扫描调度**"<cout<<"****"<cout<<"**4.循环扫描**"<cout<<"****"<cout<<"**5.退出**"<cout<<"******"<G:cout<<"请选择算法:";F:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoF;//输入错误,跳转到F,重新输入}elsec=trans(str,a);if(c==5)break;if(c>5){cout<<"数据输入错误!请重新输入"<gotoG;}switch(c){case1://使用FCFS算法FCFS(cidao,count);break;case2://使用SSTF算法SSTF(cidao,count);break;case3://使用SCAN算法SCAN(cidao,count);break;case4://使用CSCAN算法CSCAN(cidao,count);break;}}}3.运行界面:五、实验心得:通过本次实验,学习了解磁盘调度的工作原理及四种调度方法的工作原理,并且在当中发现了自己的缺乏,对以前所学过的知识理解得不够深刻,掌握得不够结实,看到了自己的实践经历还是比拟缺乏,理论联系实际的能力还急需提高。
gotoC;
if(cidao[m-1]<=now)//假设当前磁道号大于请求序列中最大者,那么直接由外向依次给予各请求效劳
for(i=m-1;i>=0;i--)
cout<sum=now-cidao[0];}if(cidao[0]>=now)//假设当前磁道号小于请求序列中最小者,那么直接由向外依次给予各请求效劳{cout<<"磁盘扫描序列为:";for(i=0;icout<sum=cidao[m-1]-now;}if(now>cidao[0]&&now{cout<<"磁盘扫描序列为:";while(cidao[k]{k++;}l=k-1;r=k;while((l>=0)&&(r{if((now-cidao[l])<=(cidao[r]-now))//选择与当前磁道最近的请求给予效劳{cout<sum+=now-cidao[l];now=cidao[l];l=l-1;}else{cout<sum+=cidao[r]-now;now=cidao[r];r=r+1;}}if(l==-1)//磁头移动到序列的最小号,返回外侧扫描仍未扫描的磁道{for(j=r;j{cout<}sum+=cidao[m-1]-cidao[0];}else//磁头移动到序列的最大号,返回侧扫描仍未扫描的磁道{for(j=l;j>=0;j--){cout<}sum+=cidao[m-1]-cidao[0];}}ave=(float)(sum)/(float)(m);cout<cout<<"平均寻道长度:"<} /*************************扫描调度算法*************************/voidSCAN(intcidao[],intm)//先要给出当前磁道号和移动臂的移动方向{intk=1;intnow,l,r,d;inti,j,sum=0;inta;charstr[100];floatave;cidao=bubble(cidao,m);//调用冒泡排序算法排序cout<<"请输入当前的磁道号:";D:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoD;}elsenow=trans(str,a);//输入当前磁道号if(cidao[m-1]<=now)//假设当前磁道号大于请求序列中最大者,那么直接由外向依次给予各请求效劳,此情况同最短寻道优先{cout<<"磁盘扫描序列为:";for(i=m-1;i>=0;i--)cout<sum=now-cidao[0];}if(cidao[0]>=now)//假设当前磁道号小于请求序列中最小者,那么直接由向外依次给予各请求效劳,此情况同最短寻道优先{cout<<"磁盘扫描序列为:";for(i=0;icout<sum=cidao[m-1]-now;}if(now>cidao[0]&&now{while(cidao[k]{k++;}l=k-1;r=k;cout<<"请输入当前移动臂的移动的方向(1表示向外,0表示向):";cin>>d;if(d==0)//选择移动臂方向向,那么先向扫描{cout<<"磁盘扫描序列为:";for(j=l;j>=0;j--){cout<}for(j=r;j{cout<}sum=now-2*cidao[0]+cidao[m-1];}else//选择移动臂方向向外,那么先向外扫描{cout<<"磁盘扫描序列为:";for(j=r;j{cout<}for(j=l;j>=0;j--)//磁头移动到最大号,那么改变方向向扫描未扫描的磁道{cout<}sum=-now-cidao[0]+2*cidao[m-1];}}ave=(float)(sum)/(float)(m);cout<cout<<"平均寻道长度:"<}/************************循环扫描调度算法*****************************/voidCSCAN(intcidao[],intm){intk=1;intnow,l,r;inti,j,sum=0;inta;charstr[100];floatave;cidao=bubble(cidao,m);//调用冒泡排序算法排序cout<<"请输入当前的磁道号:";E:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoE;}elsenow=trans(str,a);//输入当前磁道号if(cidao[m-1]<=now)//假设当前磁道号大于请求序列中最大者,那么直接将移动臂移动到最小号磁道依次向外给予各请求效劳{cout<<"磁盘扫描序列为:";for(i=0;icout<sum=now-2*cidao[0]+cidao[m-1];}if(cidao[0]>=now)//假设当前磁道号小于请求序列中最小者,那么直接由向外依次给予各请求效劳,此情况同最短寻道优先{cout<<"磁盘扫描序列为:";for(i=0;icout<sum=cidao[m-1]-now;}if(now>cidao[0]&&now{cout<<"磁盘扫描序列为:";while(cidao[k]{k++;}l=k-1;r=k;for(j=r;j{cout<}for(j=0;j{cout<}sum=2*cidao[m-1]+cidao[l]-now-2*cidao[0];}ave=(float)(sum)/(float)(m);cout<cout<<"平均寻道长度:"<}voidmain(){inta;intc;//菜单项intcidao[maxsize];inti=0,count;charstr[100];cout<<"请输入磁道序列〔0完毕〕:"<A:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoA;//输入错误,跳转到A,重新输入}elsecidao[i]=trans(str,a);i++;while(cidao[i-1]!=0){cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0)cout<<"输入数据的类型错误,请重新输入!"<else{cidao[i]=trans(str,a);i++;}}count=i-1;//要访问的磁道数cout<<"你输入的磁道序列为:";for(i=0;i{cout<}cout<while(1){cout<cout<<"**********************************************"<cout<<"系统菜单"<cout<<"******"<cout<<"**1.先来先效劳**"<cout<<"****"<cout<<"**2.最短寻道时间优先**"<cout<<"****"<cout<<"**3.扫描调度**"<cout<<"****"<cout<<"**4.循环扫描**"<cout<<"****"<cout<<"**5.退出**"<cout<<"******"<G:cout<<"请选择算法:";F:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoF;//输入错误,跳转到F,重新输入}elsec=trans(str,a);if(c==5)break;if(c>5){cout<<"数据输入错误!请重新输入"<gotoG;}switch(c){case1://使用FCFS算法FCFS(cidao,count);break;case2://使用SSTF算法SSTF(cidao,count);break;case3://使用SCAN算法SCAN(cidao,count);break;case4://使用CSCAN算法CSCAN(cidao,count);break;}}}3.运行界面:五、实验心得:通过本次实验,学习了解磁盘调度的工作原理及四种调度方法的工作原理,并且在当中发现了自己的缺乏,对以前所学过的知识理解得不够深刻,掌握得不够结实,看到了自己的实践经历还是比拟缺乏,理论联系实际的能力还急需提高。
sum=now-cidao[0];
if(cidao[0]>=now)//假设当前磁道号小于请求序列中最小者,那么直接由向外依次给予各请求效劳
for(i=0;icout<sum=cidao[m-1]-now;}if(now>cidao[0]&&now{cout<<"磁盘扫描序列为:";while(cidao[k]{k++;}l=k-1;r=k;while((l>=0)&&(r{if((now-cidao[l])<=(cidao[r]-now))//选择与当前磁道最近的请求给予效劳{cout<sum+=now-cidao[l];now=cidao[l];l=l-1;}else{cout<sum+=cidao[r]-now;now=cidao[r];r=r+1;}}if(l==-1)//磁头移动到序列的最小号,返回外侧扫描仍未扫描的磁道{for(j=r;j{cout<}sum+=cidao[m-1]-cidao[0];}else//磁头移动到序列的最大号,返回侧扫描仍未扫描的磁道{for(j=l;j>=0;j--){cout<}sum+=cidao[m-1]-cidao[0];}}ave=(float)(sum)/(float)(m);cout<cout<<"平均寻道长度:"<} /*************************扫描调度算法*************************/voidSCAN(intcidao[],intm)//先要给出当前磁道号和移动臂的移动方向{intk=1;intnow,l,r,d;inti,j,sum=0;inta;charstr[100];floatave;cidao=bubble(cidao,m);//调用冒泡排序算法排序cout<<"请输入当前的磁道号:";D:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoD;}elsenow=trans(str,a);//输入当前磁道号if(cidao[m-1]<=now)//假设当前磁道号大于请求序列中最大者,那么直接由外向依次给予各请求效劳,此情况同最短寻道优先{cout<<"磁盘扫描序列为:";for(i=m-1;i>=0;i--)cout<sum=now-cidao[0];}if(cidao[0]>=now)//假设当前磁道号小于请求序列中最小者,那么直接由向外依次给予各请求效劳,此情况同最短寻道优先{cout<<"磁盘扫描序列为:";for(i=0;icout<sum=cidao[m-1]-now;}if(now>cidao[0]&&now{while(cidao[k]{k++;}l=k-1;r=k;cout<<"请输入当前移动臂的移动的方向(1表示向外,0表示向):";cin>>d;if(d==0)//选择移动臂方向向,那么先向扫描{cout<<"磁盘扫描序列为:";for(j=l;j>=0;j--){cout<}for(j=r;j{cout<}sum=now-2*cidao[0]+cidao[m-1];}else//选择移动臂方向向外,那么先向外扫描{cout<<"磁盘扫描序列为:";for(j=r;j{cout<}for(j=l;j>=0;j--)//磁头移动到最大号,那么改变方向向扫描未扫描的磁道{cout<}sum=-now-cidao[0]+2*cidao[m-1];}}ave=(float)(sum)/(float)(m);cout<cout<<"平均寻道长度:"<}/************************循环扫描调度算法*****************************/voidCSCAN(intcidao[],intm){intk=1;intnow,l,r;inti,j,sum=0;inta;charstr[100];floatave;cidao=bubble(cidao,m);//调用冒泡排序算法排序cout<<"请输入当前的磁道号:";E:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoE;}elsenow=trans(str,a);//输入当前磁道号if(cidao[m-1]<=now)//假设当前磁道号大于请求序列中最大者,那么直接将移动臂移动到最小号磁道依次向外给予各请求效劳{cout<<"磁盘扫描序列为:";for(i=0;icout<sum=now-2*cidao[0]+cidao[m-1];}if(cidao[0]>=now)//假设当前磁道号小于请求序列中最小者,那么直接由向外依次给予各请求效劳,此情况同最短寻道优先{cout<<"磁盘扫描序列为:";for(i=0;icout<sum=cidao[m-1]-now;}if(now>cidao[0]&&now{cout<<"磁盘扫描序列为:";while(cidao[k]{k++;}l=k-1;r=k;for(j=r;j{cout<}for(j=0;j{cout<}sum=2*cidao[m-1]+cidao[l]-now-2*cidao[0];}ave=(float)(sum)/(float)(m);cout<cout<<"平均寻道长度:"<}voidmain(){inta;intc;//菜单项intcidao[maxsize];inti=0,count;charstr[100];cout<<"请输入磁道序列〔0完毕〕:"<A:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoA;//输入错误,跳转到A,重新输入}elsecidao[i]=trans(str,a);i++;while(cidao[i-1]!=0){cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0)cout<<"输入数据的类型错误,请重新输入!"<else{cidao[i]=trans(str,a);i++;}}count=i-1;//要访问的磁道数cout<<"你输入的磁道序列为:";for(i=0;i{cout<}cout<while(1){cout<cout<<"**********************************************"<cout<<"系统菜单"<cout<<"******"<cout<<"**1.先来先效劳**"<cout<<"****"<cout<<"**2.最短寻道时间优先**"<cout<<"****"<cout<<"**3.扫描调度**"<cout<<"****"<cout<<"**4.循环扫描**"<cout<<"****"<cout<<"**5.退出**"<cout<<"******"<G:cout<<"请选择算法:";F:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoF;//输入错误,跳转到F,重新输入}elsec=trans(str,a);if(c==5)break;if(c>5){cout<<"数据输入错误!请重新输入"<gotoG;}switch(c){case1://使用FCFS算法FCFS(cidao,count);break;case2://使用SSTF算法SSTF(cidao,count);break;case3://使用SCAN算法SCAN(cidao,count);break;case4://使用CSCAN算法CSCAN(cidao,count);break;}}}3.运行界面:五、实验心得:通过本次实验,学习了解磁盘调度的工作原理及四种调度方法的工作原理,并且在当中发现了自己的缺乏,对以前所学过的知识理解得不够深刻,掌握得不够结实,看到了自己的实践经历还是比拟缺乏,理论联系实际的能力还急需提高。
cout<sum=cidao[m-1]-now;}if(now>cidao[0]&&now{cout<<"磁盘扫描序列为:";while(cidao[k]{k++;}l=k-1;r=k;while((l>=0)&&(r{if((now-cidao[l])<=(cidao[r]-now))//选择与当前磁道最近的请求给予效劳{cout<sum+=now-cidao[l];now=cidao[l];l=l-1;}else{cout<sum+=cidao[r]-now;now=cidao[r];r=r+1;}}if(l==-1)//磁头移动到序列的最小号,返回外侧扫描仍未扫描的磁道{for(j=r;j{cout<}sum+=cidao[m-1]-cidao[0];}else//磁头移动到序列的最大号,返回侧扫描仍未扫描的磁道{for(j=l;j>=0;j--){cout<}sum+=cidao[m-1]-cidao[0];}}ave=(float)(sum)/(float)(m);cout<cout<<"平均寻道长度:"<} /*************************扫描调度算法*************************/voidSCAN(intcidao[],intm)//先要给出当前磁道号和移动臂的移动方向{intk=1;intnow,l,r,d;inti,j,sum=0;inta;charstr[100];floatave;cidao=bubble(cidao,m);//调用冒泡排序算法排序cout<<"请输入当前的磁道号:";D:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoD;}elsenow=trans(str,a);//输入当前磁道号if(cidao[m-1]<=now)//假设当前磁道号大于请求序列中最大者,那么直接由外向依次给予各请求效劳,此情况同最短寻道优先{cout<<"磁盘扫描序列为:";for(i=m-1;i>=0;i--)cout<sum=now-cidao[0];}if(cidao[0]>=now)//假设当前磁道号小于请求序列中最小者,那么直接由向外依次给予各请求效劳,此情况同最短寻道优先{cout<<"磁盘扫描序列为:";for(i=0;icout<sum=cidao[m-1]-now;}if(now>cidao[0]&&now{while(cidao[k]{k++;}l=k-1;r=k;cout<<"请输入当前移动臂的移动的方向(1表示向外,0表示向):";cin>>d;if(d==0)//选择移动臂方向向,那么先向扫描{cout<<"磁盘扫描序列为:";for(j=l;j>=0;j--){cout<}for(j=r;j{cout<}sum=now-2*cidao[0]+cidao[m-1];}else//选择移动臂方向向外,那么先向外扫描{cout<<"磁盘扫描序列为:";for(j=r;j{cout<}for(j=l;j>=0;j--)//磁头移动到最大号,那么改变方向向扫描未扫描的磁道{cout<}sum=-now-cidao[0]+2*cidao[m-1];}}ave=(float)(sum)/(float)(m);cout<cout<<"平均寻道长度:"<}/************************循环扫描调度算法*****************************/voidCSCAN(intcidao[],intm){intk=1;intnow,l,r;inti,j,sum=0;inta;charstr[100];floatave;cidao=bubble(cidao,m);//调用冒泡排序算法排序cout<<"请输入当前的磁道号:";E:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoE;}elsenow=trans(str,a);//输入当前磁道号if(cidao[m-1]<=now)//假设当前磁道号大于请求序列中最大者,那么直接将移动臂移动到最小号磁道依次向外给予各请求效劳{cout<<"磁盘扫描序列为:";for(i=0;icout<sum=now-2*cidao[0]+cidao[m-1];}if(cidao[0]>=now)//假设当前磁道号小于请求序列中最小者,那么直接由向外依次给予各请求效劳,此情况同最短寻道优先{cout<<"磁盘扫描序列为:";for(i=0;icout<sum=cidao[m-1]-now;}if(now>cidao[0]&&now{cout<<"磁盘扫描序列为:";while(cidao[k]{k++;}l=k-1;r=k;for(j=r;j{cout<}for(j=0;j{cout<}sum=2*cidao[m-1]+cidao[l]-now-2*cidao[0];}ave=(float)(sum)/(float)(m);cout<cout<<"平均寻道长度:"<}voidmain(){inta;intc;//菜单项intcidao[maxsize];inti=0,count;charstr[100];cout<<"请输入磁道序列〔0完毕〕:"<A:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoA;//输入错误,跳转到A,重新输入}elsecidao[i]=trans(str,a);i++;while(cidao[i-1]!=0){cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0)cout<<"输入数据的类型错误,请重新输入!"<else{cidao[i]=trans(str,a);i++;}}count=i-1;//要访问的磁道数cout<<"你输入的磁道序列为:";for(i=0;i{cout<}cout<while(1){cout<cout<<"**********************************************"<cout<<"系统菜单"<cout<<"******"<cout<<"**1.先来先效劳**"<cout<<"****"<cout<<"**2.最短寻道时间优先**"<cout<<"****"<cout<<"**3.扫描调度**"<cout<<"****"<cout<<"**4.循环扫描**"<cout<<"****"<cout<<"**5.退出**"<cout<<"******"<G:cout<<"请选择算法:";F:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoF;//输入错误,跳转到F,重新输入}elsec=trans(str,a);if(c==5)break;if(c>5){cout<<"数据输入错误!请重新输入"<gotoG;}switch(c){case1://使用FCFS算法FCFS(cidao,count);break;case2://使用SSTF算法SSTF(cidao,count);break;case3://使用SCAN算法SCAN(cidao,count);break;case4://使用CSCAN算法CSCAN(cidao,count);break;}}}3.运行界面:五、实验心得:通过本次实验,学习了解磁盘调度的工作原理及四种调度方法的工作原理,并且在当中发现了自己的缺乏,对以前所学过的知识理解得不够深刻,掌握得不够结实,看到了自己的实践经历还是比拟缺乏,理论联系实际的能力还急需提高。
sum=cidao[m-1]-now;
if(now>cidao[0]&&now{cout<<"磁盘扫描序列为:";while(cidao[k]{k++;}l=k-1;r=k;while((l>=0)&&(r{if((now-cidao[l])<=(cidao[r]-now))//选择与当前磁道最近的请求给予效劳{cout<sum+=now-cidao[l];now=cidao[l];l=l-1;}else{cout<sum+=cidao[r]-now;now=cidao[r];r=r+1;}}if(l==-1)//磁头移动到序列的最小号,返回外侧扫描仍未扫描的磁道{for(j=r;j{cout<}sum+=cidao[m-1]-cidao[0];}else//磁头移动到序列的最大号,返回侧扫描仍未扫描的磁道{for(j=l;j>=0;j--){cout<}sum+=cidao[m-1]-cidao[0];}}ave=(float)(sum)/(float)(m);cout<cout<<"平均寻道长度:"<} /*************************扫描调度算法*************************/voidSCAN(intcidao[],intm)//先要给出当前磁道号和移动臂的移动方向{intk=1;intnow,l,r,d;inti,j,sum=0;inta;charstr[100];floatave;cidao=bubble(cidao,m);//调用冒泡排序算法排序cout<<"请输入当前的磁道号:";D:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoD;}elsenow=trans(str,a);//输入当前磁道号if(cidao[m-1]<=now)//假设当前磁道号大于请求序列中最大者,那么直接由外向依次给予各请求效劳,此情况同最短寻道优先{cout<<"磁盘扫描序列为:";for(i=m-1;i>=0;i--)cout<sum=now-cidao[0];}if(cidao[0]>=now)//假设当前磁道号小于请求序列中最小者,那么直接由向外依次给予各请求效劳,此情况同最短寻道优先{cout<<"磁盘扫描序列为:";for(i=0;icout<sum=cidao[m-1]-now;}if(now>cidao[0]&&now{while(cidao[k]{k++;}l=k-1;r=k;cout<<"请输入当前移动臂的移动的方向(1表示向外,0表示向):";cin>>d;if(d==0)//选择移动臂方向向,那么先向扫描{cout<<"磁盘扫描序列为:";for(j=l;j>=0;j--){cout<}for(j=r;j{cout<}sum=now-2*cidao[0]+cidao[m-1];}else//选择移动臂方向向外,那么先向外扫描{cout<<"磁盘扫描序列为:";for(j=r;j{cout<}for(j=l;j>=0;j--)//磁头移动到最大号,那么改变方向向扫描未扫描的磁道{cout<}sum=-now-cidao[0]+2*cidao[m-1];}}ave=(float)(sum)/(float)(m);cout<cout<<"平均寻道长度:"<}/************************循环扫描调度算法*****************************/voidCSCAN(intcidao[],intm){intk=1;intnow,l,r;inti,j,sum=0;inta;charstr[100];floatave;cidao=bubble(cidao,m);//调用冒泡排序算法排序cout<<"请输入当前的磁道号:";E:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoE;}elsenow=trans(str,a);//输入当前磁道号if(cidao[m-1]<=now)//假设当前磁道号大于请求序列中最大者,那么直接将移动臂移动到最小号磁道依次向外给予各请求效劳{cout<<"磁盘扫描序列为:";for(i=0;icout<sum=now-2*cidao[0]+cidao[m-1];}if(cidao[0]>=now)//假设当前磁道号小于请求序列中最小者,那么直接由向外依次给予各请求效劳,此情况同最短寻道优先{cout<<"磁盘扫描序列为:";for(i=0;icout<sum=cidao[m-1]-now;}if(now>cidao[0]&&now{cout<<"磁盘扫描序列为:";while(cidao[k]{k++;}l=k-1;r=k;for(j=r;j{cout<}for(j=0;j{cout<}sum=2*cidao[m-1]+cidao[l]-now-2*cidao[0];}ave=(float)(sum)/(float)(m);cout<cout<<"平均寻道长度:"<}voidmain(){inta;intc;//菜单项intcidao[maxsize];inti=0,count;charstr[100];cout<<"请输入磁道序列〔0完毕〕:"<A:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoA;//输入错误,跳转到A,重新输入}elsecidao[i]=trans(str,a);i++;while(cidao[i-1]!=0){cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0)cout<<"输入数据的类型错误,请重新输入!"<else{cidao[i]=trans(str,a);i++;}}count=i-1;//要访问的磁道数cout<<"你输入的磁道序列为:";for(i=0;i{cout<}cout<while(1){cout<cout<<"**********************************************"<cout<<"系统菜单"<cout<<"******"<cout<<"**1.先来先效劳**"<cout<<"****"<cout<<"**2.最短寻道时间优先**"<cout<<"****"<cout<<"**3.扫描调度**"<cout<<"****"<cout<<"**4.循环扫描**"<cout<<"****"<cout<<"**5.退出**"<cout<<"******"<G:cout<<"请选择算法:";F:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoF;//输入错误,跳转到F,重新输入}elsec=trans(str,a);if(c==5)break;if(c>5){cout<<"数据输入错误!请重新输入"<gotoG;}switch(c){case1://使用FCFS算法FCFS(cidao,count);break;case2://使用SSTF算法SSTF(cidao,count);break;case3://使用SCAN算法SCAN(cidao,count);break;case4://使用CSCAN算法CSCAN(cidao,count);break;}}}3.运行界面:五、实验心得:通过本次实验,学习了解磁盘调度的工作原理及四种调度方法的工作原理,并且在当中发现了自己的缺乏,对以前所学过的知识理解得不够深刻,掌握得不够结实,看到了自己的实践经历还是比拟缺乏,理论联系实际的能力还急需提高。
while(cidao[k]{k++;}l=k-1;r=k;while((l>=0)&&(r{if((now-cidao[l])<=(cidao[r]-now))//选择与当前磁道最近的请求给予效劳{cout<sum+=now-cidao[l];now=cidao[l];l=l-1;}else{cout<sum+=cidao[r]-now;now=cidao[r];r=r+1;}}if(l==-1)//磁头移动到序列的最小号,返回外侧扫描仍未扫描的磁道{for(j=r;j{cout<}sum+=cidao[m-1]-cidao[0];}else//磁头移动到序列的最大号,返回侧扫描仍未扫描的磁道{for(j=l;j>=0;j--){cout<}sum+=cidao[m-1]-cidao[0];}}ave=(float)(sum)/(float)(m);cout<cout<<"平均寻道长度:"<} /*************************扫描调度算法*************************/voidSCAN(intcidao[],intm)//先要给出当前磁道号和移动臂的移动方向{intk=1;intnow,l,r,d;inti,j,sum=0;inta;charstr[100];floatave;cidao=bubble(cidao,m);//调用冒泡排序算法排序cout<<"请输入当前的磁道号:";D:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoD;}elsenow=trans(str,a);//输入当前磁道号if(cidao[m-1]<=now)//假设当前磁道号大于请求序列中最大者,那么直接由外向依次给予各请求效劳,此情况同最短寻道优先{cout<<"磁盘扫描序列为:";for(i=m-1;i>=0;i--)cout<sum=now-cidao[0];}if(cidao[0]>=now)//假设当前磁道号小于请求序列中最小者,那么直接由向外依次给予各请求效劳,此情况同最短寻道优先{cout<<"磁盘扫描序列为:";for(i=0;icout<sum=cidao[m-1]-now;}if(now>cidao[0]&&now{while(cidao[k]{k++;}l=k-1;r=k;cout<<"请输入当前移动臂的移动的方向(1表示向外,0表示向):";cin>>d;if(d==0)//选择移动臂方向向,那么先向扫描{cout<<"磁盘扫描序列为:";for(j=l;j>=0;j--){cout<}for(j=r;j{cout<}sum=now-2*cidao[0]+cidao[m-1];}else//选择移动臂方向向外,那么先向外扫描{cout<<"磁盘扫描序列为:";for(j=r;j{cout<}for(j=l;j>=0;j--)//磁头移动到最大号,那么改变方向向扫描未扫描的磁道{cout<}sum=-now-cidao[0]+2*cidao[m-1];}}ave=(float)(sum)/(float)(m);cout<cout<<"平均寻道长度:"<}/************************循环扫描调度算法*****************************/voidCSCAN(intcidao[],intm){intk=1;intnow,l,r;inti,j,sum=0;inta;charstr[100];floatave;cidao=bubble(cidao,m);//调用冒泡排序算法排序cout<<"请输入当前的磁道号:";E:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoE;}elsenow=trans(str,a);//输入当前磁道号if(cidao[m-1]<=now)//假设当前磁道号大于请求序列中最大者,那么直接将移动臂移动到最小号磁道依次向外给予各请求效劳{cout<<"磁盘扫描序列为:";for(i=0;icout<sum=now-2*cidao[0]+cidao[m-1];}if(cidao[0]>=now)//假设当前磁道号小于请求序列中最小者,那么直接由向外依次给予各请求效劳,此情况同最短寻道优先{cout<<"磁盘扫描序列为:";for(i=0;icout<sum=cidao[m-1]-now;}if(now>cidao[0]&&now{cout<<"磁盘扫描序列为:";while(cidao[k]{k++;}l=k-1;r=k;for(j=r;j{cout<}for(j=0;j{cout<}sum=2*cidao[m-1]+cidao[l]-now-2*cidao[0];}ave=(float)(sum)/(float)(m);cout<cout<<"平均寻道长度:"<}voidmain(){inta;intc;//菜单项intcidao[maxsize];inti=0,count;charstr[100];cout<<"请输入磁道序列〔0完毕〕:"<A:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoA;//输入错误,跳转到A,重新输入}elsecidao[i]=trans(str,a);i++;while(cidao[i-1]!=0){cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0)cout<<"输入数据的类型错误,请重新输入!"<else{cidao[i]=trans(str,a);i++;}}count=i-1;//要访问的磁道数cout<<"你输入的磁道序列为:";for(i=0;i{cout<}cout<while(1){cout<cout<<"**********************************************"<cout<<"系统菜单"<cout<<"******"<cout<<"**1.先来先效劳**"<cout<<"****"<cout<<"**2.最短寻道时间优先**"<cout<<"****"<cout<<"**3.扫描调度**"<cout<<"****"<cout<<"**4.循环扫描**"<cout<<"****"<cout<<"**5.退出**"<cout<<"******"<G:cout<<"请选择算法:";F:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoF;//输入错误,跳转到F,重新输入}elsec=trans(str,a);if(c==5)break;if(c>5){cout<<"数据输入错误!请重新输入"<gotoG;}switch(c){case1://使用FCFS算法FCFS(cidao,count);break;case2://使用SSTF算法SSTF(cidao,count);break;case3://使用SCAN算法SCAN(cidao,count);break;case4://使用CSCAN算法CSCAN(cidao,count);break;}}}3.运行界面:五、实验心得:通过本次实验,学习了解磁盘调度的工作原理及四种调度方法的工作原理,并且在当中发现了自己的缺乏,对以前所学过的知识理解得不够深刻,掌握得不够结实,看到了自己的实践经历还是比拟缺乏,理论联系实际的能力还急需提高。
k++;
l=k-1;
r=k;
while((l>=0)&&(r{if((now-cidao[l])<=(cidao[r]-now))//选择与当前磁道最近的请求给予效劳{cout<sum+=now-cidao[l];now=cidao[l];l=l-1;}else{cout<sum+=cidao[r]-now;now=cidao[r];r=r+1;}}if(l==-1)//磁头移动到序列的最小号,返回外侧扫描仍未扫描的磁道{for(j=r;j{cout<}sum+=cidao[m-1]-cidao[0];}else//磁头移动到序列的最大号,返回侧扫描仍未扫描的磁道{for(j=l;j>=0;j--){cout<}sum+=cidao[m-1]-cidao[0];}}ave=(float)(sum)/(float)(m);cout<cout<<"平均寻道长度:"<} /*************************扫描调度算法*************************/voidSCAN(intcidao[],intm)//先要给出当前磁道号和移动臂的移动方向{intk=1;intnow,l,r,d;inti,j,sum=0;inta;charstr[100];floatave;cidao=bubble(cidao,m);//调用冒泡排序算法排序cout<<"请输入当前的磁道号:";D:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoD;}elsenow=trans(str,a);//输入当前磁道号if(cidao[m-1]<=now)//假设当前磁道号大于请求序列中最大者,那么直接由外向依次给予各请求效劳,此情况同最短寻道优先{cout<<"磁盘扫描序列为:";for(i=m-1;i>=0;i--)cout<sum=now-cidao[0];}if(cidao[0]>=now)//假设当前磁道号小于请求序列中最小者,那么直接由向外依次给予各请求效劳,此情况同最短寻道优先{cout<<"磁盘扫描序列为:";for(i=0;icout<sum=cidao[m-1]-now;}if(now>cidao[0]&&now{while(cidao[k]{k++;}l=k-1;r=k;cout<<"请输入当前移动臂的移动的方向(1表示向外,0表示向):";cin>>d;if(d==0)//选择移动臂方向向,那么先向扫描{cout<<"磁盘扫描序列为:";for(j=l;j>=0;j--){cout<}for(j=r;j{cout<}sum=now-2*cidao[0]+cidao[m-1];}else//选择移动臂方向向外,那么先向外扫描{cout<<"磁盘扫描序列为:";for(j=r;j{cout<}for(j=l;j>=0;j--)//磁头移动到最大号,那么改变方向向扫描未扫描的磁道{cout<}sum=-now-cidao[0]+2*cidao[m-1];}}ave=(float)(sum)/(float)(m);cout<cout<<"平均寻道长度:"<}/************************循环扫描调度算法*****************************/voidCSCAN(intcidao[],intm){intk=1;intnow,l,r;inti,j,sum=0;inta;charstr[100];floatave;cidao=bubble(cidao,m);//调用冒泡排序算法排序cout<<"请输入当前的磁道号:";E:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoE;}elsenow=trans(str,a);//输入当前磁道号if(cidao[m-1]<=now)//假设当前磁道号大于请求序列中最大者,那么直接将移动臂移动到最小号磁道依次向外给予各请求效劳{cout<<"磁盘扫描序列为:";for(i=0;icout<sum=now-2*cidao[0]+cidao[m-1];}if(cidao[0]>=now)//假设当前磁道号小于请求序列中最小者,那么直接由向外依次给予各请求效劳,此情况同最短寻道优先{cout<<"磁盘扫描序列为:";for(i=0;icout<sum=cidao[m-1]-now;}if(now>cidao[0]&&now{cout<<"磁盘扫描序列为:";while(cidao[k]{k++;}l=k-1;r=k;for(j=r;j{cout<}for(j=0;j{cout<}sum=2*cidao[m-1]+cidao[l]-now-2*cidao[0];}ave=(float)(sum)/(float)(m);cout<cout<<"平均寻道长度:"<}voidmain(){inta;intc;//菜单项intcidao[maxsize];inti=0,count;charstr[100];cout<<"请输入磁道序列〔0完毕〕:"<A:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoA;//输入错误,跳转到A,重新输入}elsecidao[i]=trans(str,a);i++;while(cidao[i-1]!=0){cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0)cout<<"输入数据的类型错误,请重新输入!"<else{cidao[i]=trans(str,a);i++;}}count=i-1;//要访问的磁道数cout<<"你输入的磁道序列为:";for(i=0;i{cout<}cout<while(1){cout<cout<<"**********************************************"<cout<<"系统菜单"<cout<<"******"<cout<<"**1.先来先效劳**"<cout<<"****"<cout<<"**2.最短寻道时间优先**"<cout<<"****"<cout<<"**3.扫描调度**"<cout<<"****"<cout<<"**4.循环扫描**"<cout<<"****"<cout<<"**5.退出**"<cout<<"******"<G:cout<<"请选择算法:";F:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoF;//输入错误,跳转到F,重新输入}elsec=trans(str,a);if(c==5)break;if(c>5){cout<<"数据输入错误!请重新输入"<gotoG;}switch(c){case1://使用FCFS算法FCFS(cidao,count);break;case2://使用SSTF算法SSTF(cidao,count);break;case3://使用SCAN算法SCAN(cidao,count);break;case4://使用CSCAN算法CSCAN(cidao,count);break;}}}3.运行界面:五、实验心得:通过本次实验,学习了解磁盘调度的工作原理及四种调度方法的工作原理,并且在当中发现了自己的缺乏,对以前所学过的知识理解得不够深刻,掌握得不够结实,看到了自己的实践经历还是比拟缺乏,理论联系实际的能力还急需提高。
if((now-cidao[l])<=(cidao[r]-now))//选择与当前磁道最近的请求给予效劳
cout<sum+=now-cidao[l];now=cidao[l];l=l-1;}else{cout<sum+=cidao[r]-now;now=cidao[r];r=r+1;}}if(l==-1)//磁头移动到序列的最小号,返回外侧扫描仍未扫描的磁道{for(j=r;j{cout<}sum+=cidao[m-1]-cidao[0];}else//磁头移动到序列的最大号,返回侧扫描仍未扫描的磁道{for(j=l;j>=0;j--){cout<}sum+=cidao[m-1]-cidao[0];}}ave=(float)(sum)/(float)(m);cout<cout<<"平均寻道长度:"<} /*************************扫描调度算法*************************/voidSCAN(intcidao[],intm)//先要给出当前磁道号和移动臂的移动方向{intk=1;intnow,l,r,d;inti,j,sum=0;inta;charstr[100];floatave;cidao=bubble(cidao,m);//调用冒泡排序算法排序cout<<"请输入当前的磁道号:";D:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoD;}elsenow=trans(str,a);//输入当前磁道号if(cidao[m-1]<=now)//假设当前磁道号大于请求序列中最大者,那么直接由外向依次给予各请求效劳,此情况同最短寻道优先{cout<<"磁盘扫描序列为:";for(i=m-1;i>=0;i--)cout<sum=now-cidao[0];}if(cidao[0]>=now)//假设当前磁道号小于请求序列中最小者,那么直接由向外依次给予各请求效劳,此情况同最短寻道优先{cout<<"磁盘扫描序列为:";for(i=0;icout<sum=cidao[m-1]-now;}if(now>cidao[0]&&now{while(cidao[k]{k++;}l=k-1;r=k;cout<<"请输入当前移动臂的移动的方向(1表示向外,0表示向):";cin>>d;if(d==0)//选择移动臂方向向,那么先向扫描{cout<<"磁盘扫描序列为:";for(j=l;j>=0;j--){cout<}for(j=r;j{cout<}sum=now-2*cidao[0]+cidao[m-1];}else//选择移动臂方向向外,那么先向外扫描{cout<<"磁盘扫描序列为:";for(j=r;j{cout<}for(j=l;j>=0;j--)//磁头移动到最大号,那么改变方向向扫描未扫描的磁道{cout<}sum=-now-cidao[0]+2*cidao[m-1];}}ave=(float)(sum)/(float)(m);cout<cout<<"平均寻道长度:"<}/************************循环扫描调度算法*****************************/voidCSCAN(intcidao[],intm){intk=1;intnow,l,r;inti,j,sum=0;inta;charstr[100];floatave;cidao=bubble(cidao,m);//调用冒泡排序算法排序cout<<"请输入当前的磁道号:";E:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoE;}elsenow=trans(str,a);//输入当前磁道号if(cidao[m-1]<=now)//假设当前磁道号大于请求序列中最大者,那么直接将移动臂移动到最小号磁道依次向外给予各请求效劳{cout<<"磁盘扫描序列为:";for(i=0;icout<sum=now-2*cidao[0]+cidao[m-1];}if(cidao[0]>=now)//假设当前磁道号小于请求序列中最小者,那么直接由向外依次给予各请求效劳,此情况同最短寻道优先{cout<<"磁盘扫描序列为:";for(i=0;icout<sum=cidao[m-1]-now;}if(now>cidao[0]&&now{cout<<"磁盘扫描序列为:";while(cidao[k]{k++;}l=k-1;r=k;for(j=r;j{cout<}for(j=0;j{cout<}sum=2*cidao[m-1]+cidao[l]-now-2*cidao[0];}ave=(float)(sum)/(float)(m);cout<cout<<"平均寻道长度:"<}voidmain(){inta;intc;//菜单项intcidao[maxsize];inti=0,count;charstr[100];cout<<"请输入磁道序列〔0完毕〕:"<A:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoA;//输入错误,跳转到A,重新输入}elsecidao[i]=trans(str,a);i++;while(cidao[i-1]!=0){cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0)cout<<"输入数据的类型错误,请重新输入!"<else{cidao[i]=trans(str,a);i++;}}count=i-1;//要访问的磁道数cout<<"你输入的磁道序列为:";for(i=0;i{cout<}cout<while(1){cout<cout<<"**********************************************"<cout<<"系统菜单"<cout<<"******"<cout<<"**1.先来先效劳**"<cout<<"****"<cout<<"**2.最短寻道时间优先**"<cout<<"****"<cout<<"**3.扫描调度**"<cout<<"****"<cout<<"**4.循环扫描**"<cout<<"****"<cout<<"**5.退出**"<cout<<"******"<G:cout<<"请选择算法:";F:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoF;//输入错误,跳转到F,重新输入}elsec=trans(str,a);if(c==5)break;if(c>5){cout<<"数据输入错误!请重新输入"<gotoG;}switch(c){case1://使用FCFS算法FCFS(cidao,count);break;case2://使用SSTF算法SSTF(cidao,count);break;case3://使用SCAN算法SCAN(cidao,count);break;case4://使用CSCAN算法CSCAN(cidao,count);break;}}}3.运行界面:五、实验心得:通过本次实验,学习了解磁盘调度的工作原理及四种调度方法的工作原理,并且在当中发现了自己的缺乏,对以前所学过的知识理解得不够深刻,掌握得不够结实,看到了自己的实践经历还是比拟缺乏,理论联系实际的能力还急需提高。
sum+=now-cidao[l];
now=cidao[l];
l=l-1;
cout<sum+=cidao[r]-now;now=cidao[r];r=r+1;}}if(l==-1)//磁头移动到序列的最小号,返回外侧扫描仍未扫描的磁道{for(j=r;j{cout<}sum+=cidao[m-1]-cidao[0];}else//磁头移动到序列的最大号,返回侧扫描仍未扫描的磁道{for(j=l;j>=0;j--){cout<}sum+=cidao[m-1]-cidao[0];}}ave=(float)(sum)/(float)(m);cout<cout<<"平均寻道长度:"<} /*************************扫描调度算法*************************/voidSCAN(intcidao[],intm)//先要给出当前磁道号和移动臂的移动方向{intk=1;intnow,l,r,d;inti,j,sum=0;inta;charstr[100];floatave;cidao=bubble(cidao,m);//调用冒泡排序算法排序cout<<"请输入当前的磁道号:";D:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoD;}elsenow=trans(str,a);//输入当前磁道号if(cidao[m-1]<=now)//假设当前磁道号大于请求序列中最大者,那么直接由外向依次给予各请求效劳,此情况同最短寻道优先{cout<<"磁盘扫描序列为:";for(i=m-1;i>=0;i--)cout<sum=now-cidao[0];}if(cidao[0]>=now)//假设当前磁道号小于请求序列中最小者,那么直接由向外依次给予各请求效劳,此情况同最短寻道优先{cout<<"磁盘扫描序列为:";for(i=0;icout<sum=cidao[m-1]-now;}if(now>cidao[0]&&now{while(cidao[k]{k++;}l=k-1;r=k;cout<<"请输入当前移动臂的移动的方向(1表示向外,0表示向):";cin>>d;if(d==0)//选择移动臂方向向,那么先向扫描{cout<<"磁盘扫描序列为:";for(j=l;j>=0;j--){cout<}for(j=r;j{cout<}sum=now-2*cidao[0]+cidao[m-1];}else//选择移动臂方向向外,那么先向外扫描{cout<<"磁盘扫描序列为:";for(j=r;j{cout<}for(j=l;j>=0;j--)//磁头移动到最大号,那么改变方向向扫描未扫描的磁道{cout<}sum=-now-cidao[0]+2*cidao[m-1];}}ave=(float)(sum)/(float)(m);cout<cout<<"平均寻道长度:"<}/************************循环扫描调度算法*****************************/voidCSCAN(intcidao[],intm){intk=1;intnow,l,r;inti,j,sum=0;inta;charstr[100];floatave;cidao=bubble(cidao,m);//调用冒泡排序算法排序cout<<"请输入当前的磁道号:";E:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoE;}elsenow=trans(str,a);//输入当前磁道号if(cidao[m-1]<=now)//假设当前磁道号大于请求序列中最大者,那么直接将移动臂移动到最小号磁道依次向外给予各请求效劳{cout<<"磁盘扫描序列为:";for(i=0;icout<sum=now-2*cidao[0]+cidao[m-1];}if(cidao[0]>=now)//假设当前磁道号小于请求序列中最小者,那么直接由向外依次给予各请求效劳,此情况同最短寻道优先{cout<<"磁盘扫描序列为:";for(i=0;icout<sum=cidao[m-1]-now;}if(now>cidao[0]&&now{cout<<"磁盘扫描序列为:";while(cidao[k]{k++;}l=k-1;r=k;for(j=r;j{cout<}for(j=0;j{cout<}sum=2*cidao[m-1]+cidao[l]-now-2*cidao[0];}ave=(float)(sum)/(float)(m);cout<cout<<"平均寻道长度:"<}voidmain(){inta;intc;//菜单项intcidao[maxsize];inti=0,count;charstr[100];cout<<"请输入磁道序列〔0完毕〕:"<A:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoA;//输入错误,跳转到A,重新输入}elsecidao[i]=trans(str,a);i++;while(cidao[i-1]!=0){cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0)cout<<"输入数据的类型错误,请重新输入!"<else{cidao[i]=trans(str,a);i++;}}count=i-1;//要访问的磁道数cout<<"你输入的磁道序列为:";for(i=0;i{cout<}cout<while(1){cout<cout<<"**********************************************"<cout<<"系统菜单"<cout<<"******"<cout<<"**1.先来先效劳**"<cout<<"****"<cout<<"**2.最短寻道时间优先**"<cout<<"****"<cout<<"**3.扫描调度**"<cout<<"****"<cout<<"**4.循环扫描**"<cout<<"****"<cout<<"**5.退出**"<cout<<"******"<G:cout<<"请选择算法:";F:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoF;//输入错误,跳转到F,重新输入}elsec=trans(str,a);if(c==5)break;if(c>5){cout<<"数据输入错误!请重新输入"<gotoG;}switch(c){case1://使用FCFS算法FCFS(cidao,count);break;case2://使用SSTF算法SSTF(cidao,count);break;case3://使用SCAN算法SCAN(cidao,count);break;case4://使用CSCAN算法CSCAN(cidao,count);break;}}}3.运行界面:五、实验心得:通过本次实验,学习了解磁盘调度的工作原理及四种调度方法的工作原理,并且在当中发现了自己的缺乏,对以前所学过的知识理解得不够深刻,掌握得不够结实,看到了自己的实践经历还是比拟缺乏,理论联系实际的能力还急需提高。
sum+=cidao[r]-now;
now=cidao[r];
r=r+1;
if(l==-1)//磁头移动到序列的最小号,返回外侧扫描仍未扫描的磁道
for(j=r;j{cout<}sum+=cidao[m-1]-cidao[0];}else//磁头移动到序列的最大号,返回侧扫描仍未扫描的磁道{for(j=l;j>=0;j--){cout<}sum+=cidao[m-1]-cidao[0];}}ave=(float)(sum)/(float)(m);cout<cout<<"平均寻道长度:"<} /*************************扫描调度算法*************************/voidSCAN(intcidao[],intm)//先要给出当前磁道号和移动臂的移动方向{intk=1;intnow,l,r,d;inti,j,sum=0;inta;charstr[100];floatave;cidao=bubble(cidao,m);//调用冒泡排序算法排序cout<<"请输入当前的磁道号:";D:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoD;}elsenow=trans(str,a);//输入当前磁道号if(cidao[m-1]<=now)//假设当前磁道号大于请求序列中最大者,那么直接由外向依次给予各请求效劳,此情况同最短寻道优先{cout<<"磁盘扫描序列为:";for(i=m-1;i>=0;i--)cout<sum=now-cidao[0];}if(cidao[0]>=now)//假设当前磁道号小于请求序列中最小者,那么直接由向外依次给予各请求效劳,此情况同最短寻道优先{cout<<"磁盘扫描序列为:";for(i=0;icout<sum=cidao[m-1]-now;}if(now>cidao[0]&&now{while(cidao[k]{k++;}l=k-1;r=k;cout<<"请输入当前移动臂的移动的方向(1表示向外,0表示向):";cin>>d;if(d==0)//选择移动臂方向向,那么先向扫描{cout<<"磁盘扫描序列为:";for(j=l;j>=0;j--){cout<}for(j=r;j{cout<}sum=now-2*cidao[0]+cidao[m-1];}else//选择移动臂方向向外,那么先向外扫描{cout<<"磁盘扫描序列为:";for(j=r;j{cout<}for(j=l;j>=0;j--)//磁头移动到最大号,那么改变方向向扫描未扫描的磁道{cout<}sum=-now-cidao[0]+2*cidao[m-1];}}ave=(float)(sum)/(float)(m);cout<cout<<"平均寻道长度:"<}/************************循环扫描调度算法*****************************/voidCSCAN(intcidao[],intm){intk=1;intnow,l,r;inti,j,sum=0;inta;charstr[100];floatave;cidao=bubble(cidao,m);//调用冒泡排序算法排序cout<<"请输入当前的磁道号:";E:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoE;}elsenow=trans(str,a);//输入当前磁道号if(cidao[m-1]<=now)//假设当前磁道号大于请求序列中最大者,那么直接将移动臂移动到最小号磁道依次向外给予各请求效劳{cout<<"磁盘扫描序列为:";for(i=0;icout<sum=now-2*cidao[0]+cidao[m-1];}if(cidao[0]>=now)//假设当前磁道号小于请求序列中最小者,那么直接由向外依次给予各请求效劳,此情况同最短寻道优先{cout<<"磁盘扫描序列为:";for(i=0;icout<sum=cidao[m-1]-now;}if(now>cidao[0]&&now{cout<<"磁盘扫描序列为:";while(cidao[k]{k++;}l=k-1;r=k;for(j=r;j{cout<}for(j=0;j{cout<}sum=2*cidao[m-1]+cidao[l]-now-2*cidao[0];}ave=(float)(sum)/(float)(m);cout<cout<<"平均寻道长度:"<}voidmain(){inta;intc;//菜单项intcidao[maxsize];inti=0,count;charstr[100];cout<<"请输入磁道序列〔0完毕〕:"<A:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoA;//输入错误,跳转到A,重新输入}elsecidao[i]=trans(str,a);i++;while(cidao[i-1]!=0){cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0)cout<<"输入数据的类型错误,请重新输入!"<else{cidao[i]=trans(str,a);i++;}}count=i-1;//要访问的磁道数cout<<"你输入的磁道序列为:";for(i=0;i{cout<}cout<while(1){cout<cout<<"**********************************************"<cout<<"系统菜单"<cout<<"******"<cout<<"**1.先来先效劳**"<cout<<"****"<cout<<"**2.最短寻道时间优先**"<cout<<"****"<cout<<"**3.扫描调度**"<cout<<"****"<cout<<"**4.循环扫描**"<cout<<"****"<cout<<"**5.退出**"<cout<<"******"<G:cout<<"请选择算法:";F:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoF;//输入错误,跳转到F,重新输入}elsec=trans(str,a);if(c==5)break;if(c>5){cout<<"数据输入错误!请重新输入"<gotoG;}switch(c){case1://使用FCFS算法FCFS(cidao,count);break;case2://使用SSTF算法SSTF(cidao,count);break;case3://使用SCAN算法SCAN(cidao,count);break;case4://使用CSCAN算法CSCAN(cidao,count);break;}}}3.运行界面:五、实验心得:通过本次实验,学习了解磁盘调度的工作原理及四种调度方法的工作原理,并且在当中发现了自己的缺乏,对以前所学过的知识理解得不够深刻,掌握得不够结实,看到了自己的实践经历还是比拟缺乏,理论联系实际的能力还急需提高。
cout<}sum+=cidao[m-1]-cidao[0];}else//磁头移动到序列的最大号,返回侧扫描仍未扫描的磁道{for(j=l;j>=0;j--){cout<}sum+=cidao[m-1]-cidao[0];}}ave=(float)(sum)/(float)(m);cout<cout<<"平均寻道长度:"<} /*************************扫描调度算法*************************/voidSCAN(intcidao[],intm)//先要给出当前磁道号和移动臂的移动方向{intk=1;intnow,l,r,d;inti,j,sum=0;inta;charstr[100];floatave;cidao=bubble(cidao,m);//调用冒泡排序算法排序cout<<"请输入当前的磁道号:";D:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoD;}elsenow=trans(str,a);//输入当前磁道号if(cidao[m-1]<=now)//假设当前磁道号大于请求序列中最大者,那么直接由外向依次给予各请求效劳,此情况同最短寻道优先{cout<<"磁盘扫描序列为:";for(i=m-1;i>=0;i--)cout<sum=now-cidao[0];}if(cidao[0]>=now)//假设当前磁道号小于请求序列中最小者,那么直接由向外依次给予各请求效劳,此情况同最短寻道优先{cout<<"磁盘扫描序列为:";for(i=0;icout<sum=cidao[m-1]-now;}if(now>cidao[0]&&now{while(cidao[k]{k++;}l=k-1;r=k;cout<<"请输入当前移动臂的移动的方向(1表示向外,0表示向):";cin>>d;if(d==0)//选择移动臂方向向,那么先向扫描{cout<<"磁盘扫描序列为:";for(j=l;j>=0;j--){cout<}for(j=r;j{cout<}sum=now-2*cidao[0]+cidao[m-1];}else//选择移动臂方向向外,那么先向外扫描{cout<<"磁盘扫描序列为:";for(j=r;j{cout<}for(j=l;j>=0;j--)//磁头移动到最大号,那么改变方向向扫描未扫描的磁道{cout<}sum=-now-cidao[0]+2*cidao[m-1];}}ave=(float)(sum)/(float)(m);cout<cout<<"平均寻道长度:"<}/************************循环扫描调度算法*****************************/voidCSCAN(intcidao[],intm){intk=1;intnow,l,r;inti,j,sum=0;inta;charstr[100];floatave;cidao=bubble(cidao,m);//调用冒泡排序算法排序cout<<"请输入当前的磁道号:";E:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoE;}elsenow=trans(str,a);//输入当前磁道号if(cidao[m-1]<=now)//假设当前磁道号大于请求序列中最大者,那么直接将移动臂移动到最小号磁道依次向外给予各请求效劳{cout<<"磁盘扫描序列为:";for(i=0;icout<sum=now-2*cidao[0]+cidao[m-1];}if(cidao[0]>=now)//假设当前磁道号小于请求序列中最小者,那么直接由向外依次给予各请求效劳,此情况同最短寻道优先{cout<<"磁盘扫描序列为:";for(i=0;icout<sum=cidao[m-1]-now;}if(now>cidao[0]&&now{cout<<"磁盘扫描序列为:";while(cidao[k]{k++;}l=k-1;r=k;for(j=r;j{cout<}for(j=0;j{cout<}sum=2*cidao[m-1]+cidao[l]-now-2*cidao[0];}ave=(float)(sum)/(float)(m);cout<cout<<"平均寻道长度:"<}voidmain(){inta;intc;//菜单项intcidao[maxsize];inti=0,count;charstr[100];cout<<"请输入磁道序列〔0完毕〕:"<A:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoA;//输入错误,跳转到A,重新输入}elsecidao[i]=trans(str,a);i++;while(cidao[i-1]!=0){cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0)cout<<"输入数据的类型错误,请重新输入!"<else{cidao[i]=trans(str,a);i++;}}count=i-1;//要访问的磁道数cout<<"你输入的磁道序列为:";for(i=0;i{cout<}cout<while(1){cout<cout<<"**********************************************"<cout<<"系统菜单"<cout<<"******"<cout<<"**1.先来先效劳**"<cout<<"****"<cout<<"**2.最短寻道时间优先**"<cout<<"****"<cout<<"**3.扫描调度**"<cout<<"****"<cout<<"**4.循环扫描**"<cout<<"****"<cout<<"**5.退出**"<cout<<"******"<G:cout<<"请选择算法:";F:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoF;//输入错误,跳转到F,重新输入}elsec=trans(str,a);if(c==5)break;if(c>5){cout<<"数据输入错误!请重新输入"<gotoG;}switch(c){case1://使用FCFS算法FCFS(cidao,count);break;case2://使用SSTF算法SSTF(cidao,count);break;case3://使用SCAN算法SCAN(cidao,count);break;case4://使用CSCAN算法CSCAN(cidao,count);break;}}}3.运行界面:五、实验心得:通过本次实验,学习了解磁盘调度的工作原理及四种调度方法的工作原理,并且在当中发现了自己的缺乏,对以前所学过的知识理解得不够深刻,掌握得不够结实,看到了自己的实践经历还是比拟缺乏,理论联系实际的能力还急需提高。
sum+=cidao[m-1]-cidao[0];
else//磁头移动到序列的最大号,返回侧扫描仍未扫描的磁道
for(j=l;j>=0;j--)
cout<}sum+=cidao[m-1]-cidao[0];}}ave=(float)(sum)/(float)(m);cout<cout<<"平均寻道长度:"<} /*************************扫描调度算法*************************/voidSCAN(intcidao[],intm)//先要给出当前磁道号和移动臂的移动方向{intk=1;intnow,l,r,d;inti,j,sum=0;inta;charstr[100];floatave;cidao=bubble(cidao,m);//调用冒泡排序算法排序cout<<"请输入当前的磁道号:";D:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoD;}elsenow=trans(str,a);//输入当前磁道号if(cidao[m-1]<=now)//假设当前磁道号大于请求序列中最大者,那么直接由外向依次给予各请求效劳,此情况同最短寻道优先{cout<<"磁盘扫描序列为:";for(i=m-1;i>=0;i--)cout<sum=now-cidao[0];}if(cidao[0]>=now)//假设当前磁道号小于请求序列中最小者,那么直接由向外依次给予各请求效劳,此情况同最短寻道优先{cout<<"磁盘扫描序列为:";for(i=0;icout<sum=cidao[m-1]-now;}if(now>cidao[0]&&now{while(cidao[k]{k++;}l=k-1;r=k;cout<<"请输入当前移动臂的移动的方向(1表示向外,0表示向):";cin>>d;if(d==0)//选择移动臂方向向,那么先向扫描{cout<<"磁盘扫描序列为:";for(j=l;j>=0;j--){cout<}for(j=r;j{cout<}sum=now-2*cidao[0]+cidao[m-1];}else//选择移动臂方向向外,那么先向外扫描{cout<<"磁盘扫描序列为:";for(j=r;j{cout<}for(j=l;j>=0;j--)//磁头移动到最大号,那么改变方向向扫描未扫描的磁道{cout<}sum=-now-cidao[0]+2*cidao[m-1];}}ave=(float)(sum)/(float)(m);cout<cout<<"平均寻道长度:"<}/************************循环扫描调度算法*****************************/voidCSCAN(intcidao[],intm){intk=1;intnow,l,r;inti,j,sum=0;inta;charstr[100];floatave;cidao=bubble(cidao,m);//调用冒泡排序算法排序cout<<"请输入当前的磁道号:";E:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoE;}elsenow=trans(str,a);//输入当前磁道号if(cidao[m-1]<=now)//假设当前磁道号大于请求序列中最大者,那么直接将移动臂移动到最小号磁道依次向外给予各请求效劳{cout<<"磁盘扫描序列为:";for(i=0;icout<sum=now-2*cidao[0]+cidao[m-1];}if(cidao[0]>=now)//假设当前磁道号小于请求序列中最小者,那么直接由向外依次给予各请求效劳,此情况同最短寻道优先{cout<<"磁盘扫描序列为:";for(i=0;icout<sum=cidao[m-1]-now;}if(now>cidao[0]&&now{cout<<"磁盘扫描序列为:";while(cidao[k]{k++;}l=k-1;r=k;for(j=r;j{cout<}for(j=0;j{cout<}sum=2*cidao[m-1]+cidao[l]-now-2*cidao[0];}ave=(float)(sum)/(float)(m);cout<cout<<"平均寻道长度:"<}voidmain(){inta;intc;//菜单项intcidao[maxsize];inti=0,count;charstr[100];cout<<"请输入磁道序列〔0完毕〕:"<A:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoA;//输入错误,跳转到A,重新输入}elsecidao[i]=trans(str,a);i++;while(cidao[i-1]!=0){cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0)cout<<"输入数据的类型错误,请重新输入!"<else{cidao[i]=trans(str,a);i++;}}count=i-1;//要访问的磁道数cout<<"你输入的磁道序列为:";for(i=0;i{cout<}cout<while(1){cout<cout<<"**********************************************"<cout<<"系统菜单"<cout<<"******"<cout<<"**1.先来先效劳**"<cout<<"****"<cout<<"**2.最短寻道时间优先**"<cout<<"****"<cout<<"**3.扫描调度**"<cout<<"****"<cout<<"**4.循环扫描**"<cout<<"****"<cout<<"**5.退出**"<cout<<"******"<G:cout<<"请选择算法:";F:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoF;//输入错误,跳转到F,重新输入}elsec=trans(str,a);if(c==5)break;if(c>5){cout<<"数据输入错误!请重新输入"<gotoG;}switch(c){case1://使用FCFS算法FCFS(cidao,count);break;case2://使用SSTF算法SSTF(cidao,count);break;case3://使用SCAN算法SCAN(cidao,count);break;case4://使用CSCAN算法CSCAN(cidao,count);break;}}}3.运行界面:五、实验心得:通过本次实验,学习了解磁盘调度的工作原理及四种调度方法的工作原理,并且在当中发现了自己的缺乏,对以前所学过的知识理解得不够深刻,掌握得不够结实,看到了自己的实践经历还是比拟缺乏,理论联系实际的能力还急需提高。
cout<cout<<"平均寻道长度:"<} /*************************扫描调度算法*************************/voidSCAN(intcidao[],intm)//先要给出当前磁道号和移动臂的移动方向{intk=1;intnow,l,r,d;inti,j,sum=0;inta;charstr[100];floatave;cidao=bubble(cidao,m);//调用冒泡排序算法排序cout<<"请输入当前的磁道号:";D:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoD;}elsenow=trans(str,a);//输入当前磁道号if(cidao[m-1]<=now)//假设当前磁道号大于请求序列中最大者,那么直接由外向依次给予各请求效劳,此情况同最短寻道优先{cout<<"磁盘扫描序列为:";for(i=m-1;i>=0;i--)cout<sum=now-cidao[0];}if(cidao[0]>=now)//假设当前磁道号小于请求序列中最小者,那么直接由向外依次给予各请求效劳,此情况同最短寻道优先{cout<<"磁盘扫描序列为:";for(i=0;icout<sum=cidao[m-1]-now;}if(now>cidao[0]&&now{while(cidao[k]{k++;}l=k-1;r=k;cout<<"请输入当前移动臂的移动的方向(1表示向外,0表示向):";cin>>d;if(d==0)//选择移动臂方向向,那么先向扫描{cout<<"磁盘扫描序列为:";for(j=l;j>=0;j--){cout<}for(j=r;j{cout<}sum=now-2*cidao[0]+cidao[m-1];}else//选择移动臂方向向外,那么先向外扫描{cout<<"磁盘扫描序列为:";for(j=r;j{cout<}for(j=l;j>=0;j--)//磁头移动到最大号,那么改变方向向扫描未扫描的磁道{cout<}sum=-now-cidao[0]+2*cidao[m-1];}}ave=(float)(sum)/(float)(m);cout<cout<<"平均寻道长度:"<}/************************循环扫描调度算法*****************************/voidCSCAN(intcidao[],intm){intk=1;intnow,l,r;inti,j,sum=0;inta;charstr[100];floatave;cidao=bubble(cidao,m);//调用冒泡排序算法排序cout<<"请输入当前的磁道号:";E:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoE;}elsenow=trans(str,a);//输入当前磁道号if(cidao[m-1]<=now)//假设当前磁道号大于请求序列中最大者,那么直接将移动臂移动到最小号磁道依次向外给予各请求效劳{cout<<"磁盘扫描序列为:";for(i=0;icout<sum=now-2*cidao[0]+cidao[m-1];}if(cidao[0]>=now)//假设当前磁道号小于请求序列中最小者,那么直接由向外依次给予各请求效劳,此情况同最短寻道优先{cout<<"磁盘扫描序列为:";for(i=0;icout<sum=cidao[m-1]-now;}if(now>cidao[0]&&now{cout<<"磁盘扫描序列为:";while(cidao[k]{k++;}l=k-1;r=k;for(j=r;j{cout<}for(j=0;j{cout<}sum=2*cidao[m-1]+cidao[l]-now-2*cidao[0];}ave=(float)(sum)/(float)(m);cout<cout<<"平均寻道长度:"<}voidmain(){inta;intc;//菜单项intcidao[maxsize];inti=0,count;charstr[100];cout<<"请输入磁道序列〔0完毕〕:"<A:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoA;//输入错误,跳转到A,重新输入}elsecidao[i]=trans(str,a);i++;while(cidao[i-1]!=0){cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0)cout<<"输入数据的类型错误,请重新输入!"<else{cidao[i]=trans(str,a);i++;}}count=i-1;//要访问的磁道数cout<<"你输入的磁道序列为:";for(i=0;i{cout<}cout<while(1){cout<cout<<"**********************************************"<cout<<"系统菜单"<cout<<"******"<cout<<"**1.先来先效劳**"<cout<<"****"<cout<<"**2.最短寻道时间优先**"<cout<<"****"<cout<<"**3.扫描调度**"<cout<<"****"<cout<<"**4.循环扫描**"<cout<<"****"<cout<<"**5.退出**"<cout<<"******"<G:cout<<"请选择算法:";F:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoF;//输入错误,跳转到F,重新输入}elsec=trans(str,a);if(c==5)break;if(c>5){cout<<"数据输入错误!请重新输入"<gotoG;}switch(c){case1://使用FCFS算法FCFS(cidao,count);break;case2://使用SSTF算法SSTF(cidao,count);break;case3://使用SCAN算法SCAN(cidao,count);break;case4://使用CSCAN算法CSCAN(cidao,count);break;}}}3.运行界面:五、实验心得:通过本次实验,学习了解磁盘调度的工作原理及四种调度方法的工作原理,并且在当中发现了自己的缺乏,对以前所学过的知识理解得不够深刻,掌握得不够结实,看到了自己的实践经历还是比拟缺乏,理论联系实际的能力还急需提高。
"<} /*************************扫描调度算法*************************/voidSCAN(intcidao[],intm)//先要给出当前磁道号和移动臂的移动方向{intk=1;intnow,l,r,d;inti,j,sum=0;inta;charstr[100];floatave;cidao=bubble(cidao,m);//调用冒泡排序算法排序cout<<"请输入当前的磁道号:";D:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoD;}elsenow=trans(str,a);//输入当前磁道号if(cidao[m-1]<=now)//假设当前磁道号大于请求序列中最大者,那么直接由外向依次给予各请求效劳,此情况同最短寻道优先{cout<<"磁盘扫描序列为:";for(i=m-1;i>=0;i--)cout<sum=now-cidao[0];}if(cidao[0]>=now)//假设当前磁道号小于请求序列中最小者,那么直接由向外依次给予各请求效劳,此情况同最短寻道优先{cout<<"磁盘扫描序列为:";for(i=0;icout<sum=cidao[m-1]-now;}if(now>cidao[0]&&now{while(cidao[k]{k++;}l=k-1;r=k;cout<<"请输入当前移动臂的移动的方向(1表示向外,0表示向):";cin>>d;if(d==0)//选择移动臂方向向,那么先向扫描{cout<<"磁盘扫描序列为:";for(j=l;j>=0;j--){cout<}for(j=r;j{cout<}sum=now-2*cidao[0]+cidao[m-1];}else//选择移动臂方向向外,那么先向外扫描{cout<<"磁盘扫描序列为:";for(j=r;j{cout<}for(j=l;j>=0;j--)//磁头移动到最大号,那么改变方向向扫描未扫描的磁道{cout<}sum=-now-cidao[0]+2*cidao[m-1];}}ave=(float)(sum)/(float)(m);cout<cout<<"平均寻道长度:"<}/************************循环扫描调度算法*****************************/voidCSCAN(intcidao[],intm){intk=1;intnow,l,r;inti,j,sum=0;inta;charstr[100];floatave;cidao=bubble(cidao,m);//调用冒泡排序算法排序cout<<"请输入当前的磁道号:";E:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoE;}elsenow=trans(str,a);//输入当前磁道号if(cidao[m-1]<=now)//假设当前磁道号大于请求序列中最大者,那么直接将移动臂移动到最小号磁道依次向外给予各请求效劳{cout<<"磁盘扫描序列为:";for(i=0;icout<sum=now-2*cidao[0]+cidao[m-1];}if(cidao[0]>=now)//假设当前磁道号小于请求序列中最小者,那么直接由向外依次给予各请求效劳,此情况同最短寻道优先{cout<<"磁盘扫描序列为:";for(i=0;icout<sum=cidao[m-1]-now;}if(now>cidao[0]&&now{cout<<"磁盘扫描序列为:";while(cidao[k]{k++;}l=k-1;r=k;for(j=r;j{cout<}for(j=0;j{cout<}sum=2*cidao[m-1]+cidao[l]-now-2*cidao[0];}ave=(float)(sum)/(float)(m);cout<cout<<"平均寻道长度:"<}voidmain(){inta;intc;//菜单项intcidao[maxsize];inti=0,count;charstr[100];cout<<"请输入磁道序列〔0完毕〕:"<A:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoA;//输入错误,跳转到A,重新输入}elsecidao[i]=trans(str,a);i++;while(cidao[i-1]!=0){cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0)cout<<"输入数据的类型错误,请重新输入!"<else{cidao[i]=trans(str,a);i++;}}count=i-1;//要访问的磁道数cout<<"你输入的磁道序列为:";for(i=0;i{cout<}cout<while(1){cout<cout<<"**********************************************"<cout<<"系统菜单"<cout<<"******"<cout<<"**1.先来先效劳**"<cout<<"****"<cout<<"**2.最短寻道时间优先**"<cout<<"****"<cout<<"**3.扫描调度**"<cout<<"****"<cout<<"**4.循环扫描**"<cout<<"****"<cout<<"**5.退出**"<cout<<"******"<G:cout<<"请选择算法:";F:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoF;//输入错误,跳转到F,重新输入}elsec=trans(str,a);if(c==5)break;if(c>5){cout<<"数据输入错误!请重新输入"<gotoG;}switch(c){case1://使用FCFS算法FCFS(cidao,count);break;case2://使用SSTF算法SSTF(cidao,count);break;case3://使用SCAN算法SCAN(cidao,count);break;case4://使用CSCAN算法CSCAN(cidao,count);break;}}}3.运行界面:五、实验心得:通过本次实验,学习了解磁盘调度的工作原理及四种调度方法的工作原理,并且在当中发现了自己的缺乏,对以前所学过的知识理解得不够深刻,掌握得不够结实,看到了自己的实践经历还是比拟缺乏,理论联系实际的能力还急需提高。
/*************************扫描调度算法*************************/
voidSCAN(intcidao[],intm)//先要给出当前磁道号和移动臂的移动方向
intnow,l,r,d;
D:
"<gotoD;}elsenow=trans(str,a);//输入当前磁道号if(cidao[m-1]<=now)//假设当前磁道号大于请求序列中最大者,那么直接由外向依次给予各请求效劳,此情况同最短寻道优先{cout<<"磁盘扫描序列为:";for(i=m-1;i>=0;i--)cout<sum=now-cidao[0];}if(cidao[0]>=now)//假设当前磁道号小于请求序列中最小者,那么直接由向外依次给予各请求效劳,此情况同最短寻道优先{cout<<"磁盘扫描序列为:";for(i=0;icout<sum=cidao[m-1]-now;}if(now>cidao[0]&&now{while(cidao[k]{k++;}l=k-1;r=k;cout<<"请输入当前移动臂的移动的方向(1表示向外,0表示向):";cin>>d;if(d==0)//选择移动臂方向向,那么先向扫描{cout<<"磁盘扫描序列为:";for(j=l;j>=0;j--){cout<}for(j=r;j{cout<}sum=now-2*cidao[0]+cidao[m-1];}else//选择移动臂方向向外,那么先向外扫描{cout<<"磁盘扫描序列为:";for(j=r;j{cout<}for(j=l;j>=0;j--)//磁头移动到最大号,那么改变方向向扫描未扫描的磁道{cout<}sum=-now-cidao[0]+2*cidao[m-1];}}ave=(float)(sum)/(float)(m);cout<cout<<"平均寻道长度:"<}/************************循环扫描调度算法*****************************/voidCSCAN(intcidao[],intm){intk=1;intnow,l,r;inti,j,sum=0;inta;charstr[100];floatave;cidao=bubble(cidao,m);//调用冒泡排序算法排序cout<<"请输入当前的磁道号:";E:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoE;}elsenow=trans(str,a);//输入当前磁道号if(cidao[m-1]<=now)//假设当前磁道号大于请求序列中最大者,那么直接将移动臂移动到最小号磁道依次向外给予各请求效劳{cout<<"磁盘扫描序列为:";for(i=0;icout<sum=now-2*cidao[0]+cidao[m-1];}if(cidao[0]>=now)//假设当前磁道号小于请求序列中最小者,那么直接由向外依次给予各请求效劳,此情况同最短寻道优先{cout<<"磁盘扫描序列为:";for(i=0;icout<sum=cidao[m-1]-now;}if(now>cidao[0]&&now{cout<<"磁盘扫描序列为:";while(cidao[k]{k++;}l=k-1;r=k;for(j=r;j{cout<}for(j=0;j{cout<}sum=2*cidao[m-1]+cidao[l]-now-2*cidao[0];}ave=(float)(sum)/(float)(m);cout<cout<<"平均寻道长度:"<}voidmain(){inta;intc;//菜单项intcidao[maxsize];inti=0,count;charstr[100];cout<<"请输入磁道序列〔0完毕〕:"<A:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoA;//输入错误,跳转到A,重新输入}elsecidao[i]=trans(str,a);i++;while(cidao[i-1]!=0){cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0)cout<<"输入数据的类型错误,请重新输入!"<else{cidao[i]=trans(str,a);i++;}}count=i-1;//要访问的磁道数cout<<"你输入的磁道序列为:";for(i=0;i{cout<}cout<while(1){cout<cout<<"**********************************************"<cout<<"系统菜单"<cout<<"******"<cout<<"**1.先来先效劳**"<cout<<"****"<cout<<"**2.最短寻道时间优先**"<cout<<"****"<cout<<"**3.扫描调度**"<cout<<"****"<cout<<"**4.循环扫描**"<cout<<"****"<cout<<"**5.退出**"<cout<<"******"<G:cout<<"请选择算法:";F:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoF;//输入错误,跳转到F,重新输入}elsec=trans(str,a);if(c==5)break;if(c>5){cout<<"数据输入错误!请重新输入"<gotoG;}switch(c){case1://使用FCFS算法FCFS(cidao,count);break;case2://使用SSTF算法SSTF(cidao,count);break;case3://使用SCAN算法SCAN(cidao,count);break;case4://使用CSCAN算法CSCAN(cidao,count);break;}}}3.运行界面:五、实验心得:通过本次实验,学习了解磁盘调度的工作原理及四种调度方法的工作原理,并且在当中发现了自己的缺乏,对以前所学过的知识理解得不够深刻,掌握得不够结实,看到了自己的实践经历还是比拟缺乏,理论联系实际的能力还急需提高。
gotoD;
if(cidao[m-1]<=now)//假设当前磁道号大于请求序列中最大者,那么直接由外向依次给予各请求效劳,此情况同最短寻道优先
cout<sum=now-cidao[0];}if(cidao[0]>=now)//假设当前磁道号小于请求序列中最小者,那么直接由向外依次给予各请求效劳,此情况同最短寻道优先{cout<<"磁盘扫描序列为:";for(i=0;icout<sum=cidao[m-1]-now;}if(now>cidao[0]&&now{while(cidao[k]{k++;}l=k-1;r=k;cout<<"请输入当前移动臂的移动的方向(1表示向外,0表示向):";cin>>d;if(d==0)//选择移动臂方向向,那么先向扫描{cout<<"磁盘扫描序列为:";for(j=l;j>=0;j--){cout<}for(j=r;j{cout<}sum=now-2*cidao[0]+cidao[m-1];}else//选择移动臂方向向外,那么先向外扫描{cout<<"磁盘扫描序列为:";for(j=r;j{cout<}for(j=l;j>=0;j--)//磁头移动到最大号,那么改变方向向扫描未扫描的磁道{cout<}sum=-now-cidao[0]+2*cidao[m-1];}}ave=(float)(sum)/(float)(m);cout<cout<<"平均寻道长度:"<}/************************循环扫描调度算法*****************************/voidCSCAN(intcidao[],intm){intk=1;intnow,l,r;inti,j,sum=0;inta;charstr[100];floatave;cidao=bubble(cidao,m);//调用冒泡排序算法排序cout<<"请输入当前的磁道号:";E:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoE;}elsenow=trans(str,a);//输入当前磁道号if(cidao[m-1]<=now)//假设当前磁道号大于请求序列中最大者,那么直接将移动臂移动到最小号磁道依次向外给予各请求效劳{cout<<"磁盘扫描序列为:";for(i=0;icout<sum=now-2*cidao[0]+cidao[m-1];}if(cidao[0]>=now)//假设当前磁道号小于请求序列中最小者,那么直接由向外依次给予各请求效劳,此情况同最短寻道优先{cout<<"磁盘扫描序列为:";for(i=0;icout<sum=cidao[m-1]-now;}if(now>cidao[0]&&now{cout<<"磁盘扫描序列为:";while(cidao[k]{k++;}l=k-1;r=k;for(j=r;j{cout<}for(j=0;j{cout<}sum=2*cidao[m-1]+cidao[l]-now-2*cidao[0];}ave=(float)(sum)/(float)(m);cout<cout<<"平均寻道长度:"<}voidmain(){inta;intc;//菜单项intcidao[maxsize];inti=0,count;charstr[100];cout<<"请输入磁道序列〔0完毕〕:"<A:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoA;//输入错误,跳转到A,重新输入}elsecidao[i]=trans(str,a);i++;while(cidao[i-1]!=0){cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0)cout<<"输入数据的类型错误,请重新输入!"<else{cidao[i]=trans(str,a);i++;}}count=i-1;//要访问的磁道数cout<<"你输入的磁道序列为:";for(i=0;i{cout<}cout<while(1){cout<cout<<"**********************************************"<cout<<"系统菜单"<cout<<"******"<cout<<"**1.先来先效劳**"<cout<<"****"<cout<<"**2.最短寻道时间优先**"<cout<<"****"<cout<<"**3.扫描调度**"<cout<<"****"<cout<<"**4.循环扫描**"<cout<<"****"<cout<<"**5.退出**"<cout<<"******"<G:cout<<"请选择算法:";F:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoF;//输入错误,跳转到F,重新输入}elsec=trans(str,a);if(c==5)break;if(c>5){cout<<"数据输入错误!请重新输入"<gotoG;}switch(c){case1://使用FCFS算法FCFS(cidao,count);break;case2://使用SSTF算法SSTF(cidao,count);break;case3://使用SCAN算法SCAN(cidao,count);break;case4://使用CSCAN算法CSCAN(cidao,count);break;}}}3.运行界面:五、实验心得:通过本次实验,学习了解磁盘调度的工作原理及四种调度方法的工作原理,并且在当中发现了自己的缺乏,对以前所学过的知识理解得不够深刻,掌握得不够结实,看到了自己的实践经历还是比拟缺乏,理论联系实际的能力还急需提高。
if(cidao[0]>=now)//假设当前磁道号小于请求序列中最小者,那么直接由向外依次给予各请求效劳,此情况同最短寻道优先
for(i=0;icout<sum=cidao[m-1]-now;}if(now>cidao[0]&&now{while(cidao[k]{k++;}l=k-1;r=k;cout<<"请输入当前移动臂的移动的方向(1表示向外,0表示向):";cin>>d;if(d==0)//选择移动臂方向向,那么先向扫描{cout<<"磁盘扫描序列为:";for(j=l;j>=0;j--){cout<}for(j=r;j{cout<}sum=now-2*cidao[0]+cidao[m-1];}else//选择移动臂方向向外,那么先向外扫描{cout<<"磁盘扫描序列为:";for(j=r;j{cout<}for(j=l;j>=0;j--)//磁头移动到最大号,那么改变方向向扫描未扫描的磁道{cout<}sum=-now-cidao[0]+2*cidao[m-1];}}ave=(float)(sum)/(float)(m);cout<cout<<"平均寻道长度:"<}/************************循环扫描调度算法*****************************/voidCSCAN(intcidao[],intm){intk=1;intnow,l,r;inti,j,sum=0;inta;charstr[100];floatave;cidao=bubble(cidao,m);//调用冒泡排序算法排序cout<<"请输入当前的磁道号:";E:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoE;}elsenow=trans(str,a);//输入当前磁道号if(cidao[m-1]<=now)//假设当前磁道号大于请求序列中最大者,那么直接将移动臂移动到最小号磁道依次向外给予各请求效劳{cout<<"磁盘扫描序列为:";for(i=0;icout<sum=now-2*cidao[0]+cidao[m-1];}if(cidao[0]>=now)//假设当前磁道号小于请求序列中最小者,那么直接由向外依次给予各请求效劳,此情况同最短寻道优先{cout<<"磁盘扫描序列为:";for(i=0;icout<sum=cidao[m-1]-now;}if(now>cidao[0]&&now{cout<<"磁盘扫描序列为:";while(cidao[k]{k++;}l=k-1;r=k;for(j=r;j{cout<}for(j=0;j{cout<}sum=2*cidao[m-1]+cidao[l]-now-2*cidao[0];}ave=(float)(sum)/(float)(m);cout<cout<<"平均寻道长度:"<}voidmain(){inta;intc;//菜单项intcidao[maxsize];inti=0,count;charstr[100];cout<<"请输入磁道序列〔0完毕〕:"<A:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoA;//输入错误,跳转到A,重新输入}elsecidao[i]=trans(str,a);i++;while(cidao[i-1]!=0){cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0)cout<<"输入数据的类型错误,请重新输入!"<else{cidao[i]=trans(str,a);i++;}}count=i-1;//要访问的磁道数cout<<"你输入的磁道序列为:";for(i=0;i{cout<}cout<while(1){cout<cout<<"**********************************************"<cout<<"系统菜单"<cout<<"******"<cout<<"**1.先来先效劳**"<cout<<"****"<cout<<"**2.最短寻道时间优先**"<cout<<"****"<cout<<"**3.扫描调度**"<cout<<"****"<cout<<"**4.循环扫描**"<cout<<"****"<cout<<"**5.退出**"<cout<<"******"<G:cout<<"请选择算法:";F:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoF;//输入错误,跳转到F,重新输入}elsec=trans(str,a);if(c==5)break;if(c>5){cout<<"数据输入错误!请重新输入"<gotoG;}switch(c){case1://使用FCFS算法FCFS(cidao,count);break;case2://使用SSTF算法SSTF(cidao,count);break;case3://使用SCAN算法SCAN(cidao,count);break;case4://使用CSCAN算法CSCAN(cidao,count);break;}}}3.运行界面:五、实验心得:通过本次实验,学习了解磁盘调度的工作原理及四种调度方法的工作原理,并且在当中发现了自己的缺乏,对以前所学过的知识理解得不够深刻,掌握得不够结实,看到了自己的实践经历还是比拟缺乏,理论联系实际的能力还急需提高。
cout<sum=cidao[m-1]-now;}if(now>cidao[0]&&now{while(cidao[k]{k++;}l=k-1;r=k;cout<<"请输入当前移动臂的移动的方向(1表示向外,0表示向):";cin>>d;if(d==0)//选择移动臂方向向,那么先向扫描{cout<<"磁盘扫描序列为:";for(j=l;j>=0;j--){cout<}for(j=r;j{cout<}sum=now-2*cidao[0]+cidao[m-1];}else//选择移动臂方向向外,那么先向外扫描{cout<<"磁盘扫描序列为:";for(j=r;j{cout<}for(j=l;j>=0;j--)//磁头移动到最大号,那么改变方向向扫描未扫描的磁道{cout<}sum=-now-cidao[0]+2*cidao[m-1];}}ave=(float)(sum)/(float)(m);cout<cout<<"平均寻道长度:"<}/************************循环扫描调度算法*****************************/voidCSCAN(intcidao[],intm){intk=1;intnow,l,r;inti,j,sum=0;inta;charstr[100];floatave;cidao=bubble(cidao,m);//调用冒泡排序算法排序cout<<"请输入当前的磁道号:";E:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoE;}elsenow=trans(str,a);//输入当前磁道号if(cidao[m-1]<=now)//假设当前磁道号大于请求序列中最大者,那么直接将移动臂移动到最小号磁道依次向外给予各请求效劳{cout<<"磁盘扫描序列为:";for(i=0;icout<sum=now-2*cidao[0]+cidao[m-1];}if(cidao[0]>=now)//假设当前磁道号小于请求序列中最小者,那么直接由向外依次给予各请求效劳,此情况同最短寻道优先{cout<<"磁盘扫描序列为:";for(i=0;icout<sum=cidao[m-1]-now;}if(now>cidao[0]&&now{cout<<"磁盘扫描序列为:";while(cidao[k]{k++;}l=k-1;r=k;for(j=r;j{cout<}for(j=0;j{cout<}sum=2*cidao[m-1]+cidao[l]-now-2*cidao[0];}ave=(float)(sum)/(float)(m);cout<cout<<"平均寻道长度:"<}voidmain(){inta;intc;//菜单项intcidao[maxsize];inti=0,count;charstr[100];cout<<"请输入磁道序列〔0完毕〕:"<A:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoA;//输入错误,跳转到A,重新输入}elsecidao[i]=trans(str,a);i++;while(cidao[i-1]!=0){cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0)cout<<"输入数据的类型错误,请重新输入!"<else{cidao[i]=trans(str,a);i++;}}count=i-1;//要访问的磁道数cout<<"你输入的磁道序列为:";for(i=0;i{cout<}cout<while(1){cout<cout<<"**********************************************"<cout<<"系统菜单"<cout<<"******"<cout<<"**1.先来先效劳**"<cout<<"****"<cout<<"**2.最短寻道时间优先**"<cout<<"****"<cout<<"**3.扫描调度**"<cout<<"****"<cout<<"**4.循环扫描**"<cout<<"****"<cout<<"**5.退出**"<cout<<"******"<G:cout<<"请选择算法:";F:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoF;//输入错误,跳转到F,重新输入}elsec=trans(str,a);if(c==5)break;if(c>5){cout<<"数据输入错误!请重新输入"<gotoG;}switch(c){case1://使用FCFS算法FCFS(cidao,count);break;case2://使用SSTF算法SSTF(cidao,count);break;case3://使用SCAN算法SCAN(cidao,count);break;case4://使用CSCAN算法CSCAN(cidao,count);break;}}}3.运行界面:五、实验心得:通过本次实验,学习了解磁盘调度的工作原理及四种调度方法的工作原理,并且在当中发现了自己的缺乏,对以前所学过的知识理解得不够深刻,掌握得不够结实,看到了自己的实践经历还是比拟缺乏,理论联系实际的能力还急需提高。
if(now>cidao[0]&&now{while(cidao[k]{k++;}l=k-1;r=k;cout<<"请输入当前移动臂的移动的方向(1表示向外,0表示向):";cin>>d;if(d==0)//选择移动臂方向向,那么先向扫描{cout<<"磁盘扫描序列为:";for(j=l;j>=0;j--){cout<}for(j=r;j{cout<}sum=now-2*cidao[0]+cidao[m-1];}else//选择移动臂方向向外,那么先向外扫描{cout<<"磁盘扫描序列为:";for(j=r;j{cout<}for(j=l;j>=0;j--)//磁头移动到最大号,那么改变方向向扫描未扫描的磁道{cout<}sum=-now-cidao[0]+2*cidao[m-1];}}ave=(float)(sum)/(float)(m);cout<cout<<"平均寻道长度:"<}/************************循环扫描调度算法*****************************/voidCSCAN(intcidao[],intm){intk=1;intnow,l,r;inti,j,sum=0;inta;charstr[100];floatave;cidao=bubble(cidao,m);//调用冒泡排序算法排序cout<<"请输入当前的磁道号:";E:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoE;}elsenow=trans(str,a);//输入当前磁道号if(cidao[m-1]<=now)//假设当前磁道号大于请求序列中最大者,那么直接将移动臂移动到最小号磁道依次向外给予各请求效劳{cout<<"磁盘扫描序列为:";for(i=0;icout<sum=now-2*cidao[0]+cidao[m-1];}if(cidao[0]>=now)//假设当前磁道号小于请求序列中最小者,那么直接由向外依次给予各请求效劳,此情况同最短寻道优先{cout<<"磁盘扫描序列为:";for(i=0;icout<sum=cidao[m-1]-now;}if(now>cidao[0]&&now{cout<<"磁盘扫描序列为:";while(cidao[k]{k++;}l=k-1;r=k;for(j=r;j{cout<}for(j=0;j{cout<}sum=2*cidao[m-1]+cidao[l]-now-2*cidao[0];}ave=(float)(sum)/(float)(m);cout<cout<<"平均寻道长度:"<}voidmain(){inta;intc;//菜单项intcidao[maxsize];inti=0,count;charstr[100];cout<<"请输入磁道序列〔0完毕〕:"<A:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoA;//输入错误,跳转到A,重新输入}elsecidao[i]=trans(str,a);i++;while(cidao[i-1]!=0){cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0)cout<<"输入数据的类型错误,请重新输入!"<else{cidao[i]=trans(str,a);i++;}}count=i-1;//要访问的磁道数cout<<"你输入的磁道序列为:";for(i=0;i{cout<}cout<while(1){cout<cout<<"**********************************************"<cout<<"系统菜单"<cout<<"******"<cout<<"**1.先来先效劳**"<cout<<"****"<cout<<"**2.最短寻道时间优先**"<cout<<"****"<cout<<"**3.扫描调度**"<cout<<"****"<cout<<"**4.循环扫描**"<cout<<"****"<cout<<"**5.退出**"<cout<<"******"<G:cout<<"请选择算法:";F:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoF;//输入错误,跳转到F,重新输入}elsec=trans(str,a);if(c==5)break;if(c>5){cout<<"数据输入错误!请重新输入"<gotoG;}switch(c){case1://使用FCFS算法FCFS(cidao,count);break;case2://使用SSTF算法SSTF(cidao,count);break;case3://使用SCAN算法SCAN(cidao,count);break;case4://使用CSCAN算法CSCAN(cidao,count);break;}}}3.运行界面:五、实验心得:通过本次实验,学习了解磁盘调度的工作原理及四种调度方法的工作原理,并且在当中发现了自己的缺乏,对以前所学过的知识理解得不够深刻,掌握得不够结实,看到了自己的实践经历还是比拟缺乏,理论联系实际的能力还急需提高。
while(cidao[k]{k++;}l=k-1;r=k;cout<<"请输入当前移动臂的移动的方向(1表示向外,0表示向):";cin>>d;if(d==0)//选择移动臂方向向,那么先向扫描{cout<<"磁盘扫描序列为:";for(j=l;j>=0;j--){cout<}for(j=r;j{cout<}sum=now-2*cidao[0]+cidao[m-1];}else//选择移动臂方向向外,那么先向外扫描{cout<<"磁盘扫描序列为:";for(j=r;j{cout<}for(j=l;j>=0;j--)//磁头移动到最大号,那么改变方向向扫描未扫描的磁道{cout<}sum=-now-cidao[0]+2*cidao[m-1];}}ave=(float)(sum)/(float)(m);cout<cout<<"平均寻道长度:"<}/************************循环扫描调度算法*****************************/voidCSCAN(intcidao[],intm){intk=1;intnow,l,r;inti,j,sum=0;inta;charstr[100];floatave;cidao=bubble(cidao,m);//调用冒泡排序算法排序cout<<"请输入当前的磁道号:";E:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoE;}elsenow=trans(str,a);//输入当前磁道号if(cidao[m-1]<=now)//假设当前磁道号大于请求序列中最大者,那么直接将移动臂移动到最小号磁道依次向外给予各请求效劳{cout<<"磁盘扫描序列为:";for(i=0;icout<sum=now-2*cidao[0]+cidao[m-1];}if(cidao[0]>=now)//假设当前磁道号小于请求序列中最小者,那么直接由向外依次给予各请求效劳,此情况同最短寻道优先{cout<<"磁盘扫描序列为:";for(i=0;icout<sum=cidao[m-1]-now;}if(now>cidao[0]&&now{cout<<"磁盘扫描序列为:";while(cidao[k]{k++;}l=k-1;r=k;for(j=r;j{cout<}for(j=0;j{cout<}sum=2*cidao[m-1]+cidao[l]-now-2*cidao[0];}ave=(float)(sum)/(float)(m);cout<cout<<"平均寻道长度:"<}voidmain(){inta;intc;//菜单项intcidao[maxsize];inti=0,count;charstr[100];cout<<"请输入磁道序列〔0完毕〕:"<A:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoA;//输入错误,跳转到A,重新输入}elsecidao[i]=trans(str,a);i++;while(cidao[i-1]!=0){cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0)cout<<"输入数据的类型错误,请重新输入!"<else{cidao[i]=trans(str,a);i++;}}count=i-1;//要访问的磁道数cout<<"你输入的磁道序列为:";for(i=0;i{cout<}cout<while(1){cout<cout<<"**********************************************"<cout<<"系统菜单"<cout<<"******"<cout<<"**1.先来先效劳**"<cout<<"****"<cout<<"**2.最短寻道时间优先**"<cout<<"****"<cout<<"**3.扫描调度**"<cout<<"****"<cout<<"**4.循环扫描**"<cout<<"****"<cout<<"**5.退出**"<cout<<"******"<G:cout<<"请选择算法:";F:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoF;//输入错误,跳转到F,重新输入}elsec=trans(str,a);if(c==5)break;if(c>5){cout<<"数据输入错误!请重新输入"<gotoG;}switch(c){case1://使用FCFS算法FCFS(cidao,count);break;case2://使用SSTF算法SSTF(cidao,count);break;case3://使用SCAN算法SCAN(cidao,count);break;case4://使用CSCAN算法CSCAN(cidao,count);break;}}}3.运行界面:五、实验心得:通过本次实验,学习了解磁盘调度的工作原理及四种调度方法的工作原理,并且在当中发现了自己的缺乏,对以前所学过的知识理解得不够深刻,掌握得不够结实,看到了自己的实践经历还是比拟缺乏,理论联系实际的能力还急需提高。
cout<<"请输入当前移动臂的移动的方向(1表示向外,0表示向):
cin>>d;
if(d==0)//选择移动臂方向向,那么先向扫描
cout<}for(j=r;j{cout<}sum=now-2*cidao[0]+cidao[m-1];}else//选择移动臂方向向外,那么先向外扫描{cout<<"磁盘扫描序列为:";for(j=r;j{cout<}for(j=l;j>=0;j--)//磁头移动到最大号,那么改变方向向扫描未扫描的磁道{cout<}sum=-now-cidao[0]+2*cidao[m-1];}}ave=(float)(sum)/(float)(m);cout<cout<<"平均寻道长度:"<}/************************循环扫描调度算法*****************************/voidCSCAN(intcidao[],intm){intk=1;intnow,l,r;inti,j,sum=0;inta;charstr[100];floatave;cidao=bubble(cidao,m);//调用冒泡排序算法排序cout<<"请输入当前的磁道号:";E:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoE;}elsenow=trans(str,a);//输入当前磁道号if(cidao[m-1]<=now)//假设当前磁道号大于请求序列中最大者,那么直接将移动臂移动到最小号磁道依次向外给予各请求效劳{cout<<"磁盘扫描序列为:";for(i=0;icout<sum=now-2*cidao[0]+cidao[m-1];}if(cidao[0]>=now)//假设当前磁道号小于请求序列中最小者,那么直接由向外依次给予各请求效劳,此情况同最短寻道优先{cout<<"磁盘扫描序列为:";for(i=0;icout<sum=cidao[m-1]-now;}if(now>cidao[0]&&now{cout<<"磁盘扫描序列为:";while(cidao[k]{k++;}l=k-1;r=k;for(j=r;j{cout<}for(j=0;j{cout<}sum=2*cidao[m-1]+cidao[l]-now-2*cidao[0];}ave=(float)(sum)/(float)(m);cout<cout<<"平均寻道长度:"<}voidmain(){inta;intc;//菜单项intcidao[maxsize];inti=0,count;charstr[100];cout<<"请输入磁道序列〔0完毕〕:"<A:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoA;//输入错误,跳转到A,重新输入}elsecidao[i]=trans(str,a);i++;while(cidao[i-1]!=0){cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0)cout<<"输入数据的类型错误,请重新输入!"<else{cidao[i]=trans(str,a);i++;}}count=i-1;//要访问的磁道数cout<<"你输入的磁道序列为:";for(i=0;i{cout<}cout<while(1){cout<cout<<"**********************************************"<cout<<"系统菜单"<cout<<"******"<cout<<"**1.先来先效劳**"<cout<<"****"<cout<<"**2.最短寻道时间优先**"<cout<<"****"<cout<<"**3.扫描调度**"<cout<<"****"<cout<<"**4.循环扫描**"<cout<<"****"<cout<<"**5.退出**"<cout<<"******"<G:cout<<"请选择算法:";F:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoF;//输入错误,跳转到F,重新输入}elsec=trans(str,a);if(c==5)break;if(c>5){cout<<"数据输入错误!请重新输入"<gotoG;}switch(c){case1://使用FCFS算法FCFS(cidao,count);break;case2://使用SSTF算法SSTF(cidao,count);break;case3://使用SCAN算法SCAN(cidao,count);break;case4://使用CSCAN算法CSCAN(cidao,count);break;}}}3.运行界面:五、实验心得:通过本次实验,学习了解磁盘调度的工作原理及四种调度方法的工作原理,并且在当中发现了自己的缺乏,对以前所学过的知识理解得不够深刻,掌握得不够结实,看到了自己的实践经历还是比拟缺乏,理论联系实际的能力还急需提高。
for(j=r;j{cout<}sum=now-2*cidao[0]+cidao[m-1];}else//选择移动臂方向向外,那么先向外扫描{cout<<"磁盘扫描序列为:";for(j=r;j{cout<}for(j=l;j>=0;j--)//磁头移动到最大号,那么改变方向向扫描未扫描的磁道{cout<}sum=-now-cidao[0]+2*cidao[m-1];}}ave=(float)(sum)/(float)(m);cout<cout<<"平均寻道长度:"<}/************************循环扫描调度算法*****************************/voidCSCAN(intcidao[],intm){intk=1;intnow,l,r;inti,j,sum=0;inta;charstr[100];floatave;cidao=bubble(cidao,m);//调用冒泡排序算法排序cout<<"请输入当前的磁道号:";E:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoE;}elsenow=trans(str,a);//输入当前磁道号if(cidao[m-1]<=now)//假设当前磁道号大于请求序列中最大者,那么直接将移动臂移动到最小号磁道依次向外给予各请求效劳{cout<<"磁盘扫描序列为:";for(i=0;icout<sum=now-2*cidao[0]+cidao[m-1];}if(cidao[0]>=now)//假设当前磁道号小于请求序列中最小者,那么直接由向外依次给予各请求效劳,此情况同最短寻道优先{cout<<"磁盘扫描序列为:";for(i=0;icout<sum=cidao[m-1]-now;}if(now>cidao[0]&&now{cout<<"磁盘扫描序列为:";while(cidao[k]{k++;}l=k-1;r=k;for(j=r;j{cout<}for(j=0;j{cout<}sum=2*cidao[m-1]+cidao[l]-now-2*cidao[0];}ave=(float)(sum)/(float)(m);cout<cout<<"平均寻道长度:"<}voidmain(){inta;intc;//菜单项intcidao[maxsize];inti=0,count;charstr[100];cout<<"请输入磁道序列〔0完毕〕:"<A:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoA;//输入错误,跳转到A,重新输入}elsecidao[i]=trans(str,a);i++;while(cidao[i-1]!=0){cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0)cout<<"输入数据的类型错误,请重新输入!"<else{cidao[i]=trans(str,a);i++;}}count=i-1;//要访问的磁道数cout<<"你输入的磁道序列为:";for(i=0;i{cout<}cout<while(1){cout<cout<<"**********************************************"<cout<<"系统菜单"<cout<<"******"<cout<<"**1.先来先效劳**"<cout<<"****"<cout<<"**2.最短寻道时间优先**"<cout<<"****"<cout<<"**3.扫描调度**"<cout<<"****"<cout<<"**4.循环扫描**"<cout<<"****"<cout<<"**5.退出**"<cout<<"******"<G:cout<<"请选择算法:";F:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoF;//输入错误,跳转到F,重新输入}elsec=trans(str,a);if(c==5)break;if(c>5){cout<<"数据输入错误!请重新输入"<gotoG;}switch(c){case1://使用FCFS算法FCFS(cidao,count);break;case2://使用SSTF算法SSTF(cidao,count);break;case3://使用SCAN算法SCAN(cidao,count);break;case4://使用CSCAN算法CSCAN(cidao,count);break;}}}3.运行界面:五、实验心得:通过本次实验,学习了解磁盘调度的工作原理及四种调度方法的工作原理,并且在当中发现了自己的缺乏,对以前所学过的知识理解得不够深刻,掌握得不够结实,看到了自己的实践经历还是比拟缺乏,理论联系实际的能力还急需提高。
cout<}sum=now-2*cidao[0]+cidao[m-1];}else//选择移动臂方向向外,那么先向外扫描{cout<<"磁盘扫描序列为:";for(j=r;j{cout<}for(j=l;j>=0;j--)//磁头移动到最大号,那么改变方向向扫描未扫描的磁道{cout<}sum=-now-cidao[0]+2*cidao[m-1];}}ave=(float)(sum)/(float)(m);cout<cout<<"平均寻道长度:"<}/************************循环扫描调度算法*****************************/voidCSCAN(intcidao[],intm){intk=1;intnow,l,r;inti,j,sum=0;inta;charstr[100];floatave;cidao=bubble(cidao,m);//调用冒泡排序算法排序cout<<"请输入当前的磁道号:";E:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoE;}elsenow=trans(str,a);//输入当前磁道号if(cidao[m-1]<=now)//假设当前磁道号大于请求序列中最大者,那么直接将移动臂移动到最小号磁道依次向外给予各请求效劳{cout<<"磁盘扫描序列为:";for(i=0;icout<sum=now-2*cidao[0]+cidao[m-1];}if(cidao[0]>=now)//假设当前磁道号小于请求序列中最小者,那么直接由向外依次给予各请求效劳,此情况同最短寻道优先{cout<<"磁盘扫描序列为:";for(i=0;icout<sum=cidao[m-1]-now;}if(now>cidao[0]&&now{cout<<"磁盘扫描序列为:";while(cidao[k]{k++;}l=k-1;r=k;for(j=r;j{cout<}for(j=0;j{cout<}sum=2*cidao[m-1]+cidao[l]-now-2*cidao[0];}ave=(float)(sum)/(float)(m);cout<cout<<"平均寻道长度:"<}voidmain(){inta;intc;//菜单项intcidao[maxsize];inti=0,count;charstr[100];cout<<"请输入磁道序列〔0完毕〕:"<A:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoA;//输入错误,跳转到A,重新输入}elsecidao[i]=trans(str,a);i++;while(cidao[i-1]!=0){cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0)cout<<"输入数据的类型错误,请重新输入!"<else{cidao[i]=trans(str,a);i++;}}count=i-1;//要访问的磁道数cout<<"你输入的磁道序列为:";for(i=0;i{cout<}cout<while(1){cout<cout<<"**********************************************"<cout<<"系统菜单"<cout<<"******"<cout<<"**1.先来先效劳**"<cout<<"****"<cout<<"**2.最短寻道时间优先**"<cout<<"****"<cout<<"**3.扫描调度**"<cout<<"****"<cout<<"**4.循环扫描**"<cout<<"****"<cout<<"**5.退出**"<cout<<"******"<G:cout<<"请选择算法:";F:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoF;//输入错误,跳转到F,重新输入}elsec=trans(str,a);if(c==5)break;if(c>5){cout<<"数据输入错误!请重新输入"<gotoG;}switch(c){case1://使用FCFS算法FCFS(cidao,count);break;case2://使用SSTF算法SSTF(cidao,count);break;case3://使用SCAN算法SCAN(cidao,count);break;case4://使用CSCAN算法CSCAN(cidao,count);break;}}}3.运行界面:五、实验心得:通过本次实验,学习了解磁盘调度的工作原理及四种调度方法的工作原理,并且在当中发现了自己的缺乏,对以前所学过的知识理解得不够深刻,掌握得不够结实,看到了自己的实践经历还是比拟缺乏,理论联系实际的能力还急需提高。
sum=now-2*cidao[0]+cidao[m-1];
else//选择移动臂方向向外,那么先向外扫描
for(j=r;j{cout<}for(j=l;j>=0;j--)//磁头移动到最大号,那么改变方向向扫描未扫描的磁道{cout<}sum=-now-cidao[0]+2*cidao[m-1];}}ave=(float)(sum)/(float)(m);cout<cout<<"平均寻道长度:"<}/************************循环扫描调度算法*****************************/voidCSCAN(intcidao[],intm){intk=1;intnow,l,r;inti,j,sum=0;inta;charstr[100];floatave;cidao=bubble(cidao,m);//调用冒泡排序算法排序cout<<"请输入当前的磁道号:";E:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoE;}elsenow=trans(str,a);//输入当前磁道号if(cidao[m-1]<=now)//假设当前磁道号大于请求序列中最大者,那么直接将移动臂移动到最小号磁道依次向外给予各请求效劳{cout<<"磁盘扫描序列为:";for(i=0;icout<sum=now-2*cidao[0]+cidao[m-1];}if(cidao[0]>=now)//假设当前磁道号小于请求序列中最小者,那么直接由向外依次给予各请求效劳,此情况同最短寻道优先{cout<<"磁盘扫描序列为:";for(i=0;icout<sum=cidao[m-1]-now;}if(now>cidao[0]&&now{cout<<"磁盘扫描序列为:";while(cidao[k]{k++;}l=k-1;r=k;for(j=r;j{cout<}for(j=0;j{cout<}sum=2*cidao[m-1]+cidao[l]-now-2*cidao[0];}ave=(float)(sum)/(float)(m);cout<cout<<"平均寻道长度:"<}voidmain(){inta;intc;//菜单项intcidao[maxsize];inti=0,count;charstr[100];cout<<"请输入磁道序列〔0完毕〕:"<A:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoA;//输入错误,跳转到A,重新输入}elsecidao[i]=trans(str,a);i++;while(cidao[i-1]!=0){cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0)cout<<"输入数据的类型错误,请重新输入!"<else{cidao[i]=trans(str,a);i++;}}count=i-1;//要访问的磁道数cout<<"你输入的磁道序列为:";for(i=0;i{cout<}cout<while(1){cout<cout<<"**********************************************"<cout<<"系统菜单"<cout<<"******"<cout<<"**1.先来先效劳**"<cout<<"****"<cout<<"**2.最短寻道时间优先**"<cout<<"****"<cout<<"**3.扫描调度**"<cout<<"****"<cout<<"**4.循环扫描**"<cout<<"****"<cout<<"**5.退出**"<cout<<"******"<G:cout<<"请选择算法:";F:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoF;//输入错误,跳转到F,重新输入}elsec=trans(str,a);if(c==5)break;if(c>5){cout<<"数据输入错误!请重新输入"<gotoG;}switch(c){case1://使用FCFS算法FCFS(cidao,count);break;case2://使用SSTF算法SSTF(cidao,count);break;case3://使用SCAN算法SCAN(cidao,count);break;case4://使用CSCAN算法CSCAN(cidao,count);break;}}}3.运行界面:五、实验心得:通过本次实验,学习了解磁盘调度的工作原理及四种调度方法的工作原理,并且在当中发现了自己的缺乏,对以前所学过的知识理解得不够深刻,掌握得不够结实,看到了自己的实践经历还是比拟缺乏,理论联系实际的能力还急需提高。
cout<}for(j=l;j>=0;j--)//磁头移动到最大号,那么改变方向向扫描未扫描的磁道{cout<}sum=-now-cidao[0]+2*cidao[m-1];}}ave=(float)(sum)/(float)(m);cout<cout<<"平均寻道长度:"<}/************************循环扫描调度算法*****************************/voidCSCAN(intcidao[],intm){intk=1;intnow,l,r;inti,j,sum=0;inta;charstr[100];floatave;cidao=bubble(cidao,m);//调用冒泡排序算法排序cout<<"请输入当前的磁道号:";E:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoE;}elsenow=trans(str,a);//输入当前磁道号if(cidao[m-1]<=now)//假设当前磁道号大于请求序列中最大者,那么直接将移动臂移动到最小号磁道依次向外给予各请求效劳{cout<<"磁盘扫描序列为:";for(i=0;icout<sum=now-2*cidao[0]+cidao[m-1];}if(cidao[0]>=now)//假设当前磁道号小于请求序列中最小者,那么直接由向外依次给予各请求效劳,此情况同最短寻道优先{cout<<"磁盘扫描序列为:";for(i=0;icout<sum=cidao[m-1]-now;}if(now>cidao[0]&&now{cout<<"磁盘扫描序列为:";while(cidao[k]{k++;}l=k-1;r=k;for(j=r;j{cout<}for(j=0;j{cout<}sum=2*cidao[m-1]+cidao[l]-now-2*cidao[0];}ave=(float)(sum)/(float)(m);cout<cout<<"平均寻道长度:"<}voidmain(){inta;intc;//菜单项intcidao[maxsize];inti=0,count;charstr[100];cout<<"请输入磁道序列〔0完毕〕:"<A:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoA;//输入错误,跳转到A,重新输入}elsecidao[i]=trans(str,a);i++;while(cidao[i-1]!=0){cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0)cout<<"输入数据的类型错误,请重新输入!"<else{cidao[i]=trans(str,a);i++;}}count=i-1;//要访问的磁道数cout<<"你输入的磁道序列为:";for(i=0;i{cout<}cout<while(1){cout<cout<<"**********************************************"<cout<<"系统菜单"<cout<<"******"<cout<<"**1.先来先效劳**"<cout<<"****"<cout<<"**2.最短寻道时间优先**"<cout<<"****"<cout<<"**3.扫描调度**"<cout<<"****"<cout<<"**4.循环扫描**"<cout<<"****"<cout<<"**5.退出**"<cout<<"******"<G:cout<<"请选择算法:";F:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoF;//输入错误,跳转到F,重新输入}elsec=trans(str,a);if(c==5)break;if(c>5){cout<<"数据输入错误!请重新输入"<gotoG;}switch(c){case1://使用FCFS算法FCFS(cidao,count);break;case2://使用SSTF算法SSTF(cidao,count);break;case3://使用SCAN算法SCAN(cidao,count);break;case4://使用CSCAN算法CSCAN(cidao,count);break;}}}3.运行界面:五、实验心得:通过本次实验,学习了解磁盘调度的工作原理及四种调度方法的工作原理,并且在当中发现了自己的缺乏,对以前所学过的知识理解得不够深刻,掌握得不够结实,看到了自己的实践经历还是比拟缺乏,理论联系实际的能力还急需提高。
for(j=l;j>=0;j--)//磁头移动到最大号,那么改变方向向扫描未扫描的磁道
cout<}sum=-now-cidao[0]+2*cidao[m-1];}}ave=(float)(sum)/(float)(m);cout<cout<<"平均寻道长度:"<}/************************循环扫描调度算法*****************************/voidCSCAN(intcidao[],intm){intk=1;intnow,l,r;inti,j,sum=0;inta;charstr[100];floatave;cidao=bubble(cidao,m);//调用冒泡排序算法排序cout<<"请输入当前的磁道号:";E:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoE;}elsenow=trans(str,a);//输入当前磁道号if(cidao[m-1]<=now)//假设当前磁道号大于请求序列中最大者,那么直接将移动臂移动到最小号磁道依次向外给予各请求效劳{cout<<"磁盘扫描序列为:";for(i=0;icout<sum=now-2*cidao[0]+cidao[m-1];}if(cidao[0]>=now)//假设当前磁道号小于请求序列中最小者,那么直接由向外依次给予各请求效劳,此情况同最短寻道优先{cout<<"磁盘扫描序列为:";for(i=0;icout<sum=cidao[m-1]-now;}if(now>cidao[0]&&now{cout<<"磁盘扫描序列为:";while(cidao[k]{k++;}l=k-1;r=k;for(j=r;j{cout<}for(j=0;j{cout<}sum=2*cidao[m-1]+cidao[l]-now-2*cidao[0];}ave=(float)(sum)/(float)(m);cout<cout<<"平均寻道长度:"<}voidmain(){inta;intc;//菜单项intcidao[maxsize];inti=0,count;charstr[100];cout<<"请输入磁道序列〔0完毕〕:"<A:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoA;//输入错误,跳转到A,重新输入}elsecidao[i]=trans(str,a);i++;while(cidao[i-1]!=0){cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0)cout<<"输入数据的类型错误,请重新输入!"<else{cidao[i]=trans(str,a);i++;}}count=i-1;//要访问的磁道数cout<<"你输入的磁道序列为:";for(i=0;i{cout<}cout<while(1){cout<cout<<"**********************************************"<cout<<"系统菜单"<cout<<"******"<cout<<"**1.先来先效劳**"<cout<<"****"<cout<<"**2.最短寻道时间优先**"<cout<<"****"<cout<<"**3.扫描调度**"<cout<<"****"<cout<<"**4.循环扫描**"<cout<<"****"<cout<<"**5.退出**"<cout<<"******"<G:cout<<"请选择算法:";F:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoF;//输入错误,跳转到F,重新输入}elsec=trans(str,a);if(c==5)break;if(c>5){cout<<"数据输入错误!请重新输入"<gotoG;}switch(c){case1://使用FCFS算法FCFS(cidao,count);break;case2://使用SSTF算法SSTF(cidao,count);break;case3://使用SCAN算法SCAN(cidao,count);break;case4://使用CSCAN算法CSCAN(cidao,count);break;}}}3.运行界面:五、实验心得:通过本次实验,学习了解磁盘调度的工作原理及四种调度方法的工作原理,并且在当中发现了自己的缺乏,对以前所学过的知识理解得不够深刻,掌握得不够结实,看到了自己的实践经历还是比拟缺乏,理论联系实际的能力还急需提高。
sum=-now-cidao[0]+2*cidao[m-1];
cout<cout<<"平均寻道长度:"<}/************************循环扫描调度算法*****************************/voidCSCAN(intcidao[],intm){intk=1;intnow,l,r;inti,j,sum=0;inta;charstr[100];floatave;cidao=bubble(cidao,m);//调用冒泡排序算法排序cout<<"请输入当前的磁道号:";E:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoE;}elsenow=trans(str,a);//输入当前磁道号if(cidao[m-1]<=now)//假设当前磁道号大于请求序列中最大者,那么直接将移动臂移动到最小号磁道依次向外给予各请求效劳{cout<<"磁盘扫描序列为:";for(i=0;icout<sum=now-2*cidao[0]+cidao[m-1];}if(cidao[0]>=now)//假设当前磁道号小于请求序列中最小者,那么直接由向外依次给予各请求效劳,此情况同最短寻道优先{cout<<"磁盘扫描序列为:";for(i=0;icout<sum=cidao[m-1]-now;}if(now>cidao[0]&&now{cout<<"磁盘扫描序列为:";while(cidao[k]{k++;}l=k-1;r=k;for(j=r;j{cout<}for(j=0;j{cout<}sum=2*cidao[m-1]+cidao[l]-now-2*cidao[0];}ave=(float)(sum)/(float)(m);cout<cout<<"平均寻道长度:"<}voidmain(){inta;intc;//菜单项intcidao[maxsize];inti=0,count;charstr[100];cout<<"请输入磁道序列〔0完毕〕:"<A:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoA;//输入错误,跳转到A,重新输入}elsecidao[i]=trans(str,a);i++;while(cidao[i-1]!=0){cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0)cout<<"输入数据的类型错误,请重新输入!"<else{cidao[i]=trans(str,a);i++;}}count=i-1;//要访问的磁道数cout<<"你输入的磁道序列为:";for(i=0;i{cout<}cout<while(1){cout<cout<<"**********************************************"<cout<<"系统菜单"<cout<<"******"<cout<<"**1.先来先效劳**"<cout<<"****"<cout<<"**2.最短寻道时间优先**"<cout<<"****"<cout<<"**3.扫描调度**"<cout<<"****"<cout<<"**4.循环扫描**"<cout<<"****"<cout<<"**5.退出**"<cout<<"******"<G:cout<<"请选择算法:";F:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoF;//输入错误,跳转到F,重新输入}elsec=trans(str,a);if(c==5)break;if(c>5){cout<<"数据输入错误!请重新输入"<gotoG;}switch(c){case1://使用FCFS算法FCFS(cidao,count);break;case2://使用SSTF算法SSTF(cidao,count);break;case3://使用SCAN算法SCAN(cidao,count);break;case4://使用CSCAN算法CSCAN(cidao,count);break;}}}3.运行界面:五、实验心得:通过本次实验,学习了解磁盘调度的工作原理及四种调度方法的工作原理,并且在当中发现了自己的缺乏,对以前所学过的知识理解得不够深刻,掌握得不够结实,看到了自己的实践经历还是比拟缺乏,理论联系实际的能力还急需提高。
"<}/************************循环扫描调度算法*****************************/voidCSCAN(intcidao[],intm){intk=1;intnow,l,r;inti,j,sum=0;inta;charstr[100];floatave;cidao=bubble(cidao,m);//调用冒泡排序算法排序cout<<"请输入当前的磁道号:";E:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoE;}elsenow=trans(str,a);//输入当前磁道号if(cidao[m-1]<=now)//假设当前磁道号大于请求序列中最大者,那么直接将移动臂移动到最小号磁道依次向外给予各请求效劳{cout<<"磁盘扫描序列为:";for(i=0;icout<sum=now-2*cidao[0]+cidao[m-1];}if(cidao[0]>=now)//假设当前磁道号小于请求序列中最小者,那么直接由向外依次给予各请求效劳,此情况同最短寻道优先{cout<<"磁盘扫描序列为:";for(i=0;icout<sum=cidao[m-1]-now;}if(now>cidao[0]&&now{cout<<"磁盘扫描序列为:";while(cidao[k]{k++;}l=k-1;r=k;for(j=r;j{cout<}for(j=0;j{cout<}sum=2*cidao[m-1]+cidao[l]-now-2*cidao[0];}ave=(float)(sum)/(float)(m);cout<cout<<"平均寻道长度:"<}voidmain(){inta;intc;//菜单项intcidao[maxsize];inti=0,count;charstr[100];cout<<"请输入磁道序列〔0完毕〕:"<A:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoA;//输入错误,跳转到A,重新输入}elsecidao[i]=trans(str,a);i++;while(cidao[i-1]!=0){cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0)cout<<"输入数据的类型错误,请重新输入!"<else{cidao[i]=trans(str,a);i++;}}count=i-1;//要访问的磁道数cout<<"你输入的磁道序列为:";for(i=0;i{cout<}cout<while(1){cout<cout<<"**********************************************"<cout<<"系统菜单"<cout<<"******"<cout<<"**1.先来先效劳**"<cout<<"****"<cout<<"**2.最短寻道时间优先**"<cout<<"****"<cout<<"**3.扫描调度**"<cout<<"****"<cout<<"**4.循环扫描**"<cout<<"****"<cout<<"**5.退出**"<cout<<"******"<G:cout<<"请选择算法:";F:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoF;//输入错误,跳转到F,重新输入}elsec=trans(str,a);if(c==5)break;if(c>5){cout<<"数据输入错误!请重新输入"<gotoG;}switch(c){case1://使用FCFS算法FCFS(cidao,count);break;case2://使用SSTF算法SSTF(cidao,count);break;case3://使用SCAN算法SCAN(cidao,count);break;case4://使用CSCAN算法CSCAN(cidao,count);break;}}}3.运行界面:五、实验心得:通过本次实验,学习了解磁盘调度的工作原理及四种调度方法的工作原理,并且在当中发现了自己的缺乏,对以前所学过的知识理解得不够深刻,掌握得不够结实,看到了自己的实践经历还是比拟缺乏,理论联系实际的能力还急需提高。
/************************循环扫描调度算法*****************************/
voidCSCAN(intcidao[],intm)
E:
"<gotoE;}elsenow=trans(str,a);//输入当前磁道号if(cidao[m-1]<=now)//假设当前磁道号大于请求序列中最大者,那么直接将移动臂移动到最小号磁道依次向外给予各请求效劳{cout<<"磁盘扫描序列为:";for(i=0;icout<sum=now-2*cidao[0]+cidao[m-1];}if(cidao[0]>=now)//假设当前磁道号小于请求序列中最小者,那么直接由向外依次给予各请求效劳,此情况同最短寻道优先{cout<<"磁盘扫描序列为:";for(i=0;icout<sum=cidao[m-1]-now;}if(now>cidao[0]&&now{cout<<"磁盘扫描序列为:";while(cidao[k]{k++;}l=k-1;r=k;for(j=r;j{cout<}for(j=0;j{cout<}sum=2*cidao[m-1]+cidao[l]-now-2*cidao[0];}ave=(float)(sum)/(float)(m);cout<cout<<"平均寻道长度:"<}voidmain(){inta;intc;//菜单项intcidao[maxsize];inti=0,count;charstr[100];cout<<"请输入磁道序列〔0完毕〕:"<A:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoA;//输入错误,跳转到A,重新输入}elsecidao[i]=trans(str,a);i++;while(cidao[i-1]!=0){cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0)cout<<"输入数据的类型错误,请重新输入!"<else{cidao[i]=trans(str,a);i++;}}count=i-1;//要访问的磁道数cout<<"你输入的磁道序列为:";for(i=0;i{cout<}cout<while(1){cout<cout<<"**********************************************"<cout<<"系统菜单"<cout<<"******"<cout<<"**1.先来先效劳**"<cout<<"****"<cout<<"**2.最短寻道时间优先**"<cout<<"****"<cout<<"**3.扫描调度**"<cout<<"****"<cout<<"**4.循环扫描**"<cout<<"****"<cout<<"**5.退出**"<cout<<"******"<G:cout<<"请选择算法:";F:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoF;//输入错误,跳转到F,重新输入}elsec=trans(str,a);if(c==5)break;if(c>5){cout<<"数据输入错误!请重新输入"<gotoG;}switch(c){case1://使用FCFS算法FCFS(cidao,count);break;case2://使用SSTF算法SSTF(cidao,count);break;case3://使用SCAN算法SCAN(cidao,count);break;case4://使用CSCAN算法CSCAN(cidao,count);break;}}}3.运行界面:五、实验心得:通过本次实验,学习了解磁盘调度的工作原理及四种调度方法的工作原理,并且在当中发现了自己的缺乏,对以前所学过的知识理解得不够深刻,掌握得不够结实,看到了自己的实践经历还是比拟缺乏,理论联系实际的能力还急需提高。
gotoE;
if(cidao[m-1]<=now)//假设当前磁道号大于请求序列中最大者,那么直接将移动臂移动到最小号磁道依次向外给予各请求效劳
for(i=0;icout<sum=now-2*cidao[0]+cidao[m-1];}if(cidao[0]>=now)//假设当前磁道号小于请求序列中最小者,那么直接由向外依次给予各请求效劳,此情况同最短寻道优先{cout<<"磁盘扫描序列为:";for(i=0;icout<sum=cidao[m-1]-now;}if(now>cidao[0]&&now{cout<<"磁盘扫描序列为:";while(cidao[k]{k++;}l=k-1;r=k;for(j=r;j{cout<}for(j=0;j{cout<}sum=2*cidao[m-1]+cidao[l]-now-2*cidao[0];}ave=(float)(sum)/(float)(m);cout<cout<<"平均寻道长度:"<}voidmain(){inta;intc;//菜单项intcidao[maxsize];inti=0,count;charstr[100];cout<<"请输入磁道序列〔0完毕〕:"<A:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoA;//输入错误,跳转到A,重新输入}elsecidao[i]=trans(str,a);i++;while(cidao[i-1]!=0){cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0)cout<<"输入数据的类型错误,请重新输入!"<else{cidao[i]=trans(str,a);i++;}}count=i-1;//要访问的磁道数cout<<"你输入的磁道序列为:";for(i=0;i{cout<}cout<while(1){cout<cout<<"**********************************************"<cout<<"系统菜单"<cout<<"******"<cout<<"**1.先来先效劳**"<cout<<"****"<cout<<"**2.最短寻道时间优先**"<cout<<"****"<cout<<"**3.扫描调度**"<cout<<"****"<cout<<"**4.循环扫描**"<cout<<"****"<cout<<"**5.退出**"<cout<<"******"<G:cout<<"请选择算法:";F:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoF;//输入错误,跳转到F,重新输入}elsec=trans(str,a);if(c==5)break;if(c>5){cout<<"数据输入错误!请重新输入"<gotoG;}switch(c){case1://使用FCFS算法FCFS(cidao,count);break;case2://使用SSTF算法SSTF(cidao,count);break;case3://使用SCAN算法SCAN(cidao,count);break;case4://使用CSCAN算法CSCAN(cidao,count);break;}}}3.运行界面:五、实验心得:通过本次实验,学习了解磁盘调度的工作原理及四种调度方法的工作原理,并且在当中发现了自己的缺乏,对以前所学过的知识理解得不够深刻,掌握得不够结实,看到了自己的实践经历还是比拟缺乏,理论联系实际的能力还急需提高。
cout<sum=now-2*cidao[0]+cidao[m-1];}if(cidao[0]>=now)//假设当前磁道号小于请求序列中最小者,那么直接由向外依次给予各请求效劳,此情况同最短寻道优先{cout<<"磁盘扫描序列为:";for(i=0;icout<sum=cidao[m-1]-now;}if(now>cidao[0]&&now{cout<<"磁盘扫描序列为:";while(cidao[k]{k++;}l=k-1;r=k;for(j=r;j{cout<}for(j=0;j{cout<}sum=2*cidao[m-1]+cidao[l]-now-2*cidao[0];}ave=(float)(sum)/(float)(m);cout<cout<<"平均寻道长度:"<}voidmain(){inta;intc;//菜单项intcidao[maxsize];inti=0,count;charstr[100];cout<<"请输入磁道序列〔0完毕〕:"<A:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoA;//输入错误,跳转到A,重新输入}elsecidao[i]=trans(str,a);i++;while(cidao[i-1]!=0){cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0)cout<<"输入数据的类型错误,请重新输入!"<else{cidao[i]=trans(str,a);i++;}}count=i-1;//要访问的磁道数cout<<"你输入的磁道序列为:";for(i=0;i{cout<}cout<while(1){cout<cout<<"**********************************************"<cout<<"系统菜单"<cout<<"******"<cout<<"**1.先来先效劳**"<cout<<"****"<cout<<"**2.最短寻道时间优先**"<cout<<"****"<cout<<"**3.扫描调度**"<cout<<"****"<cout<<"**4.循环扫描**"<cout<<"****"<cout<<"**5.退出**"<cout<<"******"<G:cout<<"请选择算法:";F:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoF;//输入错误,跳转到F,重新输入}elsec=trans(str,a);if(c==5)break;if(c>5){cout<<"数据输入错误!请重新输入"<gotoG;}switch(c){case1://使用FCFS算法FCFS(cidao,count);break;case2://使用SSTF算法SSTF(cidao,count);break;case3://使用SCAN算法SCAN(cidao,count);break;case4://使用CSCAN算法CSCAN(cidao,count);break;}}}3.运行界面:五、实验心得:通过本次实验,学习了解磁盘调度的工作原理及四种调度方法的工作原理,并且在当中发现了自己的缺乏,对以前所学过的知识理解得不够深刻,掌握得不够结实,看到了自己的实践经历还是比拟缺乏,理论联系实际的能力还急需提高。
for(i=0;icout<sum=cidao[m-1]-now;}if(now>cidao[0]&&now{cout<<"磁盘扫描序列为:";while(cidao[k]{k++;}l=k-1;r=k;for(j=r;j{cout<}for(j=0;j{cout<}sum=2*cidao[m-1]+cidao[l]-now-2*cidao[0];}ave=(float)(sum)/(float)(m);cout<cout<<"平均寻道长度:"<}voidmain(){inta;intc;//菜单项intcidao[maxsize];inti=0,count;charstr[100];cout<<"请输入磁道序列〔0完毕〕:"<A:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoA;//输入错误,跳转到A,重新输入}elsecidao[i]=trans(str,a);i++;while(cidao[i-1]!=0){cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0)cout<<"输入数据的类型错误,请重新输入!"<else{cidao[i]=trans(str,a);i++;}}count=i-1;//要访问的磁道数cout<<"你输入的磁道序列为:";for(i=0;i{cout<}cout<while(1){cout<cout<<"**********************************************"<cout<<"系统菜单"<cout<<"******"<cout<<"**1.先来先效劳**"<cout<<"****"<cout<<"**2.最短寻道时间优先**"<cout<<"****"<cout<<"**3.扫描调度**"<cout<<"****"<cout<<"**4.循环扫描**"<cout<<"****"<cout<<"**5.退出**"<cout<<"******"<G:cout<<"请选择算法:";F:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoF;//输入错误,跳转到F,重新输入}elsec=trans(str,a);if(c==5)break;if(c>5){cout<<"数据输入错误!请重新输入"<gotoG;}switch(c){case1://使用FCFS算法FCFS(cidao,count);break;case2://使用SSTF算法SSTF(cidao,count);break;case3://使用SCAN算法SCAN(cidao,count);break;case4://使用CSCAN算法CSCAN(cidao,count);break;}}}3.运行界面:五、实验心得:通过本次实验,学习了解磁盘调度的工作原理及四种调度方法的工作原理,并且在当中发现了自己的缺乏,对以前所学过的知识理解得不够深刻,掌握得不够结实,看到了自己的实践经历还是比拟缺乏,理论联系实际的能力还急需提高。
cout<sum=cidao[m-1]-now;}if(now>cidao[0]&&now{cout<<"磁盘扫描序列为:";while(cidao[k]{k++;}l=k-1;r=k;for(j=r;j{cout<}for(j=0;j{cout<}sum=2*cidao[m-1]+cidao[l]-now-2*cidao[0];}ave=(float)(sum)/(float)(m);cout<cout<<"平均寻道长度:"<}voidmain(){inta;intc;//菜单项intcidao[maxsize];inti=0,count;charstr[100];cout<<"请输入磁道序列〔0完毕〕:"<A:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoA;//输入错误,跳转到A,重新输入}elsecidao[i]=trans(str,a);i++;while(cidao[i-1]!=0){cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0)cout<<"输入数据的类型错误,请重新输入!"<else{cidao[i]=trans(str,a);i++;}}count=i-1;//要访问的磁道数cout<<"你输入的磁道序列为:";for(i=0;i{cout<}cout<while(1){cout<cout<<"**********************************************"<cout<<"系统菜单"<cout<<"******"<cout<<"**1.先来先效劳**"<cout<<"****"<cout<<"**2.最短寻道时间优先**"<cout<<"****"<cout<<"**3.扫描调度**"<cout<<"****"<cout<<"**4.循环扫描**"<cout<<"****"<cout<<"**5.退出**"<cout<<"******"<G:cout<<"请选择算法:";F:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoF;//输入错误,跳转到F,重新输入}elsec=trans(str,a);if(c==5)break;if(c>5){cout<<"数据输入错误!请重新输入"<gotoG;}switch(c){case1://使用FCFS算法FCFS(cidao,count);break;case2://使用SSTF算法SSTF(cidao,count);break;case3://使用SCAN算法SCAN(cidao,count);break;case4://使用CSCAN算法CSCAN(cidao,count);break;}}}3.运行界面:五、实验心得:通过本次实验,学习了解磁盘调度的工作原理及四种调度方法的工作原理,并且在当中发现了自己的缺乏,对以前所学过的知识理解得不够深刻,掌握得不够结实,看到了自己的实践经历还是比拟缺乏,理论联系实际的能力还急需提高。
if(now>cidao[0]&&now{cout<<"磁盘扫描序列为:";while(cidao[k]{k++;}l=k-1;r=k;for(j=r;j{cout<}for(j=0;j{cout<}sum=2*cidao[m-1]+cidao[l]-now-2*cidao[0];}ave=(float)(sum)/(float)(m);cout<cout<<"平均寻道长度:"<}voidmain(){inta;intc;//菜单项intcidao[maxsize];inti=0,count;charstr[100];cout<<"请输入磁道序列〔0完毕〕:"<A:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoA;//输入错误,跳转到A,重新输入}elsecidao[i]=trans(str,a);i++;while(cidao[i-1]!=0){cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0)cout<<"输入数据的类型错误,请重新输入!"<else{cidao[i]=trans(str,a);i++;}}count=i-1;//要访问的磁道数cout<<"你输入的磁道序列为:";for(i=0;i{cout<}cout<while(1){cout<cout<<"**********************************************"<cout<<"系统菜单"<cout<<"******"<cout<<"**1.先来先效劳**"<cout<<"****"<cout<<"**2.最短寻道时间优先**"<cout<<"****"<cout<<"**3.扫描调度**"<cout<<"****"<cout<<"**4.循环扫描**"<cout<<"****"<cout<<"**5.退出**"<cout<<"******"<G:cout<<"请选择算法:";F:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoF;//输入错误,跳转到F,重新输入}elsec=trans(str,a);if(c==5)break;if(c>5){cout<<"数据输入错误!请重新输入"<gotoG;}switch(c){case1://使用FCFS算法FCFS(cidao,count);break;case2://使用SSTF算法SSTF(cidao,count);break;case3://使用SCAN算法SCAN(cidao,count);break;case4://使用CSCAN算法CSCAN(cidao,count);break;}}}3.运行界面:五、实验心得:通过本次实验,学习了解磁盘调度的工作原理及四种调度方法的工作原理,并且在当中发现了自己的缺乏,对以前所学过的知识理解得不够深刻,掌握得不够结实,看到了自己的实践经历还是比拟缺乏,理论联系实际的能力还急需提高。
while(cidao[k]{k++;}l=k-1;r=k;for(j=r;j{cout<}for(j=0;j{cout<}sum=2*cidao[m-1]+cidao[l]-now-2*cidao[0];}ave=(float)(sum)/(float)(m);cout<cout<<"平均寻道长度:"<}voidmain(){inta;intc;//菜单项intcidao[maxsize];inti=0,count;charstr[100];cout<<"请输入磁道序列〔0完毕〕:"<A:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoA;//输入错误,跳转到A,重新输入}elsecidao[i]=trans(str,a);i++;while(cidao[i-1]!=0){cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0)cout<<"输入数据的类型错误,请重新输入!"<else{cidao[i]=trans(str,a);i++;}}count=i-1;//要访问的磁道数cout<<"你输入的磁道序列为:";for(i=0;i{cout<}cout<while(1){cout<cout<<"**********************************************"<cout<<"系统菜单"<cout<<"******"<cout<<"**1.先来先效劳**"<cout<<"****"<cout<<"**2.最短寻道时间优先**"<cout<<"****"<cout<<"**3.扫描调度**"<cout<<"****"<cout<<"**4.循环扫描**"<cout<<"****"<cout<<"**5.退出**"<cout<<"******"<G:cout<<"请选择算法:";F:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoF;//输入错误,跳转到F,重新输入}elsec=trans(str,a);if(c==5)break;if(c>5){cout<<"数据输入错误!请重新输入"<gotoG;}switch(c){case1://使用FCFS算法FCFS(cidao,count);break;case2://使用SSTF算法SSTF(cidao,count);break;case3://使用SCAN算法SCAN(cidao,count);break;case4://使用CSCAN算法CSCAN(cidao,count);break;}}}3.运行界面:五、实验心得:通过本次实验,学习了解磁盘调度的工作原理及四种调度方法的工作原理,并且在当中发现了自己的缺乏,对以前所学过的知识理解得不够深刻,掌握得不够结实,看到了自己的实践经历还是比拟缺乏,理论联系实际的能力还急需提高。
for(j=r;j{cout<}for(j=0;j{cout<}sum=2*cidao[m-1]+cidao[l]-now-2*cidao[0];}ave=(float)(sum)/(float)(m);cout<cout<<"平均寻道长度:"<}voidmain(){inta;intc;//菜单项intcidao[maxsize];inti=0,count;charstr[100];cout<<"请输入磁道序列〔0完毕〕:"<A:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoA;//输入错误,跳转到A,重新输入}elsecidao[i]=trans(str,a);i++;while(cidao[i-1]!=0){cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0)cout<<"输入数据的类型错误,请重新输入!"<else{cidao[i]=trans(str,a);i++;}}count=i-1;//要访问的磁道数cout<<"你输入的磁道序列为:";for(i=0;i{cout<}cout<while(1){cout<cout<<"**********************************************"<cout<<"系统菜单"<cout<<"******"<cout<<"**1.先来先效劳**"<cout<<"****"<cout<<"**2.最短寻道时间优先**"<cout<<"****"<cout<<"**3.扫描调度**"<cout<<"****"<cout<<"**4.循环扫描**"<cout<<"****"<cout<<"**5.退出**"<cout<<"******"<G:cout<<"请选择算法:";F:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoF;//输入错误,跳转到F,重新输入}elsec=trans(str,a);if(c==5)break;if(c>5){cout<<"数据输入错误!请重新输入"<gotoG;}switch(c){case1://使用FCFS算法FCFS(cidao,count);break;case2://使用SSTF算法SSTF(cidao,count);break;case3://使用SCAN算法SCAN(cidao,count);break;case4://使用CSCAN算法CSCAN(cidao,count);break;}}}3.运行界面:五、实验心得:通过本次实验,学习了解磁盘调度的工作原理及四种调度方法的工作原理,并且在当中发现了自己的缺乏,对以前所学过的知识理解得不够深刻,掌握得不够结实,看到了自己的实践经历还是比拟缺乏,理论联系实际的能力还急需提高。
cout<}for(j=0;j{cout<}sum=2*cidao[m-1]+cidao[l]-now-2*cidao[0];}ave=(float)(sum)/(float)(m);cout<cout<<"平均寻道长度:"<}voidmain(){inta;intc;//菜单项intcidao[maxsize];inti=0,count;charstr[100];cout<<"请输入磁道序列〔0完毕〕:"<A:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoA;//输入错误,跳转到A,重新输入}elsecidao[i]=trans(str,a);i++;while(cidao[i-1]!=0){cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0)cout<<"输入数据的类型错误,请重新输入!"<else{cidao[i]=trans(str,a);i++;}}count=i-1;//要访问的磁道数cout<<"你输入的磁道序列为:";for(i=0;i{cout<}cout<while(1){cout<cout<<"**********************************************"<cout<<"系统菜单"<cout<<"******"<cout<<"**1.先来先效劳**"<cout<<"****"<cout<<"**2.最短寻道时间优先**"<cout<<"****"<cout<<"**3.扫描调度**"<cout<<"****"<cout<<"**4.循环扫描**"<cout<<"****"<cout<<"**5.退出**"<cout<<"******"<G:cout<<"请选择算法:";F:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoF;//输入错误,跳转到F,重新输入}elsec=trans(str,a);if(c==5)break;if(c>5){cout<<"数据输入错误!请重新输入"<gotoG;}switch(c){case1://使用FCFS算法FCFS(cidao,count);break;case2://使用SSTF算法SSTF(cidao,count);break;case3://使用SCAN算法SCAN(cidao,count);break;case4://使用CSCAN算法CSCAN(cidao,count);break;}}}3.运行界面:五、实验心得:通过本次实验,学习了解磁盘调度的工作原理及四种调度方法的工作原理,并且在当中发现了自己的缺乏,对以前所学过的知识理解得不够深刻,掌握得不够结实,看到了自己的实践经历还是比拟缺乏,理论联系实际的能力还急需提高。
for(j=0;j{cout<}sum=2*cidao[m-1]+cidao[l]-now-2*cidao[0];}ave=(float)(sum)/(float)(m);cout<cout<<"平均寻道长度:"<}voidmain(){inta;intc;//菜单项intcidao[maxsize];inti=0,count;charstr[100];cout<<"请输入磁道序列〔0完毕〕:"<A:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoA;//输入错误,跳转到A,重新输入}elsecidao[i]=trans(str,a);i++;while(cidao[i-1]!=0){cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0)cout<<"输入数据的类型错误,请重新输入!"<else{cidao[i]=trans(str,a);i++;}}count=i-1;//要访问的磁道数cout<<"你输入的磁道序列为:";for(i=0;i{cout<}cout<while(1){cout<cout<<"**********************************************"<cout<<"系统菜单"<cout<<"******"<cout<<"**1.先来先效劳**"<cout<<"****"<cout<<"**2.最短寻道时间优先**"<cout<<"****"<cout<<"**3.扫描调度**"<cout<<"****"<cout<<"**4.循环扫描**"<cout<<"****"<cout<<"**5.退出**"<cout<<"******"<G:cout<<"请选择算法:";F:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoF;//输入错误,跳转到F,重新输入}elsec=trans(str,a);if(c==5)break;if(c>5){cout<<"数据输入错误!请重新输入"<gotoG;}switch(c){case1://使用FCFS算法FCFS(cidao,count);break;case2://使用SSTF算法SSTF(cidao,count);break;case3://使用SCAN算法SCAN(cidao,count);break;case4://使用CSCAN算法CSCAN(cidao,count);break;}}}3.运行界面:五、实验心得:通过本次实验,学习了解磁盘调度的工作原理及四种调度方法的工作原理,并且在当中发现了自己的缺乏,对以前所学过的知识理解得不够深刻,掌握得不够结实,看到了自己的实践经历还是比拟缺乏,理论联系实际的能力还急需提高。
cout<}sum=2*cidao[m-1]+cidao[l]-now-2*cidao[0];}ave=(float)(sum)/(float)(m);cout<cout<<"平均寻道长度:"<}voidmain(){inta;intc;//菜单项intcidao[maxsize];inti=0,count;charstr[100];cout<<"请输入磁道序列〔0完毕〕:"<A:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoA;//输入错误,跳转到A,重新输入}elsecidao[i]=trans(str,a);i++;while(cidao[i-1]!=0){cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0)cout<<"输入数据的类型错误,请重新输入!"<else{cidao[i]=trans(str,a);i++;}}count=i-1;//要访问的磁道数cout<<"你输入的磁道序列为:";for(i=0;i{cout<}cout<while(1){cout<cout<<"**********************************************"<cout<<"系统菜单"<cout<<"******"<cout<<"**1.先来先效劳**"<cout<<"****"<cout<<"**2.最短寻道时间优先**"<cout<<"****"<cout<<"**3.扫描调度**"<cout<<"****"<cout<<"**4.循环扫描**"<cout<<"****"<cout<<"**5.退出**"<cout<<"******"<G:cout<<"请选择算法:";F:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoF;//输入错误,跳转到F,重新输入}elsec=trans(str,a);if(c==5)break;if(c>5){cout<<"数据输入错误!请重新输入"<gotoG;}switch(c){case1://使用FCFS算法FCFS(cidao,count);break;case2://使用SSTF算法SSTF(cidao,count);break;case3://使用SCAN算法SCAN(cidao,count);break;case4://使用CSCAN算法CSCAN(cidao,count);break;}}}3.运行界面:五、实验心得:通过本次实验,学习了解磁盘调度的工作原理及四种调度方法的工作原理,并且在当中发现了自己的缺乏,对以前所学过的知识理解得不够深刻,掌握得不够结实,看到了自己的实践经历还是比拟缺乏,理论联系实际的能力还急需提高。
sum=2*cidao[m-1]+cidao[l]-now-2*cidao[0];
cout<cout<<"平均寻道长度:"<}voidmain(){inta;intc;//菜单项intcidao[maxsize];inti=0,count;charstr[100];cout<<"请输入磁道序列〔0完毕〕:"<A:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoA;//输入错误,跳转到A,重新输入}elsecidao[i]=trans(str,a);i++;while(cidao[i-1]!=0){cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0)cout<<"输入数据的类型错误,请重新输入!"<else{cidao[i]=trans(str,a);i++;}}count=i-1;//要访问的磁道数cout<<"你输入的磁道序列为:";for(i=0;i{cout<}cout<while(1){cout<cout<<"**********************************************"<cout<<"系统菜单"<cout<<"******"<cout<<"**1.先来先效劳**"<cout<<"****"<cout<<"**2.最短寻道时间优先**"<cout<<"****"<cout<<"**3.扫描调度**"<cout<<"****"<cout<<"**4.循环扫描**"<cout<<"****"<cout<<"**5.退出**"<cout<<"******"<G:cout<<"请选择算法:";F:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoF;//输入错误,跳转到F,重新输入}elsec=trans(str,a);if(c==5)break;if(c>5){cout<<"数据输入错误!请重新输入"<gotoG;}switch(c){case1://使用FCFS算法FCFS(cidao,count);break;case2://使用SSTF算法SSTF(cidao,count);break;case3://使用SCAN算法SCAN(cidao,count);break;case4://使用CSCAN算法CSCAN(cidao,count);break;}}}3.运行界面:五、实验心得:通过本次实验,学习了解磁盘调度的工作原理及四种调度方法的工作原理,并且在当中发现了自己的缺乏,对以前所学过的知识理解得不够深刻,掌握得不够结实,看到了自己的实践经历还是比拟缺乏,理论联系实际的能力还急需提高。
"<}voidmain(){inta;intc;//菜单项intcidao[maxsize];inti=0,count;charstr[100];cout<<"请输入磁道序列〔0完毕〕:"<A:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoA;//输入错误,跳转到A,重新输入}elsecidao[i]=trans(str,a);i++;while(cidao[i-1]!=0){cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0)cout<<"输入数据的类型错误,请重新输入!"<else{cidao[i]=trans(str,a);i++;}}count=i-1;//要访问的磁道数cout<<"你输入的磁道序列为:";for(i=0;i{cout<}cout<while(1){cout<cout<<"**********************************************"<cout<<"系统菜单"<cout<<"******"<cout<<"**1.先来先效劳**"<cout<<"****"<cout<<"**2.最短寻道时间优先**"<cout<<"****"<cout<<"**3.扫描调度**"<cout<<"****"<cout<<"**4.循环扫描**"<cout<<"****"<cout<<"**5.退出**"<cout<<"******"<G:cout<<"请选择算法:";F:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoF;//输入错误,跳转到F,重新输入}elsec=trans(str,a);if(c==5)break;if(c>5){cout<<"数据输入错误!请重新输入"<gotoG;}switch(c){case1://使用FCFS算法FCFS(cidao,count);break;case2://使用SSTF算法SSTF(cidao,count);break;case3://使用SCAN算法SCAN(cidao,count);break;case4://使用CSCAN算法CSCAN(cidao,count);break;}}}3.运行界面:五、实验心得:通过本次实验,学习了解磁盘调度的工作原理及四种调度方法的工作原理,并且在当中发现了自己的缺乏,对以前所学过的知识理解得不够深刻,掌握得不够结实,看到了自己的实践经历还是比拟缺乏,理论联系实际的能力还急需提高。
voidmain()
intc;//菜单项
intcidao[maxsize];
inti=0,count;
cout<<"请输入磁道序列〔0完毕〕:
"<A:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoA;//输入错误,跳转到A,重新输入}elsecidao[i]=trans(str,a);i++;while(cidao[i-1]!=0){cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0)cout<<"输入数据的类型错误,请重新输入!"<else{cidao[i]=trans(str,a);i++;}}count=i-1;//要访问的磁道数cout<<"你输入的磁道序列为:";for(i=0;i{cout<}cout<while(1){cout<cout<<"**********************************************"<cout<<"系统菜单"<cout<<"******"<cout<<"**1.先来先效劳**"<cout<<"****"<cout<<"**2.最短寻道时间优先**"<cout<<"****"<cout<<"**3.扫描调度**"<cout<<"****"<cout<<"**4.循环扫描**"<cout<<"****"<cout<<"**5.退出**"<cout<<"******"<G:cout<<"请选择算法:";F:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoF;//输入错误,跳转到F,重新输入}elsec=trans(str,a);if(c==5)break;if(c>5){cout<<"数据输入错误!请重新输入"<gotoG;}switch(c){case1://使用FCFS算法FCFS(cidao,count);break;case2://使用SSTF算法SSTF(cidao,count);break;case3://使用SCAN算法SCAN(cidao,count);break;case4://使用CSCAN算法CSCAN(cidao,count);break;}}}3.运行界面:五、实验心得:通过本次实验,学习了解磁盘调度的工作原理及四种调度方法的工作原理,并且在当中发现了自己的缺乏,对以前所学过的知识理解得不够深刻,掌握得不够结实,看到了自己的实践经历还是比拟缺乏,理论联系实际的能力还急需提高。
A:
"<gotoA;//输入错误,跳转到A,重新输入}elsecidao[i]=trans(str,a);i++;while(cidao[i-1]!=0){cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0)cout<<"输入数据的类型错误,请重新输入!"<else{cidao[i]=trans(str,a);i++;}}count=i-1;//要访问的磁道数cout<<"你输入的磁道序列为:";for(i=0;i{cout<}cout<while(1){cout<cout<<"**********************************************"<cout<<"系统菜单"<cout<<"******"<cout<<"**1.先来先效劳**"<cout<<"****"<cout<<"**2.最短寻道时间优先**"<cout<<"****"<cout<<"**3.扫描调度**"<cout<<"****"<cout<<"**4.循环扫描**"<cout<<"****"<cout<<"**5.退出**"<cout<<"******"<G:cout<<"请选择算法:";F:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoF;//输入错误,跳转到F,重新输入}elsec=trans(str,a);if(c==5)break;if(c>5){cout<<"数据输入错误!请重新输入"<gotoG;}switch(c){case1://使用FCFS算法FCFS(cidao,count);break;case2://使用SSTF算法SSTF(cidao,count);break;case3://使用SCAN算法SCAN(cidao,count);break;case4://使用CSCAN算法CSCAN(cidao,count);break;}}}3.运行界面:五、实验心得:通过本次实验,学习了解磁盘调度的工作原理及四种调度方法的工作原理,并且在当中发现了自己的缺乏,对以前所学过的知识理解得不够深刻,掌握得不够结实,看到了自己的实践经历还是比拟缺乏,理论联系实际的能力还急需提高。
gotoA;//输入错误,跳转到A,重新输入
cidao[i]=trans(str,a);
while(cidao[i-1]!
=0)
"<else{cidao[i]=trans(str,a);i++;}}count=i-1;//要访问的磁道数cout<<"你输入的磁道序列为:";for(i=0;i{cout<}cout<while(1){cout<cout<<"**********************************************"<cout<<"系统菜单"<cout<<"******"<cout<<"**1.先来先效劳**"<cout<<"****"<cout<<"**2.最短寻道时间优先**"<cout<<"****"<cout<<"**3.扫描调度**"<cout<<"****"<cout<<"**4.循环扫描**"<cout<<"****"<cout<<"**5.退出**"<cout<<"******"<G:cout<<"请选择算法:";F:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoF;//输入错误,跳转到F,重新输入}elsec=trans(str,a);if(c==5)break;if(c>5){cout<<"数据输入错误!请重新输入"<gotoG;}switch(c){case1://使用FCFS算法FCFS(cidao,count);break;case2://使用SSTF算法SSTF(cidao,count);break;case3://使用SCAN算法SCAN(cidao,count);break;case4://使用CSCAN算法CSCAN(cidao,count);break;}}}3.运行界面:五、实验心得:通过本次实验,学习了解磁盘调度的工作原理及四种调度方法的工作原理,并且在当中发现了自己的缺乏,对以前所学过的知识理解得不够深刻,掌握得不够结实,看到了自己的实践经历还是比拟缺乏,理论联系实际的能力还急需提高。
count=i-1;//要访问的磁道数
cout<<"你输入的磁道序列为:
for(i=0;i{cout<}cout<while(1){cout<cout<<"**********************************************"<cout<<"系统菜单"<cout<<"******"<cout<<"**1.先来先效劳**"<cout<<"****"<cout<<"**2.最短寻道时间优先**"<cout<<"****"<cout<<"**3.扫描调度**"<cout<<"****"<cout<<"**4.循环扫描**"<cout<<"****"<cout<<"**5.退出**"<cout<<"******"<G:cout<<"请选择算法:";F:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoF;//输入错误,跳转到F,重新输入}elsec=trans(str,a);if(c==5)break;if(c>5){cout<<"数据输入错误!请重新输入"<gotoG;}switch(c){case1://使用FCFS算法FCFS(cidao,count);break;case2://使用SSTF算法SSTF(cidao,count);break;case3://使用SCAN算法SCAN(cidao,count);break;case4://使用CSCAN算法CSCAN(cidao,count);break;}}}3.运行界面:五、实验心得:通过本次实验,学习了解磁盘调度的工作原理及四种调度方法的工作原理,并且在当中发现了自己的缺乏,对以前所学过的知识理解得不够深刻,掌握得不够结实,看到了自己的实践经历还是比拟缺乏,理论联系实际的能力还急需提高。
cout<}cout<while(1){cout<cout<<"**********************************************"<cout<<"系统菜单"<cout<<"******"<cout<<"**1.先来先效劳**"<cout<<"****"<cout<<"**2.最短寻道时间优先**"<cout<<"****"<cout<<"**3.扫描调度**"<cout<<"****"<cout<<"**4.循环扫描**"<cout<<"****"<cout<<"**5.退出**"<cout<<"******"<G:cout<<"请选择算法:";F:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoF;//输入错误,跳转到F,重新输入}elsec=trans(str,a);if(c==5)break;if(c>5){cout<<"数据输入错误!请重新输入"<gotoG;}switch(c){case1://使用FCFS算法FCFS(cidao,count);break;case2://使用SSTF算法SSTF(cidao,count);break;case3://使用SCAN算法SCAN(cidao,count);break;case4://使用CSCAN算法CSCAN(cidao,count);break;}}}3.运行界面:五、实验心得:通过本次实验,学习了解磁盘调度的工作原理及四种调度方法的工作原理,并且在当中发现了自己的缺乏,对以前所学过的知识理解得不够深刻,掌握得不够结实,看到了自己的实践经历还是比拟缺乏,理论联系实际的能力还急需提高。
cout<while(1){cout<cout<<"**********************************************"<cout<<"系统菜单"<cout<<"******"<cout<<"**1.先来先效劳**"<cout<<"****"<cout<<"**2.最短寻道时间优先**"<cout<<"****"<cout<<"**3.扫描调度**"<cout<<"****"<cout<<"**4.循环扫描**"<cout<<"****"<cout<<"**5.退出**"<cout<<"******"<G:cout<<"请选择算法:";F:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoF;//输入错误,跳转到F,重新输入}elsec=trans(str,a);if(c==5)break;if(c>5){cout<<"数据输入错误!请重新输入"<gotoG;}switch(c){case1://使用FCFS算法FCFS(cidao,count);break;case2://使用SSTF算法SSTF(cidao,count);break;case3://使用SCAN算法SCAN(cidao,count);break;case4://使用CSCAN算法CSCAN(cidao,count);break;}}}3.运行界面:五、实验心得:通过本次实验,学习了解磁盘调度的工作原理及四种调度方法的工作原理,并且在当中发现了自己的缺乏,对以前所学过的知识理解得不够深刻,掌握得不够结实,看到了自己的实践经历还是比拟缺乏,理论联系实际的能力还急需提高。
while
(1)
cout<cout<<"**********************************************"<cout<<"系统菜单"<cout<<"******"<cout<<"**1.先来先效劳**"<cout<<"****"<cout<<"**2.最短寻道时间优先**"<cout<<"****"<cout<<"**3.扫描调度**"<cout<<"****"<cout<<"**4.循环扫描**"<cout<<"****"<cout<<"**5.退出**"<cout<<"******"<G:cout<<"请选择算法:";F:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoF;//输入错误,跳转到F,重新输入}elsec=trans(str,a);if(c==5)break;if(c>5){cout<<"数据输入错误!请重新输入"<gotoG;}switch(c){case1://使用FCFS算法FCFS(cidao,count);break;case2://使用SSTF算法SSTF(cidao,count);break;case3://使用SCAN算法SCAN(cidao,count);break;case4://使用CSCAN算法CSCAN(cidao,count);break;}}}3.运行界面:五、实验心得:通过本次实验,学习了解磁盘调度的工作原理及四种调度方法的工作原理,并且在当中发现了自己的缺乏,对以前所学过的知识理解得不够深刻,掌握得不够结实,看到了自己的实践经历还是比拟缺乏,理论联系实际的能力还急需提高。
cout<<"**********************************************"<cout<<"系统菜单"<cout<<"******"<cout<<"**1.先来先效劳**"<cout<<"****"<cout<<"**2.最短寻道时间优先**"<cout<<"****"<cout<<"**3.扫描调度**"<cout<<"****"<cout<<"**4.循环扫描**"<cout<<"****"<cout<<"**5.退出**"<cout<<"******"<G:cout<<"请选择算法:";F:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoF;//输入错误,跳转到F,重新输入}elsec=trans(str,a);if(c==5)break;if(c>5){cout<<"数据输入错误!请重新输入"<gotoG;}switch(c){case1://使用FCFS算法FCFS(cidao,count);break;case2://使用SSTF算法SSTF(cidao,count);break;case3://使用SCAN算法SCAN(cidao,count);break;case4://使用CSCAN算法CSCAN(cidao,count);break;}}}3.运行界面:五、实验心得:通过本次实验,学习了解磁盘调度的工作原理及四种调度方法的工作原理,并且在当中发现了自己的缺乏,对以前所学过的知识理解得不够深刻,掌握得不够结实,看到了自己的实践经历还是比拟缺乏,理论联系实际的能力还急需提高。
cout<<"系统菜单"<cout<<"******"<cout<<"**1.先来先效劳**"<cout<<"****"<cout<<"**2.最短寻道时间优先**"<cout<<"****"<cout<<"**3.扫描调度**"<cout<<"****"<cout<<"**4.循环扫描**"<cout<<"****"<cout<<"**5.退出**"<cout<<"******"<G:cout<<"请选择算法:";F:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoF;//输入错误,跳转到F,重新输入}elsec=trans(str,a);if(c==5)break;if(c>5){cout<<"数据输入错误!请重新输入"<gotoG;}switch(c){case1://使用FCFS算法FCFS(cidao,count);break;case2://使用SSTF算法SSTF(cidao,count);break;case3://使用SCAN算法SCAN(cidao,count);break;case4://使用CSCAN算法CSCAN(cidao,count);break;}}}3.运行界面:五、实验心得:通过本次实验,学习了解磁盘调度的工作原理及四种调度方法的工作原理,并且在当中发现了自己的缺乏,对以前所学过的知识理解得不够深刻,掌握得不够结实,看到了自己的实践经历还是比拟缺乏,理论联系实际的能力还急需提高。
cout<<"******"<cout<<"**1.先来先效劳**"<cout<<"****"<cout<<"**2.最短寻道时间优先**"<cout<<"****"<cout<<"**3.扫描调度**"<cout<<"****"<cout<<"**4.循环扫描**"<cout<<"****"<cout<<"**5.退出**"<cout<<"******"<G:cout<<"请选择算法:";F:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoF;//输入错误,跳转到F,重新输入}elsec=trans(str,a);if(c==5)break;if(c>5){cout<<"数据输入错误!请重新输入"<gotoG;}switch(c){case1://使用FCFS算法FCFS(cidao,count);break;case2://使用SSTF算法SSTF(cidao,count);break;case3://使用SCAN算法SCAN(cidao,count);break;case4://使用CSCAN算法CSCAN(cidao,count);break;}}}3.运行界面:五、实验心得:通过本次实验,学习了解磁盘调度的工作原理及四种调度方法的工作原理,并且在当中发现了自己的缺乏,对以前所学过的知识理解得不够深刻,掌握得不够结实,看到了自己的实践经历还是比拟缺乏,理论联系实际的能力还急需提高。
cout<<"**1.先来先效劳**"<cout<<"****"<cout<<"**2.最短寻道时间优先**"<cout<<"****"<cout<<"**3.扫描调度**"<cout<<"****"<cout<<"**4.循环扫描**"<cout<<"****"<cout<<"**5.退出**"<cout<<"******"<G:cout<<"请选择算法:";F:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoF;//输入错误,跳转到F,重新输入}elsec=trans(str,a);if(c==5)break;if(c>5){cout<<"数据输入错误!请重新输入"<gotoG;}switch(c){case1://使用FCFS算法FCFS(cidao,count);break;case2://使用SSTF算法SSTF(cidao,count);break;case3://使用SCAN算法SCAN(cidao,count);break;case4://使用CSCAN算法CSCAN(cidao,count);break;}}}3.运行界面:五、实验心得:通过本次实验,学习了解磁盘调度的工作原理及四种调度方法的工作原理,并且在当中发现了自己的缺乏,对以前所学过的知识理解得不够深刻,掌握得不够结实,看到了自己的实践经历还是比拟缺乏,理论联系实际的能力还急需提高。
cout<<"****"<cout<<"**2.最短寻道时间优先**"<cout<<"****"<cout<<"**3.扫描调度**"<cout<<"****"<cout<<"**4.循环扫描**"<cout<<"****"<cout<<"**5.退出**"<cout<<"******"<G:cout<<"请选择算法:";F:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoF;//输入错误,跳转到F,重新输入}elsec=trans(str,a);if(c==5)break;if(c>5){cout<<"数据输入错误!请重新输入"<gotoG;}switch(c){case1://使用FCFS算法FCFS(cidao,count);break;case2://使用SSTF算法SSTF(cidao,count);break;case3://使用SCAN算法SCAN(cidao,count);break;case4://使用CSCAN算法CSCAN(cidao,count);break;}}}3.运行界面:五、实验心得:通过本次实验,学习了解磁盘调度的工作原理及四种调度方法的工作原理,并且在当中发现了自己的缺乏,对以前所学过的知识理解得不够深刻,掌握得不够结实,看到了自己的实践经历还是比拟缺乏,理论联系实际的能力还急需提高。
cout<<"**2.最短寻道时间优先**"<cout<<"****"<cout<<"**3.扫描调度**"<cout<<"****"<cout<<"**4.循环扫描**"<cout<<"****"<cout<<"**5.退出**"<cout<<"******"<G:cout<<"请选择算法:";F:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoF;//输入错误,跳转到F,重新输入}elsec=trans(str,a);if(c==5)break;if(c>5){cout<<"数据输入错误!请重新输入"<gotoG;}switch(c){case1://使用FCFS算法FCFS(cidao,count);break;case2://使用SSTF算法SSTF(cidao,count);break;case3://使用SCAN算法SCAN(cidao,count);break;case4://使用CSCAN算法CSCAN(cidao,count);break;}}}3.运行界面:五、实验心得:通过本次实验,学习了解磁盘调度的工作原理及四种调度方法的工作原理,并且在当中发现了自己的缺乏,对以前所学过的知识理解得不够深刻,掌握得不够结实,看到了自己的实践经历还是比拟缺乏,理论联系实际的能力还急需提高。
cout<<"****"<cout<<"**3.扫描调度**"<cout<<"****"<cout<<"**4.循环扫描**"<cout<<"****"<cout<<"**5.退出**"<cout<<"******"<G:cout<<"请选择算法:";F:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoF;//输入错误,跳转到F,重新输入}elsec=trans(str,a);if(c==5)break;if(c>5){cout<<"数据输入错误!请重新输入"<gotoG;}switch(c){case1://使用FCFS算法FCFS(cidao,count);break;case2://使用SSTF算法SSTF(cidao,count);break;case3://使用SCAN算法SCAN(cidao,count);break;case4://使用CSCAN算法CSCAN(cidao,count);break;}}}3.运行界面:五、实验心得:通过本次实验,学习了解磁盘调度的工作原理及四种调度方法的工作原理,并且在当中发现了自己的缺乏,对以前所学过的知识理解得不够深刻,掌握得不够结实,看到了自己的实践经历还是比拟缺乏,理论联系实际的能力还急需提高。
cout<<"**3.扫描调度**"<cout<<"****"<cout<<"**4.循环扫描**"<cout<<"****"<cout<<"**5.退出**"<cout<<"******"<G:cout<<"请选择算法:";F:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoF;//输入错误,跳转到F,重新输入}elsec=trans(str,a);if(c==5)break;if(c>5){cout<<"数据输入错误!请重新输入"<gotoG;}switch(c){case1://使用FCFS算法FCFS(cidao,count);break;case2://使用SSTF算法SSTF(cidao,count);break;case3://使用SCAN算法SCAN(cidao,count);break;case4://使用CSCAN算法CSCAN(cidao,count);break;}}}3.运行界面:五、实验心得:通过本次实验,学习了解磁盘调度的工作原理及四种调度方法的工作原理,并且在当中发现了自己的缺乏,对以前所学过的知识理解得不够深刻,掌握得不够结实,看到了自己的实践经历还是比拟缺乏,理论联系实际的能力还急需提高。
cout<<"****"<cout<<"**4.循环扫描**"<cout<<"****"<cout<<"**5.退出**"<cout<<"******"<G:cout<<"请选择算法:";F:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoF;//输入错误,跳转到F,重新输入}elsec=trans(str,a);if(c==5)break;if(c>5){cout<<"数据输入错误!请重新输入"<gotoG;}switch(c){case1://使用FCFS算法FCFS(cidao,count);break;case2://使用SSTF算法SSTF(cidao,count);break;case3://使用SCAN算法SCAN(cidao,count);break;case4://使用CSCAN算法CSCAN(cidao,count);break;}}}3.运行界面:五、实验心得:通过本次实验,学习了解磁盘调度的工作原理及四种调度方法的工作原理,并且在当中发现了自己的缺乏,对以前所学过的知识理解得不够深刻,掌握得不够结实,看到了自己的实践经历还是比拟缺乏,理论联系实际的能力还急需提高。
cout<<"**4.循环扫描**"<cout<<"****"<cout<<"**5.退出**"<cout<<"******"<G:cout<<"请选择算法:";F:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoF;//输入错误,跳转到F,重新输入}elsec=trans(str,a);if(c==5)break;if(c>5){cout<<"数据输入错误!请重新输入"<gotoG;}switch(c){case1://使用FCFS算法FCFS(cidao,count);break;case2://使用SSTF算法SSTF(cidao,count);break;case3://使用SCAN算法SCAN(cidao,count);break;case4://使用CSCAN算法CSCAN(cidao,count);break;}}}3.运行界面:五、实验心得:通过本次实验,学习了解磁盘调度的工作原理及四种调度方法的工作原理,并且在当中发现了自己的缺乏,对以前所学过的知识理解得不够深刻,掌握得不够结实,看到了自己的实践经历还是比拟缺乏,理论联系实际的能力还急需提高。
cout<<"****"<cout<<"**5.退出**"<cout<<"******"<G:cout<<"请选择算法:";F:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoF;//输入错误,跳转到F,重新输入}elsec=trans(str,a);if(c==5)break;if(c>5){cout<<"数据输入错误!请重新输入"<gotoG;}switch(c){case1://使用FCFS算法FCFS(cidao,count);break;case2://使用SSTF算法SSTF(cidao,count);break;case3://使用SCAN算法SCAN(cidao,count);break;case4://使用CSCAN算法CSCAN(cidao,count);break;}}}3.运行界面:五、实验心得:通过本次实验,学习了解磁盘调度的工作原理及四种调度方法的工作原理,并且在当中发现了自己的缺乏,对以前所学过的知识理解得不够深刻,掌握得不够结实,看到了自己的实践经历还是比拟缺乏,理论联系实际的能力还急需提高。
cout<<"**5.退出**"<cout<<"******"<G:cout<<"请选择算法:";F:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoF;//输入错误,跳转到F,重新输入}elsec=trans(str,a);if(c==5)break;if(c>5){cout<<"数据输入错误!请重新输入"<gotoG;}switch(c){case1://使用FCFS算法FCFS(cidao,count);break;case2://使用SSTF算法SSTF(cidao,count);break;case3://使用SCAN算法SCAN(cidao,count);break;case4://使用CSCAN算法CSCAN(cidao,count);break;}}}3.运行界面:五、实验心得:通过本次实验,学习了解磁盘调度的工作原理及四种调度方法的工作原理,并且在当中发现了自己的缺乏,对以前所学过的知识理解得不够深刻,掌握得不够结实,看到了自己的实践经历还是比拟缺乏,理论联系实际的能力还急需提高。
cout<<"******"<G:cout<<"请选择算法:";F:cin>>str;//对输入数据进展有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<gotoF;//输入错误,跳转到F,重新输入}elsec=trans(str,a);if(c==5)break;if(c>5){cout<<"数据输入错误!请重新输入"<gotoG;}switch(c){case1://使用FCFS算法FCFS(cidao,count);break;case2://使用SSTF算法SSTF(cidao,count);break;case3://使用SCAN算法SCAN(cidao,count);break;case4://使用CSCAN算法CSCAN(cidao,count);break;}}}3.运行界面:五、实验心得:通过本次实验,学习了解磁盘调度的工作原理及四种调度方法的工作原理,并且在当中发现了自己的缺乏,对以前所学过的知识理解得不够深刻,掌握得不够结实,看到了自己的实践经历还是比拟缺乏,理论联系实际的能力还急需提高。
G:
cout<<"请选择算法:
F:
"<gotoF;//输入错误,跳转到F,重新输入}elsec=trans(str,a);if(c==5)break;if(c>5){cout<<"数据输入错误!请重新输入"<gotoG;}switch(c){case1://使用FCFS算法FCFS(cidao,count);break;case2://使用SSTF算法SSTF(cidao,count);break;case3://使用SCAN算法SCAN(cidao,count);break;case4://使用CSCAN算法CSCAN(cidao,count);break;}}}3.运行界面:五、实验心得:通过本次实验,学习了解磁盘调度的工作原理及四种调度方法的工作原理,并且在当中发现了自己的缺乏,对以前所学过的知识理解得不够深刻,掌握得不够结实,看到了自己的实践经历还是比拟缺乏,理论联系实际的能力还急需提高。
gotoF;//输入错误,跳转到F,重新输入
c=trans(str,a);
if(c==5)
if(c>5)
cout<<"数据输入错误!
请重新输入"<gotoG;}switch(c){case1://使用FCFS算法FCFS(cidao,count);break;case2://使用SSTF算法SSTF(cidao,count);break;case3://使用SCAN算法SCAN(cidao,count);break;case4://使用CSCAN算法CSCAN(cidao,count);break;}}}3.运行界面:五、实验心得:通过本次实验,学习了解磁盘调度的工作原理及四种调度方法的工作原理,并且在当中发现了自己的缺乏,对以前所学过的知识理解得不够深刻,掌握得不够结实,看到了自己的实践经历还是比拟缺乏,理论联系实际的能力还急需提高。
gotoG;
switch(c)
case1:
//使用FCFS算法
FCFS(cidao,count);
case2:
//使用SSTF算法
SSTF(cidao,count);
case3:
//使用SCAN算法
SCAN(cidao,count);
case4:
//使用CSCAN算法
CSCAN(cidao,count);
}}}
3.运行界面:
五、实验心得:
通过本次实验,学习了解磁盘调度的工作原理及四种调度方法的工作原理,并且在当中发现了自己的缺乏,对以前所学过的知识理解得不够深刻,掌握得不够结实,看到了自己的实践经历还是比拟缺乏,理论联系实际的能力还急需提高。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1