[操作体系] 文件体系基础:磁盘的工作原理及构成

打印 上一主题 下一主题

主题 980|帖子 980|积分 2940



前提引入

明确中,文件 = 内容 + 属性。


  • 被打开的文件

    • 加载到内存中,通过 基础I/O操作(如 <font style="color:rgb(64, 64, 64);">read()</font>、<font style="color:rgb(64, 64, 64);">write()</font>)举行读写。
    • 操作体系通过 文件形貌符(File Descriptor)管理打开的文件。
    • 内存中的数据是临时状态,关闭文件后需生存回磁盘。

  • 未打开的文件

    • 长期化存储在 磁盘 上,以二进制情势生存。
    • 文件体系通过 目录结构索引机制 纪录文件的位置。

以是磁盘上的存储需要文件体系举行管理维护。
明确硬件

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

机械磁盘是计算机中唯一的机械装备。

拆开后的磁盘内部俯视图如下:

盘片并不是光滑的,可以用磁铁的工作原理来想象,磁铁有南北极,可以用来代表二进制中的0和1,以是无数个小的磁铁在盘片表面汇聚,用不同的二进制序列来形成数据,然后通过磁头来读取数据,这样就是磁盘表面的工作原理。
服务器就是由网络装备和磁盘构成,每一个方块都是一个磁盘盒,企业级的服务器并不是全部的磁盘都是性能好的,对于长期不使用的数据会使用效率低的磁盘举行生存,低落本钱。

机柜用来放多台服务器。

机房用来管理机柜。机房本钱极高,只有大企业才会去建机房。

机房最怕的就是起火,这是由于磁受热后会消磁,昂贵的不是呆板,而是数据!
磁盘物理结构


磁盘的存储结构


拆开所看到俯视图的磁盘并不是真正的结构,磁盘现实上是有多个盘片,多个面构成,多少面临应多少个磁头。
每一面由磁道构成,磁道中对应的扇区就是磁盘存储数据的根本单位,一个扇区是512字节。以是当对扇区内数据举行操作时需要将整个扇区加载到内存。
全部的扇区都是同轴转动,形成柱面,当磁盘写入的时候是对柱面举行批量写入。磁头在传动臂的带动下,共进退,但是在工作的时候根据需要,部分磁头工作,部分不工作。当读取文件数据时,多个磁头在不同面举行读取或写入。


如何定位磁盘扇区–<font style="color:rgb(31,35,41);">CHS</font>地点定位

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

定位磁头(Head)



  • 作用:选择要操作的盘面。
  • 实现
    磁盘由多个叠放的盘片构成,每个盘片有两个磁头(上下面各一)。
    通过激活对应编号的磁头(如 <font style="color:rgb(64, 64, 64);">Head 0</font>、<font style="color:rgb(64, 64, 64);">Head 1</font>),选择详细盘面举行读写。
  • 示例
    若磁盘有 3 个盘片,则共有 6 个磁头(每面一个)。选择 <font style="color:rgb(64, 64, 64);">Head 3</font> 即操作第二个盘片的上表面。

确定柱面/磁道(Cylinder)



  • 作用:确定磁头要访问的“同心圆轨道”。
  • 实现

    • 全部盘片上雷同半径的磁道构成一个柱面(例如,6 个盘片的第 5 磁道共同构成 <font style="color:rgb(64, 64, 64);">Cylinder 5</font>)。
    • 磁头臂横向移动,将磁头对齐到目标磁道的位置。

  • 意义
    同一柱面不同盘面的数据可被快速连续读取,减少磁头移动耗时。

定位扇区(Sector)



  • 作用:在磁道上找到详细的数据块。
  • 实现

    • 磁盘高速旋转(如 7200 RPM),磁头静止在目标磁道上。
    • 通过 扇区编号(如 <font style="color:rgb(64, 64, 64);">Sector 12</font>)或 时间标记,等待目标扇区旋转到磁头正下方。
    • 触发读写操作。

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

  • 关键点

    • 扇区是磁盘最小存储单位(传统为 512 字节,当代硬盘支持 4K 字节)。
    • 扇区位置由磁盘旋转速率和控制器时序控制。


