1. VFS是linux的一个专门来处理和文件系统相关的系统调用的软件层。
2. VFS支持的文件系统可分为三类:
(1) 基于磁盘的文件系统,ext2, ext3, vfat, ntfs, ISO9660, UDF, HFS等。
(2) 网络文件系统, nfs, cifs等
(3)特殊文件系统, proc等
3. VFS的思想是引入一种的通用的文件模型,它可以表示所有支持的文件系统。
4. 内核在打开文件后,会初始化对应文件系统的读写等指针。采用了面向对象的思想,用数据结构和函数指针来实现对象。
5. 通用的文件模型由以下几部分构成:
(1)超级快对象, 保存挂载的文件系统的相关信息。
(2)inode 对象,保存关于一个文件的信息。
(3)file 对象,保存进程和打开的文件之间的关联信息,只有打开文件后才存在于内核中。
(4)dentry对象,保存一个文件目录的信息。
6. 内核为了加速,有dentry cache和 inode cache。
7. 有些系统调用可以由VFS直接完成,而不需要调用下层的具体函数,比如close和lseek等。
8. super_block结构体中,s_list指向相邻超级快节点的,s_fs_info指向具体的超级快信息。这些信息是从磁盘中读取到内存,可以加速访问和修改。s_dirt用来表示是否需要去同步超级快到磁盘。
9. s_op(super_operations)保存了超级快操作的函数指针&#x