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 ...
随机推荐
- DOM学习之图片库切换效果
addloadevent(prepareplaceholder()) addloadevent(prepareGallery()) //页面加载完时执行函数 function addloadevent ...
- TeX中的引号(Tex Quotes, UVa 272)
在TeX中,左双引号是“``”,右双引号是“''”.输入一篇包含双引号的文章,你的任务是 把它转换成TeX的格式. 样例输入: "To be or not to be," quot ...
- PHP 设计模式之工厂模式 (静态工厂模式)
### 工厂模式: 由工厂类根据参数来决定创建出哪一种产品类的实例.工厂类是指包含了一个专门用来创建其他对象的方法的类.所谓按需分配,传入参数进行选择,返回具体的类.工厂模式的最主要作用就是对象创建的 ...
- 5.2 calendar--通用日期的相关函数(4)
calendar类提供以下的函数来推断日历相关的内容: calendar.setfirstweekday(weekday) 设置一周里那一天作为第一天.0是表示星期一,6是表示星期天. 样例: #py ...
- ftk学习记(label篇)
[ 声明:版权全部,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 还是接着上面的一篇博文. 之前以前答应过大家,让大家看一下最简单的ftk程序是怎么执行的.所以 ...
- nyoj-20-吝啬的国度(深搜)
吝啬的国度 时间限制:1000 ms | 内存限制:65535 KB 难度:3 描写叙述 在一个吝啬的国度里有N个城市.这N个城市间仅仅有N-1条路把这个N个城市连接起来.如今,Tom在第S号城市 ...
- 准备开源用javascript写Tomcat下的WebApp的项目
原创文章,转载请注明. 这个想法由来已久.用javascript编写Tomcat下的WebApp.现现在也有alpha版本号的实现. 这种话,前端程序猿就能够像用Node.js那样,用javascri ...
- JS禁用微信复制链接、禁用转发
$(function () { function onBridgeReady() { WeixinJSBridge.call('hideOptionMenu'); } if (typeof Weixi ...
- 2016.04.03,英语,《Vocabulary Builder》Unit 09
her/hes: from the Latin verb haerere, means 'to stick' or 'to get stuck'. adhesive means 'sticking' ...
- [SPOJ 30669] Ada and Trip
[题目链接] https://www.spoj.com/problems/ADATRIP/ [算法] 直接使用dijkstra堆优化算法即可 [代码] #include<bits/stdc++. ...