预览加载中,请您耐心等待几秒...
1/9
2/9
3/9
4/9
5/9
6/9
7/9
8/9
9/9

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

实验报告 课程名称:计算机操作系统 实验项目:SSTF磁盘调度算法模拟 专业班级:计算机科学与技术1303班 姓名:宁相如学号:130405324 实验室号:信息205实验组号:24 实验时间:2015.5.25批阅时间: 指导教师:成绩: 沈阳工业大学实验报告 (适用计算机程序设计类) 专业班级:计算机1303班学号:130405324姓名:宁相如 实验名称:SSTF磁盘调度算法模拟 1.实验目的: 加深对磁盘调度算法的理解 2.实验内容: 模拟操作系统的磁盘寻道方式,运用磁盘访问顺序的不同来设计磁盘的调度算法。 3.实验步骤或程序(见附件A) 附件A沈阳工业大学实验报告 (适用计算机程序设计类) 专业班级:计算机1303班学号:130405324姓名:宁相如 实验步骤或程序: //SSTF磁盘调度算法 #include<stdio.h> #include<stdlib.h> #include<iostream> usingnamespacestd; int*bubble(intcidao[],intm) { inti,j; inttemp; for(i=0;i<m;i++)//使用冒泡法按从小到大顺序排列 for(j=i+1;j<m;j++) { if(cidao[i]>cidao[j]) { temp=cidao[i]; cidao[i]=cidao[j]; cidao[j]=temp; } } cout<<"排序后的磁盘序列为:"; for(i=0;i<m;i++)//输出排序结果 { cout<<cidao[i]<<""; } cout<<endl; returncidao; } voidSSTF(intcidao[],intm) { intk=1; intnow,l,r; inti,j,sum=0; floatave; cidao=bubble(cidao,m);//调用冒泡排序算法排序 while(1) { cout<<"请输入当前的磁道号:"; cin>>now; if(cidao[m-1]<=now)//若当前磁道号大于请求序列中最大者,则直接由外向内依次给予各请求服务 { cout<<"磁盘扫描序列为:"; for(i=m-1;i>=0;i--) cout<<cidao[i]<<""; sum=now-cidao[0]; } if(cidao[0]>=now)//若当前磁道号小于请求序列中最小者,则直接由内向外依次给予各请求服务 { cout<<"磁盘扫描序列为:"; for(i=0;i<m;i++) cout<<cidao[i]<<""; sum=cidao[m-1]-now; } if(now>cidao[0]&&now<cidao[m-1])//若当前磁道号大于请求序列中最小者且小于最大者 { cout<<"磁盘扫描序列为:"; while(cidao[k]<now)//确定当前磁道在已排的序列中的位置,后面的算法都用到了,可以直接复制后少量修改,节省时间。 { k++; l=k-1; r=k; while((l>=0)&&(r<m))//当前磁道在请求序列范围内 { if((now-cidao[l])<(cidao[r]-now))//选择与当前磁道最近的请求给予服务 { cout<<cidao[l]<<""; sum+=now-cidao[l]; now=cidao[l]; l=l-1; } elseif((now-cidao[l])==(cidao[r]-now)) { cout<<cidao[l]<<""; sum+=now-cidao[l]; now=cidao[l]; l=l-1; } else { cout<<cidao[r]<<""; sum+=cidao[r]-now; now=cidao[r]; r=r+1; } } if(l==-1)//磁头移动到序列的最小号,返回外侧扫描仍未扫描的磁道 { for(j=r;j<m;j++) { cout<<cidao[j]<<""; } sum+=cidao[m-1]-cidao[0]; } else//磁头移动到序列的最大号,返回内侧扫描仍未扫描的磁道 { for(j=l;j>=0;j--) { cout<<cidao[j]<<""; } sum+=cidao[m-1]-cidao[0]; } } ave=(float)(sum)/(float)(m); cout<<endl; cout<<"平均寻道长度:"<<ave<<endl; } } } intmain() { inta