談談什么是文件系統 文件系統的功能與特點

2023-08-30 10:17:39 來源:最后一個bug

1、談談什么是文件系統


(資料圖)

文件系統的應用非常廣泛,同時種類也是特別的多,并且不同平臺也會使用不同性能和特點的文件系統,比如查找效率、數據安全等級等等,如下面windows使用的NTFS:

不同的文件系統:

單片機常用文件系統:Fatfs、振南的Znfs等等;

Linux常用文件系統 : Ext擴展fs、jffs,yaffs等等;

windows常用文件系統 : NTFS等

......

雖然文件系統多種多樣,看起來非常復雜,其實主要目的還是為用戶提供讀寫數據的統一服務,同時附帶有文件的組織,定位和安全等等功能。

2、自己組織數據保存

既然文件系統的主要功能是保存數據,那么當我們用一個存儲介質(如硬盤、Flash等)在沒有文件系統的情況下該如何存儲數據呢 ?

無文件系統存儲方式

分析一下:

一般我們會規劃一個存儲分配規劃區,該區域中存儲著各個數據區所存儲的位置,大小等等一些描述信息。

該存儲分配規劃區一般都是固定的,當程序上電以后會從固定的地址讀取該部分信息,進而定位各個數據區域,當應用程序需要訪問某個存儲數據區域的時候,便可以通過描述信息找到對應的區域并讀取或者寫入相關信息。

3、文件系統的功能與特點

其實上面提到的無文件系統的數據存儲辦法,可以看成最原始、為簡單的文件系統。然而比較完整的文件系統僅僅只是在該基礎上進行性能上的加強和功能上的增多。1、空間的分配 把前面的數據區域看成一個個的文件,如何為這一些文件分配合適的區域,當文件變大如何把空閑的空間拿來進行分配和組織等等都由文件系統實現相應的算法進行處理。 2、查找與定位 當存儲在存儲介質上的文件數量越來越多,如何快速的查找到對應的文件,并且如何對各個文件進行標識和組織,從而達到高效的查找和定位,也是文件系統需要做的工作。 3、可靠性和安全性 當存儲介質出現損壞或者壞塊,如何進行數據恢復或者數據校驗,如何保護相關重要文件不被惡意操作等也是文件系統需要考慮的。

4、文件屬性

文件系統的基本操作單元是文件,那么要實現文件系統對文件靈活管理就需要每個文件(也就是之前的數據區)有一個更加詳細的描述,這些文件描述信息都存儲在存儲介質中,當讀取(專業一點叫加載)所對應文件系統的配置信息存儲區域就獲得了對應文件系統所管理的文件Map,如下圖是文件的相關屬性:

從上面了解到每個文件的屬性非常豐富,包括名字、路徑、大小、修改時間、安全所屬等等信息,這些信息都是為以后索引,保護等訪問文件做準備的。

5、文件描述符

這里所說的文件描述符和第4小節所說的文件屬性描述信息不相同,文件屬性描述信息存儲在介質上,而文件描述符是當用戶需要操作文件形成的一個文件描述操作符,所以文件描述符與每個文件打開的文件對應,只有當應用程序需要訪問某個文件才會形成這樣的結構標識,否則沒有必要產生,從而節省內存空間,如下圖所示:

每個進程維護著一個文件描述符表,文件描述符表中包含多個文件描述符,同時每個文件描述符中包含有對應打開文件表中的文件指針,通過文件指針即可知道當前文件讀寫偏移、訪問權限等等,通過打開文件表項中的inode指針又可以訪問到inode表中具體的文件類型、修改記錄時間等等信息。 所以文件描述符僅僅只是打開文件的一個標識。

6、文件類型

對于大部分文件系統中的文件是沒有文件類型定義的,僅僅只是讀寫字節序列流,至于具體文件內容的格式或者類型都由用戶程序自己解析定義,如下圖所示:

7、文件目錄

大部分文件系統都采用一種分層的組織思想,以目錄的形式去組織各個文件,在windows中的文件夾也就是一個目錄項,該目錄項也是一個特殊的文件,不過其文件中包含的數據內容是指向的其子目錄項或者是子文件,看起來就像一棵樹。

那么通過路徑的方式 : 根目錄/子目錄3/文件1 的描述,便可以直接找到對應的文件相關信息,進而操作文件。

8、硬鏈接與軟連接

1、硬鏈接

如下圖所示,通過不同的路徑可以訪問同一個文件,這就是硬鏈接,如果刪除了其中一個目錄項僅僅只是刪除了一個鏈接路徑,可以通過另外的路徑進行訪問。

2、軟鏈接

軟鏈接類似于“快捷方式”,所以軟鏈接就是一個文件,其中存放的內容是另一文件的路徑,從而可以根據該內容定位到其對應的文件實體,主要是提供訪問上的便利,同時刪除該鏈接不會影響到實際文件。

9、最后小結

這里僅僅只是為大家介紹了文件系統的一些基本概念,后續作者會通過具體的實例講解具體文件系統的實現,從而接觸大家對文件系統的陌生感,通過也可以從文件系統中獲得一些處理技巧幫助平時的開發。

審核編輯:湯梓紅

標簽:

上一篇:電源軟開關技術及常見軟開關拓撲結構
下一篇:最后一頁