问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

磁盘的工作原理及组成:从物理结构到逻辑寻址

创作时间:
作者:
@小白创作中心

磁盘的工作原理及组成:从物理结构到逻辑寻址

引用
CSDN
1.
https://m.blog.csdn.net/sdfsoul/article/details/145729127

磁盘是计算机系统中最重要的存储设备之一,它的工作原理和组成结构对于理解计算机存储系统至关重要。本文将从磁盘的物理结构、存储结构到逻辑结构,层层递进,深入浅出地解释磁盘如何存储和读取数据。

前提引入

在理解文件系统之前,我们需要先理解文件的基本概念。在计算机中,文件可以被看作是内容和属性的组合。当文件被打开时,其内容会被加载到内存中,通过基础I/O操作(如read()write())进行读写。操作系统通过文件描述符(File Descriptor)来管理打开的文件。由于内存中的数据是临时状态,因此在关闭文件后需要将其保存回磁盘。未打开的文件则持久化存储在磁盘上,以二进制形式保存。文件系统通过目录结构和索引机制记录文件的位置。因此,磁盘上的存储需要文件系统进行管理维护。


理解硬件

机械磁盘、服务器、机柜、机房

机械磁盘是计算机中唯一的机械设备。拆开后的磁盘内部俯视图如下:

盘片并不是光滑的,可以用磁铁的工作原理来想象,磁铁有南北极,可以用来代表二进制中的0和1,所以无数个小的磁铁在盘片表面汇聚,用不同的二进制序列来形成数据,然后通过磁头来读取数据,这样就是磁盘表面的工作原理。

服务器就是由网络设备和磁盘组成,每一个方块都是一个磁盘盒,企业级的服务器并不是所有的磁盘都是性能好的,对于长期不使用的数据会使用效率低的磁盘进行保存,降低成本。

机柜用来放多台服务器。

机房用来管理机柜。机房成本极高,只有大企业才会去建机房。机房最怕的就是起火,这是由于磁受热后会消磁,昂贵的不是机器,而是数据!

磁盘物理结构

磁盘的存储结构

拆开所看到俯视图的磁盘并不是真正的结构,磁盘实际上是有多个盘片,多个面组成,多少面对应多少个磁头。每一面由磁道组成,磁道中对应的扇区就是磁盘存储数据的基本单位,一个扇区是512字节。所以当对扇区内数据进行操作时需要将整个扇区加载到内存。

所有的扇区都是同轴转动,形成柱面,当磁盘写入的时候是对柱面进行批量写入。磁头在传动臂的带动下,共进退,但是在工作的时候根据需要,部分磁头工作,部分不工作。当读取文件数据时,多个磁头在不同面进行读取或写入。



如何定位磁盘扇区

磁盘扇区的定位通过以下三步实现,涉及机械硬盘的物理结构和工作原理:

  1. 定位磁头(Head)
  • 作用:选择要操作的盘面。
  • 实现:磁盘由多个叠放的盘片组成,每个盘片有两个磁头(上下面各一)。通过激活对应编号的磁头(如Head 0Head 1),选择具体盘面进行读写。
  • 示例:若磁盘有 3 个盘片,则共有 6 个磁头(每面一个)。选择Head 3即操作第二个盘片的上表面。
  1. 确定柱面/磁道(Cylinder)
  • 作用:确定磁头要访问的“同心圆轨道”。
  • 实现:所有盘片上相同半径的磁道组成一个柱面(例如,6 个盘片的第 5 磁道共同构成Cylinder 5)。磁头臂横向移动,将磁头对齐到目标磁道的位置。
  • 意义:同一柱面不同盘面的数据可被快速连续读取,减少磁头移动耗时。
  1. 定位扇区(Sector)
  • 作用:在磁道上找到具体的数据块。
  • 实现:磁盘高速旋转(如 7200 RPM),磁头静止在目标磁道上。通过扇区编号(如Sector 12)或时间标记,等待目标扇区旋转到磁头正下方。触发读写操作。
  • 关键点:扇区是磁盘最小存储单元(传统为 512 字节,现代硬盘支持 4K 字节)。扇区位置由磁盘旋转速度和控制器时序控制。

完整流程示例

假设要读取Cylinder 100, Head 2, Sector 45的数据:

  1. 移动磁头臂到第 100 号柱面。
  2. 激活第 2 号磁头,选择对应盘面。
  3. 磁盘旋转至第 45 号扇区经过磁头时,读取数据。

