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不支援二進位制序列化,所以對資料結構的解析,是乙個乙個位元組進行的,所以很耗費時間。下面就是程式執行後的結果 可以識別物理磁碟及物理磁碟的分割槽 下圖是用檔案...