Linux 是一个广泛使用的开源操作系统,它支持各种类型的设备,包括块设备。块设备是一种可以按照固定大小的块进行读写的设备,例如硬盘,光盘,U盘等。Linux 如何管理和访问这些块设备呢?本文将介绍 Linux 块设备驱动的基本概念,结构和实现方法,以及如何编写一个简单的块设备驱动程序。
1、块设备的I/O操作特点
字符设备与块设备的区别:
块设备只能以块为单位接受输入和返回输出,而字符设备则以字符为单位。
块设备对于I/O请求有对应的缓冲区,因此它们可以选择以什么顺序进行响应,字符设备无需缓冲区且直接被读写。
字符设备只能被顺序读写,而块设备可以随机读写。 但是对于磁盘等机械设备而言,顺序的组织块设备的访问可以提高性能
总体而言,块设备驱动比字符设备驱动要复杂得多,在I/O操作上表现出极大的不同,缓冲、I/O调度、请求队列等都是与块设备驱动相关的概念。
image-20230514214246545
对于扇区1、10、3、2的请求被调整为对扇区1、2、3、10的请求。但是对于SD卡、RAMDI