基于块设备框架的驱动分析
有关块设备,详见块设备简介
1.块设备驱动的一些特性
- 字符设备只能顺序访问(如串口发送数据顺序),而块设备可以随机访问(不连续块访问)
- 传统的机械式块设备(如硬盘、DVD)虽然可以随机访问,但是连续访问效率更高,因此块设备驱动中有排序逻辑,将用户的随机访问重新调整成尽量连续访问以提升效率。所以块设备本身驱动层是支持缓冲区的,而字符设备驱动层没有缓冲
- 但是对于Nand、SD卡等块设备,其随机访问效率和顺序访问是一样的
和块设备有关的单位
- 扇区(Sector),概念来自于早期磁盘,在硬盘、DVD中还有用,在Nand/SD中已经没意义了,扇区是块设备本身的特性,大小一般为512的整数倍,因为历史原因很多时候都向前兼容定义为512
- 块(block),概念来自于文件系统,是内核对文件系统数据处理的基本单位,大小为若干个扇区,常见有512B、1KB、4KB等
- 段(Section),概念来自于内核,是内核的内存管理中一个页或者部分页,由若干个连续为块组成
页(Page),概念来自于内核,是内核内存映射管理的基本单位。linux内核的页式内存映射名称来源于此
块设备驱动对下以扇区(Sector)为单位管理