当前位置: 首页 > news >正文

Linux内核设计与实现 - 第13章 虚拟文件系统(VFS)

目录

    • 1. VFS概述
    • 2. VFS核心数据结构
      • 2.1 超级块(super_block)
      • 2.2 索引节点(inode)
      • 2.3 目录项(dentry)
      • 2.4 文件对象(file)
    • 3. VFS操作接口
      • 3.1 文件系统操作
      • 3.2 文件操作
      • 3.3 目录操作
    • 4. 文件系统注册与挂载
    • 5. 性能优化机制
    • 6. 实验环节

在这里插入图片描述

1. VFS概述

  • 设计目标:为不同文件系统提供统一接口
  • 核心思想:抽象所有文件系统共性操作
  • 关键特性
    • 支持多种文件系统共存
    • 提供一致的文件操作API
    • 实现高效的目录缓存机制

2. VFS核心数据结构

2.1 超级块(super_block)

struct super_block {struct list_head    s_list;     /* 超级块链表 */const struct super_operations *s_op; /* 操作函数表 */struct dentry       *s_root;    /* 根目录dentry */// ...
};

2.2 索引节点(inode)

  • 文件元信息存储结构
  • 包含文件权限、大小、时间戳等

2.3 目录项(dentry)

  • 目录项缓存(dcache)机制
  • 路径名到inode的快速映射

2.4 文件对象(file)

struct file {struct path         f_path;const struct file_operations *f_op;loff_t             f_pos;// ...
};

3. VFS操作接口

3.1 文件系统操作

  • mount()/umount()
  • statfs()获取文件系统统计信息

3.2 文件操作

  • open()/read()/write()/close()
  • mmap()内存映射操作

3.3 目录操作

  • mkdir()/rmdir()
  • getdents()读取目录项

4. 文件系统注册与挂载

  1. register_filesystem()注册文件系统类型
  2. mount_bdev()挂载块设备文件系统
  3. 典型挂载流程示例:
struct file_system_type ext4_fs_type = {.owner = THIS_MODULE,.name = "ext4",.mount = ext4_mount,.kill_sb = kill_block_super,
};

5. 性能优化机制

  • 页缓存(Page Cache):加速文件读写
  • dcache优化:路径名解析加速
  • 预读机制:提高顺序读性能

6. 实验环节

  • 编写简单文件系统模块
  • 分析dcache命中率统计
  • 使用strace跟踪VFS系统调用
http://www.lryc.cn/news/600896.html

相关文章:

  • Linux shuf命令随机打乱行顺序
  • 差模干扰 共模干扰
  • 利用RAII与析构函数避免C++资源泄漏
  • kafka的部署和jmeter连接kafka
  • 20250726-2-Kubernetes 网络-Service 定义与创建_笔记
  • C++/CLI vs 标准 C++ vs C# 语法对照手册
  • Java 大视界 -- Java 大数据在智能医疗影像数据标注与疾病辅助诊断模型训练中的应用(366)
  • greenhills编译出错问题
  • 20250726-1-Kubernetes 网络-Service存在的意义_笔记
  • 【Spring AI】大模型服务平台-阿里云百炼
  • 高可用集群KEEPALIVED的详细部署
  • 【MySQL】MySQL 缓存方案
  • 使用Clion开发STM32(Dap调试)
  • 在 Scintilla 中为 Squirrel 语言设置语法解析器的方法
  • Flutter控件归纳总结
  • 面试150 IPO
  • 达梦[-2894]:间隔表达式与分区列类型不匹配
  • 大语言模型困惑度:衡量AI语言能力的核心指标
  • Windows Server容器化应用的资源限制设置
  • 小白成长之路-部署Zabbix7(二)
  • Word文档试卷处理新方案:答案提取与格式化一键完成
  • MongoDB数据库高并发商业实践优化·运行优化之不可使用root账户进行MongoDB运行-优雅草卓伊凡
  • python面向对象编程详解
  • Django+celery异步:拿来即用,可移植性高
  • go-admin 构建arm镜像
  • (LeetCode 面试经典 150 题) 20. 有效的括号 (栈)
  • Ubuntu 18.04安装Fast-Lio2教程
  • MySQL进阶学习与初阶复习第三天
  • Windows11下和Vmware中的Ubuntu22.04设置samba服务遇到的一个问题- valid users和guest设置冲突
  • 单元测试、系统测试、集成测试知识详解