磁盘调度算法设计.doc

上传人:仙人指路1688 文档编号:2392312 上传时间:2023-02-17 格式:DOC 页数:9 大小:23KB
返回 下载 相关 举报
磁盘调度算法设计.doc_第1页
第1页 / 共9页
磁盘调度算法设计.doc_第2页
第2页 / 共9页
磁盘调度算法设计.doc_第3页
第3页 / 共9页
磁盘调度算法设计.doc_第4页
第4页 / 共9页
磁盘调度算法设计.doc_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《磁盘调度算法设计.doc》由会员分享,可在线阅读,更多相关《磁盘调度算法设计.doc(9页珍藏版)》请在三一办公上搜索。

1、磁盘调度算法设计一 实验目的1 了解和掌握操作系统对磁盘如何调度管理。2 熟悉并掌握各种磁盘调度的算法。二 实验设备WindowsXP操作系统,VC6.0环境三 实验内容及操作步骤1 实验内容设计多个磁盘调度算法,分别是先来先服务算法,最短寻道时间优先算法,扫描算法。并且通过程序来计算寻道时间。2 实验步骤(1) 根据以下不同的算法思想编写调度程序,并装入VC 6.0中。(2) 汇编并连接程序。(3) 调试程序。(4) 输入数据,验证不同磁盘调度算法的平均寻道时间,由此总结各算法所使用的场合。四 算法思想1 先来先服务2 最短寻道时间优先3 扫描子算法4 扫描算法五 实验源程序#include

2、#include#include #define size 64/磁道序列个数最多为64个using namespace std;/=void FCFS(int *sequ,int m) cout*先来现服务算法*endl; int j; double sum,averay; for(int i=0;im;+i) cout*(sequ+i) ; for(i=0,j=1;jm;+i,+j) sum=abs(*(sequ+j)-*(sequ+i); averay=sum/m; coutendl移动总道数:sum平均移动道数:averayendl; cout*endl;/-void FFTS(vec

3、tor sequ,int m) cout*最短寻道时间优先算法*endl; coutnow; int i=0; double sum=0,averay; while(sequi=now&i=0;-i) coutsequi ; sum=sequm-1; else if(i=0) for(i=0;im;+i) coutsequi=0|h=0&sequh-tompsequl-tomp) coutsequl ; sum+=abs(sequl-tomp); tomp=sequl; -l; else if(hm) coutsequh ; sum+=abs(sequh-tomp); tomp=sequh;

4、+h; averay=sum/m; coutendl移动总道数:sum平均移动道数:averayendl; cout*endl;/-void SACE(vector sequ,int m) cout*电梯算法*endl; coutnow; int i=0; double sum=0,averay; while(sequinow&im)/找到当前磁道在磁道系列中的位置 +i; coutchiose; int l=i-1,h=i; if(chiose=l|chiose=L) while(l=0) coutsequl ; sum+=sequl; -l; while(hm) coutsequh ; s

5、um+=sequh; +h; else while(hm) coutsequh=0) coutsequl ; sum+=sequl; -l; averay=sum/m; coutendl移动总道数:sum平均移动道数:averayendl; cout*endl;/-void main() int Buffersize; FILE *fp; if(fp=fopen(磁道系列文件.txt,r)=NULL) cout磁道系列文件.txt打开失败endl; exit(0); int i; for(i=0;isize&!feof(fp);+i) fscanf(fp,%d,&Bufferi); Buffe

6、ri=0;/将当前Buffer中的字符制空 cout*磁盘调度算法*endl; cout从文件读入的磁道号系列为:; for(int j=0;ji;+j) coutBufferj ; coutendl; vector Sequ_vec(Buffer,Buffer+i);/将Buffer中的序列拷贝到Sequ_vec向量中 sort(Sequ_vec.begin(),Sequ_vec.end();/对Sequ_vec排序方便FFTS和SCAN算法的应用 while(1) cout1、先来先服务; 2、最短寻道时间优先; 3、电梯(SACE)算法; 4、退出endl; couta; switch(a) case 1:FCFS(Buffer,i);break; case 2:FFTS(Sequ_vec,i);break; case 3:SACE(Sequ_vec,i);break; case 4:exit(0); 六 实验测试及结果分析和手算的结果一致。七 实验小结(1) 通过输入不同的磁道号,可知先来先服务算法仅适用于请求磁盘I/O的进程数目较少的场合,而SSTF算法的平均寻找时间明显低于先来先服务算法,因此它具有跟好的性能。(2) 通过本次实验,深刻的理解了各个调度算法的特点,以及其编程思想,从而掌握了如何提高磁盘I/O速度的途径。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号