
所谓VFS就是Virtual File System虚拟文件系统,也称为虚拟文件系统开关(Virtual Filesystem Switch).
这是Linux档案系统对外的接口。任何要使用档案系统的程序都必须经由这层接口来使用它。 VFS是一个异构文件系统之上的软件粘合层(注:有时也把VFS称为可堆叠的文件系统(Stackable Filesystem),因为VFS可以无缝地使用多个不同类型的文件系统,就像把多个文件系统堆叠在一起一样,故而得名)。通过VFS,可以为访问文件系统的系统调用提供一个统一的抽象接口。
VFS最早由Sun公司提出以实现NFS(Network FileSystem,网络文件系统)。但是现在很多Unix系统都采用了VFS(包括Linux、FreeBSD、Solaris等)。
Linux下的VFS:
VFS的作用就是采用标准的Unix系统调用读写位于不同物理介质上的不同文件系统。VFS是一个可以让open()、read()、write()等系统调用不用关心底层的存储介质和文件系统类型就可以工作的粘合层。在古老的DOS *** 作系统中,要访问本地文件系统之外的文件系统需要使用特殊的工具才能进行。而在Linux下,通过VFS,一个抽象的通用访问接口屏蔽了底层文件系统和物理介质的差异性。
每一种类型的文件系统代码都隐藏了实现的细节。因此,对于VFS层和内核的其它部分而言,每一种类型的文件系统看起来都是一样的。
在Linux中,VFS采用的是面向对象的编程方法。
虚拟文件系统(VFS)其实也可以翻译成虚拟文件系统转换(virtual filesystem switch)。可以看出来它的作用就是提供一个通用的接口来处理与Unix标准文件系统相关的所有系统调用。它所隐含的思想就是把表示很多不同种类的文件系统的共同信息放入内核;其中有一个字段火函数来支持linux所支持的所有实际文件系统所提供的任何 *** 作。对所调用的每个读写或者其他函数,内核都能把它们替换成支持本地linux文件系统,NTFS文件系统或者文件所在的任何文件系统的实际函数。至于vfs的工作原理 就不是三言两语可以解释清楚的了、里面包含了很多知识包括文件系统、超级块、i节点等等知识。其实主要就是用户安装了不同的文件系统,每个特定文件系统上都实现了包括open() close(),read(),write()等等的 *** 作,在安装的时候,每个特定的文件系统会在虚拟文件系统上注册,当用户需要对特定文件系统进行 *** 作时 只需调用统一的系统调用,虚拟文件系统能够调用对应文件系统上的函数来对文件进行 *** 作。详细的工作原理和实现 楼主需要花时间去学一学 *** 作系统知识可一参考《深入理解Linux内核》《深入linux内核架构》等书virtual file system虚拟文件系统。linux支持多种文件系统,如ext3,ext4,fat等等。所以在这些具体的文件系统上面提供一层抽象,叫虚拟文件系统,用来屏蔽底层各种各样的文件系统,而使用者只需要通过统一的方法与虚拟文件系统进行交互就可以了,虚拟文件系统负责对底层具体的文件系统格式通信。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)