一. 前言
每当一个进程需要对磁盘进行I/O操作,它就向操作系统发出一个系统调用。该调用请求指定了一些信息:
- 操作是输入还是输出
- 所传输的磁盘地址是什么
- 所传输的内存地址是什么
- 所传输的扇区数是什么
二. 调度算法
1. FCFS调度
2. SSTF调度
- 基本概念:先来先服务算法,这种算法本身比较公平,但是它通常不提供最快的服务
- 优点:公平、简单、易于实现
- 缺点:平均寻道时间大,仅应用在磁盘I/O较少的场合
- 基本概念:在将磁头移到远处以处理其他请求之前,先处理靠近当前磁头位置的请求可能较为合理。这个假设是最短寻道时间优先算法SSTF的基础。
- 优点:性能比“先来先服务”好
- 缺点:不能保证平均寻道时间最短,可能出现“饥饿”现象
3. SCAN调度
- 基本概念:对于SCAN算法,磁臂从磁盘的一端向另一端移动,同时当磁头移过每个柱面时,处理位于该柱面上的服务请求。当到达另一端时,磁头改变移动方向,处理继续。
- 优点:寻道性能较好,可避免“饥饿”现象
- 缺点:不利于远离磁头一端的访问请求
4. C-SCAN调度
- 基本概念:SCAN调度的变种,主要提供一个更为均匀的等待时间。与SCAN 一样,C-SCAN将磁头一端移到磁盘的另一端,随着地洞不断地处理请求。不过,当磁头移到另一端时,它会马上返回到磁盘开始,返回时并不处理请求。
- 优点:消除了对两端磁道请求的不公平
- 缺点:--
5. LOOK调度
- 基本概念:SCAN和C-SCAN使磁头在整个磁盘宽度内进行移动。事实上,这两个算法都不是这么实现的。通常,磁头只移动到一个方向上最远的请求为止。接着它马上回头,而不是继续道磁盘的尽头。这种形式的SCAN和C-SCAN称为LOOK和C-LOOK调度,这是因为它们在朝一个方向移动会看是否有请求
三. 调度算法的选择
- SCAN和C-SCAN对于磁盘负荷较大的系统会执行得很好,因为它不可能产生饿死问题
- SSTF或LOOK是比较合理的默认算法