欢迎来到天天文库
浏览记录
ID:48145822
大小:101.38 KB
页数:7页
时间:2020-01-21
《操作系统-磁盘调度.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、.磁盘调度算法一、实验目的1、对磁盘调度的相关知识作进一步的了解,明确磁盘调度的原理。2、加深理解磁盘调度的主要任务。3、通过编程,掌握磁盘调度的主要算法。二、实验内容和要求1、对于如下给定的一组磁盘访问进行调度:请求服务到达ABCDEFGHIJK访问的磁道号305010018020901507080101602、要求分别采用先来先服务、最短寻道优先以及电梯调度方法进行调度。3、要求给出每种算法中磁盘访问的顺序,计算出平均移动道数。4、假定当前读写头在90号,向磁道号增加的方向移动。三、实验报告1、程序中使用的数据结构及符号说明。2、给出主要算法的流程图。3、给出程序清单并附上注释。4、
2、给出测试数据和运行结果。#include#include#includeusingnamespacestd;constintMaxNumber=100;intTrackOrder[MaxNumber];intMoveDistance[MaxNumber];//----移动距离;intFindOrder[MaxNumber];//-----寻好序列。doubleAverageDistance;//-----平均寻道长度booldirection;//-----方向true时为向外,false为向里intBeginNum;//----开始
3、磁道号。intM;//----磁道数。intN;//-----提出磁盘I/O申请的进程数intSortOrder[MaxNumber];//----排序后的序列boolFinished[MaxNumber];..voidInith(){cout<<"请输入磁道数(最大磁盘数目):";cin>>M;cout<<"请输入提出磁盘I/O申请的进程数:";cin>>N;cout<<"请依次输入要访问的磁道号:";for(inti=0;i>TrackOrder[i];for(intj=0;j4、cin>>BeginNum;for(intk=0;k=0;i--)for(intj=0;jSortOrder[j+1]){temp=SortOrder[j];SortOrder[j]=So5、rtOrder[j+1];SortOrder[j+1]=temp;}}}//============先来先服务=================================voidFCFS(){inttemp;temp=BeginNum;//--------将BeginNum赋给temp作为寻道时的当前所在磁道号for(inti=0;i6、]=TrackOrder[i];//-----寻好的赋给寻好序列}}//========最短寻道法=============================voidSSTF(){inttemp,n;intA=M;temp=BeginNum;//--------将BeginNum赋给temp作为寻道时的当前所在磁道号..for(inti=0;i7、;}elsecontinue;}Finished[n]=true;//-------将已经寻找到的Finished赋值为trueMoveDistance[i]=A;//-------寻道长度temp=TrackOrder[n];//-------当前寻道号。A=M;//-----重置A值FindOrder[i]=TrackOrder[n];//----寻好的赋给寻好序列}}//=====================S扫描算法(电
4、cin>>BeginNum;for(intk=0;k=0;i--)for(intj=0;jSortOrder[j+1]){temp=SortOrder[j];SortOrder[j]=So
5、rtOrder[j+1];SortOrder[j+1]=temp;}}}//============先来先服务=================================voidFCFS(){inttemp;temp=BeginNum;//--------将BeginNum赋给temp作为寻道时的当前所在磁道号for(inti=0;i6、]=TrackOrder[i];//-----寻好的赋给寻好序列}}//========最短寻道法=============================voidSSTF(){inttemp,n;intA=M;temp=BeginNum;//--------将BeginNum赋给temp作为寻道时的当前所在磁道号..for(inti=0;i7、;}elsecontinue;}Finished[n]=true;//-------将已经寻找到的Finished赋值为trueMoveDistance[i]=A;//-------寻道长度temp=TrackOrder[n];//-------当前寻道号。A=M;//-----重置A值FindOrder[i]=TrackOrder[n];//----寻好的赋给寻好序列}}//=====================S扫描算法(电
6、]=TrackOrder[i];//-----寻好的赋给寻好序列}}//========最短寻道法=============================voidSSTF(){inttemp,n;intA=M;temp=BeginNum;//--------将BeginNum赋给temp作为寻道时的当前所在磁道号..for(inti=0;i7、;}elsecontinue;}Finished[n]=true;//-------将已经寻找到的Finished赋值为trueMoveDistance[i]=A;//-------寻道长度temp=TrackOrder[n];//-------当前寻道号。A=M;//-----重置A值FindOrder[i]=TrackOrder[n];//----寻好的赋给寻好序列}}//=====================S扫描算法(电
7、;}elsecontinue;}Finished[n]=true;//-------将已经寻找到的Finished赋值为trueMoveDistance[i]=A;//-------寻道长度temp=TrackOrder[n];//-------当前寻道号。A=M;//-----重置A值FindOrder[i]=TrackOrder[n];//----寻好的赋给寻好序列}}//=====================S扫描算法(电
此文档下载收益归作者所有