特殊文件系统

from:特殊文件系统


当网络和磁盘文件系统能够使用户处理存放在内核之外的信息时,特殊文件系统可以为系统程序员和管理员提供一种容易的方式来操作内核的数据结构并实现操作系统的特殊特征。下面列出了一些特殊的文件系统,对于其中的每个文件系统,表中给出了它的安装点和简短的描述:


名字安装点说明
bdev块设备
binfmt_misc任意其他可执行格式
devpts/dev/pts伪终端支持
eventpollfs由有效事件轮询机制使用
futexfs由futex机制使用
pipefs管道
proc/pros对内核数据结构的常规访问点
rootfs为启动阶段提供一个空的根目录
shmIPC共享线性区
mqueue任意实现POSIX消息队列时使用
sockfs套接字
sysfs/sys对系统数据的常规访问点
tmpfs任意临时文件1
usbfs/proc/bus/usbUSB设备

有几个文件系统没有固定的安装点,这些文件系统可以由用户自由地安装和使用。此外,一些特殊文件系统根本没有安装点,它们不是用于与用户交互,但是内核可以用它们来很容易地重新使用VFS层的某些代码2

特殊文件系统不限于物理块设备,然而,内核给每个安装的特殊文件系统分配一个虚拟的块设备,让其主设备号为0而次设备号具有任意值,而每个特殊文件系统有不同的值。

set_anon_super()函数用于初始化特殊文件系统的超级块,这个函数本质上获得一个未使用的次设备号dev,然后用主设备号0和次设备号dev设置超级块的s_dev字段。而另一个kill_anon_super()函数移走特殊文件系统的超级块。unnamed_dev_idr变量包含指向一个辅助结构的指针。

尽管有些内核设计者不喜欢虚拟块设备标识符,但是这些标识符有助于内核以统一的方式处理特殊文件系统和普通文件系统。


  1. 如果不被交换出去就保持在RAM中。

  2. 例如有了pipefs特殊文件系统,就可以把管道和FIFO文件以相同的方式对待。