虚拟文件系统(VFS)在文件系统的上一层,它封装了文件系统的实现,对于VFS更上一层来说,就不用知道操作的是何种具体的文件系统了。

我们知道真正存放信息的是储存媒介(如磁盘)
文件系统相当于媒介储存信息的协议(ext3、ntfs等)
所谓mount指的是使用某种文件系统去操作储存媒介
我们关心某个文件中的内容,但是对文件本身的信息(如创建日期、权限、大小)等也感兴趣,这些信息成为file metadata,在VFS中用inode(index node)结构体表示,每个文件只有唯一的一个inode。
文件系统也有相应的描述信息,VFS中用superblock超级块结构体来表示。
目录在VFS中是一种特殊的文件,用dentry(directory entry)结构体来表示。
 
总的来说,VFS关心以下几种结构体:
The superblock object represents a specific mounted filesystem.
The inode object represents a specific file.
The dentry object, which represents a directory entry, is a single component of a path.
The file object represents an open file as associated with a process.
注意这里的file指的不是文件系统中的某一个文件,而是在一个进程中打开的文件,可以想象成是文件描述符。一个文件可以被多个进程打开,从而有多个file结构体,但是inode只有一个。每当一个文件被一个进程打开就需要一个file的一个可能的原因是,假设多个进程都在读一个文件中的内容,若每个都有file结构,那每个进程读取的位置都可以不一样。
对上述这几种结构体的操作为:
The super_operations object contains the methods that the kernel can invoke on a specific filesystem, such as write_inode() and sync_fs()
The inode_operations object contains the methods that the kernel can invoke on a specific file, such as create() and link()
The dentry_operations object contains the methods that the kernel can invoke on a specific directory entry, such as d_compare() and d_delete()
The file_operations object contains the methods that a process can invoke on an open file, such as read() and write()
具体的结构体成员和操作函数就不列举了。