基于块设备框架的驱动分析

本文详细介绍了基于块设备框架的驱动分析,探讨块设备驱动的特性,包括随机访问效率和缓冲区管理。通用块层抽象出通用的块设备,I/O调度层优化访问效率。此外,文章还讨论了mmc驱动中版本识别问题及其解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

基于块设备框架的驱动分析

有关块设备,详见块设备简介

1.块设备驱动的一些特性

  • 字符设备只能顺序访问(如串口发送数据顺序),而块设备可以随机访问(不连续块访问)
  • 传统的机械式块设备(如硬盘、DVD)虽然可以随机访问,但是连续访问效率更高,因此块设备驱动中有排序逻辑,将用户的随机访问重新调整成尽量连续访问以提升效率。所以块设备本身驱动层是支持缓冲区的,而字符设备驱动层没有缓冲
  • 但是对于Nand、SD卡等块设备,其随机访问效率和顺序访问是一样的
  • 和块设备有关的单位

    • 扇区(Sector),概念来自于早期磁盘,在硬盘、DVD中还有用,在Nand/SD中已经没意义了,扇区是块设备本身的特性,大小一般为512的整数倍,因为历史原因很多时候都向前兼容定义为512
    • 块(block),概念来自于文件系统,是内核对文件系统数据处理的基本单位,大小为若干个扇区,常见有512B、1KB、4KB等
    • 段(Section),概念来自于内核,是内核的内存管理中一个页或者部分页,由若干个连续为块组成
    • 页(Page),概念来自于内核,是内核内存映射管理的基本单位。linux内核的页式内存映射名称来源于此

      块设备驱动对下以扇区(Sector)为单位管理块设备,对上以Block为单位和文件系统交互。

  • 块设备驱动和字符设备驱动不同,应用层对块设备驱动的访问一般不是直接操作设备文件(虽然系统提供了/dev/mmcblk0这类文件供我们读写),而是通过文件系统来简洁操作(因为块设备的意义基本就是承载文件系统。。)

2.块设备操作框图

下图表明了当我们读写文件时,系统究竟是如何操作块设备的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值