目录
- 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;
};
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. 文件系统注册与挂载
register_filesystem()
注册文件系统类型mount_bdev()
挂载块设备文件系统- 典型挂载流程示例:
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系统调用