FAT16檔案系統

2021-08-03 09:36:36 字數 3650 閱讀 1724

fat16檔案系統

yoyoone

1.基本知識

扇區:每個磁軌被分為若干個弧段,這些弧段就是扇區。通常情況下,每個扇區512個位元組。

簇:fat將磁碟空間按一定數目的扇區為單位進行劃分,這樣的單位稱為簇。簇的大小一般為2的n次方。

2.fat16表的組織形式

使用fat檔案系統必須具有幾個部分:保留區,存放fat的檔案系統的重要引數和引導程式;fat表,記錄簇的使用情況;根目錄區,記錄根目錄資訊。

fat16的組織形式

引導扇區

fat1

fat2(重複的)

根資料夾

其他資料夾及所有檔案

剩餘扇區

1扇區實際情況取大小

同fat1

32個扇區

開始簇編號(從2開始)

不足一簇

保留區的第乙個扇區是

dbr區,稱為引導扇區。它是系統可訪問的第乙個扇區,主要包括與引導作業系統有關的引導引數和引導程式,還有與

fat檔案系統有關的

bpb引數。

1)dbr引數的偏移0x11處記錄了根目錄所佔扇區的數目;偏移0x16記錄了fat表所佔扇區的資料;偏移0x10記錄了fat表的副本數目。系統在得到這幾項引數以後,就可以確定資料區的開始扇區偏移。

2)fat16檔案系統從根目錄所佔的32個扇區之後的第乙個扇區開始以簇為單位進行資料的處理,對於根目錄之後的第乙個簇,編號為第2簇。

3)fat檔案系統之所以有12,16,32不同的版本之分,其根本在於fat表用來記錄任意一簇鏈結的二進位制位數。以fat16為例,每一簇在fat表中佔據2位元組(二進位制16位)。所以,fat16最大可以表示的簇號為0xffff(十進位制的65535)。

3.fat

fat表的作用是記錄磁碟上簇的分配情況,系統中,會把

fat表全部讀到記憶體中區。乙個檔案往往需要占用很多個簇。同乙個檔案不一定會完整地存放在乙個連續的儲存空間內,而是分成若干段,像鍊子一樣地存放。在檔名記錄中,指向檔案儲存的鏈頭所在的

fat簇,而該簇的

fat表存放下乙個鍊子的

fat簇值。

fat16記錄項的取值含義(16進製制)

fat16記錄項的取值

對應簇的表現情況

0000

未分配的簇

0002~ffef

已分配的簇

fff0~fff6

系統保留

fff7

壞簇fff8~ffff

檔案結束簇

1)fat表以"f8 ff ff ff" 開頭。

2)fat表記錄了磁碟資料檔案的儲存鍊錶。

4.fdt

根目錄區記錄著sd卡里儲存的所有檔案和目錄資訊,如圖所示。得到檔案資訊後,便可對相應檔案進行操作。

fat16目錄項32個位元組的表示定義

位元組偏移(16進製制)

位元組數定義

0x0~0x7

8檔名

0x8~0xa

3副檔名

0xb1

屬性位元組

00000000(讀寫)

00000001(唯讀)

00000010(隱藏)

00000100(系統)

00001000(卷標)

00010000(子目錄)

00100000(歸檔)

0xc~0x15

10系統保留

0x16~0x17

2檔案的最近修改時間

0x18~0x19

2檔案的最近修改日期

0x1a~0x1b

2表示檔案的首簇號

0x1c~0x1f

4表示檔案的長度

1)0x0偏移處的取值若為00h,表明目錄項為空;若為e5h,表明目錄項曾被使用,但對應的檔案或資料夾已被刪除。

5.dbr

表6  乙個fat16分割槽上的引導扇區段

位元組位移

字段長度(位元組)

欄位名稱

0x00

3跳轉指令(jump instruction)

0x03

8oem id

0x0b

25bpb

0x24

26擴充套件bpb

0x3e

448引導程式**(bootstrap code)

0x01fe

4扇區結束識別符號(0x55aa)

表7  fat16分割槽的bpb欄位 

