Linux系统之----磁盘硬件
1.磁盘的物理结构
磁盘的物理结构可以概括为以下几个主要部分:
1. 主轴(马达):主轴是硬盘的核心组件之一,它通过电机驱动磁盘片高速旋转,常见的转速有5400RPM、7200RPM、10000RPM和15000RPM等。主轴电机用于旋转盘片,使其以高速旋转。通常,机械硬盘的转速为5400转/分钟、7200转/分钟或更高。
2. 磁盘片(相当于纸):磁盘片是存储数据的物理载体,通常由铝、玻璃或陶瓷等材料制成,表面涂有一层磁性材料。磁盘片的正反两面都可存储数据,一个磁盘(如一个1T的机械硬盘)由多个盘片叠加而成。盘片的表面涂有磁性物质,这些磁性物质用来记录二进制数据。
3. 磁头(相当于笔):磁头是用于读取和写入数据的装置,一般盘片的上下都有磁头,位于磁头臂上,每个磁头上都有读和写的操作装置。磁头通过识别磁盘磁粒的极性来读取数据,也可以利用其变化的磁场改变磁盘磁粒的极性,实现写入和改写数据。
4. 磁头臂(Actuator Arm):磁头臂是支持磁头的可移动臂,通过电动机或电磁力控制,可以使磁头在盘片上移动到不同的磁道位置。磁头臂是连接磁头和磁盘驱动器主体的部件,它负责移动磁头到指定的位置。
5. 永磁铁:永磁铁用于磁头臂的驱动,通过磁力控制磁头臂的移动。磁头的驱动臂是由铜线制成的平直的电磁线圈,悬浮在永久磁铁的磁极间。
6. 盘片组:在多磁盘片的硬盘中,多个磁盘片叠放在一起,形成一个盘片组。每个磁盘片的上下两面都可以存储数据。
附图一张:
2.磁盘的存储结构
a)是一个盘片的平面图,上面有一圈一圈的东西,我们称之为磁道,在一个磁道上会有很多个小间隙将这个磁道分为若干份,这里我们称每一小份都为一个扇区(sector,是磁盘存储数据的基本单位,512字节,块设备),b)是多个盘片组合而成的结构
那数据是怎么读取的呢?请看下图
当我们读取数据时, 我们的磁盘会以一定速度旋转,同时我们的磁头也在左右摆动,在寻找读取的位置,磁头是和传动臂相连的,磁头和盘面是一对一的,一面一个磁头,并且这些磁头是共进退的,因为都连到一个传动臂上了,应该不需要多解释吧?之后还要补充一点概念,叫做柱面,就是指磁道,相同半径的磁道看做一个整体。如下图所示:
好!那问题来了,如何去定位一个扇区呢?
在这里,我们可以可以先定位磁头(header) ,再确定磁头要访问哪⼀个柱面(磁道)(cylinder),最后再定位⼀个扇区(sector)
3.磁盘的逻辑结构
我们先看一位老朋友:
这个大家应该都见过吧?我小时候还给拉开过,对就是磁带,这上面可以存储数据
我们要是把磁带拉直的话是不是就这样了?
好!想象一下我们把磁盘也给拉直了,是不是就是这样的?
这样每一个扇区,就有了一个线性地址(其实就是数组下标),这种地址叫做LBA
所以逻辑上,我们可以理解为磁盘整体是由“柱面”卷起来的。
因此当我们将磁道展开,就是一个一维数组!
将柱面展开,就是个三维数组!如下图所示
但是我们才C/C++角度看,这三维数组本质上不也是个一维数组吗?
4. CHS && LBA地址
这里给大家生成一个示例: