在了解虚拟文件系统之前,必须先知道什么是 Kernal  Space 与 User  Space。 Kernal Space 与User Space 的差别,在于内存使用上安全机制的差异。

kernal执行时会占据一段系统的内存空间, 这一段内存空间便是Kernal  Space.  所有用户是无法和kernal  space  直接交互的。    

  在/proc/iomem文件中所记录的kernal地址, 可以在命令行中执行: cat   /proc/iomem  | more

User  Space  则强调,用户执行任何的程序所占用的内存部分, 对这些User  Space 程序而言, 无法直接使用Kernal Space 中的资源,必须要经过一些系统所提供的system calls 才能使用Kernal   Space 的对象。

  这就涉及到操作系统中的Ring的主要概念, 整个操作系统分为: Ring 0, Ring 1, Ring 2 以及Ring 3,  Ring 0 是kernal所在的地方(也就是Kernal Space), 也是唯一可以和硬件直接交互的系统组件。所有Ring 0 以外的软件, 若须使用硬件时,都必须通过Ring 0 的执行;

                                                  

  Ring 0 是Kernal所在地方;

  Ring 1 和 Ring 2 是系统模块的部分;对于用户来说:就是经常看到的一些模块 例如: /dev ,  /proc ,  /sys  等虚拟文件系统;

  Ring 3 是所有用户正常使用的应用程序也就是User  Space

  因此: 当有有应用程序需要任何的硬件设备时, 要先通过虚拟文件系统 或系统模块, 向kernel 请求支持;

虚拟文件系统与一般的文件系统最大差别在于“虚拟” 二字, 因为只要是虚拟文件系统,就没有一定要在哪一个目录下查看的限制,并且目录下的任何文件都不会占用硬盘的空间,这是因为虚拟文件系统只是一个抽象的对应方式,并没有任何实体的文件存在硬盘中;

  

  

linux 虚拟文件系统----------Virtual File System VFSkky的更多相关文章

  1. Linux 虚拟文件系统四大对象:超级块、inode、dentry、file之间关系

    更多嵌入式原创文章,请关注公众号:一口Linux 一:文件系统 1. 什么是文件系统? 操作系统中负责管理和存储文件信息的软件机构称为文件管理系统,简称文件系统. 通常文件系统是用于存储和组织文件的一 ...

  2. linux 虚拟文件系统

    转自:https://www.ibm.com/developerworks/cn/linux/l-cn-vfs/ Linux 允许众多不同的文件系统共存,并支持跨文件系统的文件操作,这是因为有虚拟文件 ...

  3. Linux虚拟文件系统

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

  4. KASS分布式文件系统(Kass File System)

    KASS分布式文件系统(Kass File System),简称KFS,是开始公司自主研发的分布式文件存储服务平台.KFS系统架构及功能服务类似Hadoop/GFS/DFS,它通过HTTP-WEB为上 ...

  5. PatentTips – EMC Virtual File System

    BACKGROUND OF THE INVENTION 1. Field of the Invention The present invention generally relates to net ...

  6. Linux虚拟文件系统(VFS)学习

    虚拟文件系统(Virtual Filesystem)也可称之为虚拟文件系统转换(Virtual Filesystem Switch),是一个内核软件层,用来处理与Unix标准文件系统相关的全部系统调用 ...

  7. HTML5之本地文件系统API - File System API

    HTML5之本地文件系统API - File System API 新的HTML5标准给我们带来了大量的新特性和惊喜,例如,画图的画布Canvas,多媒体的audio和video等等.除了上面我们提到 ...

  8. Linux虚拟文件系统VFS解决

    参考<Linux内核设计与实现> 虚拟文件系统(VFS)它是linux核心和详细I/O一个普通的访问接口之间的包装设备,通过这层界面,linux内核能够以同一的方式訪问各种I/O设备. 虚 ...

  9. linux虚拟文件系统2

    转自:http://rstevens.iteye.com/blog/849413 一.概述 Linux 文件系统是相当复杂的,本文只分析虚拟文件系统的实现,对具体的文件系统不涉及. 即使是虚拟文件系统 ...

随机推荐

  1. python filter内建函数

    以下是filter函数的官方文档,注意最后一段,当function不为None时,函数相似于[item for item in iterable if function(item)],function ...

  2. ListView的简单使用和性能优化

    起源:ListView是Android开发中使用最广泛的一种控件,它以垂直列表的形式显示所有列表项. 创建ListView有两种方式: ☆ 直接使用ListView进行创建. ☆让Activity继承 ...

  3. OSG坐标系统

    1.世界坐标         世界坐标系描述的是整个场景中所有的对象,可以理解为绝对坐标系,所有对象的位置都是绝对坐标.从整体上考虑,它为所有对象的位置提供一个绝对的参考标准,从而避免了物体之间由于独 ...

  4. 升级linux内核(2.6.32->3.10.81),安装docker

    1.内核升级环境准备 #查看已经安装的和未安装的软件包组,来判断我们是否安装了相应的开发环境和开发库: yum grouplist #一般是安装这两个软件包组,这样做会确定你拥有编译时所需的一切工具 ...

  5. 强烈推荐visual c++ 2012入门经典适合初学者入门

    强烈推荐visual c++ 2012入门经典适合初学者入门 此书循序渐进,用其独特.易于理解的教程风格来介绍各个主题,无论是编程新手,还是经验丰富的编程人员,都很容易理解. 此书的目录基本覆盖了Wi ...

  6. 浅谈Web Api配合SignalR的跨域支持

    最近接手的一个项目中,涉及到一个简单的消息模块,由于之前有简单了解过SignalR,所以打算尝试着摸索摸索~! 首先,通过Nuget管理器添加Microsoft ASP.NET SignalR引用~目 ...

  7. npm 常用命令

    npm install xxx 安装模块npm install xxx@1.1.1   安装1.1.1版本的xxxnpm install xxx -g 将模块安装到全局环境中.npm ls 查看安装的 ...

  8. MVC多表联合查询数据显示

    随然做过几年.net开发,但一直没有做过MVC框架下的网站,这段时间无事,学习一下.下面的方法是我摸索过程中的一点总结,如果有更好的方法,欢迎告诉我,谢谢. 这段时间我只看了MVC和LinQ两本书,关 ...

  9. Lua for Windows入门01

    由于项目紧急,我都没来得及研究lua的基本知识就直接持枪上阵了.在实施编写的过程中,却次发现编程语言如此之美,第一次. 随着Lua+for+Windows+5.1.4-45版本的完全安装,最后跳出了一 ...

  10. [C#参考]UI和线程(一)

    Windows是一个多任务的系统,如果你使用的是windows 2000及其以上版本,你可以通过任务管理器查看当前系统运行的程序和进程. 什么是进程呢?当一个程序开始运行时,它就是一个进程,进程所指包 ...