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 ...
随机推荐
- ldap 禁止匿名登录(5)
[root@zabbix1 ~]# cat disable_anon.ldif dn: cn=config changetype: modify add: olcDisallows olcDisall ...
- Codeforces 816A/B
A. Karen and Morning 传送门:http://codeforces.com/contest/816/problem/A 水题,参考程序如下: #include <stdio.h ...
- 【hihocoder 1333】平衡树·Splay2
[题目链接]:http://hihocoder.com/problemset/problem/1333 [题意] [题解] 伸展树; 要求提供操作: 1.插入一个元素,两个权值,id作为查找的比较权值 ...
- 洛谷 P2056 BZOJ 2743 [HEOI2012]采花
//表示真的更喜欢洛谷的题面 题目描述 萧芸斓是 Z国的公主,平时的一大爱好是采花. 今天天气晴朗,阳光明媚,公主清晨便去了皇宫中新建的花园采花.花园足够大,容纳了 n 朵花,花有 c 种颜色(用整数 ...
- try finnlay 总结
public class FinnallyTest { public static void main(String[] args){ System.out.print(go()); } public ...
- OC中使用UI自己定义控件实现计算器的设计(版本号1简单的加减乘除,连加,连减,连除,连乘)
OC中使用UI自己定义控件实现计算器的设计(版本号1简单的加减乘除,连加.连减,连除,连乘) #import <UIKit/UIKit.h> @interface ViewControll ...
- 2016.04.19,英语,《Vocabulary Builder》Unit 16
top, comes from topos, the Greek word for 'place'. ectopic: [ek'tɑːpɪk] adj. [医]异位的,异常的 topical: ['t ...
- 0x58 数据结构优化DP
补写一下 poj3171 设f[i]表示覆盖L~i的最小花费,把区间按左端点排序,枚举区间,f[a[i].r]=min{f[a[i].l~(a[top].r-1)]}+a[i].c (当然还要和原值比 ...
- Test Doubles - Fakes, Mocks and Stubs.
https://dev.to/milipski/test-doubles---fakes-mocks-and-stubs This text was originally posted at Prag ...
- ES 断路器——本质上保护OOM提前抛出异常而已
监控fielddata使用了多少内存以及是否有数据被驱逐是非常重要的.大量的数据被驱逐会导致严重的资源问题以及不好的性能. Fielddata使用可以通过下面的方式来监控: 对于单个索引使用 {ref ...