《Operating Systems: Three Easy Pieces》学习笔记(二十九) 磁盘驱动器
主要介绍磁盘驱动器
HDD(hard disk drive)相关技术,不过现在SSD变成主流了,但HDD因为其数据可靠性和价格在特定的领域依旧不可替代
接口
驱动器由大量扇区
(512 字节块)组成,每个扇区都可以读取或写入。在具有 n 个扇区的磁盘上,扇区从 0 到 n−1 编号。因此,我们可以将磁盘视为一组扇区,0 到 n−1 是驱动器的地址空间
(address space)。
多扇区操作是可能的。实际上,许多文件系统一次读取或写入 4KB
(或更多)。但是,在更新磁盘时,驱动器制造商唯一保证的是单个 512 字节
的写入是原子
的(atomic,即它将完整地完成或者根本不会完成)。因此,如果发生不合时宜的掉电
,则只能完成较大写入的一部分
[有时称为不完整写入
(torn write)]。
基本几何形状
让我们开始了解现代磁盘的一些组件。我们从一个盘片
(platter)开始,它是一个圆形坚硬的表面,通过引入磁性变化来永久存储数据。磁盘可能有一个或多个盘片。每个盘片有两面,每面都称为表面。这些盘片通常由一些硬质材料(如铝)制成,然后涂上薄薄的磁性层
,即使驱动器断电,驱动器也能持久存储数据位。
所有盘片都围绕主轴(spindle)连接在一起,主轴连接到一个电机,以一个恒定(固定)的速度旋转盘片(当驱动器接通电源时)。旋转速率通常以每分钟转数
(Rotations Per Minute,RPM
)来测量,典型的现代数值在 7200~15000 RPM 范围内。
我们经常会对单次旋转的时间
感兴趣,例如,以 10000 RPM 旋转的驱动器意味着一次旋转需要大约 6ms
数据在扇区的同心圆中的每个表面上被编码。我们称这样的同心圆为一个磁道
(track)。一个表面包含数以千计的磁道,紧密地排在一起,数百个磁道只有头发的宽度。
要从表面进行读写操作,我们需要一种机制,使我们能够感应(即读取)磁盘上的磁性图案,或者让它们发生变化(即写入)。读写过程由磁头
(disk head)完成;驱动器的每个表面有一个这样的磁头。磁头连接到单个磁盘臂(disk arm)上,磁盘臂在表面上移动,将磁头定位在期望的磁道上
简单的磁盘驱动器
该磁道只有 12 个扇区,每个扇区的大小为 512 字节,用 0 到 11 的数字表示。
单磁道延迟:旋转延迟
找同一磁道内另一个位置数据的时间。
旋转延迟(rotational delay,有时称为 rotation delay)
最长大约为R(周长),就是转到5
。转到0
大约为R/2。
多磁道:寻道时间
将磁盘臂移动到正确的磁道(在这种情况下,是最外面的磁道),通过一个所谓的寻道
(seek)过程。
寻道的时候磁盘也在转,所以寻完道时转到9的位置而不是6的位置。
I/O 时间:用数学
感觉没什么用,省略