收藏 分享(赏)

操作系统+磁盘调度算法.doc

上传人:精品资料 文档编号:10723118 上传时间:2020-01-02 格式:DOC 页数:25 大小:421KB
下载 相关 举报
操作系统+磁盘调度算法.doc_第1页
第1页 / 共25页
操作系统+磁盘调度算法.doc_第2页
第2页 / 共25页
操作系统+磁盘调度算法.doc_第3页
第3页 / 共25页
操作系统+磁盘调度算法.doc_第4页
第4页 / 共25页
操作系统+磁盘调度算法.doc_第5页
第5页 / 共25页
点击查看更多>>
资源描述

1、目录目录 11课程设计目的 21.1 编写目的 22课程设计内容 22.1 设计内容 23课程设计方案 33.1 模块划分 33.2 模块调用关系图 63.3 子模块程序流程图 64测试数据和结果 104.1 测试数据 104.2 测试结果 114.3 测试抓图 115参考文献 146总结 156.1 设计体会 156.2 结束语 157程序使用说明书 158程序源代码 15操作系统课程设计21课程设计目的1.1 编写目的本课程设计的目的是通过设计一个磁盘调度模拟系统,从而使磁盘调度算法更加形象化,容易使人理解,使磁盘调度的特点更简单明了,能使使用者加深对先来先服务算法、最短寻道时间优先算法、

2、扫描算法以及循环扫描算法等磁盘调度算法的理解。2课程设计内容2.1 设计内容 系统主界面可以灵活选择某种算法,算法包括:先来先服务算法(FCFS) 、最短寻道时间优先算法(SSTF) 、扫描算法(SCAN) 、循环扫描算法( CSCAN) 。1、先来先服务算法(FCFS)这是一种比较简单的磁盘调度算法。它根据进程请求访问磁盘的先后次序进行调度。此算法的优点是公平、简单,且每个进程的请求都能依次得到处理,不会出现某一进程的请求长期得不到满足的情况。此算法由于未对寻道进行优化,在对磁盘的访问请求比较多的情况下,此算法将降低设备服务的吞吐量,致使平均寻道时间可能较长,但各进程得到服务的响应时间的变化

3、幅度较小。2、最短寻道时间优先算法(SSTF)该算法选择这样的进程,其要求访问的磁道与当前磁头所在的磁道距离最近,以使每次的寻道时间最短,该算法可以得到比较好的吞吐量,但却不能保证平均寻道时间最短。其缺点是对用户的服务请求的响应机会不是均等的,因而导致响应时间的变化幅度很大。在服务请求很多的情况下,对内外边缘磁道的请求将会无限期的被延迟,有些请求的响应时间将不可预期。3、扫描算法(SCAN)扫描算法不仅考虑到欲访问的磁道与当前磁道的距离,更优先考虑的是磁头的当前移动方向。例如,当磁头正在自里向外移动时,扫描算法所选择的下一个访问对象应是其欲访问的磁道既在当前磁道之外,又是距离最近的。这样自里向

4、外地访问,直到再无更外的磁道需要访问才将磁臂换向,自外向里移动。这时,同样也是每次选择这样的进程来调度,即其要访问的磁道,在当前磁道之内,从而避免了饥饿现象的出现。由于这种算法中磁头移动的规律颇似电梯的运行,故又称为电梯调度算法。此算法基本上克服了最短寻道时间优先算法的服务集中于中间磁道和响应时间变化比较大的缺点,而具有最短寻道时间优先算法的优点即吞吐量较大,平均响应时间较小,但由于是摆动式的扫描方法,两侧磁道被访问的频率仍低于中间磁道。操作系统课程设计34、循环扫描算法(CSCAN)循环扫描算法是对扫描算法的改进。如果对磁道的访问请求是均匀分布的,当磁头到达磁盘的一端,并反向运动时落在磁头之

5、后的访问请求相对较少。这是由于这些磁道刚被处理,而磁盘另一端的请求密度相当高,且这些访问请求等待的时间较长,为了解决这种情况,循环扫描算法规定磁头单向移动。例如,只自里向外移动,当磁头移到最外的被访问磁道时,磁头立即返回到最里的欲访磁道,即将最小磁道号紧接着最大磁道号构成循环,进行扫描。3课程设计方案3.1 模块划分本系统划分为四个模块:先来先服务算法模块 void FCFS(int array,int m)、最短寻道时间优先算法模块 void SSTF(int array,int m)、扫描算法模块 void SCAN(int array,int m) 和循环扫描算法模块:void CSCA

6、N(int array,int m) 1 先来先服务算法模块:void FCFS(int array,int m)输入磁道号,按先来先服务的策略输出磁盘请求序列,求平均寻道长度,输出移动平均磁道数。主要代码:for(i=0,j=1;jarrayj)temp=arrayi;arrayi=arrayj;arrayj=temp;if(arraym-1=0;i-)操作系统课程设计4cout=now) /*若当前磁道号小于请求序列中最小者,则直接由内向外依次给予各请求服务*/while(l=0)j-)cout=0;j-) /*磁头移动到最大号,则改变方向向内扫描未扫描的磁道 */cout=now) /*

7、若当前磁道号小于请求序列中最小者,则直接由内向外依次给予各请求服务,此情况同最短寻道优先*/for(i=0;i#include#include操作系统课程设计16#include#define maxsize 1000/*判断输入数据是否有效 */int decide(char str) /判断输入数据是否有效int i=0;while(stri!=0)if(stri9)return 0;break;i+;return i;/*将字符串转换成数字 */int trans(char str,int a) /将字符串转换成数字int i;int sum=0;for(i=0;icidaoj) tem

8、p=cidaoi;cidaoi=cidaoj;cidaoj=temp;coutstr; /对输入数据进行有效性判断a=decide(str);if(a=0)coutstr; /对输入数据进行有效性判断a=decide(str);if(a=0)cout=0;i-)cout=now) /若当前磁道号小于请求序列中最小者,则直接由内向外依次给予各请求服务coutcidao0j-)coutstr; /对输入数据进行有效性判断a=decide(str);if(a=0)cout=0;i-)cout=now) /若当前磁道号小于请求序列中最小者,则直接由内向外依次给予各请求服务,此情况同最短寻道优先 cou

9、tcidao0if(d=0) /选择移动臂方向向内,则先向内扫描cout=0;j-)cout=0;j-) /磁头移动到最大号,则改变方向向内扫描未扫描的磁道coutstr; /对输入数据进行有效性判断a=decide(str);if(a=0)cout=now) /若当前磁道号小于请求序列中最小者,则直接由内向外依次给予各请求服务,此情况同最短寻道优先coutcidao0 /对输入数据进行有效性判断a=decide(str);if(a=0)coutstr; /对输入数据进行有效性判断a=decide(str);if(a=0)coutstr; /对输入数据进行有效性判断a=decide(str);if(a=0)cout5)cout“数据输入错误!请重新输入“endl;goto G;switch(c)case 1: /使用 FCFS 算法FCFS(cidao,count);break;case 2: /使用 SSTF 算法SSTF(cidao,count);break;操作系统课程设计25case 3: /使用 SCAN 算法SCAN(cidao,count);break;case 4: /使用 CSCAN 算法CSCAN(cidao,count);break;

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

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报