#硬盘 #计算机组成
有时间学习一下基础知识,这方面网络上有很多的资料,所以有很多借鉴的部分。被借鉴的文章都罗列在参考资料中。
机械硬盘结构图
用来保存数据。一个磁盘由多个盘片组成,一个盘片有正反两个盘面可以读写数据。磁盘面从 0 开始编号,因为每个盘面都会有一个磁头,所以这个也是磁头的编号。现在硬盘一般会有几片到十几二十片不等的盘片,也就意味着会有几十个磁盘面。
磁头用于从磁盘上读取数据,在一个磁头上有两个小磁头,一个是读磁头一个是写磁头。磁头极其贴近的悬浮在磁盘上,但是绝对不与盘面接触,否则会出现“头损坏”或者磁盘损坏。磁头读出经过它下面的盘面的磁方向,也可以改变其磁方向,以便在磁盘上写入信息。
一个硬盘里磁头并不是只有一个磁头,上图就是4个磁头,也可以有更多的比如6个磁头。两个磁头读一个磁盘的正反面,所以磁盘的数量是磁头的一半,但是磁盘有两面,所以磁盘面的数量和磁头一样。
磁头摆臂控制磁头位置,把磁头送到指定磁道。主轴控制磁盘旋转,把指定位置移动到磁头下。磁头摆臂配合主轴才能定位到数据的位置。
磁道是单个盘面上的同心圆。磁盘看起来是一个完整的圆盘,实际上内部分了多个磁道(在2008年,一个典型的磁盘上每英寸有大约10W个磁道,大约能存储100W个二级制位)。
扇区是被间隙分隔的圆的片段。间隙未被磁化成0或1。就读写磁盘而言扇区是不可分隔的单位,
硬盘通常由重叠的一组盘片构成,每个盘面都被划分为数目相等的磁道,磁道从外缘的0开始编号,具有相同编号的磁道形成一个圆柱,称之为磁盘的柱面。也可以这么理解:所有盘面上半径相同的磁道构成了柱面。
机械硬盘读写数据可以分成三个步骤:地址转换、物理定位、数据读写。
需要用硬盘进行读写的时候,操作系统需要告诉硬盘需要读写的数据所在的位置,为了方便记录数据所在的位置,人们为每个扇区定义了一个唯一的编号即 逻辑扇区号(LBA,Logical Block Address 逻辑地址块) 。
逻辑扇区号
=
(
柱面号总磁头数
+
磁头编号
)
?
每个磁道有多少个扇区
+
扇区编号
?
1
逻辑扇区号 = (柱面号总磁头数+磁头编号) * 每个磁道有多少个扇区 + 扇区编号 - 1
逻辑扇区号=(柱面号总磁头数+磁头编号)?每个磁道有多少个扇区+扇区编号?1
由于扇区实在是太小了,磁头从数量庞大的扇区中找出来目标扇区实在很麻烦,所以操作系统又将相邻的扇区定义为一个“块”(在Linux系统中称为块,Windows系统中称为簇)。
扇区是磁盘最小的物理存储单元,也就是磁头每次读取数据的最小单位,磁头读数据都是一扇一扇来的;块/簇是操作系统对硬盘管理所使用的逻辑概念。
块可以包括多个扇区,比如2、4、8、16、32或者64个扇区(块的大小是在硬盘被格式化的时候指定的,一般有1K、2K、4K,其中4K比较常用)。操作系统规定,一个块只能放一个文件内容。所以,文件占用的空间只会是块的整数倍,即便是文件的实际大小小于一块那也得占一块的空间。
这里的物理定位指的是让磁头移动到指定的扇区起始点上,需要两个动作分别是寻道和旋转。
系统得到了数据的物理地址后告知磁盘,磁盘移动磁头摆臂到指定的磁道位置。磁头从开始移动到数据所在磁道所需要的时间就是寻道时间,目前磁盘的平均寻道时间一般在3-15ms,一般都在10ms左右。
磁盘主轴转动,把磁盘上对应的扇区转到磁头下。旋转所需的时间取决于磁盘转速。普通硬盘一般都是7200rpm(rpm是每分钟转动次数),慢的5400rpm。换算一下7200rpm约等于转一圈需要8.3ms,5400rpm约等于转一圈需要11.11ms。只有当要读写的扇区刚刚在磁头下经过才需要旋转一整圈,所以旋转的平均耗时估计也在5-10ms左右。
在磁盘和磁头都就到了指定位置后就需要通过磁头读写片面上的数据。
机械硬盘的盘片多数采用铝合金制成,盘面上会涂一层厚度约0.5mm左右的磁性材料,这层磁性材料其实就是极微小的磁化金属粒。
磁头将代表信息的“0”和“1”的电信号转化为磁信号。大体上是通过给电流给写磁头产生一个强大的磁场,改变底下盘片上经过的磁颗粒的极性,从而实现写入数据。
读取数据的时候,大体上就是检测底下磁颗粒经过让读磁头产生的电流,从而确定对应位置磁颗粒的极性,达到读取数据的目的。
“下载速度变慢、卡99%、电脑变卡”竟然是因为它!
程序员需要知道的SSD基本原理
SSD固态硬盘的结构和基本工作原理概述
硬盘三大种类(SSD;HHD;HDD)
《数据库系统实现 第二版》
机械硬盘拆解实录
浅谈机械磁盘相关概念:磁道、柱面、扇区、寻道时间、旋转延迟、数据传输时间
硬盘基本知识(磁头、磁道、扇区、柱面)
深入了解机械硬盘的读写原理和碎片的产生
科技简章032-机械硬盘
数字存储完全指南 02:机械硬盘的原理与参数详解