块设备驱动程序
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块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 socket 初步
- Linux Kernel 4.0 RC5 发布!
- linux lsof详解
- linux 文件权限
- Linux 执行数学运算
- 10 篇对初学者和专家都有用的 Linux 命令教程
- Linux 与 Windows 对UNICODE 的处理方式
- Ubuntu12.04下QQ完美走起啊!走起啊!有木有啊!
- 解決Linux下Android开发真机调试设备不被识别问题
- 运维入门
- 运维提升
- Linux 自检和 SystemTap
- Ubuntu Linux使用体验
- c语言实现hashmap(转载)
- Linux 信号signal处理机制
- linux下mysql添加用户
- Scientific Linux 5.5 图形安装教程
- Linux 下无损图片压缩小工具介绍