• 位于kernel的文件系统大管家--Virtual File System


    VFS概念全揽

    一、全局视角:VFS 的任务

    VFS 作为中间适配层,他需要招呼 3 个大佬:1. 应用进程 ,2.系统内核 3.底层磁盘。

    二、VFS负责处理 3 个任务的核心接口

    1. VFS 提供给 【应用进程 】的接口:

    • 进程的 “办公地点” – struct fs_struct{}

    负责维护当局进程的工作目录和根目录

    • 进程的 “公文包” struct file_struct{}

    维护进程打开的文件描述符列表

    2. VFS 提供给【系统内核】的接口:

    • 被打开的“文件” struct file{}

    维护全局的被打开文件的对象,他是VFS的核心对象

    • 文件的 “坐标” struct path{}

    由 路径 vfsmount + 条目对象 dentry 组成

    • 文件系统的父子血缘关系记录 – 挂载点 struct mount{}
      记录无入口的原父文件系统 dentry 与 替位的新子文件系统 dentry 关联关系

    【补充知识】

    • VFS 为内核提供的始祖对象 – file 对象由两部分组成:
    1. 路径 Path
    2. 文件内容读写接口 (file_operation)
    • “无名”的文件内容代理 struct dentry{}

    维护在 path 中,dentry 是一个概念难点

    • 子文件系统的磁盘管理员 struct vfsmount{}

    维护着与底层文件系统相关的 superblock与 替位的新子文件系统入口 dentry


    3. VFS 提供给【底层磁盘】的接口:

    • 管理磁盘文件的 struct inode{}

    包含对持久化的文件内容权限标记方法 inode_operation、以及读写文件内容的IO接口 file_operation

    • 管理 inode 的 struct superblock{}

    包含对 inode 增删查改方法 superblock_operation


    【补充知识】
    值得一提的是: inode里的 file_operation 涉及很多文件缓存技术以及 IO 缓存等驱动技术,这是技术热点。

  • 相关阅读:
    Open3D ICP精配准(使用鲁棒性核函数)
    聊聊MySQL是如何处理排序的
    Docker 安装 Oracle 11g
    python6
    协同过滤推荐算法UserCF、ItemCF
    移植STM32官方加密库STM32Cryptographic
    java计算机毕业设计工厂生产计划与进度管理系统源码+mysql数据库+系统+lw文档+部署
    Spring简介说明
    docker镜像仓库
    el-select 多选模式下嵌套el-tree 删除tag时能去掉el-tree对应节点的勾
  • 原文地址:https://blog.csdn.net/u010833547/article/details/127938425