全部博文(404)
分类: LINUX
2009-07-07 09:42:09
图 6-1 VFS 虚拟文件系统
每一种类型的文件系统代码都隐藏了实现的细节。因此,对于 VFS 层和内核的其他部分
而言,每一种类型的文件系统看起来都是一样的。
传统的 UNIX 系统采用 Inode 来保存与文件相关的信息,比如访问权限、文件大小和创
建时间等,这些信息被称为文件的元数据(metadata)。inode 这个数据结构和文件本身是分
开存放的。在 Linux 中,VFS 采用的是面向对象的编程方法,尽管 Linux 内核代码采用的是
不具有直接面向对象功能的 C 语言编写的。但是 VFS 子系统把 VFS 对象的属性和相应的操
作函数(即面向对象概念中的方法)都封装到了结构体中,因此可以说是真正意义上的对象。
VFS 中的 4 个主要对象类型如表 6-1 所示。
章表 6-1VFS 主要对象
对 象 说 明
superblock 对象 表示一个具体的可封装的文件系统
inode 对象 表示一个具体的文件
dentry 对象 表示一个目录条目,或路径中的一个分量
file 对象 表示一个与进程相关联的已打开的文件
Linux 操作系统支持的文件系统包括 ext2、ext3ReiserFSIBM JFSxfs、FAT-12FAT-16、
FAT-32、VFAT、NTFS (read-only)、CD-ROM (ISO 9660)、UMSDOS (UNIX-like FS on MS-DOS)、
NFS (Network File System)、SMBFS (Windows share)、NCPFS (Novell Netware share)、/proc (for
kernel and process information)。
应用层开发不需要关心 VFS 源代码的具体实现,只需使用它为各类文件系统提供的统一
接口函数即可,关于 VFS 源代码,读者可以查看 Linux 内核关于文件系统的相关内容。