在Tanenbaum的Modern OS一书中,对于Linux文件系统,有两个草图:
在两个草图中,特定文件系统(例如ext4类型)(第一个草图中的“文件系统”和第二个草图中的“文件系统1”)列在“虚拟文件系统”下。
区别在于
我的理解是两幅草图显示的是相同的东西,所以它们应该是一致的。
我的问题是
特定的文件系统(例如ext4)是否实现了设备文件并使它们与常规文件相同,或者它是“虚拟文件系统”的作用?
我如何理解上面提到的“文件系统”和“网络套接字”,“块/字符特殊文件”之间关系的两个草图之间的区别?
答案 0 :(得分:3)
File systems有inodes,它知道char设备和块设备(并返回它们,例如通过stat(2)系统调用)。
当你的程序(和进程)打开一个char设备(在某个文件系统中)时,内核将使用一些设备驱动程序,通常与设备主要编号有关。
Ext2 wikipage有一个很好的图片(显示inode和数据),非常适用于Ext4(但当然,许多细节已经改变)。
VFS是内核中的抽象层。请参阅tour of VFS并查看kernel source代码。
普通文件系统(例如Ext3)可能包含char设备inode(在某些目录中可见,例如char设备文件),但许多新的Linux系统常规使用{{3} }伪文件系统(挂载在/dev/
上)(与devfs& udev相关)。