一、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. __call__ 和 __str__ 魔术方法

    魔术方法,在python中,是通过触发的形式调用,之所以称为魔术方法,是因为不需要特地的打印或调用它,在某些特定的时候,他会自己调用,所谓的特定的时候,也是我们自己所输入的代码操作的,不是莫名其妙的触 ...

  2. mysql 多个select需要放入一个事务吗?

    第一次写博客,还请大家多多支持 今天同事问了个问题:在多个select的时候,用不用放入同一个事务? 首先先看个例子: public class JDBCClient { public static  ...

  3. POJ 1129 Channel Allocation DFS 回溯

    Channel Allocation Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 15546   Accepted: 78 ...

  4. Ajax json 数据格式

    ajax : 是么是同步 什么事异步 同步现象:客户端发送请求到服务端,当服务端返回响应之前,客户端都处于等待卡死状态. 异步现象:客户端发送请求到服务器端,无论服务器是否返回,客户端都可以随意做其他 ...

  5. Notepad++ 设置执行 lua 和 python

    Notepad++ 设置执行 lua 和 python 一.设置 run -> 设置 cmd /k lua "$(FULL_CURRENT_PATH)" & PAUS ...

  6. Ralink5350开发环境搭建

    一.安装虚拟机(Oracle VM VirtualBox  或 VMware Workstation) 二.在虚拟机中安装linux操作系统(当前使用的是Ubuntu1204桌面版) 三.配置linu ...

  7. Android-68-Tomcat各种启动错误的解决的方法,如:Exception in thread "Thread-6" NoClassDefFoundError,Document base E:\

     上午遇到一个棘手的事儿,导入一个project,结果把原有的Tomcatserver给导坏了.各种红的.黑的.蓝的错误满天飞啊,刚弄完一个项目,怕被毁了.我那个揪心呀! 还好.在走头无路的情况下 ...

  8. Squares-暴力枚举或者二分

    B - Squares Time Limit:3500MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u Submit  ...

  9. adbd cannot run as root in production builds的解决方法

    部分手机root后,使用adb root会出现这个提示. 原因是root不彻底. adb shell之后进入到$界面,su一下才进入到#. 这个之后可以使用root功能了. 注意到,这个时候exit的 ...

  10. 2017-3-9 leetcode 283 287 289

    今天操作系统课,没能安心睡懒觉23333,妹抖龙更新,可惜感觉水分不少....怀念追RE0的感觉 =================================================== ...