界面

界面

我试图了解Linux中的VFS是什么,下图代表了VFS:

在此输入图像描述

我不确定的是VFS是否是应用程序与之对话然后VFS与适当的文件系统驱动程序对话的程序,或者VFS只是文件系统驱动程序必须实现的接口/通用语言,并且在实际上,应用程序正在使用此接口/通用语言直接与文件系统驱动程序对话?

答案1

VFS是内核中的一个接口层。它为应用程序与文件系统对话提供了一个统一的接口,无论使用什么文件系统:因此,诸如openwrite、等系统调用read都进入 VFS 层,然后由 VFS 层将它们分派到适当的文件系统。

文件系统向VFS层注册自己并提供一组标准信息,以便VFS层可以使用它们。这意味着Linux中的所有文件系统都需要实现类似的概念:主要是索引节点、目录项和文件。

这是内核中有详细记录

答案2

VFS 是内核中位于系统调用和文件系统驱动程序之间的整个软件层,它本身并不是一个文件系统。

它提供了一个通用的界面多种文件系统类型。

想象一下我们使用以下命令:

cp /usb/file /tmp/file

/usb安装在 fat32 USB 上,/tmp是一个etx2文件系统。

VFS 层位于应用程序和文件系统之间,因此该cp命令不需要知道执行复制的文件系统。相反,cp使用通用系统调用与 VFS 交互,例如:openwriteread...

答案3

界面和常用功能。

界面

文件系统需要实现该接口

常用功能

有些事情是所有文件系统都必须实现的,但实现是相同的。例如缓存、符号链接遍历。

(注意,我没有做过,所以可能有一些错误)

相关内容