块设备驱动程序

来源:互联网 发布:网络直播合同范本 编辑:程序博客网 时间:2024/06/06 00:24

块设备是一种能随机访问的存储介质,与字符设备不同,块设备能够保存文件系统数据。

linux块IO层

存储介质包含了驻留于文件系统中的文件,用户应用程序唤醒IO系统调用来访问这些文件,相关文件系统操作在到达各自文件系统驱动程序前,会先经过通用VFS(virtual file system)虚拟文件系统,高速缓冲区通过缓冲磁盘块来加速文件系统对块设备的访问。如果能够再高速缓冲区中找到块,就可以通过访问磁盘读取块的时间。每个块设备指定的数据在请求队列中排队。文件系统驱程序将请求加入指定块设备的请求队列,同时块驱动程序从相应的队列中取出请求。在这期间,IO调度器操控请求队列,是硬盘访问延时最小,同时吞吐量最大。

用户空间

 文件io


内核空间

VFS层


单个文件系统(EXT3,EXT4,JFFS2,VFAT)


缓冲区高速缓存(页面缓存)


IO调度

‘块驱动程序


存储媒介

磁盘


gendisk    include/linux/genhd.h  代表一个磁盘


bio include/linux/bio.h块IO操作的底层描述


内核编程


register_blkdev() block/genhd.c向内核注册一个块驱动程序

unregister_blkdev() block/genhd.c 从内核注销一个块驱动程序

rq_for_each_bio() include/linux/blkdev.h    遍历每个请求的bio

end_request() block/ll_rw_blk.c 结束一个请求

0 0
原创粉丝点击