文件系统路径名管理与Unix文件系统详解
1. 段映射(segmap)统计与操作
段映射(segmap)在文件系统中起着重要作用。示例中的segmap统计显示,在总共16,109,564次getmap调用中,有15,257,790次回收了槽位,文件和偏移的槽位重用率达到95%,即segmap中文件系统页面的缓存命中率为95%。实际的页面到缓存命中率可能更高,因为即使在segmap中未命中,页面仍可能存在于页面缓存中,只需重新加载页面的地址转换信息。
写入操作与读取类似,调用segmap_getmap来检索或创建文件和偏移的映射,完成I/O操作后释放segmap槽位。若文件扩展或在文件空洞中创建新页面,则需额外步骤,调用segmap_pagecreate函数创建并锁定新页面,再调用segmap_pageunlock解锁。
segmap缓存会随页面的换入换出以及页面扫描器的操作而增减,但最大大小受限于特定架构。
| 释放类型 | 描述 |
|---|---|
| rel_abort | 由于写入失败中止,释放槽位并从seg_map段中移除 |
| rel_dontneed | 释放槽位,告知VM系统释放页面,这些页面会被放在缓存列表头部以便优先重用 |
| released | 释放槽位,且释放操作不受rel_abort、rel_async或rel_wr |