如果读写失败,等待下次旋转抵达,一直失败就一直等待,读写的准确率就是企业级磁盘和桌面级磁盘的区别,也有成本和价格决定。

磁盘容量 = 磁头数 × 磁道(柱面)数 × 每道扇区数 × 每扇区字节数

柱面(cylinder),磁头(head),扇区(sector),显然可以定位数据了,这就是数据定位(寻址)方式之一,CHS寻址方式。

磁盘的逻辑结构

理解过程

当磁带卷起来的时候也类似于磁盘那样由磁道组成的同心圆,但是拉出来后就是线性结构。所以磁盘也可以类比成这样的线性结构,将磁道断开,然后拉直形成线性结构,每一个结构存储单元是一个扇区。

一个磁道就是如下结构。

多个磁道链接到一起就是如下结构。

这样每一个扇区,就有了一个线性地址(其实就是数组下标),这种地址叫做LBA

每个磁道的扇区从1开始,磁头和柱面从0开始。

实际上还是使用CHS定位,但是在逻辑上可以这么认为,有几个盘面就是几个数组,每个数组就是多个磁道组成的。所以磁盘这样看来,就是线性结构!现在定位一个位置只需要一个数字(数组下标)。

真实过程

一个细节:传动臂上的磁头是共进退的

柱面是一个逻辑上的概念,其实就是每一面上,相同半径的磁道逻辑上构成柱面。

所以,磁盘物理上分了很多面,但是在我们看来,逻辑上,磁盘整体是由“柱面”卷起来的。

所以磁盘真实情况是:

即:一维数组

柱面:

整个磁盘所有盘面的同一个磁道,即柱面展开:

就类似于将一个圆柱的侧面剪开。

柱面上的每个磁道的扇区个数是一样的,形成的结构就是二维数组。

整盘:

整个磁盘不就是多张二维的扇区数组表。

所有,寻址一个扇区:先找到哪一个柱面(Cylinder) ,在确定柱面内哪一个磁道(其实就是磁头位置,Head),在确定扇区(Sector),所以就有了CHS。

其实全部都是一维数组,对柱面和磁道也进行编号,全部连接在一起也是一个一维数组。

所以,每一个扇区都有一个下标,我们叫做LBA(Logical Block Address)地址,其实就是线性地址。所以怎么计算得到这个LBA地址呢?

在操作系统看来,只需指定逻辑块号,无需关心磁盘物理结构,通过LBA地址即可。

LBA为操作系统提供统一接口,屏蔽物理细节。转换工作由磁盘固件完成,通过电路伺服系统,操作系统只需操作逻辑地址。

OS为什么要使用LBA呢?

不同磁盘的物理结构差异巨大(例如,柱面数、磁头数、扇区数不同)。若操作系统直接使用 CHS,需适配所有硬盘型号,极为复杂。而使用LBA,操作系统只需指定逻辑块号,无需关心磁盘物理结构。

CHS与LBA转换

CHS 转 LBA 的公式推导:

假设已知以下磁盘参数:

  • 每磁道扇区数:S

  • 磁头数:H

  • 当前 CHS 地址:(C, H, S)

  • 磁头数 × 每磁道扇区数 = 单个柱面的扇区总数

  • LBA = 柱面号C × 单个柱面的扇区总数 + 磁头号H × 每磁道扇区数 + 扇区号S - 1

  • 即:LBA = 柱面号C × (磁头数 × 每磁道扇区数) + 磁头号H × 每磁道扇区数 + 扇区号S - 1

  • 扇区号通常是从1开始的,而在LBA中,地址是从0开始的

  • 柱面和磁道都是从0开始编号的

总柱面,磁道个数,扇区总数等信息,在磁盘内部会自动维护,上层开机的时候,会获取到这些参数。

LBA 转 CHS 的公式推导:

已知:

  • LBA 地址:LBA

  • 磁盘参数:H(磁头数)、S(每磁道扇区数)

  • 柱面号C = LBA // (磁头数*每磁道扇区数)【就是单个柱面的扇区总数】

  • 磁头号H = (LBA % (磁头数*每磁道扇区数)) // 每磁道扇区数

  • 扇区号S = (LBA % 每磁道扇区数) + 1

  • "//":表示除取整

从此往后,在磁盘使用者看来,根本就不关心CHS地址,而是直接使用LBA地址,磁盘内部自己转换。

所以,从现在开始,磁盘就是一个元素为扇区的一维数组,数组的下标就是每一个扇区的LBA地址。OS使用磁盘,就可以用一个数字访问磁盘扇区了。

一维数组和三维数组的转换。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号