您好、欢迎来到现金彩票网!
当前位置:最新棋牌游戏大全 > 网络结点接口 >

Linux下的虚拟文件系统究竟起到什么作用?

发布时间:2019-06-16 17:10 来源:未知 编辑:admin

  用户对文件进行操作的时候是对虚拟文件进行操作的吗?而不是直接操作的实际文件。

  可选中1个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问题。

  允许众多不同的文件系统共存,并支持跨文件系统的文件操作,这是因为有虚拟文件系统的存在。虚拟文件系统,即VFS(Virtual File

  System)是 Linux 内核中的一个软件抽象层。它通过一些数据结构及其方法向实际的文件系统如 ext2,vfat

  提供接口机制。本文在简要介绍 VFS 的相关数据结构后,以文件 I/O 为切入点深入 Linux 内核源代码,追踪了 sys_open 和

  sys_read 两个系统调用的代码结构,并在追踪的过程中理清了跨文件系统的文件操作的基本原理和“一切皆是文件”的口号得以实现的根本。

  是一套代码框架(framework),它处于文件系统的使用者与具体的文件系统之间,将两者隔离开来。这种引入一个抽象层次的设计思想,即“上层不依赖

  于具体实现,而依赖于接口;下层不依赖于具体实现,而依赖于接口”,就是著名的“依赖反转”,它在 Linux内核中随处可见。

  1、 为上层的用户提供统一的文件和目录的操作接口,如 open, read, write

  2、 在这套概念基础上,实现提供给上层用户的操作接口,如 open, read, write 等

  3、 提供一套机制,让下层的具体的文件系统可融入 VFS 框架中,如文件系统的“注册”和“安装”

  1、 VFS 通过树状结构来管理文件系统,树状结构的任何一个节点都是“目录节点”

  3、 VFS 通过“超级块”来了解一个具体文件系统的所有需要的信息。具体文件系统必须先向VFS注册,注册后,VFS就可以获得该文件系统的“超级块”。

  4、 具体文件系统可被安装到某个“目录节点”上,安装后,具体文件系统才可以被使用

  5、 用户对文件的操作,就是通过VFS 的接口,找到对应文件的“目录节点”,然后调用该“目录节点”对应的操作接口。

  狭义地说,“文件”是指“磁盘文件”,进而可以是有组织有次序地存储于任何介质(包括内存)中的一组信息。广义地说,凡是可以产生或消耗信息的都是文件。比方说设备文件、管道、套接字以及/proc目录下的特殊文件(实际上只存在于内存中),这些都是“文件”。磁盘文件只不过是个特例而已,你可以认为他是在磁盘设备上存储的、按照一定次序组织在一起的一组相关的信息。

  上面这些是我从书上抄的,但我自己的看法是,计算机系统中所有内核向应用程序提供的信息输入输出接口都是文件。所以应用层看到的“文件”已经是被操作系统抽象过的一个输入输出接口。拿磁盘文件来说,对应用而言它看到的是一个个文件按照目录结构组织起来的一棵树,但实际上磁盘设备并不知道这么回事儿,它只认识磁头、柱面和扇区。从这个角度上来说,应用程序看到的文件本身就是虚拟的。所谓的对文件操作最终都要落实到磁盘设备对某些扇区的读写上,但这些都是内核处理的,应用程序是看不见这一切的。

  知道了广义的文件系统定义之后就不难理解,作为一个通用操作系统,linux需要为用户程序提供一个统一的系统操作界面来完成对各种文件的访问。虚拟文件系VFS就是这么一个统一的、抽象的、虚拟的文件操作界面。你可以认为它是应用层与驱动层之间的一个中间层,对上提供一组标准的接口open/close/read/write/lseek,对下则又根据不同的文件类型调用不同的驱动程序提供的接口完成对具体设备的操作。这些操作通常是通过读写外设上(磁盘也是外设)的控制寄存器和存储区间来完成的。

  不知道我这样解释你明白了没,要是还不明白可以看看我共享在百度知道上的《Linux内核源代码情景分析》,那里面有更详细的说明。

http://simanekstorage.com/wangluojiedianjiekou/259.html
锟斤拷锟斤拷锟斤拷QQ微锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷微锟斤拷
关于我们|联系我们|版权声明|网站地图|
Copyright © 2002-2019 现金彩票 版权所有