块设备是与字符设备并列的概念,这两类设备(一共三类,还有一类是网络设备)在 Linux 中的驱动结构有较大差异。总体而言,块设备驱动比字符设备驱动复杂得多,在 I/O 操作上也有极大的不同。缓冲、I/O 调度、请求队列等都是与块设备驱动相关的概念。
块设备的 I/O 操作特点
块设备 I/O 操作与字符设备的不同之处如下:
- 块设备只能以块为单位接收输入和返回输出,而字符设备则以字节为单位。大多数设备是字符设备,因为它们不需要缓冲而且不以固定块大小进行操作。
- 块设备对于 I/O 请求有对应的缓冲区,故它们可以选择以什么顺序进行响应,而字符设备无须缓冲且被直接读写。对存储设备而言,调整读写的顺序作用巨大,因为在读写连续的扇区的存储速度比分离的扇区更快。
- 字符设备只能顺序读写,而块设备能随机访问。
