Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
设备文件是由Linux中的特定文件系统还是虚拟文件系统实现的?_Linux_Operating System_Filesystems_Virtualfilesystem - Fatal编程技术网

设备文件是由Linux中的特定文件系统还是虚拟文件系统实现的?

设备文件是由Linux中的特定文件系统还是虚拟文件系统实现的?,linux,operating-system,filesystems,virtualfilesystem,Linux,Operating System,Filesystems,Virtualfilesystem,在Tanenbaum的现代操作系统书籍《Linux文件系统》中,有两个草图: 在两个草图中,特定文件系统(例如ext4类型)(“第一个草图中的文件系统”和第二个草图中的“文件系统1”)列在“虚拟文件系统”下 区别在于 在第一个草图中,“文件系统”与“终端”和“插座”列在同一级别,不包括后两个 在第二个示意图中,“文件系统1”包括“常规文件”、“块特殊文件”、“字符特殊文件”和“网络套接字” 我的理解是,这两个草图显示的是相同的东西,因此它们应该是一致的 我的问题是 特定的文件系统(如e

在Tanenbaum的现代操作系统书籍《Linux文件系统》中,有两个草图:

在两个草图中,特定文件系统(例如ext4类型)(“第一个草图中的文件系统”和第二个草图中的“文件系统1”)列在“虚拟文件系统”下

区别在于

  • 在第一个草图中,“文件系统”与“终端”和“插座”列在同一级别,不包括后两个
  • 在第二个示意图中,“文件系统1”包括“常规文件”、“块特殊文件”、“字符特殊文件”和“网络套接字”
我的理解是,这两个草图显示的是相同的东西,因此它们应该是一致的

我的问题是

  • 特定的文件系统(如ext4)是否实现设备文件并使其与常规文件一样处理,还是“虚拟文件系统”的工作

  • 我如何理解上面提到的“文件系统”和“网络套接字”、“块/字符特殊文件”之间关系的两个草图之间的区别

have,它知道字符设备和块设备(并返回它们,例如通过syscall)

当您的程序(和进程)打开一个char设备(在某些文件系统中)时,内核将使用一些设备驱动程序,这些驱动程序通常与设备的主要编号有关

wikipage有一个很好的图片(显示inode和数据),这非常适用于(当然,许多细节已经改变)

是内核中的一个抽象层。查看VFS并查看代码内部


普通文件系统(例如Ext3)可能包含char设备inode(在某些目录中可见,例如char设备文件),但许多新的Linux系统通常使用伪文件系统(安装在
/dev/
上)(与&)相关。

谢谢。你能直接回答我的问题吗?我不确定你的问题是否有确切的含义和答案。你可能有点困惑。重要的概念是文件系统包含索引节点和数据。您的“文件系统包含索引节点和数据”中的“文件系统”是指特定的文件系统(例如ext4)还是也可以是“虚拟文件系统”?VFS是实现真实文件系统的接口抽象。是设备文件(块文件还是字符文件)和套接字与常规文件系统位于同一文件系统中,或者设备文件(块文件或字符文件)和套接字是否有自己的文件系统,与常规文件的文件系统不同?在我的Ubuntu上似乎是后者,但第二张草图显示了一个用于常规文件和设备文件的单一文件系统。