磁盘调度算法程序课程设计报告

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

课程设计报告

题目磁盘调度算法程序设计

课程名称院部名称操作系统课程设计信息技术学院

专业计算机科学与技术

班级M11计算机科学与技术Ⅱ

学生姓名

学号

课程设计地点A205

课程设计学时20

指导教师李莉

金陵科技学院教务处制

成绩

目录

一、课程设计的目的和要求 (2)

1、目的 (2)

2、要求 (2)

二、设计任务介绍及系统需求分析

2.1 任务介绍 (2)

2.2基本需求设计 (2)

三、概要设计 (3)

3.1 程序主要流程 (3)

3.2 程序的函数调用关系 (5)

四、详细设计 (5)

4.1数据结构描述 (5)

4.2 各功能模块(或主要过程)分析 (5)

4.3各子程序流程分析 (7)

4.3.1 FCFS() (7)

4.3.2 SSTF() (8)

4.3.3 SCAN() (9)

五、调试与测试 (10)

5.1 程序运行初始界面 (10)

5.2 键盘输入磁道 (10)

5.3 随机产生磁道 (10)

5.4 先来先服务算法 (10)

5.5 最短寻道时间优先算法 (10)

5.6 扫描算法 (12)

5.6.1 先向外扫描 (11)

5.6.2 先向里扫描 (11)

5.7 退出程序 (11)

六、结论与体会 (12)

参考文献 (12)

附件:源程序清单 (13)

一、课程设计的目的和要求

1.1目的

磁盘是经常使用的一种重要的外设,对磁盘数据的寻道时间的长短直接影响机

器的整体运行速度,本设计要求用C语言(或高级语言)编写程序模拟实现磁

盘调度的常用算法。以加深对磁盘调度常用算法的理解和实现技巧。

1.2要求

1)、设计一个函数完成先来先服务的磁盘调度功能。

2)、设计一个函数完成最短寻道时间优先的磁盘调度功能。

3)、设计一个函数完成电梯算法的磁盘调度功能。

二、系统需求分析

2.1任务介绍

1、可利用先来先服务算法(FCFS即first come first served)、最短寻道时

间优先算法(SSTF即shortest seek time first)、扫描算法(SCAN),来实现

磁盘的访问顺序。

2、根据磁盘调度算法的不同的特性做好软件实现的需求分析。

3、可根据问题的实际需要,可模拟数据在磁道的存放位置。

4、当系统运行时,能直观地、动态地反映当前磁盘状态及不同算法的平均寻道

时间。

5、要求在系统安全状态的前提下,用户指定需要访问的磁道,软件自动模拟在

不同算法情况下,磁盘寻道顺序和平均寻道时间。

2.2基本需求设计

系统主界面可以灵活选择某种算法,算法包括:先来先服务算法(FCFS)、

最短寻道时间优先算法(SSTF)、扫描算法(SCAN)。

1、先来先服务算法(FCFS)

这是一种比较简单的磁盘调度算法。它根据进程请求访问磁盘的先后次序

进行调度。此算法的优点是公平、简单,且每个进程的请求都能依次得到处理,

不会出现某一进程的请求长期得不到满足的情况。此算法由于未对寻道进行优

化,在对磁盘的访问请求比较多的情况下,此算法将降低设备服务的吞吐量,

致使平均寻道时间可能较长,但各进程得到服务的响应时间的变化幅度较小。2、最短寻道时间优先算法(SSTF)

该算法选择这样的进程,其要求访问的磁道与当前磁头所在的磁道距离最近,以使每次的寻道时间最短,该算法可以得到比较好的吞吐量,但却不能保证平均寻道时间最短。其缺点是对用户的服务请求的响应机会不是均等的,因而导致响应时间的变化幅度很大。在服务请求很多的情况下,对内外边缘磁道的请求将会无限期的被延迟,有些请求的响应时间将不可预期。

3、扫描算法(SCAN)

扫描算法不仅考虑到欲访问的磁道与当前磁道的距离,更优先考虑的是磁头的当前移动方向。例如,当磁头正在自里向外移动时,扫描算法所选择的下一个访问对象应是其欲访问的磁道既在当前磁道之外,又是距离最近的。这样自里向外地访问,直到再无更外的磁道需要访问才将磁臂换向,自外向里移动。这时,同样也是每次选择这样的进程来调度,即其要访问的磁道,在当前磁道之内,从而避免了饥饿现象的出现。由于这种算法中磁头移动的规律颇似电梯的运行,故又称为电梯调度算法。此算法基本上克服了最短寻道时间优先算法的服务集中于中间磁道和响应时间变化比较大的缺点,而具有最短寻道时间优先算法的优点即吞吐量较大,平均响应时间较小,但由于是摆动式的扫描方法,两侧磁道被访问的频率仍低于中间磁道。

三、概要设计

3.1程序主要流程

下图3-1为磁盘调度算法总流程图,程序运行开始,进入选择界面,输入磁道数,然后依次调用decide()函数和trans()函数,再进入主循环界面,选择调度算法,直到选择4,程序执行完毕退出。

图3-1

3.2程序函数调用关系

下图为磁盘调度算法的函数之间的调用关系,主函数调用子函数,子函数也可

以调用子函数,进行进程的初始化,排序等等。

四、详细设计

4.1数据结构描述

本系统划分为三个模块:先来先服务算法模块void FCFS(int cidao[],

int m)、最短寻道时间优先算法模块void SSTF(int cidao[],int m)、扫描算

法模块void SCAN(int cidao[],int m) 。

1. 先来先服务算法模块:void FCFS(int cidao[],int m)

输入磁道号,按先来先服务的策略输出磁盘请求序列,求平均寻道长度,

输出移动平均磁道数。这是一种简单的磁盘调度算法。它根据进程请求访问磁

盘的先后次序进行调度。此算法的优点是公平、简单,且每个进程的请求都能

依次得到处理,不会出现某一进程的请求长期得不到满足的情况。但此算法由

于未对寻道进行优化,致使平均寻道时间可能较长。

2 .最短寻道时间优先算法模块:void SSTF(int cidao[],int m)

将磁道号用冒泡法从小到大排序,输出排好序的磁道序列,输入当前磁道号,根据前磁道在已排的序列中的位置,选择扫描的顺序,求出平均寻道长度,输出移动的平均磁道数。该算法选择这样的进程,其要求访问的磁道与当前磁头所在的磁道距离最近,以使每次的寻道时间最短,但这种调度算法却不能保证平均寻道时间最短。

3 .扫描算法模块:void SCAN(int cidao[],int m)

将磁道号用冒泡法从小到大排序,输出排好序的序列,输入当前磁道号,

相关文档
最新文档