位元組位移

字段長度(位元組)

例值名稱和定義

0x0b

20x0200

扇區位元組數(bytes per sector) 硬體扇區的大小。本欄位合法的十進位制值有512、1024、2048和4096。對大多數磁碟來說,本字段的值為512

0x0d

10x40

每簇扇區數(sectors per cluster) 乙個簇中的扇區數。由於fat16檔案系統只能跟蹤有限個簇(最多為65536個)。因此,通過增加每簇的扇區數可以支援最大分割槽數。分割槽的預設的簇的大小取決於該分割槽的大小。本欄位合法的十進位制值有 1、2、4、8、16、32、64和128。導致簇大於32kb(每扇區位元組數*每簇扇區數)的值會引起磁碟錯誤和軟體錯誤

0x0e

20x0001

保留扇區數(reserved sector) 第乙個fat開始之前的扇區數,包括引導扇區。本字段的十進位制值一般為1

0x10

10x02

fat數(number of fat)該分割槽上fat的副本數。本字段的值一般為2

0x11

20x0200

根目錄項數(root entries) 能夠儲存在該分割槽的根目錄資料夾中的32個位元組長的檔案和資料夾名稱項的總數。在乙個典型的硬碟上,本字段的值為512。其中乙個項常常被用作卷標號(volume label),長名稱的檔案和資料夾每個檔案使用多個項。檔案和資料夾項的最大數一般為511,但是如果使用的長檔名,往往都達不到這個數

0x13

20x0000

小扇區數(small sector) 該分割槽上的扇區數,表示為16位(<65536)。對大於65536個扇區的分割槽來說,本字段的值為0,而使用大扇區數來取代它

0x15

10xf8

**描述符( media descriptor)提供有關**被使用的資訊。值0xf8表示硬碟,0xf0表示高密度的3.5寸軟盤。**描述符要用於ms-dos fat16磁碟,在windows 2000中未被使用

0x16

20x00fc

每fat扇區數(sectors per fat) 該分割槽上每個fat所占用的扇區數。計算機利用這個數和fat數以及隱藏扇區數來決定根目錄在**開始。計算機還可以根據根目錄中的項數(512)決定該分割槽的使用者資料區從**開始

0x18

20x003f

每道扇區數(sectors per trark)

0x1a

20x0040

磁頭數(number of head)

0x1c

40x0000003f

隱藏扇區數(hidden sector) 該分割槽上引導扇區之前的扇區數。在引導序列計算到根目錄和資料區的絕對位移的過程中使用了該值

0x20

40x003ef001

大扇區數(large sector) 如果小扇區數字段的值為0,本字段就包含該fat16分割槽中的總扇區數。如果小扇區數字段的值不為0,那麼本字段的值為0

FAT16檔案系統簡介 一

我們在前面已經完成了主引導扇區程式的編寫。通過主引導記錄,我們已經實現了裝入分割槽引導扇區執行的操作。和主引導扇區一樣,分割槽引導扇區也只有區區 512 個位元組,根本不可能放得下所有的 來將以作業系統核心裝入記憶體,完成重定位工作並設定核心的執行環境。應次,分割槽引導扇區也只能做一件事,那就是把真...

fat16 檔案系統的結構

fat檔案系統在windows比較常見,相對於ext系統而言,也比較簡單。是學習檔案系統的切入點。首先先了解下fat16檔案系統的基本結構依次為 dbr扇區 fat表1 fat表2 根目錄和資料區。dbr扇區 dbr 是作業系統可以直接訪問的第乙個扇區,包括乙個引導程式和乙個稱為 bpb的本分割槽引...

FAT16檔案系統解析(C 版本)

今天fat檔案系統總算告乙個段落了,已經可以非常完美的讀取包含fat16檔案系統的磁碟了。由於是採用c 編寫,直接借鑑的 很少,並且考慮到mf不支援二進位制序列化,所以對資料結構的解析,是乙個乙個位元組進行的,所以很耗費時間。下面就是程式執行後的結果 可以識別物理磁碟及物理磁碟的分割槽 下圖是用檔案...