一、VFS作为内核子系统,为用户空间程序提供了文件系统相关的接口。所有实际文件系统依赖VFS共存,依靠VFS系统工作。

1、VFS提供通用文件系统接口:用户空间程序可以利用标准的UNIX文件系统调用,如open()\read()\write(),对不同物理介质上的不同文件系统进行操作。

2、VFS提供文件系统抽象层:VFS提供了一个通用文件系统模型,该模型囊括了所有实际文件系统的常用功能和行为。VFS抽象层定义了所有实际文件系统支持的基本的、概念上的接口和数据结构,所以VFS能衔接各种实际文件系统。

二、Unix文件系统使用了四种与文件系统相关的抽象概念文件(file)、目录项(dentry)、索引节点(inode)、安装点(mount point).

1、文件系统是特殊的数据分层存储结构,它包含文件、目录和相关的控制信息。文件系统被安装在一个特定的安装点(mount point)上。

2、安装点(mount point)在全局层次结构中被称作命名空间,所有已安装的实际文件系统都作为根文件系统树的枝叶出现在系统中。

3、Linux将这种层次化概念引入单个进程中,每个进程指定一个唯一的命名空间。因为每个进程都会继承父进程的命名空间,所以所有进程往往都只有一个全局命名空间。

4、文件(file)是一个有序字节串,字节串中第一个字节是文件的头,最后一个字节是文件的尾。

5、文件通过目录组织起来。目录又称文件夹,用来容纳相关文件。在Unix中,目录属于普通文件。

6、目录可以包含子目录,所以目录可以层层嵌套,形成路径(path),路径中的每一部分被称为目录条目(目录项,dentry),例如:/home/wolfman/buffer.c 是一个路径,根目录/ 、目录home,wolfman  、文件buffer.c 都是目录项。

7、Unix系统将文件的相关信息文件本身加以区分。文件的相关信息又称文件的元数据,被存储在一个单独的数据结构中,该结构被称为索引节点(inode). 文件本身即是file结构。

8、VFS中有四个主要的对象结构:
     超级块对象(super_block),代表一个已安装文件系统。

索引节点对象(inode),代表一个文件。(文件的相关信息)

文件对象(file),代表有进程打开的文件。(文件本身)

目录项对象(dentry),代表一个目录项,是路径(path)的组成部分。

9、每个主要对象都包含一个操作对象,这些操作对象描述了内核针对主要对象可以使用的方法:

super_operations对象,其中包括内核针对特定文件系统所能调用的方法。

inode_operations对象,其中包括针对特定文件所能调用的方法。

file_operations对象,其中包括内核针对已打开的文件所能调用的方法。

dentry_operations对象,其中包括内核针对特定目录项所能调用的方法。

三、和文件系统相关的数据结构

1、file_system_type,用来描述各种实际文件系统,如ext4\ext3\XFS,每种文件系统有且只有一个file_system_type结构(不管有多少个实例安装到系统中,还是根本就没有安装到系统中)。

2、vfsmount 用来描述一个安装文件系统的实例,即代表一个安装点。

VFS(Virtual File System)的更多相关文章

  1. PatentTips – EMC Virtual File System

    BACKGROUND OF THE INVENTION 1. Field of the Invention The present invention generally relates to net ...

  2. virtual file system (VFS)

    http://www.ibm.com/developerworks/library/l-virtual-filesystem-switch/ http://www.ibm.com/developerw ...

  3. linux 虚拟文件系统----------Virtual File System VFSkky

    在了解虚拟文件系统之前,必须先知道什么是 Kernal  Space 与 User  Space. Kernal Space 与User Space 的差别,在于内存使用上安全机制的差异. kerna ...

  4. Design and Implementation of the Sun Network File System

    Introduction The network file system(NFS) is a client/service application that provides shared file ...

  5. File System Design Case Studies

    SRC=http://www.cs.rutgers.edu/~pxk/416/notes/13-fs-studies.html Paul Krzyzanowski April 24, 2014 Int ...

  6. Linux File System

    目录 . Linux文件系统简介 . 通用文件模型 . VFS相关数据结构 . 处理VFS对象 . 标准函数 1. Linux文件系统简介 Linux系统由数以万计的文件组成,其数据存储在硬盘或者其他 ...

  7. 磁盘、分区及Linux文件系统 [Disk, Partition, Linux File System]

    1.磁盘基础知识 1.1 物理结构 硬盘的物理结构一般由磁头与碟片.电动机.主控芯片与排线等部件组成:当主电动机带动碟片旋转时,副电动机带动一组(磁头)到相对应的碟片上并确定读取正面还是反面的碟面,磁 ...

  8. Linux File System Change Monitoring Technology、Notifier Technology

    catalog . 为什么要监控文件系统 : hotplug . udev . fanotify(fscking all notification system) . inotify . code e ...

  9. [CareerCup] 8.9 An In-memory File System 内存文件系统

    8.9 Explain the data structures and algorithms that you would use to design an in-memory file system ...

随机推荐

  1. 32.es读请示内部分发原理

    当客户端发送一次读请求时,大致会经过以下几个步骤 1.客户端发送一个请求过去,es的一个node接收到这个请求(随机的node),这个node就被es内部分配成coordinating node(协调 ...

  2. PHP 页面刷新与跳转的方法汇总

    HTML meta标签 <meta http-equiv='content-type' content="text/html;charset=utf-8"/> 实现页面 ...

  3. Solr与Elasticsearch比较

    Solr优点1.Solr有一个更大.更成熟的用户.开发和贡献者社区.2.支持添加多种格式的索引,如:HTML.PDF.微软 Office 系列软件格式以及 JSON.XML.CSV 等纯文本格式.3. ...

  4. Optimization on content service with local search in cloud of clouds

    曾老师的这篇文章发表于Journal of Network and Computer Applications,主要解决的是利用启发式算法决定如何在cloud of clouds中进行副本分发,满足用 ...

  5. logstash-input-jdbc实现mysql 与elasticsearch实时同步(ES与关系型数据库同步)

    引言: elasticsearch 的出现使得我们的存储.检索数据更快捷.方便.但很多情况下,我们的需求是:现在的数据存储在mysql.oracle等关系型传统数据库中,如何尽量不改变原有数据库表结构 ...

  6. django orm多条件查询及except处理不存在记录的样码

    日常所用的功能, 记录下来加深记忆. try: sv_set = Sv.objects.get(project=site_name, version=deploy_version) print sv_ ...

  7. sublime text3环境与工具搭建

    1,ctrl+shift+P ,打开包安装窗口如下: 2,选择 install Package,安装详解插件 1-安装 JsFormat插件,用于格式化js的插件,使用快捷键 Ctrl+Alt+F对J ...

  8. list转map工具类,根据指定的字段分组

    import org.apache.log4j.Logger; import java.lang.reflect.Method;import java.util.ArrayList;import ja ...

  9. 数学之路-python计算实战(4)-Lempel-Ziv压缩(2)

    Format characters have the following meaning; the conversion between C and Python values should be o ...

  10. 什么是鸭子类型(duck typing)

    "当看到一仅仅鸟走起来像鸭子.游泳起来像鸭子.叫起来也像鸭子,那么这仅仅鸟就能够被称为鸭子." 我们并不关心对象是什么类型,究竟是不是鸭子,仅仅关心行为. 比方在python中.有 ...