Linux下的虚拟文件系统究竟起到什么作用?,linux 虚拟文件系统的作用以及工作原理~~????,vfs文件是什么...

Linux下的虚拟文件系统究竟起到什么作用?
Linux 允许众多不同的文件系统共存,并支持跨文件系统的文件操作,这是因为有虚拟文件系统的存在。虚拟文件系统,即VFS(Virtual File System)是 Linux 内核中的一个软件抽象层。它通过一些数据结构及其方法向实际的文件系统如 ext2,vfat 提供接口机制。本文在简要介绍 VFS 的相关数据结构后,以文件 I/O 为切入点深入 Linux 内核源代码,追踪了 sys_open 和 sys_read 两个系统调用的代码结构,并在追踪的过程中理清了跨文件系统的文件操作的基本原理和“一切皆是文件”的口号得以实现的根本。 VFS 是一套代码框架(framework),它处于文件系统的使用者与具体的文件系统之间,将两者隔离开来。这种引入一个抽象层次的设计思想,即“上层不依赖于具体实现,而依赖于接口;下层不依赖于具体实现,而依赖于接口”,就是著名的“依赖反转”,它在 Linux内核中随处可见。VFS框架的设计,需要满足如下需求:1、 为上层的用户提供统一的文件和目录的操作接口,如 open, read, write2、 为下层的具体的文件系统,定义一系列统一的操作“接口”, 如 file_operations, inode_operations, dentry_operation,而具体的文件系统必须实现这些接口,才能融入VFS框架中。 为此,VFS 需要:1、 定义一套文件系统的统一概念2、 在这套概念基础上,实现提供给上层用户的操作接口,如 open, read, write 等3、 提供一套机制,让下层的具体的文件系统可融入 VFS 框架中,如文件系统的“注册”和“安装”。VFS核心概念1、 VFS 通过树状结构来管理文件系统,树状结构的任何一个节点都是“目录节点”2、 树状结构具有一个“根节点”3、 VFS 通过“超级块”来了解一个具体文件系统的所有需要的信息。具体文件系统必须先向VFS注册,注册后,VFS就可以获得该文件系统的“超级块”。4、 具体文件系统可被安装到某个“目录节点”上,安装后,具体文件系统才可以被使用5、 用户对文件的操作,就是通过VFS 的接口,找到对应文件的“目录节点”,然后调用该“目录节点”对应的操作接口。
linux 虚拟文件系统的作用以及工作原理~~????
虚拟文件系统(VFS)其实也可以翻译成虚拟文件系统转换(virtual filesystem switch)。可以看出来它的作用就是提供一个通用的接口来处理与Unix标准文件系统相关的所有系统调用。它所隐含的思想就是把表示很多不同种类的文件系统的共同信息放入内核;其中有一个字段火函数来支持linux所支持的所有实际文件系统所提供的任何操作。对所调用的每个读写或者其他函数,内核都能把它们替换成支持本地linux文件系统,NTFS文件系统或者文件所在的任何文件系统的实际函数。
至于vfs的工作原理 就不是三言两语可以解释清楚的了、里面包含了很多知识包括文件系统、超级块、i节点等等知识。其实主要就是用户安装了不同的文件系统,每个特定文件系统上都实现了包括open() close(),read(),write()等等的操作,在安装的时候,每个特定的文件系统会在虚拟文件系统上注册,当用户需要对特定文件系统进行操作时 只需调用统一的系统调用,虚拟文件系统能够调用对应文件系统上的函数来对文件进行操作。详细的工作原理和实现 楼主需要花时间去学一学操作系统知识可一参考《深入理解Linux内核》《深入linux内核架构》等书
vfs文件是什么
所谓VFS,就是Virtual File System虚拟文件系统,也称为虚拟文件系统开关。
这是Linux档案系统对外的接口。任何要使用档案系统的程序都必须经由这层接口来使用它。
VFS是一个异构文件系统之上的软件粘合层,因为VFS可以无缝地使用多个不同类型的文件系统,就像把多个文件系统堆叠在一起一样,故而得名。通过VFS,可以为访问文件系统的系统调用提供一个统一的抽象接口。
VFS最早由Sun公司提出以实现NFS(Network FileSystem,网络文件系统)。但是现在很多Unix系统都采用了VFS(包括Linux、FreeBSD、Solaris等)。
VFS的作用就是采用标准的Unix系统调用读写位于不同物理介质上的不同文件系统。VFS是一个可以让open()、read()、write()等系统调用不用关心底层的存储介质和文件系统类型就可以工作的粘合层。在古老的DOS操作系统中,要访问本地文件系统之外的文件系统需要使用特殊的工具才能进行。而在Linux下,通过VFS,一个抽象的通用访问接口屏蔽了底层文件系统和物理介质的差异性。
在Linux中,VFS采用的是面向对象的编程方法。
下一篇:没有了