Linux文件系统(一)——VFS的概念

5330阅读 0评论2014-03-07 lvyilong316
分类:LINUX

声明:本Linux文件系统博客,共分四节,是根据网上多个相关博客,以及自己的理解加上相关资料总结而成。(作者:lvyilong316

Linux 之所以能支持除了Ext2文件系统之外的各种文件系统,是因为Linux提供了一种统一的框架,就是所谓的虚拟文件系统转换(Virtual FilesystemSwitch),简称虚拟文件系统(VFS)。这样, 用户程序可以通过同一个文件系统界面,也就是同一组系统调用,能够对各种不同的文件系统以及文件进行操作。

1. Linux中支持几十种文件系统,它是怎么管理的呢,它都管理什么呢?

首先,VFS 只对挂载到文件系统种的文件系统进行管理,即它时按需管理的。

其次,因为它继承了Unix的设计思想,所以它也是对文件,目录项,索引节点和超级块进行管理。

2.VFS中四个主要对象

1超级块对象:描述已安装文件系统。

每个文件系统 都对应一个超级对象。文件系统的控制信息存储在超级块中。
2索引节点对象:描述一个文件。

每个文件 都有一个索引节点对象。每个索引节点对象都有一索引节点号---->正是用这个号来唯一的标识某个文件系统中的指定文件。
3目录项对象:描述一个目录项,是路径的组成部分。

VFS把每个目录看作一个由若干子目录和文件组成的常规文件。

例如:我们在查找路径名:/tmp/test时,内核为根目录“/”创建第一个目录项对象,为根目录下tmp项创建第二级目录项对象,为/tmp目录下的test项创建第三级目录项对象。 
4文件对象:描述由进程打开的文件。

说明:

1.因为 VFS 将目录作为一个文件来处理,所以不存在目录对象。虽然目录项不同于目录,但目录却和文件相同。

2.Linux中将文件的相关信息和文件本身区分开了。在Linux 中文件的相关信息,被存储在一个单独的数据结构中,该结构被称为索引节点。文件(目录)信息按照索引节点形式存储在单独的块中;控制信息被集中存储在磁盘的超级块中。

上一篇:linux 轻量级进程与普通进程的区别
下一篇:C++构造函数、拷贝构造函数、赋值运算符漫谈(一)——函数参数传递