解析Linux中的VFS文件系统之文件系统的来源与简介(一)

最近挂载了N多的文件系统,大致了不同文件系统的相应特性及挂载方式,却还是对Linux的文件系统没有从源码方面去了解。不求甚解确实不好不好。

于是借鉴一些大牛的博客及自己的理解,总结了博客系列:

一、VFS是什么:

VFS是Linux中的一个虚拟文件文件系统,也称为虚拟文件系统交换层(Virtual Filesystem Switch),是一种软件机制。它为应用程序员提供一层抽象,屏蔽底层各种文件系统的差异。如下图所示:

引入文件系统的目的是:为了屏蔽各种文件系统的差异

(1)VFS对实际文件系统进行抽象,采用统一的文件系统向用户提供相应的一组统一的标准的文件操作接口(open,read,close,select,poll等);

(2)通过系统调用到VFS到实际文件系统的操作。

二、文件系统种类:

(1)基于磁盘的文件系统;

(2)网络文件系统(NFS);

(3)伪文件系统(sysfs、proc);

VFS 目录树结构:

Reference:

https://www.ibm.com/developerworks/cn/linux/l-vfs/

在链接中,文章选用的是Linux2.4.20,我选择Linux3.4.2来分析源码。

分析过程如上文链接所讲:

这篇文章不拘泥于细节,是一篇极好的文章。我将详细的讲解代码,并从代码细节处理。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏小程序云开发探索

小程序·云开发(一)——我对云开发的理解

云开发提供的是JSON数据库,就是数据库中的每条记录都是一个JSON格式的对象。一个数据库可以有多个集合(一个集合就看做一个JSON数组,数组的,每一个对象就是...

4880
来自专栏Java后端生活

Linux(八)用户管理

1659
来自专栏Golang语言社区

【Go 语言社区】学习网页开发基础 HTTP 方法:GET 对比 POST

两种最常用的 HTTP 方法是:GET 和 POST。 什么是 HTTP? 超文本传输协议(HTTP)的设计目的是保证客户机与服务器之间的通信。 HTTP 的...

36610
来自专栏python3

python3--threading模块(线程)

程序并不能单独运行,只有将程序装载到内存中,系统为它分配资源才能运行,而这种执行的程序就称之为进程。程序和进程的区别就在于:程序是指令的集合,它是进程运行的静态...

2572
来自专栏钟绍威的专栏

linux常用命令之文件管理默认情况选项参数注意用法选项用法选项用法参数注意用法选项用法选项注意用法选项注意

LS ls:list directory contents 默认情况 默认情况下显示的是mtime 选项 -a 列出全部文件及目录包括隐藏的 -l 列出详细...

1739
来自专栏Golang语言社区

Golang 命令

go buildgo build 命令用于编译我们指定的源码文件或代码包以及它们的依赖包。go build [-o output] [-i] [build fl...

41914
来自专栏源哥的专栏

客户端数据集/服务端数据集的原理和设计

最近在开发一个比较大型的项目,主要采用Activex控件做底层操作,采用Javascript做逻辑控制和处理,采用Ajax实现服务端与客户端之间的交互,而在实际...

834
来自专栏西枫里博客

使用IP138读取用户端地址写入数据库函数

最近突然发现本...

852
来自专栏决胜机器学习

Redis专题(一)——Redis基本概述与安装配置

Redis专题(一) ——Redis基本概述与安装配置 (原创内容,转载请注明来源,谢谢) 一、特性 1、存储方式 Redis采用Key-Va...

3054
来自专栏C/C++基础

Linux命令(30)——scp命令

scp(secure copy)命令是一个基于SSH安全的进行远程文件拷贝命令,用于在Linux下进行远程拷贝文件,和它类似的命令有cp,不过cp只是在本机进行...

842

扫码关注云+社区