




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、广州大学学生实验报告开课学院及实验室:计算机学院,电子信息楼416A室 2014年 12 月 11日学院计算机科学与教育软件学院年级/专业/班计科姓名学号实验课程名称操作系统实验成绩实验项目名称实验五 磁盘管理实验指导老师一、实验目的要求模拟先来先服务法(First-Come, First-Served,FCFS),最短寻道时间优先法(Shortest Seek Time First, SSTF),电梯法(SCAN),循环扫描算法(CSCAN)四种磁盘调度算法,输入为一组请求访问磁道序列,输出为每种调度算法的磁头移动轨迹和移动的总磁道数。二、 实验内容编程序实现下述磁盘调度算法,并求出每种算法
2、的平均寻道长度:1、先来先服务算法(FCFS)2、最短寻道时间优先算法(SSTF)3、扫描算法(SCAN)4、循环扫描算法(CSCAN)三、 实验设备安装带Linux操作系统的电脑一台。四、实验过程原始数据记录 实验代码:#include <iostream>#include <fstream>#include <iomanip>#include <stdio.h>using namespace std;const int MaxNumber=100;int TrackOrderMaxNumber;/磁盘访问序列int MoveDistanceM
3、axNumber;/磁头每次移动的距离double AverageDistance;/平均寻道长度bool direction;/SCAN和CSCAN算法的磁头移动方向int M;/开始磁道号int N;/磁道个数void inputData()cout<<"请输入磁道个数N: "cin>>N; cout<<"n请输入磁盘访问顺序(此部分由文件读入)。"<<endl;fstream fin("F:/磁盘调度文件.txt"); for(int i=0;i<N;i+)fin>&g
4、t;TrackOrderi;cout<<"n请输入开始磁盘号M: "cin>>M;void showData()cout<<"n=显示配置信息=n"cout<<"n输入磁道个数N为:"<<N<<",开始磁盘号M:"<<M<<endl;cout<<"n磁盘访问序列为: "for(int i=0;i<N;i+)cout<<TrackOrderi<<" &
5、quot;cout<<endl;void FCFS()int i,j;int sum=0;float avg;int FcfsMaxNumber;int sumArrayMaxNumber;for(i=0;i<N;i+)Fcfsi=TrackOrderi;/sum=0;sumArray0=abs(M-Fcfs0);/cout<<"FCFS磁盘调度算法:"<<endl;cout<<"n从"<<M<<"号磁道开始"<<endl;cout<<
6、;"被访问的下一个磁道号: "for(i=0;i<N;i+)cout<<Fcfsi<<" "cout<<endl;cout<<"对应移动距离(磁道数): "<<sumArray0<<" "for(i=0,j=1;j<N;i+,j+)sumArrayj=abs(Fcfsj-Fcfsi); cout<<sumArrayj<<" "for(i=0;i<N;i+)sum=sum+sumArr
7、ayi;avg=(float)sum/N;cout<<"n总寻道长度:"<<sum;cout<<"n平均寻道长度:"<<setprecision(3)<<avg<<endl<<endl;void SSTF() int i,j;int k=1;int s=0;int temp;int l,r;int sum=0;float avg=0;int SstfMaxNumber;int sumArrayMaxNumber;int Mnow;Mnow=M;for(i=0;i<N
8、;i+)Sstfi=TrackOrderi;/sum=0;/sumArray0=abs(M-Fcfs0);for(i=0;i<N;i+)for(j=i+1;j<N;j+) if(Sstfi>Sstfj)/将磁道号从小到大排序temp=Sstfi;Sstfi=Sstfj;Sstfj=temp;/cout<<"SSTF磁盘调度算法:"<<endl;cout<<"n从"<<Mnow<<"号磁道开始"<<endl;cout<<"被访
9、问的下一个磁道号: "if(SstfN-1<=Mnow)/若被访问的下一个最大的磁道号不大于当前的磁道号for(i=N-1,s=0;i>=0;i-,s+)cout<<Sstfi<<" "sumArrays=Mnow-Sstfi;sum+=Mnow-Sstfi;Mnow=Sstfi;elseif(Sstf0>=Mnow)for(i=0,s=0;i<N;i+,s+)cout<<Sstfi<<" "sumArrays=Sstfi-Mnow;sum+=Sstfi-Mnow;Mnow
10、=Sstfi;elsewhile(Sstfk<Mnow)k+;l=k-1;r=k;if(Mnow-Sstfl<=(Sstfr-Mnow)while(l>=0)cout<<Sstfl<<" "sumArrays=Mnow-Sstfl; s=s+1;sum=sum+Mnow-Sstfl;Mnow=Sstfl;l=l-1;Mnow=Sstf0;for(j=r;j<N;j+)cout<<Sstfj<<" "sumArrays=Sstfj-Mnow;s=s+1; sum+=Sstfj-Mnow
11、;Mnow=Sstfj;elsewhile(r<N)cout<<Sstfr<<" "sumArrays=Sstfr-Mnow;s=s+1; sum+=Sstfr-Mnow;Mnow=Sstfr;r=r+1;Mnow=SstfN-1;for(j=1;j>=0;j-)cout<<Sstfj<<" "sumArrays=Mnow-Sstfj;s=s+1;sum+=Mnow-Sstfj;Mnow=Sstfj;cout<<endl;cout<<"对应移动距离(磁道数):
12、"for(i=0;i<N;i+) cout<<sumArrayi<<" "avg=(float)sum/N;cout<<"n总寻道长度:"<<sum;cout<<"n平均寻道长度:"<<setprecision(3)<<avg<<endl<<endl;void SCAN() int i,j;int k=1;int s=0;int temp;int c,l,r;int sum=0;float avg=0;int S
13、canMaxNumber;int sumArrayMaxNumber;int Mnow;Mnow=M;for(i=0;i<N;i+)Scani=TrackOrderi;for(i=0;i<N;i+)for(j=i+1;j<N;j+)if(Scani>Scanj)temp=Scani;Scani=Scanj;Scanj=temp; cout<<"请选择磁头移动方向1-增加方向、0-减小方向: "cin>>c;/cout<<endl;/cout<<"SCAN磁盘调度算法:"<<
14、;endl;cout<<"n从"<<M<<"号磁道开始"<<endl;cout<<"被访问的下一个磁道号: "if(ScanN-1<=Mnow)for(i=N-1,s=0;i>=0;i-,s+)cout<<Scani<<" "sumArrays=Mnow-Scani;sum+=Mnow-Scani;Mnow=Scani;elseif(Scan0>=Mnow)for(i=0,s=0;i<N;i+,s+)cout
15、<<Scani<<" "sumArrays=Scani-Mnow;sum+=Scani-Mnow;Mnow=Scani;elsewhile(Scank<Mnow)k+;l=k-1;r=k;switch(c) case 0:while(l>=0)cout<<Scanl<<" "sumArrays=Mnow-Scanl; s=s+1;sum=sum+Mnow-Scanl;Mnow=Scanl;l=l-1;Mnow=Scan0;for(j=r;j<N;j+)cout<<Scanj&l
16、t;<" "sumArrays=Scanj-Mnow; s=s+1;sum+=Scanj-Mnow;Mnow=Scanj;break; case 1:while(r<N)cout<<Scanr<<" "/这一步没错sumArrays=Scanr-Mnow; s=s+1;sum+=Scanr-Mnow;Mnow=Scanr;r=r+1;Mnow=ScanN-1;for(j=l;j>=0;j-)cout<<Scanj<<" "/这一步也没错sumArrays=Mnow-Sc
17、anj; s=s+1;sum+=Mnow-Scanj;Mnow=Scanj;break;default:cout<<"输入有误,请重新输入. "/goto cout<<endl;cout<<"对应移动距离(磁道数): "for(i=0;i<N;i+) cout<<sumArrayi<<" " avg=(float)sum/N;cout<<"n总寻道长度:"<<sum;cout<<"n平均寻道长度:&quo
18、t;<<setprecision(3)<<avg<<endl<<endl;void CSCAN() int temp;int k=1;int s;int Mnow,l,r,c;int i,j;int sum=0;float avg=0;int CscanMaxNumber;int sumArrayMaxNumber;Mnow=M;for(i=0;i<N;i+)Cscani=TrackOrderi;for(i=0;i<N;i+)for(j=i+1;j<N;j+)if(Cscani>Cscanj)temp=Cscani; Cs
19、cani=Cscanj;Cscanj=temp;cout<<"n请选择磁头移动方向1-增加方向、0-减小方向: "cin>>c;/cout<<endl;/cout<<"CSCAN磁盘调度算法:"<<endl;cout<<"从"<<M<<"号磁道开始"<<endl;cout<<"被访问的下一个磁道号: " if(CscanN-1<=Mnow)for(i=0,s=0;i<
20、;N;i+,s+)cout<<Cscani<<" " /sumArrays=Mnow-Cscan0+CscanN-1; sum=Mnow-Cscan0+CscanN-1;elseif(Cscan0>=Mnow)for(i=0,s=0;i<N;i+,s+)cout<<Cscani<<" "/sumArrays=Scani-Mnow; sum=CscanN-1-Mnow;elsewhile(Cscank<Mnow)k+;l=k-1;r=k;switch(c) case 0:for(j=l;j&
21、gt;=0;j-)cout<<Cscanj<<" "for(j=N-1;j>=r;j-)cout<<Cscanj<<" "sum=2*(CscanN-1-Cscan0)-Cscanr+Mnow;break;case 1: for(j=r;j<N;j+)cout<<Cscanj<<" "for(j=0;j<r;j+)cout<<Cscanj<<" "sum=2*(CscanN-1-Cscan0)+Csca
22、nr-1-Mnow;break;default: cout<<"输入有误,请重新输入. "avg=(float)sum/N;cout<<"n总寻道长度:"<<sum;cout<<"n平均寻道长度:"<<setprecision(3)<<avg<<endl<<endl;int main()char choice;cout<<"n=虚拟内存页面配置算法=nn"inputData();showData();cout
23、<<endl; while(1) cout<<"=1-FCFS 磁盘调度算法=n" cout<<"=2-SSTF 磁盘调度算法=n" cout<<"=3-SCAN 磁盘调度算法=n" cout<<"=4-CSCAN磁盘调度算法=n" cout<<"=其他任意键退出=nn" cout<<"请输入功能键:" cin>>choice; switch(choice) case '1': cout<<"nFCFS磁盘调度算法=>"FCFS();/cout<<endl; break; case '2': cout<<"nSSTF磁盘调度算法=>" SSTF();/cout<<endl; break; case '3': cout<<"nSCAN磁盘调度算法=>&quo
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 扇形统计图课件介绍
- 中级软考题库试题带答案详解B卷
- 法律基础知识模拟考试卷及答案2025年
- 2025年翻译资格考试试题及答案
- 2025年矿产权评估师考试题库带答案
- 初中数学竞赛集训班讲义3:充满活力的韦达定理(含答案或解析)
- 2023年度服务行业人员练习题名师及答案详解
- 2024-2025学年度电信职业技能鉴定考试综合练习及答案详解轻巧夺冠
- 慢慢打开门的课件
- 国际球员租借合同书协议范本模板7篇
- 机场安检危险品运输课件
- 绿化种植安全教育培训课件
- 利用SmartRock传感技术进行含砂道砟直剪试验研究
- 共享储能项目进度管控实施方案
- 旅行社挂靠协议合同范本
- 市场联合促销活动协议
- 2025年烟花爆竹经营培训考试试题及答案
- 2025年幼儿园初级保育员模拟考试试题试题(含答案)
- 物业创星级服务汇报材料
- 铁路局连接员职业技能鉴定考试题库及答案
- 2025年心理咨询师题库附完整答案(各地题)
评论
0/150
提交评论