1、 课课 程程 设设 计计 ( 操 作 系 统 )( 操 作 系 统 ) 题 目: CSCAN 磁盘调度算法 班 级: 计算机科学与技术学院 计算机系 10-8 班 姓 名: 指导教师: 系 主 任 : 2013 年 03 月 01 日 - II- 目目 录录 1CSCAN 磁盘调度算法问题课程设计 1 1.1 题目分析.1 1.2 数据结构.1 1.3 流程图 .1 1.4 实现技术.1 1.5 设计结论和心得 3 2 Linux 代码分析 错误错误!未定义书签。未定义书签。 2.1 功能说明. 错误错误!未定义书签。未定义书签。 2.2 接口说明. 错误错误!未定义书签。未定义书签。 2.3
2、 局部数据结构 错误错误!未定义书签。未定义书签。 2.4 流程图 . 错误错误!未定义书签。未定义书签。 2.5 以实例说明运行过程 错误错误!未定义书签。未定义书签。 - 1- 1CSCAN 磁盘调度算法问题课程设计 1.1 分析题目 将将 queuenqueuen进行由小到大的排序,首先定位当前调度磁进行由小到大的排序,首先定位当前调度磁 headstartsheadstarts 在在 queuenqueuen的的 位置,然后在此位置按给定的方向遍历位置,然后在此位置按给定的方向遍历 queuenqueuen,当道端点(,当道端点(queue0queue0或或 queuenqueuen-
3、 -11) 时,反向到另一端点再以此方向进行遍历,直到时,反向到另一端点再以此方向进行遍历,直到 queuenqueuen中所有都调度完。当调度磁道中所有都调度完。当调度磁道 不在不在 queuequeue 端点时,总的寻道长度为为前一个磁道与后一个磁道差值的累加,当到达端点时,总的寻道长度为为前一个磁道与后一个磁道差值的累加,当到达端端 点且点且 queuenqueuen未全调度时,总寻道长度加上端点值再加上磁盘磁道总长度,再加上下一未全调度时,总寻道长度加上端点值再加上磁盘磁道总长度,再加上下一 个调度磁道的值,再按前面的算法进行,直到磁道全部都调度完毕,得到总的寻道长个调度磁道的值,再按
4、前面的算法进行,直到磁道全部都调度完毕,得到总的寻道长 度,除以度,除以 n n 得到平均寻道长度。得到平均寻道长度。 1.2 数据结构 Hand:当前磁道号当前磁道号; DiscLine10:随机生成的磁道号随机生成的磁道号; void SetDI(int DiscL)生成随机磁道号算法生成随机磁道号算法; void CopyL(int Sour,int Dist ,int x) 数组数组 Sour复制到数组复制到数组 Distx; void DelInq(int Sour,int x,int y) 数组数组 Sour 把把 x 位置的数删除位置的数删除,x 后的数组元素向前挪一位后的数组元
5、素向前挪一位. void PaiXu()寻道长度由低到高排序寻道长度由低到高排序 void CSCAN(int Han,int DiscL)循环扫描算法循环扫描算法(CSCAN) 1.3 流程图流程图 - 2- - 3- 1.3 实现技术 为实现上述设计,采用 C+语言,VS2008 开发环境。具体采用的技术如下: 循环扫描算法循环扫描算法 实现步骤如下: 输入起始磁道(你可以输入输入起始磁道(你可以输入 100),点确定,进入第二个界面,再输入你要输入),点确定,进入第二个界面,再输入你要输入的最大的最大磁道(你磁道(你 可以输入可以输入 50),然后点确定),然后点确定。选择磁。选择磁盘调
6、度算法盘调度算法 1 2 3 4中的任意一个中的任意一个,若选择若选择 4后确认,则随后确认,则随 机输出机输出 10个小于个小于 50的磁道数的磁道数 :(:(47 26 21 38 19 12 17 49 35 44),则循环扫描算法),则循环扫描算法 (CSCAN):(:(12 17 19 21 26 35 38 44 47 49)。)。 运行结果如下: 1.4 设计结论和心得 通过课程设计得到如下结论: 本次实验首先要了解磁盘调度的工作原理及四种调度方法的工作原理。在课程设计前的准备工作本次实验首先要了解磁盘调度的工作原理及四种调度方法的工作原理。在课程设计前的准备工作 时,先把这部分工作做完了。在设计总的程序框架的时候,要注意各功能模块的位置,尽量做到简时,先把这部分工作做完了。在设计总的程序框架的时候,要注意各功能模块的位置,尽量做到简 洁、有序;各功能模块与主程洁、有序;各功能模块与主程序要正确衔接。序要正确衔接。 有如下几点心