模拟磁盘调度算法系统的设计毕业设计

上传人:cn****1 文档编号:394332417 上传时间:2023-01-18 格式:DOC 页数:14 大小:41.50KB
返回 下载 相关 举报
模拟磁盘调度算法系统的设计毕业设计_第1页
第1页 / 共14页
模拟磁盘调度算法系统的设计毕业设计_第2页
第2页 / 共14页
模拟磁盘调度算法系统的设计毕业设计_第3页
第3页 / 共14页
模拟磁盘调度算法系统的设计毕业设计_第4页
第4页 / 共14页
模拟磁盘调度算法系统的设计毕业设计_第5页
第5页 / 共14页
点击查看更多>>
资源描述

《模拟磁盘调度算法系统的设计毕业设计》由会员分享,可在线阅读,更多相关《模拟磁盘调度算法系统的设计毕业设计(14页珍藏版)》请在金锄头文库上搜索。

1、目录一、设计任务及主要技术3二、设计方案及论证结果4三、系统的原理框图5四、设计程序12五、实验结果20六、调试分析及故障处理24七、设计结论25八、心得体会26一、 设计任务及主要技术1整体功能概述(设计任务): 磁盘是外设中一个很常用的部分,所以,对磁盘数据的寻道时间的长短可以直接影响机器的整体运行速度的快慢。本设计为一个模拟磁盘调度算法的磁盘调度模拟系统,能够模拟先来先服务(FCFS)算法、最短寻道时间(SSTF)算法、电梯(SCAN)算法、环形扫描(C_SCAN)算法及N_SCAN算法五个磁盘调度算法,输入为一组作业的磁道请求,输出为按选择的算法执行时的磁头移动轨迹。其中,先来先服务(

2、FCFS)算法、最短寻道时间(SSTF)算法、电梯(SCAN)算法为基本算法,环形扫描(C_SCAN)算法及N_SCAN算法为扩展算法。2运行环境:(1)硬件环境 Intel core i5 CPU (2)软件环境 Windows 7 Microsoft Visual C+ 6.03主要技术:(1)用C语言编写程序;(2)对编程软件Microsoft Visual C+ 6.0的了解和使用;(3)操作系统基础知识(主要是对先来先服务(FCFS)算法、最短寻道时间(SSTF)算法、电梯(SCAN)算法的了解);(4)操作系统扩展知识(通过网络自学环形扫描(C_SCAN)算法及N_SCAN算法)。

3、二、设计方案及论证结果1设计方案:(1)先来先服务算法(First-Come,First-Served,FCFS)此算法为一种最简单的磁盘调度算法。它直接根据作业请求磁盘的先后顺序对磁盘进行寻访。此算法公平、简单,每个作业的磁盘请求都可以得到处理,不会出现某个作业的请求长期得不到满足的情况。但此算法未对寻道方案进行优化,故平均周转时间及带权周转时间都会较长。(2)最短寻道时间优先算法(Shortest Seek Time First,SSTF)此算法优先选择距离当前磁头位置最近的作业磁道请求。此算法可以使得每次寻道时所用的时间都最短,但不能保证平均周转时间及带权周转时间最短。(3)电梯算法(S

4、CAN)此算法同时考虑下一个作业磁道请求与当前磁头位置的距离和当前磁头移动方向。本设计默认磁头当前移动方向为自内向外,故SCAN算法先选择当前磁头之外距离其最近的磁道进行访问,直到再无更外的磁道请求,再将磁臂换向,访问磁头内侧距离当前磁头位置最近的作业磁道请求。此算法避免了饥饿现象的出现,每个作业的磁盘请求都可以得到处理,且使每次寻道时间相对较短。(4)环形扫描算法(C_SCAN)此算法磁头移动方向一直为自内向外,同时考虑下一个作业磁道请求与当前磁头位置的距离最短。先选择当前磁头之外距离其最近的磁道进行访问,直到再无更外的磁道请求,再直接将磁头移到最内侧磁道(此过程快速移动,并不访问任何磁道)

5、,再由内向外顺次访问距离当前磁头位置最近的作业磁道请求。此算法每个作业的磁盘请求都可以得到处理,且使每次寻道时间相对较短。由于该方法一直保持磁头移动寻访方向不变,对两端磁道请求比较有利。(5)N_SCAN算法此算法同时考虑下一个作业磁道请求与当前磁头位置的距离和当前磁头移动方向,但每次磁臂调转方向时,将同时处理在磁头向一侧移动过程当中输入的作业请求。本设计默认磁头当前移动方向为自内向外,先选择当前磁头之外距离其最近的磁道进行访问,直到再无更外的磁道请求,接下来一并考虑在磁头向外侧移动过程当中输入的作业请求与磁头内侧未被处理的作业磁道请求。此算法对中间磁道请求比较有利。2论证结果: 本设计输入当

