2014-01-20 29 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