虚拟文件系统和系统调用有什么区别?

时间:2014-07-23 04:58:42

标签: linux-kernel kernel vfs sysfs

据我所知,内核主要为用户空间提供了两个在内核中执行操作的接口,它们是系统调用和虚拟文件系统(procfs,sysfs等)。 我在书中读到的内部VFS也使用系统调用。

所以我想知道,这两者是如何完全连接的?我们应该在系统调用上使用VFS,反之亦然。

1 个答案:

答案 0 :(得分:1)

系统调用是任何用户空间进程从用户空间模式切换到内核模式的通用工具。

它就像一个驻留在内核中并使用可变数量的参数从用户空间调用的函数调用,最重要的一个是系统调用号。

内核将始终维护特定于体系结构的受支持系统调用数组(=内核函数),并且基本上将根据从用户空间传递的系统调用号将任何来自用户空间的系统调用分派到正确的函数。

虚拟文件系统只是文件系统的抽象,它为您提供标准函数来处理任何可被视为文件的东西。例如,您可以在任何文件上调用"打开","关闭","读取"等,而不用担心该文件存储在哪个文件系统中。

VFS和系统调用之间的关系是VFS基本上是驻留在内核中的代码,进入内核的唯一方法是通过系统调用("打开"是一个系统调用,所以是&# 34;关闭"等)