文章

《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)上,磁盘臂在表面上移动,将磁头定位在期望的磁道上

简单的磁盘驱动器

F37.1

该磁道只有 12 个扇区,每个扇区的大小为 512 字节,用 0 到 11 的数字表示。

单磁道延迟:旋转延迟

找同一磁道内另一个位置数据的时间。

旋转延迟(rotational delay,有时称为 rotation delay)

最长大约为R(周长),就是转到5。转到0大约为R/2。

多磁道:寻道时间

将磁盘臂移动到正确的磁道(在这种情况下,是最外面的磁道),通过一个所谓的寻道(seek)过程。

F37.3

寻道的时候磁盘也在转,所以寻完道时转到9的位置而不是6的位置。

I/O 时间:用数学

感觉没什么用,省略

参考

本文由作者按照 CC BY 4.0 进行授权

© Kai. 保留部分权利。

浙ICP备20006745号-2,本站由 Jekyll 生成,采用 Chirpy 主题。