1、 课程设计报告课程设计报告 (本科)(本科) 课程: 计算机操作系统 学号: 姓名: 班级: 计算机科学与技术(2010 网络工程) 教师: 时间: 2012.12.17-2013.1.7 计算机科学与技术系 1 设计名称: 磁盘调度算法 设计内容、目的与要求: 一:课程设计目的 使学生熟悉磁盘管理系统的设计方法; 加深对所学各种磁盘调度算法的了解 及其算法的特点。 二:具体要求: 编程序实现下述磁盘调度算法,并求出每种算法的平均寻道长度: 1、先来先服务算法(FCFS) 2、最短寻道时间优先算法(SSTF) 3、扫描算法(SCAN) 4、循环扫描算法(CSCAN) 三:课程设计内容 1.系统
2、分析 选择一个自己熟悉的计算机系统和程序设计语言模拟操作系统基本功能的设计 方法及其实现过程 完成各分项功能。在算法的实现过程中,要求可决定变量应是动态可变的; 同时模块应该有一个合理的输出结果。 具体可参照实验的程序模拟 .各功能程序 要求自行编写程序实现,不得调用现有操作系统提供的模块或功能函数。磁盘调 度程序模拟。先来先服务调度算法, 最短寻道时间优先调度,循环(SCAN)调 度算法。程序设计语言自选,最终以软件(含源代码以及执行程序)和设计报告 的形式提交课程设计结果。磁盘调度让有限的资源发挥更大的作用 2.磁盘调度 在多道程序设计的计算机系统中,各个进程可能会不断提出不同的对磁盘进
3、行读/写操作的请求。由于有时候这些进程的发送请求的速度比磁盘响应的还要 快,因此我们有必要为每个磁盘设备建立一个等待队列。 先来先服务(FCFS :first-come-first-served)的策略,即先来的请求先 被响应。FCFS 策略看起来似乎是相当“公平“的,但是当请求的频率过高的时候 FCFS 策略的响应时间就会大大延长。FCFS 策略为我们建立起一个随机访问机制 的模型,但是假如用这个策略反复响应从里到外的请求,那么将会消耗大量的时 间。为了尽量降低寻道时间,看来我们需要对等待着的请求进行适当的排序,而 不是简单的使用 FCFS 策略。这个过程就叫做磁盘调度管理。有时候 fcfs
4、 也被看 作是最简单的磁盘调度算法。 最短时间优先算法选择这样的进程。要求访问的磁道,与当前磁头所在的磁 2 道距离最近,以使每次的寻道时间最短。 扫描(SCAN)调度算法:该算法不仅考虑到欲访问 的磁道与当前磁道间的距 离,更优先考虑的是磁头当前的移动方向。例如,当磁头正在自里向外移动时, SCAN 算法所考虑的下一个访问对象,应是其欲访问的磁道,既在当前磁道之外, 又是距离最近的。这样自里向外的访问,直至再无更外的磁道需要访问时,才将 磁道换向自外向里移动。这时,同样也是每次选择这样的进程来调度,也就是要 访问的当前位置内距离最近者,这样,磁头又逐步地从外向里移动,直至再无更 里面的磁道要
5、访问,从而避免了出现“饥饿”现像。 循环扫描(CSCAN)算法:当磁头刚从里向外移动而越过了某一磁道时,恰 好又有一进程请求访问此磁道,这时,该里程就必须等待,为了减少这种延迟, CSCAN 算法规定磁头单向移动,而本实验过程中我们所设计的是磁头从里向外移 动,而从外向里移动时只须改方向而已,本实验未实现。但本实验已完全能演示 循环扫描的全过程。 计划与进度安排: 2012-12-17 至 2012-12-23 数据结构设计 设计中用到如下数据结构: Hand:当前磁道号; DiscLine10:随机生成的磁道号; void SetDI(int DiscL)生成随机磁道号算法; void Co
6、pyL(int Sour,int Dist ,int x) 数组 Sour 复制到数组 Dist, 复制到 x 个数; void DelInq(int Sour,int x,int y) 数组 Sour 把 x 位置的数删除,x 后的数组元素向前挪一位; void PaiXu()寻道长度由低到高排序; void FCFS(int Han,int DiscL)先来先服务算法(FCFS); void SSTF(int Han,int DiscL)最短寻道时间优先算法(SSTF); int SCAN(int Han,int DiscL,int x,int y) 扫描算法(SCAN); void CSCAN(int Han,int DiscL)循环扫描算法(CSCAN); 2012-12-24 至 2013-1-1 编写代码: 编写主函数的相关功能,如显示相关操作框架;然后针对主函数里需要调 3 用的函数进行编写,函数算法有:先来先服务算法、最短寻道优先算法、扫描算 法、循环扫描算法、随机生成磁道数算法、排序算法以及四大调度算法中需要用 到的复制数