我們已經知道,正是由於在內核中引入了VFS,跨文件系統的文件操作才能實現,「一切皆是文件」 的口號才能承諾。而為什麼引入了VFS,就能實現這兩個特性呢?在接下來,我們將以這樣的一個思路來切入 文章的正題:我們將先簡要介紹下用以描述VFS模型的一些數據結構,總結出這些數據結構相互間的關係;然後 選擇兩個具有代表性的文件I/O操作sys_open()和sys_read()來詳細說明內核是如何藉助VFS和具體的文件系統打 交道以實現跨文件系統的文件操作和承諾「一切皆是文件」的口號。
目錄 目錄好比一個文件夾,用來容納相關文件。因為目錄可以包含子目錄,所以目錄是可以層層嵌套,形成 文件路徑。在Linux中,目錄也是以一種特殊文件被對待的,所以用於文件的操作同樣也可以用在目錄上。
目錄項 在一個文件路徑中,路徑中的每一部分都被稱為目錄項;如路徑/home/source/helloworld.c中,目錄 /, home, source和文件 helloworld.c都是一個目錄項。
索引節點 用於存儲文件的元數據的一個數據結構。文件的元數據,也就是文件的相關信息,和文件本身是兩個不同 的概念。它包含的是諸如文件的大小、擁有者、創建時間、磁碟位置等和文件相關的信息。