Unix文件系统UFS实现详解
1. UFS概述
UFS(Unix文件系统)以可加载的文件系统模块形式实现,包含vfs和vnode对象的实例。其中,UFS的vnode接口实现文件操作,而UFS的vfs接口则负责文件系统的管理。
UFS文件系统的实现可分为以下五个主要组件:
- vfs对象的实例,以及用于挂载和卸载文件系统、收集文件系统统计信息的方法。
- 实现文件操作的vnode方法。
- 采用标准目录名查找缓存的目录实现。
- 将文件映射到存储设备磁盘块的块映射算法。
- 用于在vnode不再被引用后仍将其保留在内存中的inode缓存。
UFS实现了用于文件访问的vnode接口和用于文件系统管理的vfs接口,并且与用于持久存储的设备驱动程序、用于存储和检索元数据的块缓冲区缓存、用于缓存路径名的目录名查找缓存以及用于缓存文件数据的虚拟内存系统进行交互。
2. 文件到磁盘块的映射
基于磁盘的文件系统的核心是块映射算法,这些算法实现了磁盘上的文件系统格式。对于UFS而言,主要有两个函数实现了磁盘格式:
- bmap_read() :查询文件系统,确定文件块所在的物理磁盘扇区,即查找包含所需块磁盘地址的直接/间接块。
- bmap_write() :在文件扩展或为有空洞的文件首次写入块时,分配新的磁盘块。
bmap_read() 函数在文件读写时都用于定位磁盘块,它接受一个inode和偏移量作为输入参数,并将磁盘地址和长度的指针作为输出参数。该函数会搜索inode的
超级会员免费看
订阅专栏 解锁全文
2

被折叠的 条评论
为什么被折叠?



