非 SVR4 基于的文件系统架构剖析
1. 常规文件访问机制
在文件系统中,对常规文件的读写操作是基础且关键的功能。当进行常规文件的读写时, ino_rw() 函数会调用 rwip() 函数,而 rwip() 函数会通过调用 bmap() 函数将文件偏移量映射到磁盘上的块,然后调用缓冲区缓存来实际读取数据。
bmap() 函数会返回两个块:一个是同步读取的请求块,另一个是文件中的下一个块,并且会发起对下一个块的异步读取,这种预读机制有助于提高性能。虽然 bmap() 函数是直接从 rwip() 函数中调用的,但这也标志着文件系统特定代码的分离开始出现,为支持多种文件系统类型的架构奠定了基础。
2. 4.3BSD 中的文件名缓存
在 BSD UNIX 中引入了两种文件名缓存机制:
- 增强的 namei() 函数 :增强后的 namei() 函数允许在进程顺序扫描目录时更快地进行目录扫描。在合适的基准测试下,这种增强有显著效果,但在实际应用中,其作用范围相对较小。
- 新的名称缓存 :引入了一种新的名称缓存,用于保存最近的文件名到索引节点的查找结果。这个缓存后来在 SVR4 中被采用,称为目录名查找缓存(DNLC)。它包含将文件名和设备号映射到内核中索引节点指针的条目。BSD 名称缓存使用软持有机制
超级会员免费看
订阅专栏 解锁全文
10

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



