Electronic Joint Business

Solution for E-Business

Linux 内核简介之虚拟文件系统

虚拟文件系统又称虚拟文件系统交换器(Virual Filesystem Switch ,简称 VFS)。之所以说是“虚拟”,是因为VFS是一个抽象层,其所有数据结构都是在运行以后才建立,并在卸载时删除,磁盘上并不实际存储这些数据结构。VFS 提供了操作文件 目录和对象的统一方法,即通用文件模型。但显然如果只有 VFS,系统是无法工作的,因为这些数据结构只有和实际的文件系统,如 Ext2、Minix、VFAT 等相结合才有意义。相对的, Ext2、Minix、VFAT 等则称为“具体文件系统”。具体文件系统必须提供与 VFS 定义的结构适配的例程。所以对于基于完全不同概念的文件系统如XFS或Reiser,适配会相当困难,而如 EXT2 则会有性能提升。 Linux 内核可以支持40多种文件系统,主要分为三大类 磁盘文件系统,虚拟文件系统 如 proc 文件系统 及网络文件系统。 VFS 是 Linux 内核的一个子系统,内核中的其它子系统只与 VFS 打交道,而并不与具体文件系统发生联系。对具体文件系统来说,VFS 是一个管理者,而对内核的其它子系统来说,VFS 是它们与具体文件系统的接口,整个 Linux 中文件系统的逻辑关系如图1-1所示: VFS 提供了一个统一的接口(实际上就是 file_operatoin 数据结构,稍后介绍)。一个具体文件系统要想为 Linux 所支持,就必须按该接口编写自己的操作函数,从而将细节对内核其它子系统隐藏起来。因此对内核其它子系统以及运行在操作系统之上的用户程序而言,所有的文件系统都是透明的。实际上,要支持一种新的文件系统,主要任务就是实现这些接口函数。 总的来看 VFS 主要作用有: 对具体文件系统的数据结构进行抽象,以一种统一的数据结构进行管理。 处理用户层的系统调用 ,例如 write、open、stat、link 等等。 支持具体文件系统之间相互访问。 接受内核其他子系统的操作请求,特别是内存管理子系统。 VFS 所处理的系统调用 VFS 常见的系统调用有: 安装/卸载文件系统:mount()/umount() 获取文件系统信息:sysfs() […]

, ,

Leave a Reply

Your email address will not be published. Required fields are marked *