参考文章: https://blog.csdn.net/hguisu/article/details/7408047 https://blog.csdn.net/weixin_44395686/article/details/105206139
1、磁盘结构
本文档主要以查找、写入数据为主 只记录主要部分,方便回顾 详情参见参考文章
磁盘主要是有磁臂、主轴、盘片构成。
- 盘片用来存储数据,每个盘片正反面都可以存储数据。
- 主轴是用来寻找给定扇区的,也就是常说的旋转时间。
- 磁臂是用来控制磁头的。磁头是真真写数据的部件,同时磁臂也会控制磁头移动到给定磁道上面,这个也是常说的寻道时间。所有盘片的同一个磁道形成一个柱面,写入数据的时候优先写柱面,也即同一磁道,自上而下先写满,然后才会移动磁头更换下一磁道,朝下一个柱面写数据。主要磁头是电子切换,比慈臂选择时间快的多。
- 扇区是同一个磁道被划分成了多个数据段,是一个扇形区域,默认一个扇区512字节,磁盘读取数据扇区为基本单位
2、磁盘寻址
详情参见: https://blog.csdn.net/weixin_44395686/article/details/105206139
2.1、CHS
2.2、LBA
就是将3唯寻址变为1唯寻址,给定逻辑扇区号即可有磁盘控制器转换为具体地址。此方法可以保证不同磁道扇区数量不同,增加数据容量。且CHS方式寻址数量有限,LBA模式下寻址范围更大
2.3、Example
可用扇区从2048到104857566,则文件系统格式化的时候按照给定区间的逻辑序号即2048~104857566位逻辑可用扇区
3、读取数据工作过程
- 文件系统计算出要读取的逻辑扇区,填充参数给磁盘控制器
- 磁盘读取数据到磁盘缓冲区
- 缓冲区满或者数据读取完成,触发中断
- DMA组件将数据拷贝到内核buffer
- CPU拷贝buffer数据到用户态buffer