操作系统之课程设计常用磁盘调度算法的实现,附源码(1)

(6)源程序(带注释);

(7)设计总结;

(8)参考文献、致谢等。

2.刻制光盘一张。

五、设计进度计划及时间安排

周次

日期

内容

地点

第1周

星期一~二

教师讲解设计要求

查找参考资料

教室

图书馆

星期三~五

算法设计,编程实现

教室

第2周

星期一~三

调试测试,撰写文档

教室

星期四~五

检查程序,答辩

教室

六、主要参考文献

[1]汤子瀛 ,哲凤屏.《计算机操作系统》[M].西安电子科技大学出版社.

[2]王清,李光明.《计算机操作系统》[M].冶金工业出版社.

[3]孙钟秀等.《操作系统教程》[M].高等教育出版社.

[4]曾明.《Linux操作系统应用教程》[M].陕西科学技术出版社.

[5]张丽芬,刘利雄.《操作系统实验教程》[M].清华大学出版社.

[6]孟静.《操作系统教程——原理和实例分析》[M].高等教育出版社.

[7]周长林.《计算机操作系统教程》[M].高等教育出版社.

[8]张尧学.《计算机操作系统教程》[M].清华大学出版社.

[9]任满杰.《操作系统原理实用教程》[M].电子工业出版社.

[10]张坤.《操作系统实验教程》[M].清华大学出版社.

摘要

设备的动态分配算法与进程调度相似,也是基于一定的分配策略的。常用的分配策略有先请求先分配、优先级高者先分配等策略。在多道程序系统中,低效率通常是由于磁盘类旋转设备使用不当造成的。操作系统中,对磁盘的访问要求来自多方面,常常需要排队。这时,对众多的访问要求按一定的次序响应,会直接影响磁盘的工作效率,进而影响系统的性能。存取盘中的信息一般要用三部分时间:寻道时间、旋转延迟时间、传输时间。对于大多数磁盘来说,寻到时间远远大于后两者之和,其中查找时间是决定因素。因此,减少平均寻道时间就可以显著提高系统性能。

本设计的目的就是通过设计一个磁盘调度模拟系统,以加深对FCFS、最短寻道时间以及电梯等磁盘调度算法的理解。通过输入为一组作业的磁道分配请求,可以输出为按选择的算法(先来先服务FCFS、最短寻道时间SSTF、扫描算法SCAN、循环扫描算法C-SCAN)执行时的磁头移动轨迹。在Linux环境下实现。

关键词:操作系统;磁盘调度算法;先来先服务;最短寻道时间;Linux

目录

1 绪论… 1

1.1 设计任务… 1

1.2 设计思想… 2

1.3 基础知识… 3

1.3.1 四种基础磁盘调度算法… 3

1.3.2 操作系统的作用… 4

1.3.3 操作系统的定义及特征… 6

1.3.4 程序及进程基本概念… 7

1.3.5 进程状态及创建… 8

1.3.6 线程基本概念及实现方式… 9

1.3.7 处理机调度的层次… 9

1.3.8 典型的调度算法… 9

2 各模块伪码算法… 12

2.1 定义函数部分主要代码… 13

2.2 先来先服务(FCFS)算法… 13

2.3 最短寻道时间优先(SSTF)算法部分主要代码… 14

2.4 扫描调度(SCAN)算法… 16

2.5

循环扫描(C-SCAN)算法… 18

3 函数调用关系图… 20

4 调试及测试… 21

4.1 调试及测试所用软件介绍… 21

4.2 常用磁盘调度算法的测试界面… 21

4.2.1 测试界面图… 21

4.2.2 功能列表图… 22

4.3 测试结果… 22

4.3.1 先来先服务(FCFS)算法… 22

4.3.2 最短寻道时间(SSTF)算法… 23

4.3.3 扫描(SCAN)算法… 23

4.3.4 循环扫描(C-SCAN)算法… 24

5 源程序… 25

总结… 33

参考文献… 34

致谢… 35

1绪论

磁盘是外设中一个很常用的部分,所以,对磁盘数据的寻道时间的长短可以直接影响机器的整体运行速度的快慢。本设计为一个模拟磁盘调度算法的磁盘调度模拟系统,能够模拟先来先服务(FCFS)算法、最短寻道时间(SSTF)算法、扫描(SCAN)算法、循环扫描(C_SCAN)算法四个磁盘调度算法,输入为一组作业的磁道请求,输出为按选择的算法执行时的磁头移动轨迹。其中分为四个模块,先来先服务(FCFS)算法、最短寻道时间(SSTF)算法、扫描(SCAN)算法为基本算法,循环扫描(C_SCAN)算法。

1.1设计任务

