gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 12:01:32 25 4
gpt4 key购买 nike

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

enter image description here

enter image description here

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

区别在于

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

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

我的问题是

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

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

最佳答案

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

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

Ext2 wikipage 有一张很好的图片(显示 inode 和数据),它非常适用于 Ext4 (当然,很多细节都变了)。

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

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

关于linux - Linux 中的设备文件是由特定的文件系统还是虚拟文件系统实现的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34253611/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com