2

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

所以我想知道,这两者究竟是如何联系起来的?在什么情况下我们应该使用 VFS 而不是系统调用,反之亦然。

4

1 回答 1

2

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

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

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

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

VFS 和系统调用之间的关系是 VFS 基本上是驻留在内核中的代码,进入内核的唯一方法是通过系统调用(“打开”是系统调用,“关闭”等)

于 2014-07-24T05:14:30.543 回答