硬盘如何知道数据从哪里开始?

硬盘如何知道数据从哪里开始?

我一直想知道硬盘如何找到第一位数据。

当硬盘旋转时,它读取的任何内容都必须是循环数据流,直到读取头移动到不同的位置。

但是在这样的循环流中,驱动器如何知道第一位和最后一位在哪里,以便能够按照正确的顺序传递数据?

答案1

它从磁盘读取它。

磁盘上的数据不仅是结构化的(如@psusi 所说),而且是编码的。编码确保记录的数据不会与扇区标题中的位置标记混淆,因此可以读取循环流,直到找到目标位置标记。

据我所知,现代硬盘并不能完全做到这一点;它们将整个圆圈读入缓冲区,跟踪每个扇区的位置,并使用缓冲区发回请求的数据。

更新:

磁性介质是一种具有磁场的材料,具有两个关键特性:1) 它永远不会自行改变,2) 记录设备可以改变表面任何一点的磁场方向。读取介质时,传感器会检测磁场朝向传感器的位置以及远离传感器的位置。当传感器在表面上移动时,它会检测这些极性转换的时间;第一层解码是将这些时间转换成位值由于此过程中物理上必然存在的不确定性,编码不能要求同一极性的长延伸;也就是说,它必须是行程长度受限编码(远程线)。

硬盘设计的细节通常是商业机密,但基本上有两种方法可以确保扇区标记永远不会出现在扇区内容中:

  1. 设计一个 RLL,允许使用永远不会因编码内容数据而产生的特殊值。这些特殊值不仅可用于标记扇区边界,还可用于纠错或任何其他次要用途。

  2. 使用第二层编码,确保标记值仅出现在标记处。这有点像URL 编码允许在 URL 中“隐藏”特殊字符,但附加一个相当于限制可以添加多少个字符的限制,所以最终更像是base64 编码

因此,读取头在表面上移动以检测磁极性变化,这些变化的时间用于确定相应的位值序列(可能包括一些不代表存储数据的异常值),并且该序列用于确定正在读取哪些扇区以及这些扇区的内容。确定扇区的内容后,数据可以存储在固态缓冲器中和/或存储在 RAM 缓冲器中和/或发送回以满足请求。

答案2

数据不是以 1 和 0 的任意流形式写入的。数据是以扇区形式写入的。每个扇区都有用户数据的有效负载和一个标头。标头包含纠错码,以及一个用于标识扇区起始位置的特殊同步字段和扇区号,以便驱动器可以知道何时找到扇区的起始位置以及是哪个扇区。

答案3

Psusi 是正确的(磁盘上的数据是结构化的,并且计算机的不同部分使用该结构的不同部分),但并没有真正回答您的问题。

驱动器实际上并不“知道”任何事情。它具有低级电子设备,可以读取磁盘上的标记(通常在工厂写入,或由驱动器磁头本身写入),从磁盘读取数据块,或将数据块写入磁盘,或判断磁盘上的某个特定位置是否损坏或是否应该移动到磁盘上的某个特定位置。这就是它“知道”的全部。读取头不会自行决定移动到其他地方,机器中更高级别的某个东西会告诉它...

答案4

您正在寻找的答案分为两部分:

1)硬件控制器

2)文件系统

正如您所说,在 HDD 中(与 SSD 等其他技术相反),实际数据被写入圆形金属盘,这些金属盘是同心圆环,具有图案磁场。在保存这些数据的盘片上方是写入头,它会四处移动以读取和写入数据,就像黑胶唱片播放器一样。写入头移动的盘片连接到控制其旋转的电动机上。

硬件控制器充当操作系统和硬盘之间的接口。控制器可以读取写入头的位置以及盘片的旋转,并利用这些信息决定如何定位读写头和盘片。它将操作系统的读写请求转换为控制信号,以移动写入头和旋转盘片,并将来自操作系统的并行数据转换为单个串行数据线。它还会拆分此串行线并决定将每个部分放在哪个物理位置或扇区,并以文件系统指定的方式记录此信息。

文件系统是关于如何以及在何处存储数据的规范。计算机的操作系统知道如何解释这个文件系统,并利用这些知识与硬件控制器进行充分通信,在这种情况下,将数据的圆形环分解为可用的段(称为扇区),并告诉文件系统这些扇区的物理位置。文件系统为每个扇区提供一个地址,这只是一个唯一的数字,硬件控制器会将此地址转换为特定的盘片旋转和读取头位置,以开始读取或写入。

欲了解更多信息,维基百科文章中的以下部分非常有帮助:

请参阅此处的简介和第 3.1 节“空间管理”: https://en.wikipedia.org/wiki/File_system

请参阅此处的第 2.1 节“磁记录”: https://en.wikipedia.org/wiki/Hard_disk_drive#Magnetic_recording

相关内容