虚拟文件系统(有时也称作虚拟文件交换,更常见的是简称做VFS)作为内核子系统,为用户空间程序提供了文件和文件系统相关的接口.系统中的所有文件系统不但依赖VFS共存,而且也依赖VFS系统协同工作.通过虚拟文件系统,程序可以利用标准的UNIX系统调用对不同的文件系统,甚至不同的介质上的文件系统进行读写操作,如下如图所示:


      这幅图的含义是:

      VFS执行的动作:使用CP(1)命令从ext3文件系统格式的硬盘拷贝数据到ext2文件系统格式的可移动磁盘上.两种不同的文件系统,两种不同的介质,连接到同一个VFS上


      VFS使得用户可以直接使用open(),read()和write()这样的系统调用而无需考虑具体文件系统和实际的物理介质,这些都可以称作是文件系统的抽象层,在文件系统之上存在虚拟的文件系统,并通过VFS实现相应的方法可以屏蔽不同的文件系统之间的不同,通过通用的接口提供给用户使得用户感觉不到不同的文件系统之间的差异,下面这张图显示的就是用户操作write()时各个系统之间的协同合作:


      含义是:write()调用将来自用户空间的数据流,首先通过VFS的通用系统调用,其次通过文件系统的特殊写法,最后写入物理介质中

      VFS通过定义一些数据结构并加入执行这些结构的通用方法,最后让不同的文件系统实现自己的方法来屏蔽各种不同的文件系统之间的差异:

      VFS中有四个主要的对象类型,它们分别是:

      超级块对象,它代表一个具体的已安装的文件系统

      索引节点对象,它代表一个具体文件

      目录项对象,它代表一个目录项,是路径的一个组成部分

      文件对象,它代表由进程打开的文件


      Linux支持了相当多种类的文件系统.从本地文件系统(如ext3和ext4)到网络文件系统(如NFS),Linux在标准内核中已经支持的文件系统超过60种.VFS层提供给这些不同的文件系统一个统一的框架,而且也提供了能和标准系统调用交互工作的统一接口.由于VFS层的存在,使得在Linux上实现新文件系统的工作变得简单起来,它可以轻松的使这些文件系统通过标准Unix系统调用而协同工作.

Linux2.6--虚拟文件系统相关推荐

  1. Linux 的虚拟文件系统(强烈推荐)

    1 引言 Linux 中允许众多不同的文件系统共存,如 ext2, ext3, vfat 等.通过使用同一套文件 I/O 系统 调用即可对 Linux 中的任意文件进行操作而无需考虑其所在的具体文件系 ...

  2. Linux 字符设备驱动开发基础(六)—— VFS 虚拟文件系统解析

    一.VFS 虚拟文件系统基础概念 Linux 允许众多不同的文件系统共存,并支持跨文件系统的文件操作,这是因为有虚拟文件系统的存在.虚拟文件系统,即VFS(Virtual File System)是 ...

  3. linux一切皆是文件_Linux 的虚拟文件系统(真正理解“一切皆文件”)

    1,引言 Linux 中允许众多不同的文件系统共存,如 ext2, ext3, vfat 等.通过使用同一套文件 I/O 系统 调用即可对 Linux 中的任意文件进行操作而无需考虑其所在的具体文件系 ...

  4. Linux文件系统概述:硬盘驱动>通用块设备层>文件系统>虚拟文件系统(VFS)

    目录 一.概述 1. 硬盘驱动 2. 通用块设备层 General Block Device Layer 3. 文件系统 4. 虚拟文件系统(VFS) 二.存储介质 闪存(Flash Memory) ...

  5. Linux虚拟文件系统

    从文件 I/O 看 Linux 的虚拟文件系统 1 引言 Linux 中允许众多不同的文件系统共存,如 ext2, ext3, vfat 等.通过使用同一套文件 I/O 系统 调用即可对 Linux ...

  6. 虚拟文件系统(无持久存储的文件系统),以proc和sysfs为例

    对于现代操作系统,虚拟文件系统是一个几乎无处不见的功能,因此,要探究现代操作系统的运行机制,对其进行讨论是必然的. 本文使用的是Linux 2.6.x.x,这是一个变革性的版本,无论是内存管理,进程管 ...

  7. 虚拟文件系统(VFS)

    原文链接:http://www.orlion.ga/1008/ linux在不同的文件系统之上做了一个抽象层,使得文件.目录.读写访问等概念都成为抽象层概念,这个抽象层被称为虚拟文件系统(VFS). ...

  8. Linux虚拟文件系统简介

    本文将对Linux下的VFS做一个简单介绍,主要包括VFS里面的一些概念,以及文件系统是如何与VFS交互的. 本文所涉及的代码摘自Linux-4.4.0-59 什么是VFS VFS的全称为virtua ...

  9. Linux内核设计与实现笔记(一) 虚拟文件系统、块I/O层

    虚拟文件系统 系统内所有文件系统不但依赖VFS共存,而且也依靠VFS系统协同工作. VFS使得用户可以直接使用open/read/write等系统调用,而无需考虑具体文件系统和实际物理介质. VFS中 ...

  10. Linux虚拟文件系统解析

    概述 虚拟文件系统(Virtual Filesystem Switch,简称VFS)所有的数据结构都是在运行以后建立的,并在卸载时删除,在磁盘中并没有存储这些数据结构.虚拟文件系统只有和实际文件系统( ...

最新文章

  1. 5-flutter 布局和列表
  2. Linux下模拟RAID5实现磁盘损坏,数据自动切换到备份磁盘上
  3. 太原科技大学计算机在哪个校区,太原科技大学有几个校区及校区地址 哪个校区最好...
  4. 根证书和中间证书的区别
  5. 2016全国大学生计算机设计大赛,2016年“第9届中国大学生计算机设计大赛”闭幕...
  6. CG CTF WEB 签到2
  7. Flutter 系列文章:Flutter Icon 控件介绍
  8. HDU - 4333 Revolving Digits(扩展KMP)
  9. php最常用方法,php 常用方法
  10. 最长递增子序列LIS再谈
  11. 【论文笔记】EMNLP2019: 基于层次多图卷积网络的实体类型分类
  12. jquery $.post 超时_详解如何实现前端jquery中的ajax方法,看这一篇就够了
  13. 小红书API根据关键词取商品列表,Onebound数据
  14. 该微信用户未开启“公众号安全助手”的消息接收功能,请先开启后再绑定的解决办法
  15. WebStorm-2021.1.1下载及安装
  16. Windows注册表及常见子项
  17. java jmf获取图像_java利用jmf实现拍照功能
  18. Java学习 -- 方法
  19. PROFINET 概念
  20. {转帖]图纸A0,A1,A2,A3,A4实际尺寸是多少?长和宽怎么分

热门文章

  1. springMVC通过ajax传递参数list对象或传递数组对象到后台
  2. oracle-ords
  3. 利用增强限制条件来求解问题
  4. 九州云陈沙克:OpenStack的成功源于自身的开放
  5. SitemapBaiduspider
  6. sersync2 完全安装配置说明(三) ----插件基本配置和使用
  7. mysql memcached plugin插件
  8. 坑爹坑娘坑祖宗的87端口(记一次tomcat故障排查)
  9. 网络摄像头 登录绕过 RCE漏洞 数据分析报告
  10. java jsp 脚本 声明 表达式 简介