1、 课程设计报告计算机操作系统课程设计题目: 磁盘调度算法1目 录1.需求分析 012. 总体设计及分类简介 011)先来先服务(FCFS)算法012)最短寻道时间优先(SSTF)算法013)扫描调度(SCAN)算法014)循环扫描(C-SCAN)算法013.课程设计目的 014.课程设计要求025.详细设计及算法流程图021)总流程图022)先来先服务(FCFS)算法流程图033)最短寻道时间优先(SSTF)算法流程图044)扫描调度(SCAN)算法流程图055)循环扫描(C-SCAN)算法流程图066.课程设计具体步骤071)定义函数部分主要代码072)先来先服务(FCFS)算法部分主要代码
2、073)最短寻道时间优先(SSTF)算法部分主要代码074)扫描调度(SCAN)算法部分主要代码095)循环扫描(C-SCAN)算法部分主要代码097.课程设计结果显示 101)先来先服务(FCFS)算法测试结果102)最短寻道时间优先(SSTF)算法测试结果113)扫描调度(SCAN)算法测试结果124)循环扫描(C-SCAN)算法测试结果138.课程设计总结 149.心得体会 1510.参考资料 152磁盘调度算法一.需求分析编译程序运用磁盘的四种调度算法实现对磁盘的调度,四种算法分别为先来先服务(FCFS)算法,最短寻道时间优先(SSTF)算法,扫描调度(SCAN)算法,循环扫描(C-S
3、CAN)算法。二总体设计及分类简介磁盘调度中常用的有四种算法,功能分别如下:1.先来先服务(FCFS)算法。即先来的请求先被响应。FCFS 策略看起来似乎是相当“公平“的,但是当请求的频率过高的时候 FCFS 策略的响应时间就会大大延长。FCFS 策略为我们建立起一个随机访问机制的模型,但是假如用这个策略反复响应从里到外的请求,那么将会消耗大量的时间。为了尽量降低寻道时间,看来我们需要对等待着的请求进行适当的排序,而不是简单的使用 FCFS 策略。这个过程就叫做磁盘调度管理。有时候 FCFS 也被看作是最简单的磁盘调度算法。2. 最短寻道时间优先(SSTF)算法。要求访问的磁道,与当前磁头所在
4、的磁道距离最近,以使每次的寻道时间最短。3.扫描调度(SCAN)算法。该算法不仅考虑到欲访问的磁道与当前磁道间的距离,更优先考虑的是磁头当前的移动方向。例如,当磁头正在自里向外移动时,SCAN 算法所考虑的下一个访问对象,应是其欲访问的磁道,既在当前磁道之外,又是距离最近的。这样自里向外的访问,直至再无更外的磁道需要访问时,才将磁道换向自外向里移动。这时,同样也是每次选择这样的进程来调度,也就是要访问的当前位置内距离最近者,这样,磁头又逐步地从外向里移动,直至再无更里面的磁道要访问,从而避免了出现“饥饿”现像。4.循环扫描(C-SCAN)算法。当磁头刚从里向外移动而越过了某一磁道时,恰好又有一
5、进程请求访问此磁道,这时,该里程就必须等待,为了减少这种延迟,CSCAN 算法规定磁头单向移动,而本实验过程中我们所设计的是磁头从里向外移动,而从外向里移动时只须改方向而已,本实验未实现。但本实验已完全能演示循环扫描的全过程。三课程设计目的31.熟悉并掌握磁盘管理系统的设计方法,加深对所学各种磁盘调度算法及其算法的特点的了解。2.掌握磁盘调度的基本概念,比较各种磁盘调度算法的优劣四.课程设计要求从课程设计的目的出发,通过设计工作的各个环节,达到以下设计要求:1.对系统进行功能模块分析、控制模块分析正确;2.系统设计要实用;3.编程简练,可用,功能全面,具有较好的健壮性;4.说明书、流程图要清楚
6、。五. 详细设计及算法流程图1. 总流程图4输入磁道的个数输入所需功能的前置编号开始输入数字为 14?输入当前磁道号退出数字为0?输入错误结果显示结束2. 先来先服务(FCFS)算法流程图5开始sum=0,j,i,first=0,nowi=0;i=0;i-)coutajif(an-1=now)while(ak=0) while(ak=now)磁头位置在两侧磁道之间确定磁头访问的方向移动的总道数结束六课程设计具体步骤1.定义函数部分主要代码9#include#includeusing namespace std;void FCFS(int a,int n);void SSTF(int a,int
7、 n);void SCAN(int a,int n);void CSCAN(int a,int n);2. 先来先服务(FCFS)算法部分主要代码void FCFS(int a,int n)int sum=0,j,i,first=0,now;coutnow;/确定当前磁头所在位置cout“磁盘调度顺序为:“endl;for( i=0;in;i+)coutai“ “;for(i=0,j=1;jn;i+,j+)first+=abs(aj-ai);sum+=first+abs(now-a0);coutendl;cout“移动的总磁道数为: “sumendl;3. 最短寻道时间优先(SSTF)算法部分主要代码for(i=0;in;i+)for(j=i+1;jn;j+)