1.虚拟文件系统Virtual File System :
vfs就是对各种文件系统的一个抽象,它为各种文件系统提供了一个通用调用的接口
VFS作为内核子系统,为用户空间程序提供了文件系统相关的接口。所有实际文件系统依赖VFS共存,依靠VFS系统工作。
(1)VFS提供通用文件系统接口:用户空间程序可以利用标准的UNIX文件系统调用,如open()\read()\write(),对不同物理介质上的不同文件系统进行操作。
(2)VFS提供文件系统抽象层:VFS提供了一个通用文件系统模型,该模型囊括了所有实际文件系统的常用功能和行为。VFS抽象层定义了所有实际文件系统支持的基本的、概念上的接口和数据结构,所以VFS能衔接各种实际文件系统。
2. 虚拟文件系统有什么作用?
简化应用程序员的开发
不管是什么文件类型,不管文件是磁盘还是设备,都只用open read write统一操作
根目录下的文件,对应的分区可能不一样,那么文件系统的类型(文件存储的方式)不一样
这就造成了访问文件也不同,对程序员编程访问不同分区不同类比的文件的时候就很麻烦,没办法辺统一化。
读ext4 vfat等的方法完全不一样,对我们来说开发的工作量会很大
vfs解决了这个问题
示例
$ cp /floppy/TEST /tmp/test
其中/floppy是MS-DOS磁盘的一个安装点,而/tmp是一个标准的第二扩展文件系统(second Extended Filesystom, Ext2)的目录。正如左图所示,VFS是用户的应用程序与文件系统实现之间的抽象层。
因此,cp程序并不需要知道/floppy/TEST 和 /tmp/test是什么文件系统类型。
相反,cp程序直接与VFS交互,这是通过Unix程序设计人员都熟悉的普通系统调用来进行的。cp的执行代码如右图所示: