VFS(Virtual File System)
一、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)的更多相关文章
- PatentTips – EMC Virtual File System
BACKGROUND OF THE INVENTION 1. Field of the Invention The present invention generally relates to net ...
- virtual file system (VFS)
http://www.ibm.com/developerworks/library/l-virtual-filesystem-switch/ http://www.ibm.com/developerw ...
- linux 虚拟文件系统----------Virtual File System VFSkky
在了解虚拟文件系统之前,必须先知道什么是 Kernal Space 与 User Space. Kernal Space 与User Space 的差别,在于内存使用上安全机制的差异. kerna ...
- Design and Implementation of the Sun Network File System
Introduction The network file system(NFS) is a client/service application that provides shared file ...
- File System Design Case Studies
SRC=http://www.cs.rutgers.edu/~pxk/416/notes/13-fs-studies.html Paul Krzyzanowski April 24, 2014 Int ...
- Linux File System
目录 . Linux文件系统简介 . 通用文件模型 . VFS相关数据结构 . 处理VFS对象 . 标准函数 1. Linux文件系统简介 Linux系统由数以万计的文件组成,其数据存储在硬盘或者其他 ...
- 磁盘、分区及Linux文件系统 [Disk, Partition, Linux File System]
1.磁盘基础知识 1.1 物理结构 硬盘的物理结构一般由磁头与碟片.电动机.主控芯片与排线等部件组成:当主电动机带动碟片旋转时,副电动机带动一组(磁头)到相对应的碟片上并确定读取正面还是反面的碟面,磁 ...
- Linux File System Change Monitoring Technology、Notifier Technology
catalog . 为什么要监控文件系统 : hotplug . udev . fanotify(fscking all notification system) . inotify . code e ...
- [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 ...
随机推荐
- 42.query string分词
主要知识点: 1.queery string 分词 2.38节中搜索结果解析 3,测试分词器 一.query string分词 query string必须以和index建立时相同的analy ...
- 还不打算去认识一下webpack?
前言 随我来,去看看webpack!(为时未晚)============>第一版(较浅显的知识,懂得可忽略本文) 方向 安装,起步搭建运行. (粗略代过) 对于资源的管理,对于输出的管理. (举 ...
- Golang - 开篇必须吹牛逼
目录 Golang - 开篇必须吹牛逼 Go牛逼吗 安装环境 Golang - 开篇必须吹牛逼 (1)我们为什么要学 高并发 深度 || 广度 (2)go学习思路和目标 多打多练 掌握go语言 做一个 ...
- Git 基础教程 之 创建与合并分支
- layer 使用教程
http://layer.layui.com/ <!DOCTYPE html><html lang="en"><head> <meta c ...
- 淘宝的开源分布式文件系统TFS
TFS(Taobao FileSystem)是淘宝团队开源的海量非结构化数据存储设计的分布式系统.构筑在普通的Linux机器集群上,可为外部提供高可靠和高并发的存储访问.高可扩展.高可用.高性能.面向 ...
- ACDream - Graphs
先上题目: Graphs Time Limit: 4000/2000MS (Java/Others) Memory Limit: 128000/64000KB (Java/Others) Submit ...
- 【ACM】bailian_2703_骑车与走路_201307301543
2703:骑车与走路总时间限制: 1000ms 内存限制: 65536kB 描述 在北大校园里,没有自行车,上课办事会很不方便.但实际上,并非去办任何事情都是骑车快,因为骑车总要找车.开锁.停车.锁车 ...
- java5核心基础之泛型(3)-泛型作用于编译阶段-怎样将String对象传入Integer类型的泛型对象中?
泛型作用于编译阶段: 泛型是作用于编译阶段,在编译阶段控制类型,以确保在编写代码的时候仅仅能传入指定类型数据到泛型集合对象中去. 怎样验证呢,贴代码例如以下: package highBasic.ge ...
- 使用 F# 列表
使用 F# 列表 在 C# 中使用 F# 的列表,是全然可能的,可是,我建议不要用,由于,仅仅要再做一点,就会使事情在 C# 看来更加自然.比如,把列表转换成数组非常easy.用List.toArra ...