咱們把各操做系統中的實際文件系統叫作邏輯文件系統,VFS是Linux 內核與這些邏輯文件系統的一個接口,它們之間的關係。node
VFS是Linux 核心的一部分,其餘內核子系統與VFS打交道,VFS又管理其餘邏輯文件系統。因此VFS是文件系統和Linux 內核的接口,VFS以統一數據結構管理各類邏輯文件系統,接受用戶層對文件系統的各類操做。linux
VFS存在的意義數據結構
1. 向上,對應用層提供一個標準的文件操做接口;性能
2. 對下,對文件系統提供一個標準的接口,以便其餘操做系統的文件系統能夠方便的移植到Linux上;操作系統
3. VFS內部則經過一系列高效的管理機制,好比inode cache, dentry cache 以及文件系統的預讀等技術,使得底層文件系統不需沉溺到複雜的內核操做,便可得到高性能;對象
4. 此外VFS把一些複雜的操做盡可能抽象到VFS內部,使得底層文件系統實現更簡單。接口
通用文件模型進程
VFS爲底層文件系統提供了抽象,有兩種策略提供這種抽象。請求
1. 提供一個最小的通用模型,使得這個模型支持的功能是全部文件系統的最小交集程序
2. 提供一個儘可能大的通用模型,使得這個模型包含全部文件系統功能的合集。
Linux採用第二種策略來實現VFS,所以VFS封裝了底層文件系統的全部功能和抽象,VFS負責把應用層的請求轉發給特定的文件系統。
在處理文件時,應用空間和內核空間使用的對象是不一樣的。對應用程序來講,文件描述符用來表示一個文件,這個文件描述符是打開文件時內核分配給這個文件的一個整數,注意,這個文件描述符只在本進程內有效;而對於內核來講,則使用一個inode來表示一個文件,這個inode可能對應着應用層多個進程內的多個文件描述符。
更多Linux諮詢請查看www.linuxprobe.com