FAT 檔案系統設計思想

2021-05-22 23:27:09 字數 3909 閱讀 7412

(1)fat1/fat2

緊挨保留扇區之後

(2)fat1/fat2

中內容都是關於檔案

/目錄的簇號連線。

(3)資料區中檔案和目錄的屬性。檔案為使用者的資料集。目錄為檔案和子目錄的目錄項集。

(1)保留扇區

fat12/16

通常為1扇區,

fat32

通常為32

扇區(2)

db***t12/16

只有乙個

,損壞不能恢復;

fat32

有兩個,損壞可以恢復

(3)fat

表項(簇號表示)

fat12

為1.5

個位元組,

fat16 為2

個位元組,

fat32 為4

個位元組(4)

尺寸,fat12/16

的fat

表扇區數,分割槽總扇區數通常用

2個位元組的數字表示,

fat32可用4

個位元組的數字表示。

(5)根目錄

fat12/16

的根目錄不屬於資料區,通常由

bpb中的

rootentcnt(

根目錄項數

)決定尺寸大小(根目錄尺寸固定,不可變化);

fat32

屬於資料區,通常由

bpb中的

rootclus (

根目錄起始簇號

)決定,(根目錄尺寸不固定,可變化)。

fat12/16

fat1

連續,目錄項間沒用間隔其他項

sample

:)目錄項中屬性不同,檔案有文件屬性(

0x20

),目錄有目錄屬性(

0x10

);檔案一般有尺寸屬性,目錄沒有尺寸屬性,該項為0

(2)資料區不同,檔案的資料區為檔案資料;目錄的資料區為子目錄和檔案的目錄項(包括已用、未用、刪除),沒有資料資訊。

無論開啟、建立、刪除

檔案或目錄,都有針對層級目錄的匹配項的搜尋;然後再對最低一層的物件(檔案或目錄的目錄項)的搜尋。

舉個例子

例如要開啟

e:/sdio/filesys/filesystem_0811_doc0.5/sourcecode_v0.5_/ucfs.doc

(1)首先根據e:的

bpb引數計算出根目錄的物理扇區號,扇區數(

fat12/16

)或根目錄起始簇號,通過搜尋

fat表得出簇數,轉換成物理扇區號,扇區數(

fat32

)。(2)

在根目錄的扇區尺寸內,搜尋第一級目錄項

sdio

。如果沒有匹配目錄項(

fat格式名字一致,屬性一致

--文件或目錄屬性),表示檔案或目錄不存在,搜尋失敗。如果有匹配目錄項,取出

sdio

目錄項的首簇號,通搜尋

fat表得出

sdio

占用的簇數,轉換成物理扇區號,扇區數。

(3)在目錄

sdio

的扇區尺寸內,搜尋第二級目錄項

filesys

。如果沒有匹配目錄項(

fat格式名字一致,屬性一致

--文件或目錄屬性),表示檔案或目錄不存在,搜尋失敗。如果有匹配目錄項,取出

filesys

目錄項的首簇號,通搜尋

fat表得出

filesys

占用的簇數,轉換成物理扇區號,扇區數。依此類推,直到

sourcecode_v0.5_

級目錄。

(4)在目錄

sourcecode_v0.5_

的扇區尺寸內,搜尋最後一級的目錄項

ucfs.doc

。如果沒有匹配目錄項(

fat格式名字一致,屬性一致

--文件或目錄屬性),表示檔案或目錄不存在,搜尋失敗。如果有匹配目錄項,搜尋成功。

(1)搜尋上級目錄(遞迴),通過上級目錄的目錄項的首簇號在搜尋

fat表,得出上級目錄的尺寸。

(2)在上級目錄的資料區尋找有無該檔案的目錄項,如果有,到

2.6.2

刪除之(3)

在上級目錄的資料區尋找空閒的目錄項,如果已飽和(目錄項都已用完),給上級目錄增加乙個空閒簇(通過搜尋

fat)。目錄項的檔名設為檔名;屬性設為包含文件的屬性(

0x20

),其餘可選;

檔案尺寸屬性設為0。

(4)從

fat表搜尋乙個可用空閒簇,作為檔案的首簇號,首簇號對應的標誌設為檔案結束。首簇號填入檔案的目錄項。

(1)搜尋上級目錄(遞迴),通過上級目錄的目錄項的首簇號在搜尋

fat表,得出上級目錄的尺寸。

(2)搜尋檔案在上級目錄的目錄項,將目錄項第乙個位元組設為

0xe5

(3)通過首簇號搜尋

