【Linux】Linux操作系統的文件管理系統

操作系統作爲磁盤文件系統和用戶之間的中介,必須在內核中建立自己的文件系統,爲與磁盤文件系統相區別,我們把它叫做操作系統的文件管理系統,簡稱文件管理系統。

 

文件管理系統與磁盤文件系統的關係

與處理器相比,磁盤是一種工作速度極其緩慢的外部設備,操作系統很難直接利用磁盤文件系統來對文件進行操作。因此,操作系統必須根據磁盤文件系統提供的各種基本信息在內存中建立必要的緩衝數據結構,一方面爲了避免頻繁地訪問磁盤,另一方面也用來記錄文件的一些動態信息。與此同時,還要建立一些操作系統自用的文件管理用表。

文件管理系統中的管理用表及緩衝區主要有:

  • 文件註冊表。包含文件系統在磁盤分區中信息的登記表;
  • 全局打開文件表。包含每個打開文件的文件控制塊(FCB)的附件以及其他信息;
  • 進程打開文件表。該表爲進程所有,它包含一些指針,這些指針指向全局打開文件表中本進程當前所使用的FCB;
  • 目錄緩衝區。用來保存近期訪問過的目錄信息;
  • 索引節點緩衝區;
  • 文件緩衝區。用來保存當前或近期訪問文件的內容。

下圖以打開文件和讀取文件操作表示了文件管理系統和磁盤文件系統的關係:

當用戶進程使用系統調用open()打開一個文件時,該系統調用會向磁盤驅動器發出驅動命令,在磁盤的目錄文件中按用戶進程給出的文件名或者文件存儲路徑搜索該文件的目錄節點;找到後將在內存創建一個該節點的數據結構,將磁盤中的目錄節點的信息複製過來,並把該文件的i節點(FCB)存放在一個叫做全局打開文件表的表中。

之所以這麼做,是爲了使進程可以直接用內存中的數據結構來訪問該文件,而不必再去訪問慢速的磁盤了。

從上面的敘述中可知,操作系統的文件管理系統就是磁盤文件系統與用戶進程之間的中介。

 

文件緩衝區

爲提高訪問文件的效率,稍微複雜一些的操作系統都在內存中創建了緩衝區。所謂緩衝,是指系統爲當前和最近讀寫操作過的文件內容在內存中保留一份副本,以便再次需要訪問這些內容時就不必費時費力地從磁盤中讀入了。當需要寫磁盤時,可以先寫到副本中,待系統較爲空閒時再將副本寫入磁盤。

除此之外,文件緩衝區還爲多線程共享同一個文件建立了基礎。

 

文件系統的層次結構

從存儲位置來看,文件系統的層次結構如下所示:

從組織層次來看,文件系統的層次結構如下所示:

在這種層次結構中,每層都利用底層的功能實現更高級的抽象,甚至把文件變成用戶便於理解的方式。

設備驅動層是由設備驅動程序和中斷處理程序組成,它處於文件系統的最底層,負責將上層的命令翻譯成設備可以理解的底層命令,以驅動硬件設備的數據讀寫操作。

基本文件系統的任務主要是向驅動層發送合適的驅動命令。該層通常與文件組織模塊合併成爲文件組織系統。

文件組織模塊知道文件及其邏輯塊和物理塊,知道文件存儲塊的分配方式和文件的位置,所以文件組織模塊負責將上層的邏輯文件操作翻譯成實際的驅動命令。另外,文件組織模塊還要負責進行空閒塊的管理與分配工作。

邏輯文件系統處於最高層,用來接收應用程序的命令。邏輯文件系統負責管理系統用於文件管理的所有數據結構,向文件組織模塊提供組織信息(例如添加、刪除目錄和節點),並通過文件控制塊(FCB)來維護文件結構和文件的保護安全。

 

虛擬文件系統

目前,面對各式各樣、各具特點的文件系統,能否以同一界面來使用不同的文件系統就成了衡量通用操作系統性能的標準之一,所以現代操作系統大多都是採用虛擬文件系統(Vitual Filesystem Switch,VFS)。

所謂虛擬文件系統,就是一個本身並沒有文件的系統,但它爲其他不同的實際文件系統提供了統一的操作界面,也就是說,它相當於一個“書皮”。其設計思想是:既然所有實際文件系統都是用來管理文件的,那麼它們總有一些共性,特別是在文件的操作方面,誓如,它們都有文件的打開、關閉、讀、寫等操作。這樣,就可以利用這些共性來構建一個統一的文件系統框架,並用這個框架來容納實際文件系統,以實現不同文件系統的統一管理。

虛擬文件系統和實際文件系統的關係示意圖如下:

簡單地說,設置虛擬文件系統的目的就是:統一不同的文件系統,並不讓用戶與實際文件系統直接見面。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章