【问题标题】:Are device files implemented by the specific file systems or the virtual file system in Linux?设备文件是由特定文件系统实现的还是Linux中的虚拟文件系统实现的?
【发布时间】:2016-03-19 03:23:44
【问题描述】:

在 Tanenbaum 的 Modern OS 书中,对于 Linux 文件系统,有两个草图:

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

区别在于

  • 在第一个草图中,“文件系统”与“终端”和“套接字”处于同一级别,不包括后两者,
  • 在第二个草图中,“文件系统 1”包括“常规文件”、“块特殊文件”、“字符特殊文件”和“网络套接字”。

我的理解是,两张草图表现的是同一个东西,所以它们应该是一致的。

我的问题是

  • 特定文件系统(例如 ext4)是否实现了设备文件并使它们与常规文件一样对待,还是“虚拟文件系统”的工作?

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

【问题讨论】:

    标签: linux operating-system filesystems virtualfilesystem


    【解决方案1】:

    File systems 拥有inodes,它知道字符设备和块设备(并返回它们,例如通过stat(2) 系统调用)。

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

    Ext2 wikipage 有一张漂亮的图片(显示 inode 和数据),它非常适用于 Ext4(当然,许多细节已经改变)。

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

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

    【讨论】:

    • 谢谢。你也可以直接回答我的问题吗?
    • 我不确定您的问题是否有确切的含义和答案。你可能会有点困惑。重要的概念是文件系统包含 inode 和数据。
    • “文件系统包含索引节点和数据”中的“文件系统”是指特定的文件系统(例如 ext4)还是也可以是“虚拟文件系统”?
    • VFS 是实现真实文件系统的接口抽象。
    • 是设备文件(块文件或字符文件)和套接字和普通文件系统在同一个文件系统,还是设备文件(块文件或字符文件)和套接字有自己的文件系统,不同于常规文件的文件系统?在我的 Ubuntu 上似乎是后者,但第二个草图显示了用于常规文件和设备文件的单个文件系统。
    猜你喜欢
    • 2013-04-28
    • 2010-11-04
    • 2012-11-08
    • 1970-01-01
    • 1970-01-01
    • 2021-04-27
    • 2011-06-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多