根目錄項(Root entries)為512,每個目錄項占用32字節(jié),所以FDT(File Directory Table)共占用512*32/512=32個扇區(qū)。這512個目錄項是根目錄下所有登記項的總和,包括卷標、子目錄和文件。 公式 精確方法:FAT扇區(qū)數(shù) = (扇區(qū)總數(shù)+2*每簇扇區(qū)數(shù) – 32 – 保留扇區(qū)數(shù))/(256*每簇扇區(qū)數(shù)) 例:FAT扇區(qū)數(shù) = (3915713+128-32)/(256*64)= 238.99029541015625=239扇區(qū) 粗略方法:FAT扇區(qū)數(shù):FAT用兩個字節(jié)記錄一個簇。 例:FAT扇區(qū)數(shù)= 總簇數(shù)*2/512 = (3915713 /64)/256 = 238.99615478515625 = 239扇區(qū) FAT16文件系統(tǒng)結(jié)構(gòu) WinHex FAT16文件系統(tǒng)結(jié)構(gòu)" src="/Article/UploadFiles/200901/2009011315530616.jpg" src_cetemp="/Article/UploadFiles/200901/2009011315530616.jpg" width="580" border="0" />
一個文件或子目錄在磁盤上的存儲位置(邏輯扇區(qū)號)為: 1+2*FAT扇區(qū)數(shù)+FDT扇區(qū)數(shù)+(起始簇號-2)*每簇扇區(qū)數(shù) 解釋:“1”代表DBR扇區(qū),“起始簇號-2”代表用戶文件從2號簇開始計算的。這樣的話,第一個文件的起點(第2簇)緊隨FDT。 DBR引導(dǎo) DBR與分區(qū)的位置關(guān)系 每個分區(qū)的DBR都位于此分區(qū)的第一個扇區(qū)。主分區(qū)DBR由MBR來制定,擴展分區(qū)由虛擬MBR指定。 DBR與分區(qū)表的位置關(guān)系 第一個主分區(qū)的DBR一般距離MBR的扇區(qū)個數(shù)為62個(MBR=0, DBR="63"),由于每個擴展分區(qū)都有一個虛擬MBR,所以每個擴展分區(qū) DBR都距離虛擬MBR 62個扇區(qū)。 這里再回憶下分區(qū)表鏈的讀取方法:主分區(qū)直接由MBR表項中的“本分區(qū)之前扇區(qū)數(shù)”來定位; 擴展分區(qū)要加上一個偏移,即MBR中制定的 “擴展分區(qū)之前扇區(qū)數(shù)”,而且此偏移在所有的虛擬MBR中都不變(這點有點與想當(dāng)然不一樣~),記住就可以了。 FAT(File Associate Table) FAT緊接著DBR扇區(qū)存放。磁盤上的每個簇在FAT中有且只有一個登記項,表項值有三個狀態(tài):占用、空閑或壞簇。FAT的位數(shù)有12、16和 32。12位表項值可表示4096個簇,16位表示65536個簇(一般每簇不多于64個扇區(qū)(32KB),這樣,F(xiàn)AT16最多管理 32*65536=2GB)。FAT32即使每簇4KB大,也可以管理16TB的分區(qū)。 FAT文件定位 由FAT+FDT來定位。FDT每32個字節(jié)表示一個文件。其中最重要的是偏移1A-1B兩字節(jié),表示此文件的開始簇號(此簇號有兩個用處,一是定位文件的DATA,二是在FAT中找文件的下一簇)。 例子如圖:我們找“WinHex教程.pdf”,先搜索ASCII來到FDT FAT1起始偏移為0x200,文件長度0x86A0F3,因此我們要定位的偏移為0x16B2 |
|
來自: 夢中殘景 > 《文件系統(tǒng)》