Linux 内核分析--文件系统 Linux 内核中的文件系统是通过 VFS(Virtual File System) 实现的,VFS 是一个软件机制,负责管理和组织 Linux 文件系统。它不是一个真正的文件系统,而是一个抽象层,提供了一个通用的接口来访问不同的文件系统。VFS 的主要组成部分包括超级块(super_block)、索引节点(inode)和目录项(dentry)。 超级块是文件系统中最重要的数据结构,用来描述整个文件系统的信息,包括组织结构和管理信息。每个文件系统在安装时会建立一个超级块,并在卸载时自动删除。VFS 超级块是某个具体文件系统的超级块,实际上是一个软件机制。 索引节点(inode)是文件系统处理文件所需的信息,索引节点对文件是唯一的。具体文件系统的索引节点存储在磁盘上,使用时必须调入内存,填写 VFS 的索引节点。因此 VFS 的索引节点是动态节点。 目录项(dentry)是逻辑意义上的文件,在磁盘上没有对应的映象。每个文件除了有一个索引节点结构外,还有目录项 dentry 结构。dentry 结构代表的是逻辑意义上的文件,而 inode 结构代表的是物理意义上的文件,对于一个具体的文件系统,在磁盘上有对应的映象。一个 dentry 结构必有一个 inode 结构,而一个 inode 可能对应多个 dentry 结构。 VFS 的好处在于它支持多种不同的文件系统,如 EXT2、Minix、FAT、VFAT、NFS、NTFS 等等。VFS 通过文件系统的“注册”来实现这种支持,每注册一个文件系统也就要在机器里初始化一个数据结构,并形成一个链表,内核中用一个名为 file_systems 的全局变量来指向该链表的表头。 VFS 的实现是通过文件系统的“注册”来完成的,注册过程比较复杂,概括来说大概是如下几步: 1. 新建 VFS 目录树 init_mount_tree()(这里边包含有若干步骤,此处不赘) 2. 通过 sys_mkdir 函数将文件系统作为结点添加到 VFS 目录树中 VFS 的优点是,使得用户不需要因为文件属于不同的文件系统而按照不同的方式读取。VFS 本身抽象了不同文件系统共同部分,对用户屏蔽了具体的操作,使得用户不用再去关心文件所属的文件系统。
- yigeqidai2012-10-23希望可以把一些细节的问题有时间可以在整理下那就更好了!
- 粉丝: 15
- 资源: 29
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助