欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOCX文档下载  

    操作系统实验六磁盘调度算法正确C++代码.docx

    • 资源ID:3549668       资源大小:38KB        全文页数:5页
    • 资源格式: DOCX        下载积分:6.99金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要6.99金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    操作系统实验六磁盘调度算法正确C++代码.docx

    操作系统实验六磁盘调度算法正确C+代码操作系统实验报告 :磁盘调度算法 通过这次实验,加深对磁盘调度算法的理解,进一步掌握先来先服务FCFS,最短寻道时间优先SSTF,SCAN和循环SCAN算法的实现方法。 问题描述: 设计程序模拟先来先服务FCFS,最短寻道时间优先SSTF,SCAN和循环SCAN算法的工作过程。假设有n个磁道号所组成的磁道访问序列,给定开始磁道号m和磁头移动的方向,分别利用不同的磁盘调度算法访问磁道序列,给出每一次访问的磁头移动距离,计算每种算法的平均寻道长度。 程序要求如下: 1)利用先来先服务FCFS,最短寻道时间优先SSTF,SCAN和循环SCAN算法模拟磁道访问过程。 2)模拟四种算法的磁道访问过程,给出每个磁道访问的磁头移动距离。 3)输入:磁道个数n和磁道访问序列,开始磁道号m和磁头移动方向,算法选择1-FCFS,2-SSTF,3-SCAN,4-循环SCAN。 4)输出:每种算法的平均寻道长度。 实验要求: 1) 上机前认真复习磁盘调度算法,熟悉FCFS,SSTF,SCAN和循环SCAN算法的过程; 2) 上机时独立编程、调试程序; 3) 根据具体实验要求,完成好实验报告。 实验代码: #include<iostream> #include<iomanip> #include<math.h> using namespace std; const int MaxNumber=100; int TrackOrderMaxNumber; int MoveDistanceMaxNumber;/移动距离 int FindOrderMaxNumber;/寻好序列 double AverageDistance;/平均寻道长度 bool direction;/方向 true时为向外,false为向里 int BeginNum;/开始磁道号 int M=500;/磁道数 int N;/提出磁盘I/O申请的进程数 int SortOrderMaxNumber;/排序后的序列 bool FinishedMaxNumber; void Inith cout<<"请输入提出磁盘I/O申请的进程数: " cin>>N; cout<<"请依次输入要访问的磁道号: " for(int i=0;i<N;i+) cin>>TrackOrderi; for(int j=0;j<N;j+) MoveDistancej=0; cout<<"请输入开始磁道号: " cin>>BeginNum; for(int k=0;k<N;k+) Finishedk=false; for(int l=0;l<N;l+) SortOrderl=TrackOrderl; /=排序函数,将各进程申请的磁道按从小到大排列= void Sort int temp; for(int i=N-1;i>=0;i-) for(int j=0;j<i;j+) if(SortOrderj>SortOrderj+1) temp=SortOrderj; SortOrderj=SortOrderj+1; SortOrderj+1=temp; /=FCFS,先来先服务= void FCFS int temp; temp=BeginNum; for(int i=0;i<N;i+) MoveDistancei=abs(TrackOrderi-temp); temp=TrackOrderi; FindOrderi=TrackOrderi; /=SSTF,最短寻道法= void SSTF int temp,n; int A=M; temp=BeginNum; for(int i=0;i<N;i+) for(int j=0;j<N;j+) if(abs(TrackOrderj-temp)<A&&Finishedj=false) A=abs(TrackOrderj-temp); n=j; else continue; Finishedn=true; MoveDistancei=A; temp=TrackOrdern; A=M; FindOrderi=TrackOrdern; /=SCAN,扫描算法= void SCAN int m,n,temp; temp=BeginNum; Sort; cout<<"请选择开始方向:1-向外;0-向里: " cin>>m; if(m=1) direction=true; else if(m=0) direction=false; else cout<<"输入错误!" for(int i=0;i<N;i+) if(SortOrderi<BeginNum) continue; else n=i; break; if(direction=true) for(int i=n;i<N;i+) MoveDistancei-n=abs(SortOrderi-temp); temp=SortOrderi; FindOrderi-n=SortOrderi; for(int j=n-1;j>=0;j-) MoveDistanceN-1-j=abs(SortOrderj-temp); temp=SortOrderj; FindOrderN-1-j=SortOrderj; else for(int i=n-1;i>=0;i-) MoveDistanceN-i-4=abs(SortOrderi-temp); temp=SortOrderi; FindOrderN-i-4=SortOrderi; for(int j=n;j<N;j+) MoveDistancej=abs(SortOrderj-temp); temp=TrackOrderj; FindOrderj=SortOrderj; /=CSCAN,循环扫描算法= void CSCAN int m,n,temp; temp=BeginNum; Sort; cout<<"请选择开始方向:1-向外;0-向里: " cin>>m; if(m=1) direction=true; else if(m=0) direction=false; else cout<<"输入错误!" for(int i=0;i<N;i+) if(SortOrderi<BeginNum) continue; else n=i; break; if(direction=true) for(int i=n;i<N;i+) MoveDistancei-n=abs(SortOrderi-temp); temp=SortOrderi; FindOrderi-n=SortOrderi; for(int j=0;j<n;j+) MoveDistanceN-n+j=abs(SortOrderj-temp); temp=SortOrderj; FindOrderN-n+j=SortOrderj; else for(int i=n-1;i>=0;i-) MoveDistancen-1-i=abs(SortOrderi-temp); temp=SortOrderi; FindOrdern-1-i=SortOrderi; for(int j=N-1;j>=n;j-) MoveDistanceN-j+n-1=abs(SortOrderj-temp); temp=SortOrderj; FindOrderN-j+n-1=SortOrderj; /=计算平均寻道时间= void Count int Total=0; for(int i=0;i<N;i+) Total+=MoveDistancei; AverageDistance=(double)Total)/(double)N); void Show cout<<setw(20)<<"被访问的下一个磁道号"<<setw(20)<<"移动距离(磁道数)"<<endl; for(int i=0;i<N;i+) cout<<setw(15)<<FindOrderi<<setw(15)<<MoveDistancei<<endl; cout<<setw(20)<<"平均寻道长度:"<<AverageDistance<<endl; cout<<endl; int main int y=1; int s; Inith; while(y) cout<<"请选择寻道方式:1-FCFS; 2-SSTF; 3-SCAN;4-CSCSN: " cin>>s; switch(s) case 1:FCFS;Count;Show;break; case 2:SSTF;Count;Show;break; case 3:SCAN;Count;Show;break; case 4:CSCAN;Count;Show;break; cout<<"是否继续选择寻道算法?1-是;0-否: " int p; cin>>p; y=p; exit; return 0; 结果截图:

    注意事项

    本文(操作系统实验六磁盘调度算法正确C++代码.docx)为本站会员(牧羊曲112)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开