免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1488 | 回复: 0
打印 上一主题 下一主题

[内核模块] TaLK linux kernel第一季 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-11-09 14:06 |只看该作者 |倒序浏览
本帖最后由 aprilava 于 2012-11-09 16:44 编辑

在这儿简单分析下通用块层的知识。先画了个图,也算一个linux大概的一个结构图吧,很简单的一个呵呵。画好了之后截了个图《IO流程结构图》,先对通用块层在哪个位置进行描述。为啥先分析通用块层,个人感觉这是一个比较有趣的地方,可以做自己想做的任何事情。

我想read、write系统调用大家应该比较熟悉了吧。不熟悉的可以通过man命令查询(man命令不熟悉的,可以阅读UNIX环境高级编程有关文件操作的章节)。
当大家在用户态调用一个read这么简单得系统调用时,它的生命就开始了。看似简单得一个系统调用,但是需要经历漫长的旅途才能到达终点。
1、首先要经过的是VFS(因为有战友表示对驱动很感兴趣,所以这次先整理驱动这块儿了,VFS待以后再整理)。
2、当经过VFS后,此时如果内存中已经有read想要的内容,那此时就很happy了,直接从内存中拷贝数据给read准备的缓冲区。
3、如果内存中没有想要的内容,那我们还是踏踏实实一步步来吧。进入了具体文件系统层。具体文件系统有很多了,目前常用的为(ext3、ext4)。这也是很大一个章节,待以后整理。但是在这儿要简单得说明下,具体文件系统会帮助read准确得查找到数据在磁盘上的位置。
4、经过文件系统,就到了我们要总结的通用块层啦
5、经过通用块层后就会到我们经常听到的“驱动”了。但是大家只知其一不知其二,这里的驱动并不一定是大家传统理解的嵌入式硬件的驱动、或者磁盘的驱动。注意:还可以是“过滤驱动”。至于什么是过滤驱动呢,大家想想过滤这个词就可以啦呵呵。这一层时纯软件设计,做你任何想做的事情。比如(RAID、LVM、multipath等知名linux开源项目)。
6、如果有过滤驱动,那经过过滤驱动就会到达磁盘真正的驱动程序。这里的驱动程序就和硬件息息相关了。此时就可以畅快淋漓的拷贝数据啦。拷贝到我们read提供的缓冲区里。

这样read的生命周期就结束了哦。

通用块层数据结构的描述,会继续追加。有啥不对的地方,希望各位战友拍砖

结构图.png (44.04 KB, 下载次数: 24)

结构图.png
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP