Linux虛擬檔案系統 VFS簡介

2022-02-04 16:50:25 字數 1119 閱讀 9168

linux中可以支援多種檔案系統,而且支援各種檔案系統之間相互訪問,這是因為有乙個虛擬檔案系統。虛擬檔案系統也叫虛擬檔案系統轉換(virtual filesystem switch,簡稱vfs),之所以說它虛擬,是因為該檔案系統的各種資料結構都是隨時建立或刪除的,在盤上並不永久存在,只能存放在記憶體中。也就是說,只有vfs是無法工作的,因為它不是真正的檔案系統。

我們把各作業系統中的實際檔案系統叫做邏輯檔案系統,vfs是linux 核心與這些邏輯檔案系統的乙個介面,它們之間的關係。

vfs是linux 核心的一部分,其他核心子系統與vfs打交道,vfs又管理其他邏輯檔案系統。所以vfs是檔案系統和linux 核心的介面,vfs以統一資料結構管理各種邏輯檔案系統,接受使用者層對檔案系統的各種操作。

vfs存在的意義

1. 向上,對應用層提供乙個標準的檔案操作介面;

2. 對下,對檔案系統提供乙個標準的介面,以便其他作業系統的檔案系統可以方便的移植到linux上;

3. vfs內部則通過一系列高效的管理機制,比如inode cache, dentry cache 以及檔案系統的預讀等技術,使得底層檔案系統不需沉溺到複雜的核心操作,即可獲得高效能;

4. 此外vfs把一些複雜的操作盡量抽象到vfs內部,使得底層檔案系統實現更簡單。

通用檔案模型

vfs為底層檔案系統提供了抽象,有兩種策略提供這種抽象。

1. 提供乙個最小的通用模型,使得這個模型支援的功能是所有檔案系統的最小交集

2. 提供乙個盡量大的通用模型,使得這個模型包含所有檔案系統功能的合集。

linux採用第二種策略來實現vfs,因此vfs封裝了底層檔案系統的所有功能和抽象,vfs負責把應用層的請求**給特定的檔案系統。

在處理檔案時,應用空間和核心空間使用的物件是不同的。對應用程式來說,檔案描述符用來表示乙個檔案,這個檔案描述符是開啟檔案時核心分配給這個檔案的乙個整數,注意,這個檔案描述符只在本程序內有效;而對於核心來說,則使用乙個inode來表示乙個檔案,這個inode可能對應著應用層多個程序內的多個檔案描述符。

linux虛擬檔案系統vfs

linux可以掛載不同的檔案系統 ext2,fat,ntfs 用同一的樣式呈現給使用者,讀寫操作用起來都一樣,這是怎樣做到的呢?linux核心在各種不同的檔案系統格式上做了乙個抽象層,使得檔案 目錄 讀寫訪問等概念成為抽象層的概念,因此各種檔案系統看起來用起來都一樣,這個抽象層稱為虛擬檔案系統 vf...

虛擬檔案系統VFS

現代作業系統必須同時支援多個檔案系統,作業系統如何將多個檔案系統整合成乙個目錄結構?使用者如何在訪問檔案系統空間時可以無縫地在檔案系統型別之間移動呢?絕大多數作業系統包括unix都使用物件導向技術來簡化 組織和模組化實現過程,使用這些方法允許不同檔案系統型別可通過同樣結構來實現,這也包括了網路檔案系...

VFS虛擬檔案系統

虛擬檔案系統是具體檔案系統之上的乙個抽象層,它可以使得客戶程式以統一的方式接入不同型別的具體檔案型別。vfs是核心和具體檔案系統之間的乙個介面,只要通過實現這個介面,核心就可以新增對某乙個檔案系統型別的支援。有時vfs指的是通過使用軟體來作為乙個管理容器,提供和具體的檔案系統一樣的功能,通常是乙個或...