1、 磁盘调度算法模拟实现 目目 录录 1 操作系统课程设计任务描述 2 2问题定义与需求分析 2 2.1 算法的描述 . 2 2.2 程序要做什么 3 3概要设计 . 4 4详细设计 . 5 4.1 抽象数据类型的定义 5 4.2 程序流程图以及核心代码 . 5 4.2.1 先来先服务调度算法 5 4.2.2 最短寻道时间优先调度算法 . 6 4.2.3 扫描算法. 8 4.2.4 循环扫描算法 . 10 5 运行结果 12 6 测试 . 15 7 结论 . 16 8 参考文献 17 9 附录(源代码). 17 磁盘调度算法模拟实现 1 1 操作系统课程设计任务描述操作系统课程设计任务描述 设计
2、目的:加深对磁盘调度算法的进一步认识,加强实践动手能力和程 序开发能力的培养,提高分析问题解决问题的能力,培养代码编写能力,以 巩固和加深磁盘调度的概念。操作系统是一门工程性很强的课程,它不仅要 求学生掌握操作系统的工作原理和理论知识,也要求学生的实际动手能力, 以加深对所学习内容的理解,使学生熟练地掌握计算机的操作方法,使用各 种软件工具,加强对课程内容的理解。这次课程设计,就是通过模拟磁臂调 度来加深对操作系统中磁臂调度概念的理解。 设计要求: 编程序实现下述磁盘调度算法,并求出每种算法的平均寻道长 度;要求设计主界面可以灵活选择某算法,且以下算法都要实现 1、先来先服务算法(FCFS)
3、2、最短寻道时间优先算法(SSTF) 3、扫描算法(SCAN) 4、循环扫描算法(CSCAN) 2 2问题定义与需求分析问题定义与需求分析 2.12.1 算法的描述算法的描述 先来先服务 FCFS:公平,简单,每个进程的请求都能依次得到处理。没有 对寻道优化,平均寻道时间长。 最短时间优先调度算法 SSTF:要求访问的磁道是当前磁头所在的磁道最近, 每次寻道时间最短,但不能保证平均寻道时间最短。可能导致一些请求无限期推 延,产生饥饿现象。 扫描算法 SCAN:不仅考虑当前磁道的距离,优先考虑在磁道前进方向的最 短时间,排除磁头在盘面上的往复运动,避免了出现“饥饿”现象。电梯原理。 循环扫描算法
4、:是 SCAN 的改良。磁头改变方向时,以到达请求服务的最短 时间。对中间请求服务更有利。 磁盘调度算法模拟实现 2.22.2 程序要做什么程序要做什么 通过模拟设计磁盘驱动调度程序,观察驱动调度程序的动态运行过程.且实 现以下算法: 1、先来先服务算法(FCFS) 2、最短寻道时间优先算法(SSTF) 3、扫描算法(SCAN) 4、循环扫描算法(CSCAN) (1)输入的形式和范围:输入为数字类型 (2)输出形式:数组和字符串 (3)程序的功能:实现磁盘调度算法的演示 (4)测试数据: 正确的输入:合法的整数类型. 期望输出:正确输出结果 错误的输入:字符型,浮点数型 期望输出:提示错误 (
5、5)开发环境及语言的选择 Visual studio 2010 C#语言 磁盘调度算法模拟实现 3 3概要设计概要设计 1.1.先来先服务(先来先服务(FCFSFCFS)的设计思想)的设计思想 即先来的请求先被响应。FCFS 策略看起来似乎是相当“公平“的,但是当 请求的频率过高的时候 FCFS 策略的响应时间就会大大延长。FCFS 策略为我 们建立起一个随机访问机制的模型, 但是假如用这个策略反复响应从里到外 的请求,那么将会消耗大量的时间。为了尽量降低寻道时间,看来我们需要 对等待着的请求进行适当的排序,而不是简单的使用 FCFS 策略。这个过程 就叫做磁盘调度管理。有时候 fcfs 也被
6、看作是最简单的磁盘调度算法 2.2.最短寻道时间优先调度(最短寻道时间优先调度(SSTFSSTF)的设计思想)的设计思想 最短时间优先算法选择这样的进程。要求访问的磁道,与当前磁头所在 的磁道距离最近,以使每次的寻道时间最短。 3.3.扫描算法(扫描算法(SCANSCAN)的设计思想)的设计思想 扫描(SCAN)调度算法:该算法不仅考虑到欲访问 的磁道与当前磁道间 的距离,更优先考虑的是磁头当前的移动方向。例如,当磁头正在自里向外 移动时,SCAN 算法所考虑的下一个访问对象,应是其欲访问的磁道,既在 当前磁道之外,又是距离最近的。这样自里向外的访问,直至再无更外的磁 道需要访问时,才将磁道换向自外向里移动。这时,同样也是每次选择这样 的进程来调度,也就是要访问的当前位置内距离最近者,这样,磁头又逐步 地从外向里移动,直至再无更里面的磁道要访问,从而避免了出现“饥饿” 现像。 4.4.循环扫描(循环扫描(CSACNCSACN)的设计思想)的设计思想 循环扫描(CSCAN)算法:当磁头刚从里向外移动而越过了某一磁道时, 恰好又有一进程请求访问此磁道