调度磁盘I/O请求服务,采用好的方式能提高访问时间和带宽。本实验通过编程对磁盘调度算法的实现,加深对算法的理解,同时通过用C语言编写程序实现这些算法,并在Linux平台上实现,更好的掌握操作系统的原理以及实现方法,提高综合运用专业课知识的能力,熟悉并掌握磁盘调度算法管理系统的设计方法,加强对所学各种调度算法及相应算法的特点了解,掌握磁盘调度的基本概念,深刻体会各个算法的优缺点,以及算法间的相似点,就能使使用者加深对先来先服务(FCFS)算法、最短寻道时间(SSTF)算法、扫描(SCAN)算法、循环扫描(C_SCAN)算法等磁盘调度算法的理解。

选择一个自己熟悉的计算机系统和程序设计语言模拟操作系统基本功能的设计方法实现过程完成各分项功能。在算法的实现过程中,要求可决定变量应是动态可变的;同时模块应该有一个合理的输出结果。具体可参照实验的程序模拟各功能程序要求自行编写程序实现,不得调用现有操作系统提供的模块或功能函数。磁盘调度程序模拟。先来先服务调度算法.最短寻道时间优先调度,循环(SCAN)调度算法。程序设计语言自选,最终以软件(含源代码以及执行程序)和设计报告的形式提交课程设计结果.。磁盘调度让有限的资源发挥更大的作用。在多道程序设计的计算机系统中,各个进程可能会不断提出不同的对磁盘进行读/写操作的请求。由于有时候这些进程的发送请求的速度比磁盘响应的还要快,因此我们有必要为每个磁盘设备建立一个等待队列。

1.2设计思想

设备的动态分配算法与进程调度相似,也是基于一定的分配策略的。常用的分配策略有先请求先分配、优先级高者先分配等策略。在多道程序系统中,低效率通常是由于磁盘类旋转设备使用不当造成的。操作系统中,对磁盘的访问要求来自多方面,常常需要排队。这时,对众多的访问要求按一定的次序响应,会直接影响磁盘的工作效率,进而影响系统的性能。访问磁盘的时间因子由3部分构成,它们是查找(查找磁道)时间、等待(旋转等待扇区)时间和数据传输时间,其中查找时间是决定因素。因此,磁盘调度算法先考虑优化查找策略,需要时再优化旋转等待策略。

平均寻道长度(L)为所有磁道所需移动距离之和除以总的所需访问的磁道数(N),即:L=(M1+M2+….+Mi+….+MN)/N

其中Mi为所需访问的磁道号所需移动的磁道数。

启动磁盘执行输入输出操作时,要把移动臂移动到指定的柱面,再等待指定扇区的旋转到磁头位置下,然后让指定的磁头进行读写,完成信息传送。因此,执行一次输入输出所花的时间有:

寻找时间——磁头在移动臂带动下移动到指定柱面所花的时间。 延迟时间——指定扇区旋转到磁头下所需的时间。 传送时间——由磁头进程读写完成信息传送的时间。

其中传送信息所花的时间,是在硬件设计就固定的。而寻找时间和延迟时间是与信息在磁盘上的位置有关。为了减少移动臂进行移动花费的时间,每个文件

的信息不是按盘面上的磁道顺序存放满一个盘面后,再放到下一个盘面上。而是按柱面存放,同一柱面上的各磁道被放满信息后,再放到下一个柱面上。所以各磁盘的编号按柱面顺序,每个柱面按磁道顺序,每个磁道又按扇区顺序进行排序。

磁盘是可供多个进程共享的设备,当有多个进程都要求访问磁盘是,应采用一种最佳调度算法,以使各种进程对磁盘的平均访问时间最小。由于在访问磁盘的时间中,主要是寻道时间,因此,磁盘调度的目标,是使磁盘的平均寻道时间最少。目前常用的磁盘的调度算法有:先来先服务、最短寻道时间优先及扫描等算法。

存取盘中的信息一般要用三部分时间:寻道时间、旋转延迟时间、传输时间。对于大多数磁盘来说,寻到时间远远大于后两者之和,其中查找时间是决定因素。因此,减少平均寻道时间就可以显著提高系统性能。编译程序运用磁盘的四种调度算法实现对磁盘的调度,四种算法分别为先来先服务(FCFS)算法,最短寻道时间优先(SSTF)算法,扫描调度(SCAN)算法,循环扫描(C-SCAN)算法。

1.3 基础知识

1.3.1四种基础磁盘调度算法

1.先来先服务(FCFS)算法: 即先来的请求先被响应。FCFS策略看起来似乎是相当"公平"的,但是当请求的频率过高的时候FCFS策略的响应时间就会大大延长。FCFS策略为我们建立起一个随机访问机制的模型,但是假如用这个策略反复响应从里到外的请求,那么将会消耗大量的时间。为了尽量降低寻道时间,看来我们需要对等待着的请求进行适当的排序,而不是简单的使用FCFS策略。这个过程就叫做磁盘调度管理。有时候FCFS也被看作是最简单的磁盘调度算法。

2.最短寻道时间优先(SSTF)算法: 该算法选择这样的进程&#x

  • 21
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值