2014-01-20 30 views
1

我明白detnries是关于通过不访问磁盘来获取文件的inode节省时间。文件查找和dentry缓存

我读过的所有资源都描述了如何使用dentries找到inode。 没有人真正描述了如果我们没有对它进行细分的情况下如何找到inode。

假设我想访问/home/dlv/src.c并且dentry缓存为空。 操作系统如何创建新的细目? 你能解释一下粗略的机制吗? (从搜索磁盘和创建dentry并设置其字段等)。

谢谢, Dolev。

回答

3

文件系统的根目录条目通常在众所周知的地方,或者有一个众所周知的inode号码,或者inode号码存储在超级块或其他文件系统元数据中。从那里,包含根目录条目的块将被扫描以发现home - 该目录条目将包含home的inode编号。然后扫描该inode引用的块以获取/home的目录条目并搜索dlv。重复上述操作,直到找到路径中的最后一个目录条目,然后扫描该目录的inode以查找与该文件匹配的目录条目。

考虑到每个访问需要10ms的磁盘上深度嵌套的文件,该过程应该给你一个关于目录条目缓存动机的好主意......在磁盘上查找单个深嵌套文件可以很容易需要数百个磁盘访问。

+0

非常感谢:) – dlv