1、 课程设计课程设计报告报告 题题 目目 磁盘调度算法磁盘调度算法 课课 程程 名名 称称 操作系统课程设计操作系统课程设计 院院 部部 名名 称称 信息技术学院信息技术学院 专专 业业 计算机科学与技术计算机科学与技术 成绩 一、 程序设计的目的和要求程序设计的目的和要求 磁盘是经常使用的一个外设, 对磁盘数据的寻道时间的长短直接影响机器的整体运行速 度, 本设计要求用 C 语言(或高级语言)编写程序模拟实现磁盘调度的常用算法。 以加深对磁 盘调度常用算法的理解和实现技巧。 二、 课程设计环境要求课程设计环境要求 1 1、硬件环境、硬件环境 Intel Croe 2 Duo CPU 2 2、软
2、件环境、软件环境 Windows7 Turbo C 2.0 三、 设计任务介绍及系统需求分析设计任务介绍及系统需求分析 1、系统分析 设备的动态分配算法与进程调度相似, 也是基于一定的分配策略的。 常用的分配策略有 先请求先分配、优先级高者先分配等策略。在多道程序系统中,低效率通常是由于磁盘类旋 转设备使用不当造成的。 操作系统中, 对磁盘的访问要求来自多方面, 常常需要排队。 这时, 对众多的访问要求按一定的次序响应,会直接影响磁盘的工作效率,进而影响系统的性能。 访问磁盘的时间因子由 3 部分构成,它们是查找(查找磁道)时间、等待(旋转等待扇区) 时间和数据传输时间, 其中查找时间是决定因
3、素。 因此, 磁盘调度算法先考虑优化查找策略, 需要时再优化旋转等待策略。 2、系统设计: (1) 先来先服务(First-Come,First-Served,FCFS): 这是一种简单的磁盘调度算法。 它根据进程请求访问磁盘的先后次序进行调度。 此算法 的优点是公平、简单,且每个进程的请求都能依次得到处理,不会出现某一进程的请求长期 得不到满足的情况。但此算法由于未对寻道进行优化,致使平均寻道时间可能较长。 (2) 最短寻道时间优先(ShortestSeekTimeFirst,SSTF): 该算法选择这样的进程, 其要求访问的磁道与当前磁头所在的磁道距离最近, 以使每 次的寻道时间最短,但这
4、种调度算法却不能保证平均寻道时间最短。 (3) 扫描(SCAN)算法: SCAN 算法不仅考虑到欲访问的磁道与当前磁道的距离,更优先考虑的是磁头的当前移 动方向。例如,当磁头正在自里向外移动时,SCAN 算法所选择的下一个访问对象应是其欲 访问的磁道既在当前磁道之外,又是距离最近的。这样自里向外地访问,直到再无更外的磁 道需要访问才将磁臂换向,自外向里移动。这时,同样也是每次选择这样的进程来调度,即 其要访问的磁道,在当前磁道之内,从而避免了饥饿现象的出现。由于这种算法中磁头移动 的规律颇似电梯的运行,故又称为电梯调度算法。 四四、概要设计、概要设计 本系统划分为三个模块:先来先服务算法模块
5、void FCFS(int array,int m)、最短 寻道时间优先算法模块 void SSTF(int array,int m)、扫描算法模块 void SCAN(int array,int m)。 系统模块图 五五、详细设计、详细设计 1 1、先来先服务、先来先服务(FCFS)(FCFS) 这是一种简单的磁盘调度算法。它根据进程请求访问磁盘的先后次序进行调度。此算法 的优点是公平、简单,且每个进程的请求都能依次得到处理,不会出现某一进程的请求长期 得不到满足的情况。但此算法由于未对寻道进行优化,致使平均寻道时间可能较长。 先 来 先 服 务 算 法 最 短 寻 道 时 间 优 先 扫
6、描 算 法 磁盘调度模拟系统 先来先服务算法(FCFS)流程图: 开始 All=0 K=9 All=Han- Rline0 i=Han Order=0,t=1All=All+Min; printf(“%5d“,RLineh); Han=RLineh; Last=RLineh; DelInq(RLine,h,k); k-; M0 Order=1 j=x;j0) if(Order=1) /order 是判断磁盘扫描的方向标签,order 是 1 的话,磁道向内移 动 for(j=x;j=y;j+) h=-1; Min=64000; for(n=x;n=k;n+) /判断离当前磁道最近的磁道号 if(RLinen=Han) Temp=Han-RLinen; if(TempMin) Min=Temp; /Temp 临时值赋予 Min h=n; /把最近当前磁道