您的位置:首页 > 运维架构 > Linux

块设备驱动程序

2016-06-28 17:09 531 查看
块设备是一种能随机访问的存储介质,与字符设备不同,块设备能够保存文件系统数据。

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 
结束一个请求
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  linux