文章目录
- 0.前言
- 12.1 概述
- 12.2磁盘结构
- 12.3 磁盘调度
- 12.3.1 FCFS调度
- 12.3.2 SSTF调度
- 12.3.3 SCAN调度
- 12.3.4 C-SCAN调度
- 12.3.5 如何选择磁盘调度
0.前言
文件系统从逻辑上来看包括三部分。第10章讨论了文件系统的用户和程序员的接口。第11章描述了操作系统实现这种接口的内部数据结构和算法。本章讨论文件系统的最底层:次级存储(外存)结构。首先,描述磁盘和磁带的物理结构。然后,描述磁盘调度算法,以便调度磁盘I/O的次序来优化性能。接着,讨论磁盘格式化和启动块、坏块以及交换空间的管理。最后,分析RAID系统的结构。
本章目标:
- 描述外存设备的物理结构及其对设备使用的影响
- 解释大容量存储设备的性能特点
- 评估磁盘调度算法
- 讨论对大容量存储(包括RAIN)提供的操作系统服务
12.1 概述
文件系统的最底层:次级和三级存储结构。
- 传输速率:驱动器和计算机之间的数据传输速率
- 定位时间 / 随机访问时间:由寻道时间和旋转等待时间组成
- 寻道时间:移动磁臂到所要的柱面的时间
- 旋转等待时间:等待所要的扇区旋转到磁臂下所用的时间
12.2磁盘结构
现代磁盘驱动器可以看为是一个一维的逻辑块的数组,其按顺序映射到磁盘的扇区。扇区0是最外柱面的第一个磁道的第一个扇区。
逻辑块的映射顺序:先按磁道内的扇区顺序,再按柱面内的磁道顺序,再按柱面从外到内的顺序。
逻辑块是最小的传输单位。
12.3 磁盘调度
名词解释:
- 寻道时间:磁臂将磁头移动到包含目标扇区的柱面的时间。
- 旋转延迟:磁盘将目标扇区移动到磁头下的时间。
- 磁盘带宽:传递的总字节数 ÷ 从服务请求开始到结束的时间
访问时间主要包括寻道时间和旋转延迟,提高调度性能,需要从这两个方面考虑。
12.3.1 FCFS调度
先到先服务算法
会出现大摆动问题(122->14->124)
12.3.2 SSTF调度
最短寻道时间优先算法(shortest-seek-time-first ,SSTF)
选择距离当前磁头位置判定的最短寻道的位置。
是一种最短作业优先调度(SJF),可能会导致饥饿现象。
12.3.3 SCAN调度
也被称为电梯调度,磁臂从一端到另一端移动,处理经过的所有请求,随后改变移动方向,继续处理。
可能会导致另一端的请求虽然很多,但等待时间过长
12.3.4 C-SCAN调度
C-SCAN(circular SCAN)是SCAN调度的一个变种,将柱面当做环,每次从一端到另一端后,马上返回到磁盘开始,从头开始处理请求。
LOOK调度和C-LOOK调度
SCAN和C-SCAN是在整个磁盘范围内移动,但实际上只需要在有请求的最大区间范围内移动即可。
在向一个方向移动时判断是否有请求,并根据请求的边界来放置磁头,这种形式的SCAN调度被称为LOOK调度(同样C-LOOK对应C-SCAN)
12.3.5 如何选择磁盘调度
对于任何调度算法,其性能主要依赖于请求的数量和类型。
磁盘服务请求很大程度上受文件分配方法所影响。程序在读一个连续分配文件时会产生数个在磁盘上相近位置的请求,因而产生有限的磁头移动。
SSTF较为普通且很有吸引力,因为它比FCFS的性能要好。
SCAN和C-SCAN对于磁盘符合较大的系统会执行得更好,这是因为它不可能产生饿死问题。
目录和索引块的位置也很重要。由于文件必须打开后才能使用,打开文件要求搜索目录结构,目录会被经常访问。
在内存中缓存目录和索引块有助于降低磁头移动,尤其是对于读请求。
由于选择需要考虑的因素比较复杂,磁盘调度算法应该作为一个操作系统的独立模块,用于方便替换。
但SSTF或LOOK是比较合理的默认算法