fat表簇鏈,依次將各個簇的簇號設為0

(1)搜尋上級目錄(遞迴),通過上級目錄的目錄項的首簇號在搜尋

fat表,得出上級目錄的尺寸。

(2)搜尋檔案在上級目錄的目錄項,找到檔案的首簇號,和檔案尺寸。

(1)根據檔案位置指標和要讀的位元組數,確定要讀的簇數。

(2)根據檔案的首簇號,

搜尋fat

表,到檔案位置所在的簇,如果檔案指標不在簇的扇區起始處,將該簇對應的資料讀出,取部分資料反饋給使用者的

buffer

,其餘按扇區讀出,直到一簇讀完。簇數減1。

(3)搜尋下一簇號,將下一簇對應的資料讀出,簇數減

1,如果最後一簇的資料不滿乙個扇區,取部分資料反饋給使用者的

buffer

。(4)

重複(3

)直到簇數為

0 或檔案結束。更新檔案內位置指標。

(1)根據檔案位置指標和要寫的位元組數,確定要寫的簇數。

(2)檔案的首簇號,搜尋

fat表,到檔案位置所在的簇,如果檔案指標不在簇的扇區起始處,

先將該扇區對應的資料讀出,

將部分資料填入,寫入該扇區

, 其餘按扇區寫入,直到一簇寫入。簇數減1

簇數減1

(3)搜尋下一簇號,將下一簇對應的資料寫入,簇數減

1,如果最後一簇的資料不滿乙個扇區,先將該扇區對應的資料讀出,

將部分資料填入,寫入該扇區。

(4)重複(

3)直到簇數為

0。更新檔案內位置指標及檔案尺寸。

(1)搜尋上級目錄(遞迴),通過上級目錄的目錄項的首簇號在搜尋

fat表,得出上級目錄的尺寸。

(2)在上級目錄的資料區尋找空閒的目錄項,如果已飽和(目錄項都已用完),給上級目錄增加乙個空閒簇(通過搜尋

fat)。目錄項的檔名設為目錄名;屬性設為包含目錄的屬性(

0x10

),其餘可選;

檔案尺寸屬性設為0。

(3)從

fat表搜尋乙個可用空閒簇,作為目錄的首簇號。首簇號填入目錄的目錄項。

(4)清空該簇下所得目錄項。(和檔案不同)

(1)搜尋上級目錄(遞迴),通過上級目錄的目錄項的首簇號在搜尋

fat表,得出上級目錄的尺寸。

(2)搜尋檔案在上級目錄的目錄項,將目錄項第乙個位元組設為

0xe5

(3)通過首簇號搜尋

fat表簇鏈,依次將各個簇的簇號設為0

(1)搜尋上級目錄(遞迴),通過上級目錄的目錄項的首簇號在搜尋

fat表,得出上級目錄的尺寸。

(2)搜尋目錄在上級目錄的目錄項,找到檔案的首簇號

(3)搜尋

fat表,得出該目錄的尺寸

(1)根據子目錄項索引,搜尋已占用的目錄項,找到相應的目錄項

(2)讀出目錄名和各屬性。

(1)根據子目錄項索引,搜尋已占用的目錄項,找到相應的目錄項

(2)寫入目錄項目錄名和各屬性。

fat檔案系統

在主引導區後面就是fat表。從上面可以得知乙個fat表是229個扇區。它裡邊的內容很簡單,裡邊的內容就是指出下乙個簇在 你的盤有多少個簇,那麼它的fat表就要有多少個項來描述它們。因為fat16是用2個位元組 16位 來描述乙個簇的,所以這時fat表的大小就應該是2位的簇數個位元組。fat表中,第4...

FAT檔案系統簡介

fat即file allocation table 檔案分配表 的簡稱,fat系列的檔案系統曾經是個人機平台應用最廣泛的檔案系統,除此之外它們還經常被應用於許多系統的記憶體模組管理中。fat檔案系統因其對儲存在其內部的檔案的管理方式而得名,它將組成每個檔案的資料塊以指標鍊錶的方式串聯起來,並依靠fa...

FAT檔案系統原理

一 硬碟的物理結構 硬碟儲存資料是根據電 磁轉換原理實現的。硬碟由乙個或幾個表面鍍有磁性物質的金屬或玻璃等物質碟片以及碟片兩面所安裝的磁頭和相應的控制電路組成 圖1 其中碟片和磁頭密封在無塵的金屬殼中。硬碟工作時,碟片以設計轉速高速旋轉,設定在碟片表面的磁頭則在電路控制下徑向移動到指定位置然後將資料...