The Baseic of FS(filesystem)-4-Block Device Layer In Kernel

The Baseic of FS(filesystem)-4-Block Device Layer In Kernel

1,Overview:
从前面的文章分析可以知道,一次读文件的请求,最终会请求一个Inode结构体,Inode里面有一个i_sb就是指向一个硬盘分区的super_block信息,这就可以和实际的存储设备挂钩。

但真实的情况并不就是直接去请求存储设备数据。这其间还有GenDisk层,还是IO调试算法,缓存机制等等。
2,Block Device在Kernel的架构图
3,小结
块设备的I/O操作方式与字符设备存在较大的不同,因而引入了
request_queue、request、bio等一系列数据结构。在整个块设备的I/O操作中,贯穿于始终的就是“请求”,字符设备的I/O操作则是直接进行不绕弯,
块设备的I/O操作会排队和整合。
驱动的任务是处理请求,对请求的排队和整合由I/O调度算法解决,因此,块设备驱动的核心就是请求处理函数或“制造请求”函数。
尽管在块设备驱动中仍然存在block_device_operations结构体及其成员函数,但其不再包含读写一类的成员函数,而只是包含打开、释放及I/O控制等
与具体读写无关的函数。块设备驱动的结构相当复杂的,但幸运的是,块设备不像字符设备那么包罗万象,它通常就是存储设备,而且驱动的主体已经
由Linux内核提供,针对一个特定的硬件系统,驱动工程师所涉及到的工作往往只是编写少量的与硬件直接交互的代码。
TOP