参考文章: https://blog.csdn.net/hguisu/article/details/7408047 https://blog.csdn.net/weixin_44395686/article/details/105206139

1、磁盘结构

本文档主要以查找、写入数据为主 只记录主要部分,方便回顾 详情参见参考文章

磁盘主要是有磁臂、主轴、盘片构成。

  1. 盘片用来存储数据,每个盘片正反面都可以存储数据。
  2. 主轴是用来寻找给定扇区的,也就是常说的旋转时间。
  3. 磁臂是用来控制磁头的。磁头是真真写数据的部件,同时磁臂也会控制磁头移动到给定磁道上面,这个也是常说的寻道时间。所有盘片的同一个磁道形成一个柱面,写入数据的时候优先写柱面,也即同一磁道,自上而下先写满,然后才会移动磁头更换下一磁道,朝下一个柱面写数据。主要磁头是电子切换,比慈臂选择时间快的多。
  4. 扇区是同一个磁道被划分成了多个数据段,是一个扇形区域,默认一个扇区512字节,磁盘读取数据扇区为基本单位

image.png
image.png

2、磁盘寻址

详情参见: https://blog.csdn.net/weixin_44395686/article/details/105206139

2.1、CHS

就是传统的根据柱面、磁头、扇区定位到具体的扇区地址

2.2、LBA

就是将3唯寻址变为1唯寻址,给定逻辑扇区号即可有磁盘控制器转换为具体地址。此方法可以保证不同磁道扇区数量不同,增加数据容量。且CHS方式寻址数量有限,LBA模式下寻址范围更大

2.3、Example

image.png
可用扇区从2048到104857566,则文件系统格式化的时候按照给定区间的逻辑序号即2048~104857566位逻辑可用扇区

3、读取数据工作过程

  1. 文件系统计算出要读取的逻辑扇区,填充参数给磁盘控制器
  2. 磁盘读取数据到磁盘缓冲区
  3. 缓冲区满或者数据读取完成,触发中断
  4. DMA组件将数据拷贝到内核buffer
  5. CPU拷贝buffer数据到用户态buffer