版权声明:本文为博主原创文章,转载请注明出处:https://blog.youkuaiyun.com/huang_165/article/details/86302757
本博文参考ldd3实现一个内存虚拟磁盘,它的通过块设备驱动申请一些内存用作“磁盘容量”并将该磁盘格式化为ext4文件系统,实现和正常磁盘无异的文件创建、存放。
源码地址:https://github.com/Mr-jinfa/rk3399-project/tree/master/drv/ramdisk
块设备是与字符设备并列的概念,这两类设备在Linux 中的驱动结构有较大差异,总体而言,块设备驱动比字符设备驱动要复杂得多,在I/O 操作上也表现出极大的不同。缓冲、I/O 调度、请求队列等都是与块设备驱动相关的概念。
块设备的I/O 操作特点:
1)块设备只能以数据块为单位接收输入和返回输出,而字符设备则以字节为单位。
2)块设备对于I/O 请求有对应的缓冲区,因此它们可以选择以什么顺序进行响应。对于存储设备而言,调整读写的顺序作用巨大,因为在读写连续的扇区的存储速度比分离的扇区更快。
3)字符设备只能被顺序读写,而块设备可以随机访问。顺序地组织块设备的访问可以提高性能,对扇区1、10、3、2 的请求