複製鏈接
請複製以下鏈接發送給好友

FAT12

鎖定
FAT12是計算機文件系統,DOS時代就開始使用的文件系統(File System),直到2009年仍然在軟盤上使用。
中文名
FAT12
開始時期
DOS時代
類    別
文件系統
使用區域
軟盤

FAT12主磁盤結構

  • 引導扇區(Boot Sector)位於第一個扇區,在軟盤上就是0柱面(磁道)0磁頭1扇區。
  • 文件分配表(FAT)緊接着引導扇區的是兩個完全相同的FAT表,每個FAT表佔用9個扇區
  • 根目錄FAT表之後是根目錄區,根目錄區長度不固定
  • 數據區根目錄後面就是數據區 [1] 

FAT12引導扇區格式

格式如下: [1] 
名稱
偏移
長度
內容
軟盤參考值
BS_jmpBoot
0
3
-
jmp LABEL_START
nop
BS_OEMName
3
8
廠商名
'ForrestY'
BPB_BytsPerSec
11
2
每扇區字節數
0x200(即十進制512)
BPB_SecPerClus
13
1
扇區數
0x01
BPB_RsvdSecCnt
14
2
Boot記錄佔用多少扇區
0x01
BPB_NumFATs
16
1
共有多少FAT表
0x02
BPB_RootEntCnt
17
2
根目錄文件數最大值
0xE0 (224)
BPB_TotSec16
19
2
扇區總數
0xB40(2880)
BPB_Media
21
1
介質描述符
0xF0
BPB_FATSz16
22
2
每FAT扇區數
0x09
BPB_SecPerTrk
24
2
每磁道扇區數
0x12
BPB_NumHeads
26
2
0x02
BPB_HiddSec
28
4
隱藏扇區數
0
BPB_TotSec32
32
4
如果BPB_TotSec16是0,由這個值記錄扇區數
0xB40(2880)
BS_DrvNum
36
1
中斷13的驅動器號
0
BS_Reserved1
37
1
未使用
0
BS_BootSig
38
1
擴展引導標記
0x29
BS_VolD
39
4
卷序列號
0
BS_VolLab
43
11
'OrangeS0.02'
BS_FileSysType
54
8
文件系統類型
'FAT12'
引導代碼
62
448
引導代碼、數據及其他填充字符等
-
結束標誌
510
2
-
0xAA55

FAT12文件分配表

它包含有兩份文件分配表,這是出於系統冗餘考慮,儘管它很少使用,即使是磁盤修復工具也很少使用它。它是分區信息的映射表,指示簇是如何存儲的。
每個FAT項佔12bit,這也所被成為FAT12的原因,FAT項的值代表的是文件下一個簇號,但如果值大於等於0xFF8,則表示當前簇已經是本文件的最後一個簇。如果值是0xFF7,表示它是一個壞簇
一個FAT項可能跨越兩個扇區,編碼實現的過程要考慮在內。 [1] 

FAT12根目錄區

根目錄區位於第二個FAT表之後,開始扇區號為19,它由若干個目錄條目(Directory Entry)組成,條目最多有BPB_RootEntCnt個。每個條目佔用32個字節,它的格式如下: [1] 
名稱
偏移
長度
描述
DIR_Name
0
0xB
文件名8字節,擴展名3字節
DIR_Attr
0xB
1
保留
0xC
10
-
DIR_WrtTime
0x16
2
最後修改時間
DIR_WrtDate
0x18
2
最後修改日期
DIR_FstClus
0x1A
2
此條目對應的開始簇號
DIR_FileSize
0x1C
4
文件大小

FAT12數據區

數據區在根目錄區後,數據區開始扇區號為根目錄區起始扇區號+根目錄區大小,即19+BPB_RootEntCnt * 32 / BPB_BytsPerSec。 [1] 
參考資料
  • 1.    於淵.Orange's: 一個操作系統的實現.北京:電子工業出版社,2009.6:正文104頁