2022年操作系统-磁盘调度

上传人:M****1 文档编号:567515929 上传时间:2024-07-21 格式:PDF 页数:7 大小:316.22KB
返回 下载 相关 举报
2022年操作系统-磁盘调度_第1页
第1页 / 共7页
2022年操作系统-磁盘调度_第2页
第2页 / 共7页
2022年操作系统-磁盘调度_第3页
第3页 / 共7页
2022年操作系统-磁盘调度_第4页
第4页 / 共7页
2022年操作系统-磁盘调度_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《2022年操作系统-磁盘调度》由会员分享,可在线阅读,更多相关《2022年操作系统-磁盘调度(7页珍藏版)》请在金锄头文库上搜索。

1、磁盘调度算法一、实验目的1、对磁盘调度的相关知识作进一步的了解,明确磁盘调度的原理。2、加深理解磁盘调度的主要任务。3、通过编程,掌握磁盘调度的主要算法。二、实验内容和要求1、对于如下给定的一组磁盘访问进行调度:2、要求分别采用先来先服务、最短寻道优先以及电梯调度方法进行调度。3、要求给出每种算法中磁盘访问的顺序,计算出平均移动道数。4、假定当前读写头在90 号,向磁道号增加的方向移动。三、实验报告1、程序中使用的数据结构及符号说明。2、给出主要算法的流程图。3、给出程序清单并附上注释。4、给出测试数据和运行结果。#include #include #include usingnamespac

2、e std; constint MaxNumber=100; int TrackOrderMaxNumber; int MoveDistanceMaxNumber; /-移动距离 ; int FindOrderMaxNumber; /-寻好序列。double AverageDistance; /-平均寻道长度bool direction; /-方向 true时为向外, false 为向里int BeginNum; /-开始磁道号。int M; /-磁道数。int N; /-提出磁盘 I/O 申请的进程数int SortOrderMaxNumber; /-排序后的序列bool FinishedM

3、axNumber; 请求服务到达A B C D E F G H I J K 访问的磁道号30 50 100 180 20 90 150 70 80 10 160 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 7 页 - - - - - - - - - void Inith() coutM; coutN; cout 请依次输入要访问的磁道号:; for ( int i=0;iTrackOrderi; for ( int j=0;jN;j+) MoveDistancej=0

4、; coutBeginNum; for ( int k=0;kN;k+) Finishedk=false ; for ( int l=0;l=0;i-) for ( int j=0;jSortOrderj+1) temp=SortOrderj; SortOrderj=SortOrderj+1; SortOrderj+1=temp; /= 先来先服务 = void FCFS() int temp; temp=BeginNum; /-将BeginNum 赋给 temp作为寻道时的当前所在磁道号for ( int i=0;iN;i+) MoveDistancei=abs(TrackOrderi-te

5、mp); /-计算移动磁道数temp=TrackOrderi; /-寻到后, 将此道作为当前所在磁道号,赋给 temp FindOrderi=TrackOrderi; /-寻好的赋给寻好序列 /= 最短寻道法 = void SSTF() int temp,n; int A=M; temp=BeginNum; /-将BeginNum 赋给 temp作为寻道时的当前所在磁道号名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 7 页 - - - - - - - - - for (

6、 int i=0;iN;i+) for ( int j=0;jN;j+) /-寻找最短的寻道长度 if (abs(TrackOrderj-temp)A&Finishedj=false ) A=abs(TrackOrderj-temp); n=j; elsecontinue ; Finishedn=true ; /-将已经寻找到的 Finished 赋值为 true MoveDistancei=A; /-寻道长度temp=TrackOrdern; /-当前寻道号。A=M; /-重置 A值FindOrderi=TrackOrdern; /-寻好的赋给寻好序列 /=S扫描算法(电梯调度算法)= vo

7、id SCAN() int m,n,temp; temp=BeginNum; Sort(); /-排序coutm; if (m=1) direction=true ; elseif (m=0) direction=false ; else cout 输入错误! ; for ( int i=0;iN;i+) if (SortOrderiBeginNum) continue ; else n=i; break ; if (direction=true ) /-选择向外 for ( int i=n;i=0;j-) MoveDistanceN-1-j=abs(SortOrderj-temp); 名师资

8、料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 7 页 - - - - - - - - - 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;jN;j+) MoveDistanc

9、ej=abs(SortOrderj-temp); temp=TrackOrderj; FindOrderj=SortOrderj; void Count() int Total=0; for ( int i=0;iN;i+) Total+=MoveDistancei; AverageDistance=(double )Total)/(double )N); void Show() cout = 从BeginNum 号磁道开始 = endl; coutsetw(20) 被访问的下一个磁道号setw(20) 移动距离 ( 磁道数 ) endl; for ( int i=0;iN;i+) couts

10、etw(15)FindOrderisetw(15)MoveDistanceiendl; coutsetw(20) 平均寻道长度 : AverageDistanceendl; coutendl; int main() int y=1; int s; Inith(); while (y) couts; switch (s) case 1:FCFS();Count();Show();break ; case 2:SSTF();Count();Show();break ; case 3:SCAN();Count();Show();break ; coutp; y=p; return 0; 先来先服务最

11、短寻道优先算法名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 7 页 - - - - - - - - - 电梯调度算法(1)向外扫描(2)向里扫描名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 7 页 - - - - - - - - - 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 7 页 - - - - - - - - -

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

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