1. 程式人生 > >VFS(Virtual File System)

VFS(Virtual File System)

rtu 特定 數據結構 存儲 ons 結構 對象 poi open

一、VFS作為內核子系統,為用戶空間程序提供了文件系統相關的接口。所有實際文件系統依賴VFS共存,依靠VFS系統工作。

1、VFS提供通用文件系統接口:用戶空間程序可以利用標準的UNIX文件系統調用,如open()\read()\write(),對不同物理介質上的不同文件系統進行操作。

2、VFS提供文件系統抽象層:VFS提供了一個通用文件系統模型,該模型囊括了所有實際文件系統的常用功能和行為。VFS抽象層定義了所有實際文件系統支持的基本的、概念上的接口和數據結構,所以VFS能銜接各種實際文件系統。

二、Unix文件系統使用了四種與文件系統相關的抽象概念文件(file)、目錄項(dentry)、索引節點(inode)、安裝點(mount point).

1、文件系統是特殊的數據分層存儲結構,它包含文件、目錄和相關的控制信息。文件系統被安裝在一個特定的安裝點(mount point)上。

2、安裝點(mount point)在全局層次結構中被稱作命名空間,所有已安裝的實際文件系統都作為根文件系統樹的枝葉出現在系統中。

3、Linux將這種層次化概念引入單個進程中,每個進程指定一個唯一的命名空間。因為每個進程都會繼承父進程的命名空間,所以所有進程往往都只有一個全局命名空間。

4、文件(file)是一個有序字節串,字節串中第一個字節是文件的頭,最後一個字節是文件的尾。

5、文件通過目錄組織起來。目錄又稱文件夾,用來容納相關文件。在Unix中,目錄屬於普通文件。

6、目錄可以包含子目錄,所以目錄可以層層嵌套,形成路徑(path),路徑中的每一部分被稱為目錄條目(目錄項,dentry),例如:/home/wolfman/buffer.c 是一個路徑,根目錄/ 、目錄home,wolfman 、文件buffer.c 都是目錄項。

7、Unix系統將文件的相關信息文件本身加以區分。文件的相關信息又稱文件的元數據,被存儲在一個單獨的數據結構中,該結構被稱為索引節點(inode). 文件本身即是file結構。

8、VFS中有四個主要的對象結構:
超級塊對象(super_block),代表一個已安裝文件系統。

索引節點對象(inode),代表一個文件。(文件的相關信息

)

文件對象(file),代表有進程打開的文件。(文件本身)

目錄項對象(dentry),代表一個目錄項,是路徑(path)的組成部分。

9、每個主要對象都包含一個操作對象,這些操作對象描述了內核針對主要對象可以使用的方法:

super_operations對象,其中包括內核針對特定文件系統所能調用的方法。

inode_operations對象,其中包括針對特定文件所能調用的方法。

file_operations對象,其中包括內核針對已打開的文件所能調用的方法。

dentry_operations對象,其中包括內核針對特定目錄項所能調用的方法。

三、和文件系統相關的數據結構

1、file_system_type,用來描述各種實際文件系統,如ext4\ext3\XFS,每種文件系統有且只有一個file_system_type結構(不管有多少個實例安裝到系統中,還是根本就沒有安裝到系統中)。

2、vfsmount 用來描述一個安裝文件系統的實例,即代表一個安裝點。

VFS(Virtual File System)