虛擬檔案系統VFS

2021-08-20 14:10:02 字數 1428 閱讀 8310

現代作業系統必須同時支援多個檔案系統,作業系統如何將多個檔案系統整合成乙個目錄結構?使用者如何在訪問檔案系統空間時可以無縫地在檔案系統型別之間移動呢?

絕大多數作業系統包括unix都使用物件導向技術來簡化、組織和模組化實現過程,使用這些方法允許不同檔案系統型別可通過同樣結構來實現,這也包括了網路檔案系統型別如nfs,這樣使用者可以輕鬆的訪問位於本地磁碟的多個檔案系統型別,甚至位於網路上的檔案系統

nfs(network filesystem)檔案系統,它的最大功能是可以通過網路讓不同的機器,不同的作業系統彼此共享檔案(sharefiles)——可以通過nfs掛載遠端主機的目錄,訪問該目錄就像訪問本地目錄一樣

包括open()、read()、write()和close()呼叫以及檔案描述符

虛擬檔案系統(virtual file system)是 linux 核心中的乙個軟體層,用於給使用者空間的程式提供檔案系統介面,系統中所有的檔案系統不但依賴 vfs 共存,而且也依靠 vfs 協同工作。為了能夠支援各種實際檔案系統,vfs 定義了所有檔案系統都支援的基本的、概念上的介面和資料 結構,同時實際檔案系統也提供 vfs 所期望的抽象介面和資料結構,將自身的諸如檔案、目錄等概念在形式 上與vfs的定義保持一致。換句話說,乙個實際的檔案系統想要被 linux 支援,就必須提供乙個符合vfs標準 的介面,才能與 vfs 協同工作。實際檔案系統在統一的介面和資料結構下隱藏了具體的實現細節

vfs能區分本地檔案和遠端檔案,根據檔案系統型別可以進一步區分不同本地檔案

vfs可以根據檔案系統型別呼叫特定的檔案型別操作以處理本地請求,通過呼叫nfs協議程式來處理遠端請求,檔案控制代碼可以從相應的vnode中構造,並作為引數傳遞給程式下面在看下關於linux中vfs的結構,vfs主要定義的4種主要物件型別如下所示

vfs對每種型別的物件都定義了一組必須實現的操作。這些型別的每乙個物件都包含了乙個指向函式表的指標。函式表列出了物件的操作函式,下面就看下對檔案物件中定義的一些函式

乙個特定檔案型別的檔案物件必須要去實現檔案物件定義中的每個函式,vfs可以通過呼叫物件函式表中的合適函式來對物件進行操作,而不需要事先知道物件的實現型別也就是說vfs不關心乙個索引點代表的是乙個磁碟檔案、乙個目錄檔案、還是乙個遠端檔案,實現read操作的合適函式總是被放在函式表中的相同位置,vfs軟體層呼叫這些函式,而不關心資料是如何讀取的

VFS虛擬檔案系統

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

linux虛擬檔案系統vfs

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

虛擬檔案系統VFS 上

虛擬檔案系統 vfs 作為核心子系統,為使用者空間程式提供了檔案和檔案系統相關的介面。系統中所有檔案系統依賴vfs共存 協同工作,程式利用標準的unix系統呼叫對不同的檔案系統,甚至不同介質的檔案系統進行讀寫操作。vfs使得使用者可以直接使用open read write 這樣的系統呼叫而無須考慮具...