磁盘原理:从电磁感应说起

电流通过导体时,会在导体的周围会产生感应磁场。感应磁场的磁极随电流方向的改变而改变。

当闭合电路内的磁场发生变化(磁通量变化)时,闭合电路内会产生感应电动势。即闭合电路内磁场的变化会使电路内产生感应电流。 电流的方向与磁极方向有关。

磁头是一个外面被线圈缠绕着的U型磁芯,可以看出当磁头通电时便会产生磁场,磁场的方向随电流方向的变化而变化。

磁盘的表面涂有一层磁性物质,在未没有外部磁场影响的情况下,磁盘表面的磁性粒子的磁极方向是不会改变的。一般从未受到外部干扰的磁性粒子磁极方向是随机的,于是出现互相抵消的情况,这时磁盘的表现出无磁极显现。

写数据时磁头移到到磁盘要写入的位置,输入电流产生感应磁场。受磁场的影响,磁头下磁性粒子的磁极方向变为与磁场同向。如此通过给磁头不同的电流方向,使得磁盘局部产生不同的磁极,产生的磁极在未受到外部磁场干扰下是不会改变的。如此便将电信号持久化到磁盘上(当然并不是一个磁极方向代表1另一个代表0).

读取磁盘信息时,不通电的磁头在写入数据的位置上移动,上面可知数据在磁盘上就是一些磁极方向不同的微小局部区域,由于各个域的磁极方向不完全同,所以磁头在通过这些不同方向的区域时会产生不同方向的感应电流,这些微弱正负脉冲经过驱动的去噪扩大成为内存中的二进制数据。

在硬盘读写时,读操作是远快于写操作的,而且读/写操作具有完全不同的特性,所以目前的硬盘一般都分离出读和写两个磁头,但原理还是不变的。

硬盘主要由碟片、磁头、电机马达、接口和控制电路控制芯片组成。

碟片的表面涂有磁性材料,厚度一般在0.5mm左右。碟片安装在主轴马达的转轴上,工作时所有碟片在主轴马达的带动下高速旋转。

每个碟片都有正反两面,称为盘面。第1个碟片的正面称为0面,反面称为1面,第2个碟片的正面称为2面,反面称为3面...依次类推。每个盘面都有一个对应磁头负责读写该该盘面上的数据。盘面数和磁头数是相等的。

关机时,磁头停留在硬盘的停泊区。当磁盘工作时,磁头移动到盘面上分,依靠磁盘的高速旋转引起的空气动力效应悬浮在盘面上,与盘面的距离不到1微米。磁头在副轴马达的带动下可以在极短的时间内精确的切换到数据所在的磁道。

在碟片高速旋转时磁头保持不变,那么就会形成一个圆形的轨迹,这些同心的圆行轨迹就是磁道(Track)。数据保存在磁道上面。每个盘面上有多个磁道,但磁道之间并不是紧挨着的,因为磁化的单元挨的太近会互相影响。

在每个盘面的最外圈的磁道是“0”磁道,向盘心方向依次增长为1磁道,2磁...。数据从最外面的磁道开始存放。

盘面上可以划分出很多的磁道,每条磁道容量从100多到300多kb不等,但我们读写并不需要每次都读写这么多数据,所以又将磁道划分为若干更小的弧段,每段称为一个扇区(Sector)。扇区是磁盘进行读写操作的最小单位。

一般磁盘的一个扇区大小为512字节,这也就意味着哪怕我们只存放1字节的数据也会占用磁盘的一个扇区512个字节,读取时也会读取整个扇区的512个字节然后选择需要的哪个字节。

查看磁盘扇区大小:

扇区是硬盘的最小操作单位,但扇区对于操作系统来说还是太小了,一般操作系统有自己的硬盘操作最小单位,在linux下一般为4k

查看操作系统IO大小:

交叉因子为1的扇区划分:

柱面是抽象出来的一个逻辑概念,盘面被划分为1磁道,2磁道,3磁道....,不同盘面上相同编号的磁道组成了一个圆柱面,即柱面(Cylinder)。

磁盘读写数据是按柱面进行,即在读写时磁头先寻找到数据所在的柱面(寻找磁道),然后再判断数据所在的盘面。这样大大提升了磁盘的读写效率,因为盘面的确定是电子操作速度非常快,但磁道的寻找需要电动马达带动磁头移到到指定磁道上,是机械操作。

磁盘读写时耗 = 寻道时间 + 旋转延迟时间 + 操作时耗

寻道时间: 读写数据时磁头首先要移到到指定磁道(柱面),这段时间称为寻道时间

旋转延迟时间: 当磁头移动到指定磁道后,需要等待要操作的扇区旋转到磁头的下方,这段时间称为转延迟时间

操作时耗: 磁头进行读写操作花费的时间