完整流程示例

假设要读取 <font style="color:rgb(64, 64, 64);">Cylinder 100, Head 2, Sector 45</font> 的数据:

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

⽂件 = 内容+属性 都是数据,⽆⾮就是占据那⼏个扇区的问题。能定位⼀个扇区了,能不能定位多个扇
区呢?

扇区是从磁盘读出和写⼊信息的最⼩单位,通常⼤⼩为 512 字节。


  • 磁头(head)数:每个盘⽚⼀般有上下两⾯,分别对应1个磁头,共2个磁头
  • 磁道(track)数:磁道是从盘⽚外圈往内圈编号0磁道,1磁道…,靠近主轴的同⼼圆⽤于停靠磁 头,不存储数据。
  • 柱⾯(cylinder)数:磁道构成柱⾯,数目上等同于磁道个数
  • 扇区(sector)数:每个磁道都被切分成很多扇形地区,每道的扇区数目雷同
  • 圆盘(platter)数:就是盘⽚的数目
   磁盘容量 = 磁头数 × 磁道(柱⾯)数 × 每道扇区数 × 每扇区字节数
  柱⾯(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 的公式推导:

假设已知以下磁盘参数:
  1. - **<font style="color:rgb(64, 64, 64);">每磁道扇区数</font>**<font style="color:rgb(64, 64, 64);">:</font>`<font style="color:rgb(64, 64, 64);">S</font>`
  2. - **<font style="color:rgb(64, 64, 64);">磁头数</font>**<font style="color:rgb(64, 64, 64);">:</font>`<font style="color:rgb(64, 64, 64);">H</font>`
  3. - **<font style="color:rgb(64, 64, 64);">当前 CHS 地址</font>**<font style="color:rgb(64, 64, 64);">:</font>`<font style="color:rgb(64, 64, 64);">(C, H, S)</font>`
复制代码


  • 磁头数 × 每磁道扇区数 = 单个柱⾯的扇区总数
  • LBA = 柱⾯号C × 单个柱⾯的扇区总数 + 磁头号H × 每磁道扇区数 + 扇区号S - 1
  • 即:LBA = 柱⾯号C × (磁头数 × 每磁道扇区数) + 磁头号H × 每磁道扇区数 + 扇区号S - 1
  • 扇区号通常是从1开始的,⽽在LBA中,地点是从0开始的
  • 柱⾯和磁道都是从0开始编号的
总柱⾯,磁道个数,扇区总数等信息,在磁盘内部会⾃动维护,上层开机的时候,会获取到这些参数。

LBA 转 CHS 的公式推导:

已知:
  1. - **<font style="color:rgb(64, 64, 64);">LBA 地址</font>**<font style="color:rgb(64, 64, 64);">:</font>`<font style="color:rgb(64, 64, 64);">LBA</font>`
  2. - **<font style="color:rgb(64, 64, 64);">磁盘参数</font>**<font style="color:rgb(64, 64, 64);">:</font>`<font style="color:rgb(64, 64, 64);">H</font>`<font style="color:rgb(64, 64, 64);">(磁头数)、</font>`<font style="color:rgb(64, 64, 64);">S</font>`<font style="color:rgb(64, 64, 64);">(每磁道扇区数)</font>
复制代码


  • 柱⾯号C = LBA // (磁头数*每磁道扇区数)【就是单个柱⾯的扇区总数】
  • 磁头号H = (LBA % (磁头数*每磁道扇区数)) // 每磁道扇区数
  • 扇区号S = (LBA % 每磁道扇区数) + 1
  • <font style="color:rgb(31,35,41);">"//"</font>: 表⽰除取整
从此以后,在磁盘使⽤者看来,根本就不关⼼CHS地点,⽽是直接使⽤LBA地点,磁盘内部⾃⼰
转换。
以是,从现在开始,磁盘就是⼀个元素为扇区的⼀维数组,数组的下标就是每⼀个扇区的LBA地点。OS使⽤磁盘,就可以⽤⼀个数字访问磁盘扇区了。
   一维数组和三维数组的转换。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

风雨同行

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表