1. 块设备驱动程序简介
- 块设备驱动程序提供了面向数据块的设备的访问
- 块设备驱动一般以随机的方式传输数据,并且数据总是具有固定大小的块。
- 典型的块设备是磁盘驱动器类设备。
块设备驱动程序简介
- 块设备驱动接口相对复杂,字符设备接口简单。
- 块设备驱动程序对整个系统的性能影响较大,速度和效率是设计块设备驱动要重点考虑的问题。
- 系统中使用缓冲区与访问请求的优化管理(合并与重新排序)来提高系统性能。
- 块设备驱动不可以通过节点直接访问。
- 它需要通过文件系统挂载到目录下访问。当执行mount时则open。Umount时则release.
块设备和字符设备的区别
LINUX MTD 系统层次
2. 块设备的I/O操作特点
- 块设备只能以块为单位接受输入和返回输出。字符设备则是以字节为单位。
- 块设备对于I/O请求有对应的缓冲区。字符设备则直接读写。
- 块设备可随机访问。字符设备只能顺序读写。
3. 块设备驱动的结构
3.1block_device_operations结构体
在块设备驱动中,有1个类似于字符设备驱动中file_operations结构体的block_device_operations结构体,是对块设备操作的集合:
struct block_device_operations
{
int(*open)(struct inode *, struct file*); //打开
int(*release)(struct inode *, struct file*); //释放
int(*ioctl)(struct inode *, struct file *, unsigned, unsignedlong); //ioctl
int(*media_changed)(struct gendisk*); //介质被改变
int(*revalidate_disk)(struct gendisk*); //使介质有效
int(*getgeo)(struct block_device *