1、FAT文件系統(tǒng)分為三個(gè)部分:保留區(qū)、FAT區(qū)和數(shù)據(jù)區(qū) FAT文件系統(tǒng)將邏輯盤的空間分為DBR引導(dǎo)區(qū)(BOOT區(qū))、文件分配表(FAT)、根目錄表(FDT)和數(shù)據(jù)區(qū)(DATA區(qū))。 FAT16只有一個(gè)DBR,占用邏輯0扇區(qū);FAT32中的DBR多了一個(gè)副本,分別起始于邏輯0扇區(qū)(0頭、1扇區(qū))和邏輯6扇區(qū)(0頭、7扇區(qū))。 FAT32在DBR副本和FAT1之間有保留扇區(qū);FAT16沒有保留扇區(qū)。 FAT16文件系統(tǒng)中的FAT1從邏輯0扇區(qū)(1頭、1扇區(qū))開始;FAT32文件系統(tǒng)中的FAT1從邏輯32扇區(qū)(1頭、33扇區(qū))開始。 FAT32,DBR占用一個(gè)扇區(qū),之后還留有31個(gè)保留扇區(qū)。文件分配表區(qū)跟在DBR及保留扇區(qū)后,F(xiàn)AT1的地址偏移量為0E~0FH,F(xiàn)AT2跟在FAT1之后,其地址可以用FAT1的所在扇區(qū)號(hào)加上每個(gè)FAT所占的扇區(qū)數(shù)獲得。保留區(qū)中還包括DBR的備份扇區(qū),F(xiàn)SINFO(記錄文件系統(tǒng)中空閑簇?cái)?shù)量以及下一個(gè)可用簇號(hào)燈信息)扇區(qū),保留區(qū)后面為FAT區(qū)(2個(gè)) 2、定位FAT位置: 從MBR的分區(qū)表中得知分區(qū)的起始扇區(qū),偏移到此扇區(qū)。 從DBR的BPB中得知:每簇的扇區(qū)數(shù)(0X0D位置處),保留扇區(qū)數(shù)(偏移0XE~F),F(xiàn)AT表個(gè)數(shù)(偏移0X10),F(xiàn)AT的扇區(qū)數(shù)(0X24~27),起始簇號(hào)(從DBR的偏移0X2C~2F)。 FAT1=分區(qū)起始扇區(qū)+DBR保留扇區(qū),F(xiàn)AT2=分區(qū)起始扇區(qū)+DBR保留扇區(qū)+FAT1。 根目錄=數(shù)據(jù)區(qū)的起始扇區(qū)+(簇大小*2) 根目錄=分區(qū)起始扇區(qū)+DBR保留扇區(qū)+(FAT表*2)+(簇大小*2) 相對(duì)地址 FAT1表偏移 = 保留扇區(qū)數(shù) FAT2表的偏移 = FAT1+FAT表的大小 = 保留扇區(qū)數(shù) + FAT表扇區(qū)數(shù) 根目錄起始扇區(qū) = 保留扇區(qū)數(shù) + 隱藏扇區(qū)數(shù)+ FAT的扇區(qū)數(shù) × FAT表個(gè)數(shù) + (起始簇號(hào)-2) x 每簇的扇區(qū)數(shù) 數(shù)據(jù)簇的起始位置=保留區(qū)扇區(qū)數(shù)+ FAT扇區(qū)數(shù)* FAT表數(shù)+(簇號(hào)-2)*每簇扇區(qū)數(shù)】。 絕對(duì)地址 DBR起始扇區(qū)=隱藏扇區(qū) FAT1起始扇區(qū)=保留扇區(qū)+隱藏扇區(qū) 根目錄起始扇區(qū)=隱含扇區(qū)+保留扇區(qū)+FAT*2+(文件起始簇-2)×每簇扇區(qū)數(shù) 設(shè)總扇區(qū)為N 則FAT16,數(shù)據(jù)區(qū)扇區(qū)=N-FAT大小*2-FDT(32個(gè)扇區(qū))-保留扇區(qū),數(shù)據(jù)區(qū)的簇=FAT扇區(qū)總數(shù)*512/2,每簇扇區(qū)數(shù)=數(shù)據(jù)區(qū)扇區(qū)/數(shù)據(jù)區(qū)的簇。假設(shè)保留扇區(qū)為1 FAT32,數(shù)據(jù)區(qū)扇區(qū)=N-FAT大小*2-保留扇區(qū);數(shù)據(jù)的簇=FAT扇區(qū)總數(shù)*512/4。假設(shè)保留扇區(qū)為32 3、MBR MBR(Main Boot Record 主引導(dǎo)記錄區(qū))位于硬盤的0磁道0柱面1扇區(qū)。在512字節(jié)的主引導(dǎo)扇區(qū)中,MBR占用了446個(gè)字節(jié)(00-1BD),64個(gè)字節(jié) DPT(Disk Partition Table硬盤分區(qū)表),以“55AA”結(jié)束 分區(qū)表由4項(xiàng)組成,每項(xiàng)16個(gè)字節(jié),共4×16 = 64字節(jié)。每項(xiàng)描述一個(gè)分區(qū)的基本信息。 例如:(80) (01 01 00) (07) (FE FF FF) (3F 00 00 00) (82 C1 3B 3A) 存貯字節(jié)位 內(nèi)容及含義 第1字節(jié) 引導(dǎo)標(biāo)志。若值為80H表示活動(dòng)分區(qū),若值為00H表示非活動(dòng)分區(qū)。 第2-4字節(jié) 本分區(qū)的起始磁頭號(hào)、扇區(qū)號(hào)、柱面號(hào)。其中:磁頭號(hào)——第2字節(jié);扇區(qū)號(hào)——第3字節(jié)的低6位; 柱面號(hào)——為第3字節(jié)高2位+第4字節(jié)8位。 第5字節(jié) 分區(qū)類型符。0H——該分區(qū)未用;06H——FAT16分區(qū);0BH——FAT32分區(qū);05H——擴(kuò)展分區(qū);07H——NTFS分區(qū);0FH——擴(kuò)展分區(qū)(LBA模式)。 第6-8字節(jié) 本分區(qū)的結(jié)束磁頭號(hào)、扇區(qū)號(hào)、柱面號(hào)。其中:磁頭號(hào)——第6字節(jié);扇區(qū)號(hào)——第7字節(jié)的低6位;柱面號(hào)——第7字節(jié)的高2位+第8字節(jié)。 第9-12字節(jié) 邏輯起始扇區(qū)號(hào) ,本分區(qū)之前已用了的扇區(qū)數(shù)。 第13-16字節(jié) 本分區(qū)的總扇區(qū)數(shù)。 分區(qū)表上有四項(xiàng),每一項(xiàng)表示一個(gè)分區(qū),所以一個(gè)分區(qū)表最多只能表示4個(gè)分區(qū)。擴(kuò)展分區(qū)最多只能有一個(gè),所以硬盤最多可以有四個(gè)主分區(qū),或者三個(gè)主分區(qū)一個(gè)擴(kuò)展分區(qū)。 0X1C6~1C9 第一個(gè)分區(qū)的起始扇區(qū) 4、DBR DBR(DOS boot record) ,位于每個(gè)分區(qū)的第一個(gè)扇區(qū)。 FAT32中的DBR多了一個(gè)副本,而且從偏移量0BH開始的BPB參數(shù)及一些相關(guān)地址的表示方法也有區(qū)別。 DBR由5部分組成,分別為跳轉(zhuǎn)指令(EB5890),OEM代號(hào)(3-A,8個(gè)字節(jié)),BPB,引導(dǎo)程序(5A-1FD,420個(gè))和結(jié)束標(biāo)志(55AA)。合計(jì)=3+8+79+420+2=512 跳轉(zhuǎn)指令(0-2):本身占3字節(jié),它將程序執(zhí)行流程跳轉(zhuǎn)到引導(dǎo)程序處。 OEM代號(hào)(3-A):占8字節(jié),其內(nèi)容由創(chuàng)建該文件系統(tǒng)的OEM廠商具體安排。 BPB(0B-59):FAT32的BPB從DBR的第12個(gè)字節(jié)開始,占用79字節(jié)。BPB(13、19、21字節(jié)),擴(kuò)展BPB(32或51,F(xiàn)AT32為60或70字節(jié)) FAT32(5A-1FD):DBR引導(dǎo)程序占用420字節(jié) 結(jié)束標(biāo)準(zhǔn),1FE-1FF 表6-15 FAT16和FAT32文件系統(tǒng)的DBR中相關(guān)地址參數(shù)分配表 偏移量 FAT16 FAT32 0B--0CH 每個(gè)扇區(qū)的字節(jié)數(shù) 0DH 每簇的扇區(qū)數(shù) 0E--0FH 保留扇區(qū)數(shù)。至少為1,F(xiàn)AT32通常為32 10H FAT個(gè)數(shù) 11--12H 根目錄登記項(xiàng)個(gè)數(shù)。FAT32為0 13--14H 磁盤總扇區(qū)數(shù),小于32MB 20--23H 邏輯盤總扇區(qū)數(shù),大于32MB 15H 磁介質(zhì)類型說(shuō)明符,例如F8 16--17H 每個(gè)FAT表的扇區(qū)數(shù) 18--19H 每個(gè)磁道的扇區(qū)數(shù) 1A--1BH 磁頭的個(gè)數(shù) 1C--1FH 當(dāng)前分區(qū)前隱含扇區(qū)數(shù),LBR=0到DBR的扇區(qū)數(shù) 27--2AH FAT16格式磁盤系列號(hào) 2B--35H FAT16卷標(biāo)名 36--3AH FAT16磁盤格式標(biāo)志 FAT32 24-27H 每個(gè)FAT表的扇區(qū)數(shù) 2C-2F 根目錄開始簇,例如2 30-31 邏輯扇區(qū)FS Information扇區(qū)號(hào),典型值為1 32-33 第一個(gè)DBR復(fù)制位置,典型值為6 43--46H FAT32格式磁盤系列號(hào) 47--51H FAT32卷標(biāo)名 52--56H FAT32磁盤格式標(biāo)志 5、FS扇區(qū) 0-3 標(biāo)識(shí)符,5252 6141 4 480位 保留 1E4-1E7 標(biāo)識(shí)符,7272 4161 1FC-1FF 標(biāo)識(shí)符,00 55AA 6、FAT表 FAT16/32保存了兩個(gè)FAT文件分配表。 FAT16簇號(hào)用16位二進(jìn)制數(shù)表示,從02到FFEFH(65519)可用簇號(hào),F(xiàn)FF8-FFFF為結(jié)束簇。最大文件65517 FAT32簇號(hào)用32位二進(jìn)制數(shù)表示,從02到0FFFFFEFH(268435439)可用簇號(hào)。未被分配的簇——零,文件的最后一簇為0FFFFFF8H。FAT的0和1號(hào)表項(xiàng)中寫入特定值(0x0FFFFFFF)。文件系統(tǒng)根目錄會(huì)被創(chuàng)建,并為根目錄分配一個(gè)簇的空間(2號(hào)簇),并在2號(hào)簇對(duì)應(yīng)的FAT表項(xiàng)中寫入結(jié)束標(biāo)記。 7、FDT表及目錄項(xiàng) FAT16的根目錄區(qū)的FDT作為系統(tǒng)區(qū)的一部分,是從FAT表區(qū)之后緊接著的32個(gè)扇區(qū),最多保存512個(gè)目錄項(xiàng)。 FAT32的根FDT不再是固定的大小,但一個(gè)目錄項(xiàng)仍然占32個(gè)字節(jié),可以是文件目錄項(xiàng)、子目錄項(xiàng)、卷標(biāo)項(xiàng)(僅根目錄有)、已刪除目錄項(xiàng)、長(zhǎng)文件名目錄項(xiàng)等。 32字節(jié)的定義如下 字節(jié)位置FAT16 FAT32 0--7字節(jié) 表示文件名 8--10字節(jié) 表示文件的擴(kuò)展名 11字節(jié) 文件的屬性 12--13字節(jié) 保留未用 僅長(zhǎng)文件名目錄項(xiàng)用,存儲(chǔ)其對(duì)應(yīng)的短文件名目錄字節(jié)校驗(yàn)和等 14--15字節(jié) 文件建立時(shí)間 16--17字節(jié) 文件建立日期 18--19字節(jié) 文件最新訪問(wèn)日期 20--21字節(jié) 文件首簇號(hào)的高16位 22--23字節(jié) 文件的創(chuàng)建時(shí)間 文件最新修改時(shí)間 24--25字節(jié) 文件的創(chuàng)建日期 文件最新修改日期 26--27字節(jié) 文件的首簇號(hào) 文件首簇號(hào)的低16位 28--31字節(jié) 文件的大小(字節(jié)) |
|