虚拟文件系统
虚拟文件系统(Virtual Filesystem)也称为虚拟文件转换系统(Virtual Filesystem Switch) VFS,是一个内核软件,用来处理与Unix标准文件系统相关的所有系统调用,可以为各种文件系统提供一个通用的结构.
VFS支持的文件系统分为以下三种:
- 磁盘文件系统
- 网络文件系统
- 特殊文件系统
通用文件模型
为了将各种各样的文件系统转化为Linux进程能够访问的文件系统,就要先讲每个具体的文件系统转化为VFS的通用系统模型.
通用系统模型分为:
- 超级块对象:存放每个具体文件系统的相关信息
- 索引节点对象:存放每个文件的信息,与文件一一对应
- 文件对象:进程直接访问的对象
- 目录项对象:我们看到的/usr这种的目录格式,每个目录都对应一个索引节点对象,但是一个索引节点对象可能对应多个目录项.
进程-----------文件对象---------目录项对象----------索引节点对象 ------超级块对象----磁盘文件
我们常说的文件描述符fd就是指向文件对象的指针数组,数组中的索引值就是文件描述符.
- 索引为0是进程的标准输入文件
- 索引为1是进程的标准输出文件
- 索引为2是进程的标准错误文件
特殊文件系统
在linux中万物皆文件,除了网络文件和磁盘文件之外,特殊文件可以为程序员提供一种简单的方式操作数据.
例如套接字,管道,外部设备都是特殊的文件