- 6
- 0
- 约3.55千字
- 约 5页
- 2015-08-15 发布于重庆
- 举报
LinuxVFS自顶向下分析.doc
Linux VFS(虚拟文件系统)主干分析
作者:卓达城
职业:学生
学校:华南理工大学(本科) 华中科技大学(2010级研究生在读)
实验室:集群网络与服务计算实验室
主要研究方向:嵌入式虚拟化
联系方式:zhuodc@
日期:2011年2月17日
一、概述
对于VFS(虚拟文件系统,下同)最主要的作用在于设备驱动和文件系统这两块,个人以为,各种大神的书对VFS的分析确实非常透彻,涉及方方面面,但是由于内容太多,所以很难让读者理解VFS的架构,本文主要从文件系统这个方面分析VFS,抓住主干和核心数据结构,意在让读者有一个架构上的理解,至于文件权限等其它问题,这里略过,细节方面的内容请拜读各大Linux神书。
二、从VFS到实际文件
2.1 存储介质中的核心数据
正如要学习操作系统,就必须知道CPU能做什么一样,要了解VFS跟实际文件的关系,就必须知道实际存储介质里面到底放的什么数据,VFS会用到哪些数据。
存储介质里面主要放着两种数据,SuperBlock(超级块)和Inode(文件节点),VFS通过这两种数据就可以得到真实的文件内容。
2.2 VFS到实际文件的过程
从VFS到实际文件要经过以下过程:
第一步:VFS(我们平时用的read,write等函数,直观点就是双击文件夹,或者双击文件,再直观点就是双击usb的图标)。
第二步:具体文件系统对应的函数,VFS中的read(下面会以read为具体例子)指向具体文件系统的read。
第三部:调用存储介质的驱动程序读取真正的内容。如下图:
2.3 从mount开始
这里略过驱动程序,内核启动之后,假设我们的存储介质(例如硬盘、SD卡等存储介质)的驱动已经加载完成,并且/dev/block0已经存
在。如果我们需要访问存储介质里面的文件,我们一般要先使用mount命令。mount命令对应的函数如下:
其中source是源设备(上面的/dev/block0),target为目标设备,filesystemtype为文件系统的名字,后面两个参数忽略,要想进一步了解请参阅Linux各大神书,这里为了简单忽略掉。Mount函数是一个系统调用,它的流程如下:
Mount - sys_mount - do_mount - do_kern_mount
Mount的主要作用为帮助虚拟文件系统选择合适的路径(姑且这么说),下面以图说明问题:
第一步:内核启动以后,VFS挂载了多个文件系统,文件系统的数据结构的名称为file_system_type ,这些数据结构以链表连起来。
这里我们可以这样理解/dev/block0就是硬件+驱动(SD卡+驱动),而file_system_type结构对应的就是FAT32等文件系统,这些文件系统大部分都在内核中实现了。
第二步:运行mount /dev/block0 TEMP EXT4(为了简单,只写这么多,其中TEMP为在虚拟文件系统上建立的文件夹)以后,TEMP文件夹就与相关的文件系统和硬件设备关联起来。
Mount之后,上层应用程序对TEMP文件夹的操作就会保存到存储介质(上图的硬盘)上。
2.4 File_system_type结构(特定文件系统必须实现其成员函数get_sb)
File_system_type结构成员不多,我们仅解析它的两个个成员:
成员name就是文件系统的名字,用于搜索配对。Get_sb函数的作用为在存储介质中获得super_block的实际内容,并且初始化super_block结构。在内核启动的过程中,会调用函数register_filesystem把file_system_type结构挂到相应的链表(暂时称之为表1)上去。
2.5 Mount函数两步走
Mount函数第一步是搜索文件系统链表(flie_system_type组成的链表,上面提到的表1),如果找到(可以简单的理解为通过name成员查找),则调用其中的get_sb函数,建立一个super_block结构,否则会去查找文件系统模块,有则加载,无则失败。
第二步是根据得到的super_block建立vfsmount结构(该结构是文件夹和实际文件系统的桥梁,按照上面所说的就是TEMP和EXT4的桥梁),然后以TEMP为键值,把vfsmount加入hash表中(该hash表用于搜索文件夹对应的vfsmount,暂时称之为表2)。
2.6 Dentry结构
Dentry结构对应VFS的一个目录,例如这里的TEMP就对应一个Dentry结构。成员很多,但是为了简单,只解析两个字段。
其中d_inode为该文件夹对应的inode(文件夹也是一个文件),d_mounted表示有多少个文件系统mount到这个文件夹上。
这个桥梁的作用流程如下:当路
您可能关注的文档
最近下载
- H3C认证GB0-510 H3CNE-Security网络安全工程师考试题库及答案.docx VIP
- H3CNE-RS+GB0-192认证考试题库(含答案).pdf VIP
- 索尼SW7600GR中文说明书.pdf
- 华三认证考试H3CNE安全 GB0-510 安全工程师考试题库(含答案).docx VIP
- 钢结构厂房水电安装施工组织方案.docx VIP
- 第1课+おじぎ+课文注音讲义 高中日语人教版第一册.docx VIP
- 新版H3CNE_gb0-192认证题库.pdf VIP
- H3CNE-RS+GB0-192认证考试题库(含答案).docx VIP
- 浙江省宁波市镇海中学2025-2026学年高三上学期12月适应性考试政治试题含解析.docx VIP
- 民航安全检查员理论知识考试卷.doc VIP
原创力文档

文档评论(0)