Linux2.6--虚拟文件系统

本文介绍虚拟文件系统(VFS),它是Linux内核的重要组成部分,为用户提供统一的文件系统接口,支持多种本地及网络文件系统,简化新文件系统的实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

虚拟文件系统(有时也称作虚拟文件交换,更常见的是简称做VFS)作为内核子系统,为用户空间程序提供了文件和文件系统相关的接口.系统中的所有文件系统不但依赖VFS共存,而且也依赖VFS系统协同工作.通过虚拟文件系统,程序可以利用标准的UNIX系统调用对不同的文件系统,甚至不同的介质上的文件系统进行读写操作,如下如图所示:


      这幅图的含义是:

      VFS执行的动作:使用CP(1)命令从ext3文件系统格式的硬盘拷贝数据到ext2文件系统格式的可移动磁盘上.两种不同的文件系统,两种不同的介质,连接到同一个VFS上


      VFS使得用户可以直接使用open(),read()和write()这样的系统调用而无需考虑具体文件系统和实际的物理介质,这些都可以称作是文件系统的抽象层,在文件系统之上存在虚拟的文件系统,并通过VFS实现相应的方法可以屏蔽不同的文件系统之间的不同,通过通用的接口提供给用户使得用户感觉不到不同的文件系统之间的差异,下面这张图显示的就是用户操作write()时各个系统之间的协同合作:


      含义是:write()调用将来自用户空间的数据流,首先通过VFS的通用系统调用,其次通过文件系统的特殊写法,最后写入物理介质中

      VFS通过定义一些数据结构并加入执行这些结构的通用方法,最后让不同的文件系统实现自己的方法来屏蔽各种不同的文件系统之间的差异:

      VFS中有四个主要的对象类型,它们分别是:

      超级块对象,它代表一个具体的已安装的文件系统

      索引节点对象,它代表一个具体文件

      目录项对象,它代表一个目录项,是路径的一个组成部分

      文件对象,它代表由进程打开的文件


      Linux支持了相当多种类的文件系统.从本地文件系统(如ext3和ext4)到网络文件系统(如NFS),Linux在标准内核中已经支持的文件系统超过60种.VFS层提供给这些不同的文件系统一个统一的框架,而且也提供了能和标准系统调用交互工作的统一接口.由于VFS层的存在,使得在Linux上实现新文件系统的工作变得简单起来,它可以轻松的使这些文件系统通过标准Unix系统调用而协同工作.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值