1.3 KiB
1.3 KiB
06 存储、缓存与 VFS
目标
建立文件访问路径:块设备或 initramfs 提供数据,VFS 提供统一文件接口。
前置条件
- 内存管理可用。
- 锁和等待机制可用。
- 用户态之前可以先由 kernel 测试 VFS。
建议边界
drivers/block/:块设备抽象和具体设备。kernel/fs/:VFS。mm/:页缓存或块缓存。fs/:具体文件系统实现。
实现内容
- 建立 block device 接口。
- 初期支持 initramfs/ramdisk。
- 建立 inode、dentry、file 等 VFS 对象。
- 建立路径解析。
- 支持 open/read/close/readdir。
- 后续再加入 write 和持久化文件系统。
- 为 page cache、block cache、writeback 和崩溃一致性预留边界。
非玩具化约束
- VFS 不依赖某个具体文件系统。
- 文件系统不直接依赖 shell 或进程加载器。
- 路径解析和引用计数要从一开始有边界。
- 缓存层不能和具体磁盘驱动耦合。
- VFS 对象生命周期必须明确,不能靠全局静态对象规避释放问题。
- 文件权限、时间戳、inode 编号等 POSIX 语义要保留位置。
验收方式
- kernel 可通过 VFS 打开并读取文件。
- 可列出目录。
- 替换具体 FS 不影响 VFS 调用方。
- 后续能加入可写缓存和 writeback,而不重写 VFS 调用层。