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

时间:2015-12-13 16:48:53

标签: linux operating-system filesystems virtualfilesystem

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

enter image description here

enter image description here

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

区别在于

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

我的理解是两幅草图显示的是相同的东西,所以它们应该是一致的。

我的问题是

  • 特定的文件系统(例如ext4)是否实现了设备文件并使它们与常规文件相同,或者它是“虚拟文件系统”的作用?

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

1 个答案:

答案 0 :(得分:3)

File systemsinodes,它知道char设备和块设备(并返回它们,例如通过stat(2)系统调用)。

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

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

VFS是内核中的抽象层。请参阅tour of VFS并查看kernel source代码。

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