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

上传人:汽*** 文档编号:509390209 上传时间:2023-05-10 格式:DOCX 页数:8 大小:81.97KB
返回 下载 相关 举报
操作系统实验六磁盘调度算法正确C代码_第1页
第1页 / 共8页
操作系统实验六磁盘调度算法正确C代码_第2页
第2页 / 共8页
操作系统实验六磁盘调度算法正确C代码_第3页
第3页 / 共8页
操作系统实验六磁盘调度算法正确C代码_第4页
第4页 / 共8页
操作系统实验六磁盘调度算法正确C代码_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《操作系统实验六磁盘调度算法正确C代码》由会员分享,可在线阅读,更多相关《操作系统实验六磁盘调度算法正确C代码(8页珍藏版)》请在金锄头文库上搜索。

1、操作系统实验报告【实验题目】:磁盘调度算法【实验目的】通过这次实验,加深对磁盘调度算法的理解,进一步掌握先来先服务FCFS最短寻道时间优先SSTFSCAf和循环SCAN算法的实现方法。【实验内容】问题描述:设计程序模拟先来先服务FCFS最短寻道时间优先SSTFSCAN和循环SCAN算法的工作过程。假设有n个磁道号所组成的磁道访问序列,给定开始磁道号m和磁头移动的方向(正向或者反向),分别利用不同的磁盘调度算法访问磁道序列,给出每一次访问的磁头移动距离,计算每种算法的平均寻道长度。程序要求如下:1)利用先来先服务FCFS最短寻道时间优先SSTFSCAr和循环SCAN算法模拟磁道访问过程。2)模拟

2、四种算法的磁道访问过程给出每个磁道访问的磁头移动距离。3)输入:磁道个数n和磁道访问序列,开始磁道号m和磁头移动方向(对SCAr和循环SCAN算法有效),算法选择1-FCFS2-SSTF,3-SCAN,4-循环SCAN。4)输出:每种算法的平均寻道长度。实验要求:1)上机前认真复习磁盘调度算法,熟悉FCFSSSTFSCAN和循环SCAN算法的过程;2)上机时独立编程、调试程序;3)根据具体实验要求,完成好实验报告(包括实验的目的、内容、要求、源程序、实例运行结果截图)。实验代码:#include#include#includeusingnamespacestd;constintMaxNumbe

3、r=100;intTrackOrderMaxNumber;intMoveDistanceMaxNumber;/移动距离intFindOrderMaxNumber;/寻好序列doubleAverageDistance;/平均寻道长度booldirection;/方向true时为向外,false为向里intBeginNum;开始磁道号intM=500;磁道数intN;提出磁盘I/O申请的进程数intSortOrderMaxNumber;/排序后的序列boolFinishedMaxNumber;voidlnith()(coutvv”请输入提出磁盘I/O申请的进程数:”;cinN;coutvv”请依次

4、输入要访问的磁道号:”;for(inti=0;iN;i+)cinTrackOrderi;for(intj=O;jN;j+)MoveDistancej=0;coutvv”请输入开始磁道号:cinBeginNum;for(intk=O;kN;k+)Finishedk=false;for(intl=0;l=0;i-)for(intj=O;ji;j+)SortOrderj+1)temp=SortOrderj;SortOrderj=SortOrderj+1;SortOrderj+1=temp;)/=FCFS,先来先服务=voidFCFS()inttemp;temp=BeginNum;for(inti=0

5、;iN;i+)MoveDistancei=abs(TrackOrderi-temp);temp=TrackOrderi;FindOrderi=TrackOrderi;/=SSTF,最短寻道法=voidSSTF()inttemp3n;intA=M;temp=BeginNum;for(inti=0;iN;i+)(for(intj=O;jN;j+)if(abs(TrackOrderj-temp)A&Finishedj=false)A=abs(TrackOrderj-temp);n=j;elsecontinue;Finishedn=true;MoveDistancei=A;temp=TrackOrde

6、rn;A=M;FindOrderi=TrackOrdern;)=SCAN扫描算法=voidSCAN()intm,n,temp;temp=BeginNum;Sort();coutvv”请选择开始方向:1-向外;0向里:,;cinm;if(m=1)direction=true;elseif(m=0)direction=false;elsecoutvv”输入错误!”;for(inti=0;iN;i+)(if(SortOrderiBeginNum)continue;else(n=i;break;)if(direction=true)for(inti=n;i=O;j-)MoveDistanceN-1-j

7、=abs(SortOrderj-temp);temp=SortOrderj;FindOrderN-1-j=SortOrderj;)elsefor(inti=n-1;i=0;i-)(MoveDistanceN-i-4=abs(SortOrderi-temp);temp=SortOrderi;FindOrderN-i-4=SortOrderi;for(intj=n;jN;j+)(MoveDistancej=abs(SortOrderj-temp);temp=TrackOrderj;FindOrderj=SortOrderj;)/=CSCAN循环扫描算法=voidCSCAN()intm,n5temp

8、;temp=BeginNum;Sort();cout*请选择开始方向:1-向外;0-向里:cinm;if(m=1)direction=true;elseif(m=0)direction=false;elsecoutvv”输入错误!,;for(inti=0;ivN;i+)(if(SortOrderiBeginNum)continue;else(n=i;break;if(direction=true)(for(inti=n;iN;i+)(MoveDistancei-n=abs(SortOrderi-temp);temp=SortOrderi;FindOrderi-n=SortOrderi;for(

9、intj=O;j=0;i-)(MoveDistancen-1-i=abs(SortOrderi-temp);temp=SortOrderi;FindOrdern-1-i=SortOrderi;for(intj=N-1;j=n;j-)(MoveDistanceN-j+n-1=abs(SortOrderj-temp);temp=SortOrderj;FindOrderN-j+n-1=SortOrderj;)/=计算平均寻道时间=voidCount()(intTotal=0;for(inti=0;ivN;i+)(Total+=MoveDistancei;AverageDistance=(double

10、)Total)/(double)N);)voidShow()coutsetw(20),被访问的下一个磁道号nsetw(20),移动距离(磁道数)vvendl;for(inti=0;ivN;i+)coutsetw(15)FindOrderisetw(15)MoveDistanceiendl;coutsetw(20)H平均寻道长度:AverageDistanceendl;coutendl;)intmain()inty=1;ints;lnith();while(y)coutvv”请选择寻道方式:1-FCFS;2-SSTF;3-SCAN;4-CSCSN:”cins;switch(s)(case1:FCFS();Count();Show();break;case2:SSTF();Count();Show();break;case3:SCAN();Count();Show();break;case4:CSCAN();Count();Show();break;coutvv”是否继续选择寻道算法?1-是;0-否:”;intp;cinp;y=p;)exit;return0;结果截图:

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 市场营销

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号