学无止境~ 看LKD进行的粗浅整理,目标是能够做到设计上面的理解~
Linux操作系统上支持多种文件系统,如本地文件系统EXT4、XFS、EXT3 等,同时还支持NFS、CIFS以及一些特殊的文件系统,同时在上层调用文件管理时又不感知不同文件系统的类型、存储的类型,之所以能做到这一点,最大的功臣就是虚拟文件系统,英文简称VFS。
VFS是定义一个通用的文件模型,满足上层对文件的处理应用,同时能够完整兼容所有文件系统的特殊需求和能力。

之所以VFS能够屏蔽掉不同文件系统的差异,让上层无感我们以写文件为例

vfs存在于用户与文件系统之间,这样就可以在虚拟文件系统层面实现屏蔽差异。
虽然内核整体采用C语言实现的,但是VFS本身的设计思想更多的是面向对象的,所以在使用C语言实现过程中会有些晦涩,整体思路是以结构体作为对象,对象的方法由不同的函数指针来实现。VFS中有几个关键的数据结构,分别是:超级块对象、索引节点对象、目录项对象、文件对象。下面的图可以简要描述这几个对象的关系:


最低0.47元/天 解锁文章
1145

被折叠的 条评论
为什么被折叠?



