1、三目的1.熟悉并掌握磁盘管理系统的设计方法,加深对所学各种磁盘调度算法及其算法的特点的了解。2.掌握磁盘调度的基本概念,比较各种磁盘调度算法的优劣四.要求从课程设计的目的出发,通过设计工作的各个环节,达到以下设计要求:1.对系统进行功能模块分析、控制模块分析正确;2.系统设计要实用;3.编程简练,可用,功能全面,具有较好的健壮性;4.说明书、流程图要清楚。五. 详细设计及算法流程图1. 总流程图2. 先来先服务(FCFS)算法流程图3. 最短寻道时间优先(SSTF)算法流程图4. 扫描调度(SCAN)算法流程图5. 循环扫描(C-SCAN)算法流程图附录:修改后的程序:#includectim
2、eusing namespace std;void FCFS(int a,int n);void SSTF(int a,int n);void SCAN(int a,int n);void CSCAN(int a,int n);int main() int n; /磁道的个数 int s; /功能号 coutn; int *a=new intn;输入磁道号为:; for(int i=0;ii+) ai;ai while(1) cout4)数据输入有误!请重新输入: else switch(s) case 0: exit(0);break ; case 1:FCFS(a,n); break; c
3、ase 2:SSTF(a, n);break; case 3:SCAN(a, n); case 4:CSCAN(a,n); return 0;/先来先服务调度算法(FCFS)void FCFS(int a,int n)int j,i,first=0,now;float sum=0,m;coutnow;/确定当前磁头所在位置磁盘调度顺序为:for( i=0;i+)/按访问顺序输出磁道号/计算sumfor(i=0,j=1;ji+,j+) first+=abs(aj-ai);/外围磁道与最里面磁道的距离sum+=first+abs(now-a0);移动的总磁道数为:summ=sum/n;平均寻道长度
4、为:maj) temp=ai; ai=aj; aj=temp;按递增顺序排好的磁道显示为:/输出排好的磁道顺序请输入当前的磁道号:if(an-1=0;i-) sum=now-a0;else if(a0=now)/当前磁头位置小于最里欲访问磁道 for(i=0; sum=an-1-now; while(ak=0)&(rn) if(now-al)=(ar-now)/选择离磁头近的磁道al sum+=now-al; now=al; l=l-1;ar sum+=ar-now; now=ar; r=r+1; if(l=-1)/磁头位置里侧的磁道已访问完 for(j=r;j+)/访问磁头位置外侧的磁道aj
5、-1;j-) /访问磁头位置里侧的磁道移动的总道数为: m=sum/n;/扫描算法(SCAN)void SCAN(int a,int n)i+)/对访问磁道按由小到大顺序排列输出 for(j=i+1;按递增顺序排好的磁道为:/以下算法确定磁道访问顺序 if(an-1=now) /磁头位置大于最外围欲访问磁道=now) /磁头位置小于最里欲访问磁道 else /磁头位置在最里侧磁道与最外侧磁道之间 int d;now) /确定当前磁道在已排的序列中的位置 /磁头欲访问磁道请输入当前磁头移动的方向 (0 表示向内 ,1表示向外) :d; /确定磁头访问的方向 if(d=0|d=1) if(d=0)
6、 /磁头向内 for(j=l;j-) sum=now-2*a0+an-1; if(d=1) /磁头向外 for(j=r; sum=2*an-1-now-a0; cout请输入0或1!移动的总道数为:/循环扫描算法(CSCAN)void CSCAN(int a,int n) for( i=0;/确定当前磁道号=now)/磁头位置大于最外围欲访问磁道=now)/磁头位置小于最里欲访问磁道 cout if(d=1) /磁头向外侧访问 j+)/先访问外侧磁道再转向最里欲访问磁道 for(j=0;r; sum=2*an-1-now-2*a0+al; if(d=0) /磁头向内侧访问 for(j=r-1; for(j=n-1;=r; sum=2*an-1-2*a0+now-ar; else请输入0或1!
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1