深入探究块设备驱动与FUSE文件系统
1. 块设备数据交换机制
在块设备操作中,数据的读写操作并非直接在设备操作表中实现。其工作流程如下:
1. 请求入队 :内核接收到读写请求后,将其放入与驱动关联的队列。
2. 请求排序 :内核会对队列中的请求进行重新排序,以优化请求执行顺序,例如减少硬盘磁头移动、合并相邻请求等。
3. 请求处理 :队列中的请求依次传递给驱动程序的处理函数。
4. 请求参数 :请求的方向(读写)和参数(起始扇区、扇区数量等)包含在请求结构体中。
单个块设备请求通常由多个相同类型(读写)的操作组成,这些操作的扇区和内存地址可能分散。驱动程序的任务就是处理这些请求。
2. 块设备模块示例
以 block_mod_s.c 为例,它实现了一个内存中的块设备。该模块包含一些通用的头文件,如 common.h :
#include <linux/module.h>
#include <linux/vmalloc.h>
#include <linux/blkdev.h>
#include <linux/genhd.h>
#include <linux/errno.h>
#include <linux/hdreg.h>
#include <lin
超级会员免费看
订阅专栏 解锁全文
64

被折叠的 条评论
为什么被折叠?



