17、非 SVR4 基于的文件系统架构解析

非 SVR4 基于的文件系统架构解析

1. 常规文件访问与缓存机制

在对常规文件进行读写操作时, ino_rw() 函数会调用 rwip() rwip() 主要通过调用 bmap() 函数将文件偏移量映射到磁盘块,然后调用缓冲区缓存来实际读取数据。 bmap() 函数会返回两个块,一个是同步读取的请求块,另一个是文件中的下一个块,会对其发起异步读取,以此实现预读功能,提升性能。虽然 bmap() 函数由 rwip() 直接调用,但文件系统特定代码的分离已初现端倪,为支持多文件系统类型的架构奠定了基础。

BSD 缓冲区缓存与其他地方描述的实现并无显著差异,这里不再赘述。

2. 4.3BSD 中的文件名缓存

BSD UNIX 引入了两种文件名缓存机制:
- 增强 namei() 函数 :当进程按顺序扫描目录时,增强后的 namei() 函数能实现更快的目录扫描。在合适的基准测试中,这种优化效果显著,但在实际应用中,其作用范围有限。
- 引入新的名称缓存 :新的名称缓存用于存储最近的文件名到索引节点(inode)的查找结果。该缓存后来在 SVR4 中被采用,称为目录名查找缓存(DNLC)。它包含将文件名和设备号映射到内核中索引节点指针的条目。BSD 名称缓存采用软持有机制,即缓存条目中引用的索引节点

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值