VFS是一个模块吗?

VFS是一个模块吗?

在研究VFS时,这个问题突然出现在我的脑海中。是否可以将 VFS 视为一个模块?

我之所以这么想,是因为VFS具有将实际文件管理简化到内核/用户空间的特点。这看起来像是设备驱动程序会做的事情,这让我开始思考。

但话又说回来,如果VFS是在内核中静态编译的东西,我想它不能被视为一个模块。

答案1

您没有指定您要询问的操作系统,但对于所有主流通用操作系统来说,答案可能都是相同的。

长话短说:VFS 不是一个模块。

一般来说,VFS 与内核的基本功能集成度太高,无法配置为(可选)模块。与文件、路径名、挂载点和文件系统有关的所有内容基本上都与 VFS 挂钩。每个采用路径名或文件描述符的系统调用(从 到open()rename()到 都execve()挂钩到 VFS)。如果没有最后一个,你就不能,嗯……运行任何软件。

有些操作系统没有 VFS 或者 VFS 是可选组件,但这些操作系统没有这样的概念文件与名字。想想微控制器,就像数字恒温器中的“操作系统”。

答案2

在 Solaris 上(请注意,VFS 是由 Sun SunOS-3.x 在 20 世纪 80 年代中期发明的)一切皆有可能动态加载到内核中......自 1992 年以来。然而,VFS 静态链接到/kernel/genunix.即使krtld内核运行时链接器已加载,但 genunix 需要能够提前挂载根文件系统作为第一个操作之一,因此无法使其可加载。

相关内容