块设备与字符设备I/O操作的不同如下:
独立的磁盘设备或分区(块设备实例)
1、块设备只能以块为单位接受输入和返回输出,而字符设备则以字节为单位。
2、块设备对于I/O请求有对应的缓冲区,因此可以选择以什么顺序进行响应;字符设备无须缓冲且被直接读写。
3、块设备可以随机访问,字符设备只能顺序读写。
Linux 块设备驱动结构
块设备操作集合
struct block_device_operations;
独立的磁盘设备或分区(块设备实例)
struct gendisk;
等待进行的I/O请求
struct request;
struct bio;
// 一个bio对应一个上层传递给块层的I/O请求,I/O调度算法可将连续的bio合并成一个request。request是bio经由块层进行调整后的结果,这是request和bio的区别。所以,一个request可以包含多个bio。