檔案系統典型實現方式

2022-05-02 21:18:11 字數 1850 閱讀 4700

1. 使用者空間檔案系統

使用者空間檔案系統位十核心之外,實現為乙個使用者程序或者乙個執行庫。在使用者空間開發檔案系統的主要原因是,開發工作相對比較簡單。這種方法避免了核心程式設計的複雜性,極大的簡化了開發工作。使用者級檔案系統的另乙個優點是,檔案系統可以由使用者自己安裝,不需要系統管理員的參與,這給使用者使用檔案系統提供了很大的靈活性。乙個執行在使用者空間的檔案系統這樣與使用者程序和作業系統進行互動(以讀檔案操作為示例):

1. 乙個使用者程序發出乙個讀檔案的請求。

2. 這個請求被轉換為乙個核心系統呼叫,核心呼叫使用者級檔案系統。

3. 使用者級檔案系統產生另乙個核心呼叫,從儲存介質中提取讀操作要求的資料。

4. 核心將資料返回給使用者級檔案系統。

5. 使用者級檔案系統再次呼叫核心操作,準備把資料返回給使用者程序。

6. 核心將資料傳給使用者程序完成讀操作。

這類檔案系統的典型例子有以fuse為模板開發出的各種檔案系統。fuse是乙個使用者空間檔案系統的模板,它有一組檔案操作例如read(), write(), lseek0)的介面,只要實現這些介面就能構建乙個使用者空間檔案系統。例如,在這些介面中加入加密功能,就能實現加密檔案系統,加入壓縮功能,就能實現壓縮檔案系統。使用者空間檔案系統的主要缺點是效能不高,因為需要多次上下文切換。

2. 核心檔案系統

核心檔案系統是最典型的檔案系統開發方式,常見的基十磁招『的檔案系統都是以這種形式實現的,如ext2和jf s。實現乙個核心檔案系統通常要考慮如下細節:

1.設計一合適的資料格式。這將決定檔案系統的效率和磁碟的空間利用率。一般來說沒有一種通用的資料格式可以適合所有的應用需求,有些格式適合儲存大量的小檔案,ifu有些格式儲存大檔案具有更好的效能。

2.如何保證檔案系統的一致性。當計算機系統非正常終止時,很可能有存在於快取中的資料還沒有寫入磁招『,這可能會導致檔案系統出現不一致的元資料。ext3使用口志來保證一致性。

3.提供使用者工具。核心檔案系統通常需要提供格式化、引數調整和磁碟碎片整理等使用者工具。

開發乙個核心檔案系統要複雜的多,因為檔案系統直接和儲存裝置的驅動程式互動,這要求開發者深入理解作業系統的內部結構。這種方法沒有充分利用以前的開發成果,要重新設計檔案系統的所有功能。

核心檔案系統的主要優點是它的效能比使用者空間檔案系統要好得多,因為它作為核心特權模式執行,沒有使用者空間檔案系統的附加的上下文切換操作。

3. 可堆疊檔案系統

可堆疊檔案系統是利用vnode堆疊技術實現的。vnode是指unix系統在虛擬檔案系統層用來表示乙個開啟的檔案或目錄的物件,具體到linux來說vnode就是指vfs中的mode物件。vnode介面抽象出了核心其它部分能對乙個檔案系統進行的操作,隱藏了檔案系統對檔案操作的具體實現,從ifu允許系統可以透明的訪問乙個檔案系統,ifu不用關心其具體型別。vnode節點概念的乙個改進是vnode分層堆疊。這種技術讓乙個vnode介面呼叫另乙個,從而使檔案系統功能設計模組化。有了vnode分層堆疊後,可以有多個vnode並b_它們按順序被呼叫。可堆疊檔案系統實現了堆疊式的vnode介面,從ifu可以工作在另乙個檔案系統之上,利用下層檔案系統進行基本的資料訪問,並在其之增加新的特性(如提供密和壓縮功能)。

可堆疊檔案系統實現了vfs定義的介面,因此可以象不同檔案系統一樣掛載在vfs之下工作,但與基十塊裝置的檔案系統(如ext2)或者網路檔案系統(nfs)不同,可堆疊檔案系統本身並不提供基本的檔案資料儲存,ifu是依賴底層的檔案系統來實現。它的基本工作原理是:接收檔案系統相關的系統呼叫,對引數進行相關處理,然後**到下層檔案系統獲取返回結果,進一步處理並返回最終結果。可堆疊檔案系統可以在大部分unix系統中實現。

Linux檔案系統實現

linux檔案管理從使用者的層面介紹了linux管理檔案的方式。linux有乙個樹狀結構來組織檔案。樹的頂端為根目錄 節點為目錄,而末端的葉子為包含資料的檔案。當我們給出乙個檔案的完整路徑時,我們從根目錄出發,經過沿途各個目錄,最終到達檔案。我們可以對檔案進行許多操作,比如開啟和讀寫。在linux檔...

檔案系統 why檔案系統

為什麼需要檔案系統,可否由作業系統直接寫裸裝置?裸裝置是一種沒有經過格式化的磁碟或分割槽,即讓作業系統直接管理操作磁碟設定,進行資料讀寫等。通過檔案系統的方式組織磁碟儲存和資料管理有很多好處,比如 1.資料讀取 管理等操作變得簡單便捷 檔案系統給使用者提供了乙個簡單的操作介面,只需簡單的操作就能實現...

檔案系統定址方式 扇區定址

磁碟邏輯分布 0 術語 可以把磁碟想象成乙個餅,heads就是他的磁頭,因為乙個碟片兩面都記錄資料,所以它一定是乙個偶數。cylinder是它的寬度,柱面越多,磁碟越胖,同時越不划算。sector是扇區,乙個柱面的扇區數目是一定的。1 定址 定址的目標是可以找到具體的某乙個扇區,早期有ibm的chs...