Linux系统成功的关键因素之一就是具有与其他操作系统和谐共存的能力。Linux的文件系统由两层结构构建:第一层是虚拟文件系统(VFS),第二层是各种不同的具体的文件系统。
VFS就是把各种具体的文件系统的公共部分抽取出来,形成一个抽象层,是系统内核的一部分,它位于用户程序和具体的文件系统之间。它对用户程序提供了标准的文件系统调用接口,对具体的文件系统(如EXT2、FAT32等),它通过一系列的对不同文件系统公用的函数指针来实际调用具体的文件系统函数,完成实际的各有差异的操作。任何使用文件系统的程序必须经过这层接口来使用它。通过这样的方式,VFS就对用户屏蔽了底层文件系统的实现细节和差异。
VFS不仅可以对具体文件系统的数据结构进行抽象,以一种统一的数据结构进行管理,并且还可以接受用户层的系统调用,如open()、read()、write()、stat()、link()等。此外,它还支持多种具体文件系统之间的相互访问,接受内核其他子系统的操作请求,例如,内存管理和进程调度。VFS在Linux系统中的位置如图2.2所示。
图2.2 VFS在Linux系统中的位置
通过以下命令可以查看系统中支持哪些文件系统:
$ cat /proc/filesystems
nodev sysfs
nodev rootfs
…
nodev tmpfs
nodev pipefs
…
ext2
nodev ramfs
nodev hugetlbfs
iso9660
nodev mqueue
nodev selinuxfs
ext3
nodev rpc_pipefs
…
热点链接: