zoukankan      html  css  js  c++  java
  • 2018.4.17 VFS

    总结:

    1. VFS只存在于内存中,它在系统启动时被创建,系统关闭时注销。
    2. VFS的作用就是屏蔽各类文件系统的差异,给用户、应用程序、甚至Linux其他管理模块提供统一的接口集合。
    3. 管理VFS数据结构的组成部分主要包括超级块和inode。

    VFS是物理文件系统与服务之间的一个接口层,它对Linux的每个文件系统的所有细节进行抽象,使得不同的文件系统在Linux核心以及系统中运行的进程看来都是相同的。

    严格的说,VFS并不是一种实际的文件系统。它只存在于内存中,不存在于任何外存空间。VFS在系统启动时建立,在系统关闭时消亡。

    虚拟文件系统(Virtual FileSystem,VFS)可支持跨越不同文件系统或存储设备的文件操作。

    VFS是在各种具体的文件系统之上建立了一个抽象层,它屏蔽了不同文件系统间的差异。它之所以可以将各种文件系统纳入其中,是因为它提供了一个通用的文件系统模型。在内核中,这个通用的模型具体的表现为一组统一的抽象接口和数据结构。每个文件系统都必须实现这些统一接口,并在组织结构上与该模型保持一致。

    通过文件名打开文件:

     

    硬连接和软连接:

     

    Linux 文件系统组件的体系结构

    VFS 在系统中的架构:

     

    系统调用在核心空间中的处理层次:


    虚拟文件系统层的作用:屏蔽下层具体文件系统操作的差异,为上层的操作提供一个统一的接口。正是因为有了这个层次,所以可以把设备抽象成文件,使得操作设备就像操作文件一样简单。

    在具体的文件系统层中,不同的文件系统(例如 ext2 和 NTFS)具体的操作过程也是不同的。每种文件系统定义了自己的操作集合。

    引入 cache 层的目的是为了提高 linux 操作系统对磁盘访问的性能。 Cache 层在内存中缓存了磁盘上的部分数据。当数据的请求到达时,如果在 cache 中存在该数据且是最新的,则直接将数据传递给用户程序,免除了对底层磁盘的操作,提高了性能。

    通用块层的主要工作是:接收上层发出的磁盘请求,并最终发出 IO 请求。该层隐藏了底层硬件块设备的特性,为块设备提供了一个通用的抽象视图。

    IO 调度层的功能:接收通用块层发出的 IO 请求,缓存请求并试图合并相邻的请求(如果这两个请求的数据在磁盘上是相邻的)。并根据设置好的调度算法,回调驱动层提供的请求处理函数,以处理具体的 IO 请求。

    驱动层中的驱动程序对应具体的物理块设备。它从上层中取出 IO 请求,并根据该 IO 请求中指定的信息,通过向具体块设备的设备控制器发送命令的方式,来操纵设备传输数据。

    设备层中都是具体的物理设备。定义了操作具体设备的规范。

    VFS 的对象之间的处理:

     

     VFS 内核数据结构:

    read的调用过程:

     

    一边喊着救命,一边享受沉沦。
  • 相关阅读:
    方向余弦阵,欧拉角,四元数
    贝叶斯公式理解
    mysql安装错误解决办法
    arduino 配置 esp8266
    决策树的python实现
    ppt罗列项排版
    ★-原创性说明-★
    【通知】即日起重启技术博客
    第一篇:你不一定了解的"推荐系统"
    第十篇:K均值聚类(KMeans)
  • 原文地址:https://www.cnblogs.com/fast-walking/p/8865798.html
Copyright © 2011-2022 走看看