




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、x EAST CHINA INSTITUTE OF TECHNOLOGY课程设计报告计算机操作系统课程设计题目:磁盘调度算法学生姓名:专 业:班 级:学 号:指导教师:2014年01月10日 TOC o 1-5 h z HYPERLINK l bookmark36 o Current Document 需求分析01 HYPERLINK l bookmark40 o Current Document 总体设计及分类简介 011)先来先服务(FCFS)算法012)最短寻道时间优先(SSTF)算法013)扫描调度(SCAN)算法014)循环扫描(C-SCAN)算法01课程设计目的01 HYPERLI
2、NK l bookmark51 o Current Document 课程设计要求02详细设计及算法流程图021)总流程图022)先来先服务(FCFS)算法流程图033)最短寻道时间优先(SSTF)算法流程图044)扫描调度(SCAN)算法流程图055)循环扫描(C-SCAN)算法流程图06 HYPERLINK l bookmark61 o Current Document 课程设计具体步骤071)定义函数部分主要代码072)先来先服务(FCFS)算法部分主要代码073)最短寻道时间优先(SSTF)算法部分主要代码074)扫描调度(SCAN)算法部分主要代码095)循环扫描(C-SCAN)算法
3、部分主要代码09课程设计结果显示101)先来先服务(FCFS)算法测试结果102)最短寻道时间优先(SSTF)算法测试结果113)扫描调度(SCAN)算法测试结果124)循环扫描(C-SCAN)算法测试结果13 HYPERLINK l bookmark74 o Current Document 课程设计总结14 HYPERLINK l bookmark78 o Current Document 9心得体会15 HYPERLINK l bookmark81 o Current Document 10.参考资料15磁盘调度算法需求分析编译程序运用磁盘的四种调度算法实现对磁盘的调度,四种算法分别为先
4、来 先服务(FCFS)算法,最短寻道时间优先(SSTF)算法,扫描调度(SCAN)算法, 循环扫描(C-SCAN)算法。总体设计及分类简介磁盘调度中常用的有四种算法,功能分别如下:先来先服务(FCFS)算法。即先来的请求先被响应。FCFS策略看起来似乎 是相当公平的,但是当请求的频率过高的时候FCFS策略的响应时间就会大大 延长。FCFS策略为我们建立起一个随机访问机制的模型,但是假如用这个策略 反复响应从里到外的请求,那么将会消耗大量的时间。为了尽量降低寻道时间, 看来我们需要对等待着的请求进行适当的排序,而不是简单的使用FCFS策略。 这个过程就叫做磁盘调度管理。有时候FCFS也被看作是最
5、简单的磁盘调度算法。最短寻道时间优先(SSTF)算法。要求访问的磁道,与当前磁头所在的磁 道距离最近,以使每次的寻道时间最短。扫描调度(SCAN)算法。该算法不仅考虑到欲访问的磁道与当前磁道间的距 离,更优先考虑的是磁头当前的移动方向。例如,当磁头正在自里向外移动时, SCAN算法所考虑的下一个访问对象,应是其欲访问的磁道,既在当前磁道之外, 又是距离最近的。这样自里向外的访问,直至再无更外的磁道需要访问时,才将 磁道换向自外向里移动。这时,同样也是每次选择这样的进程来调度,也就是要 访问的当前位置内距离最近者,这样,磁头又逐步地从外向里移动,直至再无更 里面的磁道要访问,从而避免了出现“饥饿
6、”现像。循环扫描(C-SCAN)算法。当磁头刚从里向外移动而越过了某一磁道时,恰 好又有一进程请求访问此磁道,这时,该里程就必须等待,为了减少这种延迟, CSCAN算法规定磁头单向移动,而本实验过程中我们所设计的是磁头从里向外移 动,而从外向里移动时只须改方向而已,本实验未实现。但本实验已完全能演示 循环扫描的全过程。课程设计目的熟悉并掌握磁盘管理系统的设计方法,加深对所学各种磁盘调度算法及其算法的特点的了解。掌握磁盘调度的基本概念,比较各种磁盘调度算法的优劣课程设计要求从课程设计的目的出发,通过设计工作的各个环节,达到以下设计要求:对系统进行功能模块分析、控制模块分析正确;系统设计要实用;编
7、程简练,可用,功能全面,具有较好的健壮性;说明书、流程图要清楚。详细设计及算法流程图1.总流程图2.先来先服务(FCFS)算法流程图最短寻道时间优先(SSTF)算法流程图while(ak =0 )&(rn)while(ak =0 )&(rn)for(i=0;in;i+)coutai”;sum=an-1-n ow;移动的 总道数*结束课程设计具体步骤定义函数部分主要代码#include#includeusing namespace std;void FCFS(int a,int n);void SSTF(int a,int n);void SCAN(int a,int n);void CSCAN
8、(int a,int n);先来先服务(FCFS)算法部分主要代码void FCFS(int a,int n)(int sum=0,j,i,first=0,now;coutnow;/确定当前磁头所在位置cout磁盘调度顺序为:endl;for( i=0;in;i+)(coutai;for(i=0,j=1;jn;i+,j+)(first+=abs(aj-ai);sum+=first+abs(now-a0);coutendl;cout移动的总磁道数为:sumendl;最短寻道时间优先(SSTF)算法部分主要代码for(i=0;in;i+)for(j=i+1;jaj)(temp=ai;ai=aj;a
9、j=temp;if(an-1=0;i-)coutai;sum二now-a0;if(l=-1)/磁头位置里侧的磁道已访问完(for(j=r;jn;j+)/访问磁头位置外侧的磁道(coutaj-1;j-) 访问磁头位置里侧的磁道(sum+=an-1-a0;coutendl;cout移动的总道数为:sumendl;扫描调度(SCAN)算法部分主要代码void SCAN(int a,int n)(int temp;int k=1;int now,l,r;int i,j,sum=0;for(i=0;in;i+)if(an-1=0;i-)coutai;sum二now-a0;循环扫描(C-SCAN)算法部分
10、主要代码void CSCAN(int a,int n)(int temp;int now,l,r;int i,j,sum=0;int k=1;for(i=0;in;i+)if(an-1=now)/磁头位置大于最外围欲访问磁道(for(i=0;in;i+)coutai;sum二now-2*a0+an-1;课程设计结果显示1.先来先服务(FCFS)算法测试结果2.最短寻道时间优先(SSTF)算法测试结果3.扫描调度(SCAN)算法测试结果4.循环扫描(C-SCAN)算法测试结果课程设计总结计算机磁盘是一种很重要也很常用的外部设备,其分配也有一定的分配策 略。在操作系统中,作业对磁盘的请求常常要排队
11、,由此需要一些高效率的磁盘 分配策略算法。(1)先来先服务算法为一种最简单的磁盘调度算法,它直接根据 作业请求磁盘的先后顺序对磁盘进行寻访,公平、简单,每个作业的磁盘请求都 可以得到处理,不会出现某个作业的请求长期得不到满足的情况,但未对寻道方 案进行优化;(2)最短寻道时间优先算法优先选择距离当前磁头位置最近的作业 磁道请求,可以使得每次寻道时所用的时间都最短,但不能保证平均周转时间及 带权周转时间最短;(3)电梯算法同时考虑下一个作业磁道请求与当前磁头位置 的距离和当前磁头移动方向先选择当前磁头之外距离其最近的磁道进行访问,直 到再无更外的磁道请求,再将磁臂换向,访问磁头内侧距离当前磁头位
12、置最近的 作业磁道请求,避免了饥饿现象的出现,每个作业的磁盘请求都可以得到处理, 且使每次寻道时间相对较短;(4)N_SCAN算法同时考虑下一个作业磁道请求与 当前磁头位置的距离和当前磁头移动方向,但每次磁臂调转方向时,将同时处理 在磁头向一侧移动过程当中输入的作业请求,先选择当前磁头之外距离其最近的 磁道进行访问,直到再无更外的磁道请求,接下来一并考虑在磁头向外侧移动过 程当中输入的作业请求与磁头内侧未被处理的作业磁道请求,此算法对中间磁道 请求比较有利。总之,各种算法都有其长处,也各有不足,需要在实际应用中权 衡利弊,择优使用才能达到最好的效果。九心得体会在这几天的课程设计中,由于之前做过
13、相似的实验,所以在一开的实验设计 流程图时还是很快就完成了,不过在接下来的编写代码的阶段里,出现很大的问 题,花费了很多的时间。好在有老师的耐心细心的指导,一步一步的验证,一点 一点的改正。每一次的运行看到错误都在慢慢的减少,正确的设计结果也在不断 的靠近,最终取得了成功。由于自己的知识和能力还不到位,在课程设计时间里 经历了很多困难和挑战,但我认为,在这过程中的每一次的错误和故障,都使我 收获颇丰,使我成长了很多。当然,这个磁盘调度系统的设计远非完美,还有很多地方可以改进,例如界 面可以更加友好,资源可以更加节约,算法也还有优化的余地,但是时间有限, 经历也有限,在课程设计时间允许的范围内只
14、能做到这样,我会在课余时间自行 完善该磁盘调度算法程序。每一次的课程设计都是自己对所学知识的强化,是一次难得的动手机会。在 课程设计的每一个步骤的执行中,都要认真的反复的去做,因为一个小小的错误 都会导致课程设计结果发生巨大的偏差。完成一个成功的设计,会让自己学会很 多很多的东西,并且能够很清楚的看到自己的不足,查补缺漏,继续学习。通过 自己的动手动脑,既增加了知识,又给了我专业知识以及专业技能上的提升,对 提高自己的思维能力和操作能力有很大的帮助。同时我也会更加努力,认真学习, 争取在以后的课程中做得更好!十.参考资料计算机操作系统清华大学出版社计算机操作系统实验指导清华大学出版社附录:#i
15、nclude#include using namespace std;void FCFS(int a,int n);void SSTF(int a,int n);void SCAN(int a,int n);void CSCAN(int a,int n);int main()磁道的个数功能号磁道的个数功能号int s;cout请输入当前磁道的个数,按Enter键显示生成的随机磁道号:n;int *a=new intn;cout生成的随机磁道号为:srand(unsigned)time(NULL);for(int i=0;in;i+) ai=(rand()%100)+1;coutai;coute
16、ndl;while(1) coutendl; TOC o 1-5 h z cout|endl;磁盘调度算法功能列表|11磁盘调度算法功能列表|11、 先来先服务算法(FCFS)| vvendl;12、 最短寻道时间算法(SSTF)| endl;13、 扫描算法(SCAN)| endl;14、循环扫描算法(CSCAN)|endl;cout|endl;cout|cout|endl;cout|cout|endl;cout|cout|endl;cout|endl;coutI endl;0、退出cout 0、退出cout1endl;coutendl;couts;if(s4)cout数据输入有误!请重新输
17、入:endl;elseswitch(s) case 0: exit(0);break ;case 1:FCFS(a,n); break;case 2:SSTF(a, n);break;case 3:SCAN(a, n);break;case 4:CSCAN(a,n);break;return 0;/先来先服务调度算法(FCFS)void FCFS(int a,int n)int sum=0,j,i,first=0,now;coutnow;/确定当前磁头所在位置cout磁盘调度顺序为:endl;for( i=0;in;i+)/按访问顺序输出磁道号coutai;计算sumfor(i=0,j=1;j
18、n;i+,j+)first+=abs(aj-ai);/外卜围磁道与最里面磁道的距离sum+=first+abs(now-a0);coutendl;cout”移动的总磁道数为:sumendl;最短寻道时间算法(SSTF)void SSTF(int a,int n) int temp;int k=1;int now,l,r;int i,j,sum=0;/将磁道号按递增排序for(i=0;in;i+)for(j=i+1;jaj)temp=ai;ai=aj;aj=temp;cout按递增顺序排好的磁道显示为:endl;for( i=0;in;i+)coutai ”;/输出排好的磁道顺序coutendl
19、;coutnow;/确定当前磁头所在位置cout磁盘调度顺序为:endl;if(an-1=0;i-)coutai=now)/当前磁头位置小于最里欲访问磁道for(i=0;in;i+)coutai;sum=an-1-now;elsewhile(ak=0)&(rn)if(now-al)=(ar-now)/选择离磁头近的磁道coutal;sum+=now-al;now=al;l=l-1;elsecoutar;sum+=ar-now;now=ar;r=r+1;if(l=-1)/磁头位置里侧的磁道已访问完for(j=r;jn;j+)/访问磁头位置外侧的磁道coutaj-1;j-) 访问磁头位置里侧的磁道
20、coutaj;sum+=an-1-a0;coutendl;cout”移动的总道数为:sumendl;扫描算法(SCAN)void SCAN(int a,int n)int temp;int k=1;int now,l,r;int i,j,sum=0;for(i=0;in;i+)/对访问磁道按由小到大顺序排列输出for(j=i+1;jaj)temp=ai;ai=aj;aj=temp;cout”按递增顺序排好的磁道为:endl;for( i=0;in;i+)coutai;coutendl;coutnow;以下算法确定磁道访问顺序if(an-1=0;i-)coutai=now) /磁头位置小于最里欲访问磁道for(i=0;in;i+)coutai;sum=an-1-now;else磁头位置在最里侧磁道与最外侧磁道之间 int d;while(aknow)确定当前磁道在已排的序列中的位置k+;l=k-1;/在磁头位置的前一个欲访问磁道r=k;/磁头欲访问磁道coutd;确定磁头访问的方向cout=0;j-)coutaj;for(j=r;jn;j+)coutaj;sum=now-2*a0+an-1;if(d=1)/磁头向外for(j=r;jn;j+)coutaj=0;j-)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 医院防控工作总结
- 硒氧化物企业数字化转型与智慧升级战略研究报告
- 山楂条企业ESG实践与创新战略研究报告
- 调香罐企业ESG实践与创新战略研究报告
- 2025年清真食品合作协议书
- 二零二五年度生态养殖技术研发租地合同
- 二零二五年度电子产品二手交易合作合同
- 二零二五年度抚养权变更协议:儿童全面发展的监护协议
- 二零二五年度海鲜餐厅经营权转让及海鲜供应链协议
- 2025年度汽车维修行业广告宣传承包协议
- 多发伤骨折护理查房
- 中建二测考试题库及答案
- 2023年软件评测师《基础知识》考试题库(浓缩500题)
- 中建预制构件吊装安全专项施工方案
- 华东师范大学《外国人文经典(下)》2021-2022学年第一学期期末试卷
- 基础护理及病房管理
- 办理拆迁事项委托书
- 2023年湖北省生态环保有限公司招聘笔试真题
- 2023年新疆事业单位开展招聘考试真题
- 学校班主任谈心制度实施方案
- 2024年《工会法》知识竞赛题库及答案
评论
0/150
提交评论