6、前磁头位置及一组作业磁道请求。选择所需的算法,输出相应结果:(1)先来先服务算法(FCFS) 按输入顺序输出访问序列。(2)最短寻道时间优先算法(SSTF)依次输出距离当前磁头位置最近的磁道请求。(3)电梯算法(SCAN)先按照从小到大的顺序输出所输入的当前磁头位置外侧的磁道请求,再按照从大到小的顺序输出所输入的当前磁头位置内侧的磁道请求。(4)环形扫描算法(C_SCAN)先按照从小到大的顺序输出所输入的当前磁头位置外侧的磁道请求,再按照从小到大的顺序输出所输入的当前磁头位置内侧的磁道请求。(5)N_SCAN算法先按照从小到大的顺序输出所输入的当前磁头位置外侧的磁道请求,再按照从大到小的顺序输

7、出在磁头向外侧移动过程当中输入的作业请求与所输入的当前磁头位置内侧的磁道请求。三、系统的原理框图1总体框图:本系统划分为五个模块:先来先服务算法模块FCFS(int track)、最短寻道时间算法模块SSTF(int correnttrack,int track)、电梯算法模块SCAN(int correnttrack,int track)、环形扫描算法模块C_SCAN(int correnttrack,int track)及N_SCAN算法模块N_SCAN(int correnttrack,int track)。总体框图:图1 总体框图2模块框图:(1)先来先服务算法模块void FCFS(

8、int track)直接根据作业请求磁盘的先后顺序对磁盘进行寻访。此算法公平、简单,每个作业的磁盘请求都可以得到处理,不会出现某个作业的请求长期得不到满足的情况。先来先服务算法流程图:图2 先来先服务算法模块流程图(2)最短寻道时间优先算法模块void SSTF(int correnttrack,int track)优先选择距离当前磁头位置最近的作业磁道请求,可以使得每次寻道时所用的时间都最短。最短寻道时间优先算法流程图:图3最短寻道时间优先算法模块流程图(3)电梯算法模块void SCAN(int correnttrack,int track)默认磁头当前移动方向为自内向外,先选择当前磁头之

9、外距离其最近的磁道进行访问,直到再无更外的磁道请求,再将磁臂换向,访问磁头内侧距离当前磁头位置最近的作业磁道请求。电梯算法流程图:图4 电梯算法模块流程图(4)环形扫描算法模块void C_SCAN(int correnttrack,int track)先选择当前磁头之外距离其最近的磁道进行访问,直到再无更外的磁道请求,再直接将磁头移到最内侧磁道(此过程快速移动,并不访问任何磁道),再由内向外顺次访问距离当前磁头位置最近的作业磁道请求。一直保持磁头移动寻访方向不变,对两端磁道请求比较有利。环形扫描算法流程图:图5 环形扫描算法模块流程图(5)N_SCAN算法模块void N_SCAN(int

10、correnttrack,int track)本设计默认磁头当前移动方向为自内向外,先选择当前磁头之外距离其最近的磁道进行访问,直到再无更外的磁道请求,接下来一并考虑在磁头向外侧移动过程当中输入的作业请求与磁头内侧未被处理的作业磁道请求。此算法对中间磁道请求比较有利。N_SCAN算法流程图:图6 N_SCAN算法模块流程图(1)图7 N_SCAN算法模块流程图(2)四、设计程序1主要模块代码:(1)先来先服务算法void FCFS(int track)直接根据作业请求磁盘的先后顺序对磁盘进行寻访。先来先服务算法代码:void FCFS(int track)int k;for(k=0;k,tra

11、ckk);printf(%d,track9);(2)最短寻道时间优先算法void SSTF(int correnttrack,int track)优先选择距离当前磁头位置最近的作业磁道请求。最短寻道时间优先算法代码:void SSTF(int correnttrack,int track)int Line10;int i;int j;int d;int min_d;int k;int corrent; min_d=abs(correnttrack-track0); k=0;corrent=correnttrack;for(i=0;i10;i+)for(j=0;j10;j+)if(trackj!

12、=-1)d=abs(corrent-trackj);if(d,correnttrack);Print(Line);(3)电梯算法void SCAN(int correnttrack,int track)默认磁头当前移动方向为自内向外,先选择当前磁头之外距离其最近的磁道进行访问,直到再无更外的磁道请求,再将磁臂换向,访问磁头内侧距离当前磁头位置最近的作业磁道请求。电梯算法代码:void SCAN(int correnttrack,int track)int Line10;int dLine10;int i;int j;int k; int min; k=0; min=track0;for(i=0

13、;i10;i+)for(j=0;j10;j+)if(trackj!=-1)if(trackjmin)min=trackj;k=j;dLinei=trackk;trackk=-1;min=65536;k=0;for(i=0;idLinei)k=k+1; j=k;for(i=0;i10-k;i+)Linei=dLinej;j=j+1;j=k-1;for(i=10-k;i10;i+)Linei=dLinej;j=j-1;Print(Line);(4)环形扫描算法void C_SCAN(int correnttrack,int track)先选择当前磁头之外距离其最近的磁道进行访问,直到再无更外的磁道请求,再直接将磁头移到最内侧磁道(此过程快速移动,并不访问任何磁道),再由内向外顺次访问距离当前磁头位置最近的作业磁道请求。环形扫描算法代码:void C_SCAN(int correnttrack,int track)int Line10;int dLine10;int i;int j;int k; int min; k=0; min=track0;for(i=0;i10;i+)for(j=0;j10;j+)if(trackj!=-1)

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 工作计划

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