目录
一.磁盘的结构
二.磁盘的分类
2.1按照磁头是否可以移动分类
2.2按照盘片是否可以更换分类
三.磁盘的读写过程
四.磁盘的调度
4.1FCFS先来先服务算法
4.2SSTF最短寻找时间优先
4.3 SACN扫描算法
4.4C-SACN循环扫描算法
4.5 SPTF(最短定位时间优先)
五.磁盘减少延迟采取的措施
5.1磁道偏移
5.2多区
5.3磁盘缓存
六.磁盘地址结构表示
七.IO合并
一.磁盘的结构
分块解析:
磁道: 磁盘的盘面被划分成一个个磁道。 这样的一个“圈”就是一个磁道
扇区: 一个磁道又被划分成一个个扇区,每个扇区就是一个“磁盘块”。各个扇区存放的数据量相同(如1KB)
盘面,柱面:
二.磁盘的分类
2.1按照磁头是否可以移动分类
2.2按照盘片是否可以更换分类
三.磁盘的读写过程
例题:寻求正确的轨道。磁头当前所在的位置在外围的21扇区,如果要访问12,必须先将磁头移到其所在的位置,即寻道(seek)。平均寻道时间大约需要 4ms。完全寻道(从表面的一端到另一端)可能需要两到三倍的时间。寻道有许多阶段:首先是磁盘臂移动时的加速阶段;然后随着磁盘臂全速移动而惯性滑动;然后随着磁盘臂减速而减速;最后,在磁头小心地放置在正确的磁道上时停下来。不是纯粹的线性成本。必须加速、滑行、减速、停放。停放时间(settling time)可能需要 0.5~2ms,因为驱动器必须确定找到正确的磁道。
等待旋转。等待期望的扇区旋转到磁头下。这种等待在现代驱动器中经常发生,并且是 I/O 服务时间的重要组成部分,又称之为旋转延迟(rotational delay/rotation delay)。平均旋转延迟直接根据 RPM 计算。15000 RPM 等于 250 RPS(每秒转速)。因此,每次旋转需要 4ms。平均而言,磁盘将会遇到半圈旋转,因此平均时间为 2ms。
传输数据。传输速度很快,取决于 RPM 和扇区密度。100+ MB/s 是典型的最大传输速率。传输时间就是传输大小除以峰值传输速率。512 字节 * (1s / 100 MB) ≈ 5 us。
读/写时间由三个组成部分:时间 = 寻道 + 旋转 + 传输时间
顺序工作负载:每个的吞吐量是多少?
Cheeta: 125 MB/s
Barracuda: 105 MB/s
随机工作负载:每个的吞吐量是多少?假设随机读取 16 KB。
Cheetah 平均随机读取 16 KB 需要多长时间?
四.磁盘的调度
由于I/O的高开销,操作系统在决定哪个I/O与磁盘交互扮演一个重要角色。磁盘调度程序(disk scheduling)。
不像任务调度程序,磁盘调度程度对于每一个任务的长度是未知的,它只能靠好的猜测。通过估计任务花费时间来确定执行最短任务(SJF)。磁头的位置、任务请求的位置,比任务的长度更重要。
最大限度地缩短访问时间并最大限度地提高数据传输带宽,需要减少花费在寻道上的时间。
4.1FCFS先来先服务算法
4.2SSTF最短寻找时间优先
4.3 SACN扫描算法
4.4C-SACN循环扫描算法
进一步改进,即磁头移动只需要到达最远端的一个请求即可返回,不需要到达磁盘端点。这种形式的SCAN算法和C-SCAN算法称为LOOK调度和C-LOOK调度,因为它们在朝一个给定方向移动前会查看是否有请求。
4.5 SPTF(最短定位时间优先)
五.磁盘减少延迟采取的措施
5.1磁道偏移
5.2多区
5.3磁盘缓存
六.磁盘地址结构表示
磁盘上的物理地址一般用:柱面号,盘面号,扇区号(或者块号)表示
比如要寻找第0个柱面,0个盘面,第七个扇区
则表示为(000,00,111)
七.IO合并
设想请求读取队列:33, 8, 34
在这种情况下,调度程序应该将 33 和 34 的请求合并在一起。
合并在操作系统级别尤其重要,因为它减少了发送到磁盘的请求数量,从而降低了开销。