HDD:数据是按顺序还是循环方式写入 HDD 的?

HDD:数据是按顺序还是循环方式写入 HDD 的?

假设我需要在 HDD 上创建和保存文件数据。HDD 只不过是多个旋转磁盘的堆栈。我的理解是文件数据被分成多个内存块,这些内存块可以保存到 HDD 中的任何磁盘(HDD 中的磁盘堆栈中)。对吗?

另一个相关问题是,假设两个写入请求或两个读取请求同时执行。它们是按顺序执行的吗?即,一旦执行了一个任务,就只执行下一个任务,还是每个请求都会以循环方式在某个时间间隔内执行?

答案1

假设我需要在 HDD 上创建和保存文件数据。HDD 只不过是多个旋转磁盘的堆栈。我的理解是文件数据被分成多个内存块,这些内存块可以保存到 HDD 中的任何磁盘(HDD 中的磁盘堆栈中)。

操作系统看不到单个磁盘盘片——它仅将整个 HDD 视为单个线性存储设备,只能使用“逻辑块地址”(LBA)进行访问。

通常,编号最低的 LBA(从 0 开始)位于外边缘,而编号最高的 LBA 位于中心 - 但操作系统不知道数据的物理位置(例如在哪个磁盘盘片上)。只有 HDD 的固件知道这一点。(我思考它通常是某种循环映射?)

(这同样适用于基于闪存的 SSD 或 USB 记忆棒 - 操作系统看到单个存储单元,SSD 本身决定如何将每个 LBA 放置到相应的闪存芯片。)

因此当操作系统需要保存文件时,

  1. 首先是操作系统文件系统将文件分成块,并决定将文件存储在哪个 LBA 上(通常同一个文件的块保持紧密,但不同的文件则分散在各地);

  2. 然后 HDD 决定每个 LBA 使用哪个盘片/磁道/扇区。

另一个相关问题是,假设两个写入请求或两个读取请求同时执行。它们是按顺序执行的吗?即,一旦执行了一个任务,就只执行下一个任务,还是每个请求都会以循环方式在某个时间间隔内执行?

这取决于操作系统的输入/输出调度程序参见此 PDF

调度程序还可能根据设备类型(例如,旋转磁盘有“寻道时间”延迟,但闪存没有)、设备是否支持排队请求(例如 SATA AHCI 支持一次发送多个请求,但 IDE 实际上不支持)以及其他因素。

相关内容