【驱动】14.块设备驱动

【嵌入式八股】一、语言篇https://www.nowcoder.com/creation/manager/columnDetail/mwQPeM

【嵌入式八股】二、计算机基础篇https://www.nowcoder.com/creation/manager/columnDetail/Mg5Lym

【嵌入式八股】三、硬件篇https://www.nowcoder.com/creation/manager/columnDetail/MRVDlM

【嵌入式八股】四、嵌入式Linux篇(本专栏)https://www.nowcoder.com/creation/manager/columnDetail/MQ2bb0

块设备驱动

01_块设备驱动基本概念_哔哩哔哩_bilibili

硬件原理

块设备驱动基本概念

  • 数据传输以块为单位
  • 带有数据缓冲区,使得数据传输非实时可以根据需要优化
  • 缓冲区的数据读写顺序
  • 一般不用关心与内核相关的大量数据结构

磁盘的基本概念

  • 扇区(Sectors): 读写数据基本单位
  • 磁道:存储数据的介质,可以分解成多个扇区
  • 块(Blocks): 擦除数据基本单位
  • 柱面(cylinders): 是由多个不同磁盘的相同磁道组成的存储区域
  • 磁头: 读取磁盘数据的传感器,数量与磁盘保持一至
  • 磁盘的运行过程:电梯调度算法

应用编程

磁盘使用流程

  • 磁盘分区,相当于买了个大开间的房子,需要自己打隔断

    • fdisk /dev/ramdiska
  • 设备格式化,相当于给不同的隔断做装修

    • mkfs.vfat /dev/ramdiska
  • 挂载磁盘,拎包入住

    • mount /dev/ramdiska /media
  • 访问磁盘

    • 直接对设备文件进行读写
    • 直接对挂载点进行访问
    • 读写磁盘数据的时机
      • 缓冲区缓冲超时
      • 读写数据量足够大
      • 强制同步刷新缓冲区: sync卸载磁盘时,会刷新缓冲区

内核驱动

块设备数据结构

  • page是最终写入磁盘的数据,所以必须是连续的,
  • page是磁盘管理数据的颗粒度一般通用层的IO请示,也就是fs发起的,这些请示进入块设备之前,都可能被拆成多个更小的bio,主要是基于写平衡
  • 这些被拆分的bio,再通过一定规则将相邻的多个bio进行合并,合并成request
  • 而request就可以进入块设备了,但进入之前,一般还会进行数据优化调度
  • 最后再对request进行统一管理,会建立一个request queue,而request就放在这个请求队列,一个磁盘一般维护着一个

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

【嵌入式八股】嵌入式Linux 文章被收录于专栏

查阅整理上千份嵌入式面经,将相关资料汇集于此,主要包括: 0.简历面试 1.语言篇 2.计算机基础 3.硬件篇 4.嵌入式Linux【本专栏】 (建议PC端查看)

全部评论

相关推荐

评论
点赞
2
分享
牛客网
牛客企业服务