|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動(dòng)編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
FAT16文件系統(tǒng)格式詳細(xì)說明 |
| 作者:novar 欄目:嵌入式系統(tǒng) |
FAT16文件系統(tǒng)格式說明 硬盤上的數(shù)據(jù)按照其不同的特點(diǎn)和作用大致可分為5部分:MBR區(qū)、DBR區(qū)、FAT區(qū)、DIR區(qū)和DATA區(qū)。我們來分別介紹一下: (1)MBR區(qū)(主引導(dǎo)扇區(qū)) MBR(Main Boot Record),按其字面上的理解即為主引導(dǎo)記錄區(qū),位于整個(gè)硬盤的0磁道0柱面1扇區(qū)。不過,在總共512字節(jié)的主引導(dǎo)扇區(qū)中,MBR只占用了其中的446個(gè)字節(jié)(偏移0--偏移1BDH),另外的64個(gè)字節(jié)(偏移1BEH--偏移1FDH)交給了DPT(Disk Partition Table硬盤分區(qū)表)(見下表),最后兩個(gè)字節(jié)"55,AA"(偏移1FEH- 偏移1FFH)是分區(qū)的結(jié)束標(biāo)志。這個(gè)整體構(gòu)成了硬盤的主引導(dǎo)扇區(qū)。 主引導(dǎo)記錄中包含了硬盤的一系列參數(shù)和一段引導(dǎo)程序。其中的硬盤引導(dǎo)程序的主要作用是檢查分區(qū)表是否正確并且在系統(tǒng)硬件完成自檢以后引導(dǎo)具有激活標(biāo)志的分區(qū)上的操作系統(tǒng),并將控制權(quán)交給啟動(dòng)程序。MBR是由分區(qū)程序(如Fdisk.com)所產(chǎn)生的,它不依賴任何操作系統(tǒng),而且硬盤引導(dǎo)程序也是可以改變的,從而實(shí)現(xiàn)多系統(tǒng)共存。 偏移 長度 所表達(dá)的意義 0 字節(jié) 分區(qū)狀態(tài):如0-->非活動(dòng)分區(qū) 80--> 活動(dòng)分區(qū) 1 字節(jié) 該分區(qū)起始頭(HEAD) 2 字 該分區(qū)起始扇區(qū)和起始柱面 4 字節(jié) 該分區(qū)類型:如82--> Linux Native分區(qū) 83--> Linux Swap 分區(qū) 5 字節(jié) 該分區(qū)終止頭(HEAD) 6 字 該分區(qū)終止扇區(qū)和終止柱面 8 雙字 該分區(qū)起始絕對分區(qū) C 雙字 該分區(qū)扇區(qū)數(shù) 下面,我們以一個(gè)實(shí)例讓大家更直觀地來了解主引導(dǎo)記錄: 例:80 01 01 00 0B FE BF FC 3F 00 00 00 7E 86 BB 00 在這里我們可以看到,最前面的"80"是一個(gè)分區(qū)的激活標(biāo)志,表示系統(tǒng)可引導(dǎo);"01 01 00"表示分區(qū)開始的磁頭號為01,開始的扇區(qū)號為01,開始的柱面號為00;"0B"表示分區(qū)的系統(tǒng)類型是FAT32,其他比較常用的有04(FAT16)、07(NTFS);"FE BF FC"表示分區(qū)結(jié)束的磁頭號為254,分區(qū)結(jié)束的扇區(qū)號為63、分區(qū)結(jié)束的柱面號為764;"3F 00 00 00"表示首扇區(qū)的相對扇區(qū)號為63;"7E 86 BB 00"表示總扇區(qū)數(shù)為12289622。 (2)DBR區(qū) DBR(Dos Boot Record)是操作系統(tǒng)引導(dǎo)記錄區(qū)的意思。它通常位于硬盤的0磁道1柱面1扇區(qū),是操作系統(tǒng)可以直接訪問的第一個(gè)扇區(qū),它包括一個(gè)引導(dǎo)程序和一個(gè)被稱為BPB(Bios Parameter Block)的本分區(qū)參數(shù)記錄表。引導(dǎo)程序的主要任務(wù)是當(dāng)MBR將系統(tǒng)控制權(quán)交給它時(shí),判斷本分區(qū)跟目錄前兩個(gè)文件是不是操作系統(tǒng)的引導(dǎo)文件(以DOS為例,即是Io.sys和Msdos.sys)。如果確定存在,就把其讀入內(nèi)存,并把控制權(quán) 交給該文件。BPB參數(shù)塊記錄著本分區(qū)的起始扇區(qū)、結(jié)束扇區(qū)、文件存儲(chǔ)格式、硬盤介質(zhì)描述符、根目錄大小、FAT個(gè)數(shù),分配單元的大小等重要參數(shù)。 (3)FAT區(qū) 在DBR之后的是我們比較熟悉的FAT(File Allocation Table文件分配表)區(qū)。在解釋文件分配表的概念之前,我們先來談?wù)劥兀╟luster)的概念。文件占用磁盤空間時(shí),基本單位不是字節(jié)而是簇。簇的大小與磁盤的規(guī)格有關(guān),一般情況下,軟盤每簇是1個(gè)扇區(qū),硬盤每簇的扇區(qū)數(shù)與硬盤的總?cè)萘看笮∮嘘P(guān),可能是4、8、16、32、64…… 通過上文我們已經(jīng)知道,同一個(gè)文件的數(shù)據(jù)并不一定完整地存放在磁盤的一個(gè)連續(xù)的區(qū)域內(nèi),而往往會(huì)分成若干段,像一條鏈子一樣存放。這種存儲(chǔ)方式稱為文件的鏈?zhǔn)酱鎯?chǔ)。硬盤上的文件常常要進(jìn)行創(chuàng)建、刪除、增長、縮短等操作。這樣操作做的越多,盤上的文件就可能被分得越零碎(每段至少是1簇)。但是,由于硬盤上保存著段與段之間的連接信息(即FAT),操作系統(tǒng)在讀取文件時(shí),總是能夠準(zhǔn)確地找到各段的位置并正確讀出。不過,這種以簇為單位的存儲(chǔ)法也是有其缺陷的。這主要表現(xiàn)在對空間的利用上。每個(gè)文件的最后一簇都有可能有未被完全利用的空間(稱為尾簇空間)。一般來說,當(dāng)文件個(gè)數(shù)比較多時(shí),平均每個(gè)文件要浪費(fèi)半個(gè)簇的空間。 好了,我們言歸正傳,為了實(shí)現(xiàn)文件的鏈?zhǔn)酱鎯?chǔ),硬盤上必須準(zhǔn)確地記錄哪些簇已經(jīng)被文件占用,還必須為每個(gè)已經(jīng)占用的簇指明存儲(chǔ)后繼內(nèi)容的下一個(gè)簇的簇號,對一個(gè)文件的最后一簇,則要指明本簇?zé)o后繼簇。這些都是由FAT表來保存的,表中有很多表項(xiàng),每項(xiàng)記錄一個(gè)簇的信息。 由于FAT對于文件管理的重要性,所以FAT有一個(gè)備份,即在原FAT的后面再建一個(gè)同樣的FAT。初形成的FAT中所有項(xiàng)都標(biāo)明為"未占用",但如果磁盤有局部損壞,那么格式化程序會(huì)檢測出損壞的簇,在相應(yīng)的項(xiàng)中標(biāo)為"壞簇",以后存文件時(shí)就不會(huì)再使用這個(gè)簇了。FAT的項(xiàng)數(shù)與硬盤上的總簇?cái)?shù)相當(dāng),每一項(xiàng)占用的字節(jié)數(shù)也要與總簇?cái)?shù)相適應(yīng),因?yàn)槠渲行枰娣糯靥。FAT的格式有多種,最為常見和為讀者所熟悉的是FAT16和FAT32,其中FAT16是指文件分配表使用16位數(shù)字,由于16位分配表最多能管理65536(即2的16次方)個(gè)簇,也就是所規(guī)定的一個(gè)硬盤分區(qū)。 由于每個(gè)簇的存儲(chǔ)空間最大只有32KB,所以在使用FAT16管理硬盤時(shí),每個(gè)分區(qū)的最大存儲(chǔ)容量只有(65536×32 KB)即2048MB,也就是我們常說的2G,F(xiàn)在的硬盤容量是越來越大,由于FAT16對硬盤分區(qū)的容量限制,所以當(dāng)硬盤容量超過2G之后,用戶只能將硬盤劃分成多個(gè)2G的分區(qū)后才能正常使用,為此微軟公司從Windows 95 OSR2版本開始使用FAT32標(biāo)準(zhǔn),即使用32位的文件分配表來管理硬盤文件,這樣系統(tǒng)就能為文件分配多達(dá)4294967296(即2的32次方)個(gè)簇,所以在簇同樣為32KB時(shí)每個(gè)分區(qū)容量最大可達(dá)65G以上。此外使用FAT32管理硬盤時(shí),每個(gè)邏輯盤中的簇長度也比使用FAT16標(biāo)準(zhǔn)管理的同等容量邏輯盤小很多。由于文件存儲(chǔ)在硬盤上占用的磁盤空間以簇為最小單位,所以某一文件即使只有幾十個(gè)字節(jié)也必須占用整個(gè)簇,因此邏輯盤的簇單位容量越小越能合理利用存儲(chǔ)空間。所以FAT32更適于大硬盤。 (4)DIR區(qū)(根目錄區(qū)) DIR(Directory)是根目錄區(qū),緊接著第二FAT表(即備份的FAT表)之后,記錄著根目錄下每個(gè)文件(目錄)的起始單元,文件的屬性等。定位文件位置時(shí),操作系統(tǒng)根據(jù)DIR中的起始單元,結(jié)合FAT表就可以知道文件在硬盤中的具體位置和大小了。 (5)數(shù)據(jù)(DATA)區(qū) 數(shù)據(jù)區(qū)是真正意義上的數(shù)據(jù)存儲(chǔ)的地方,位于DIR區(qū)之后,占據(jù)硬盤上的大部分?jǐn)?shù)據(jù)空間。 FAT16 文件系統(tǒng) The boot sector A boot sector can be found in the first sector of every logical disk. On a floppy disk, the logical disk takes up all of the physical disk and the boot sector lives in the first physical sector. On a hard disk, a boot sector lives at the start of each partition. An example boot sec 0000 EB 3E 90 4D 53 57 49 4E-34 2E 30 00 02 20 01 00 .>.MSWIN4.0.. .. 0010 02 40 03 00 00 F8 FF 00-3F 00 40 00 3F 00 00 00 .@......?.@.?... 0020 41 DE 1F 00 80 00 29 37-4B 84 32 46 55 4A 49 54 A…..)7K.2FUJIT 0030 53 55 31 32 32 34 46 41-54 31 36 20 20 20 F1 7D SU1224FAT16 .} 0040 FA 33 C9 8E D1 BC FC 7B-16 07 BD 78 00 C5 76 00 .3…..{…x..v. 0050 1E 56 16 55 BF 22 05 89-7E 00 89 4E 02 B1 0B FC .V.U."..~..N…. 0060 F3 A4 06 1F BD 00 7C C6-45 FE 0F 8B 46 18 88 45 ……|.E…F..E 0070 F9 FB 38 66 24 7C 04 CD-13 72 3C 8A 46 10 98 F7 ..8f$|…r<.F… 0080 66 16 03 46 1C 13 56 1E-03 46 0E 13 D1 50 52 89 f..F..V..F…PR. 0090 46 FC 89 56 FE B8 20 00-8B 76 11 F7 E6 8B 5E 0B F..V.. ..v….^. 00A0 03 C3 48 F7 F3 01 46 FC-11 4E FE 5A 58 BB 00 07 ..H…F..N.ZX… 00B0 8B FB B1 01 E8 94 00 72-47 38 2D 74 19 B1 0B 56 …….rG8-t…V 00C0 8B 76 3E F3 A6 5E 74 4A-4E 74 0B 03 F9 83 C7 15 .v>..^tJNt…… 00D0 3B FB 72 E5 EB D7 2B C9-B8 D8 7D 87 46 3E 3C D8 ;.r…+…}.F><. 00E0 75 99 BE 80 7D AC 98 03-F0 AC 84 C0 74 17 3C FF u…}…….t.<. 00F0 74 09 B4 0E BB 07 00 CD-10 EB EE BE 83 7D EB E5 t…………}.. 0100 BE 81 7D EB E0 33 C0 CD-16 5E 1F 8F 04 8F 44 02 ..}..3…^….D. 0110 CD 19 BE 82 7D 8B 7D 0F-83 FF 02 72 C8 8B C7 48 ….}.}….r…H 0120 48 8A 4E 0D F7 E1 03 46-FC 13 56 FE BB 00 07 53 H.N….F..V….S 0130 B1 04 E8 16 00 5B 72 C8-81 3F 4D 5A 75 A7 81 BF …..r..?Mzu… 0140 00 02 42 4A 75 9F EA 00-02 70 00 50 52 51 91 92 ..Bju….p.PRQ.. 0150 33 D2 F7 76 18 91 F7 76-18 42 87 CA F7 76 1A 8A 3..v…v.B…v.. 0160 F2 8A 56 24 8A E8 D0 CC-D0 CC 0A CC B8 01 02 CD ..V$............ 0170 13 59 5A 58 72 09 40 75-01 42 03 5E 0B E2 CC C3 .YZXr.@u.B.^…. 0180 03 18 01 27 0D 0A 49 6E-76 61 6C 69 64 20 73 79 …'..Invalid sy 0190 73 74 65 6D 20 64 69 73-6B FF 0D 0A 44 69 73 6B stem disk…Disk 01A0 20 49 2F 4F 20 65 72 72-6F 72 FF 0D 0A 52 65 70 I/O error…Rep 01B0 6C 61 63 65 20 74 68 65-20 64 69 73 6B 2C 20 61 lace the disk, a 01C0 6E 64 20 74 68 65 6E 20-70 72 65 73 73 20 61 6E nd then press an 01D0 79 20 6B 65 79 0D 0A 00-49 4F 20 20 20 20 20 20 y key…IO 01E0 53 59 53 4D 53 44 4F 53-20 20 20 53 59 53 80 01 SYSMSDOS SYS.. 01F0 00 57 49 4E 42 4F 4F 54-20 53 59 53 00 00 55 AA .WINBOOT SYS..U. Structure of the boot sector offset size meaning 00 3 jumpinstruction 03 8 SYSTEM NAME 0b 3 |
| 2樓: | >>參與討論 |
| 作者: 瘋海龍 于 2005/6/1 12:04:00 發(fā)布:
re 加酷! |
|
| 3樓: | >>參與討論 |
| 作者: sd325 于 2005/6/1 12:48:00 發(fā)布:
挺好 挺好 |
|
| 4樓: | >>參與討論 |
| 作者: haleliu 于 2005/6/1 13:59:00 發(fā)布:
very GOOD |
|
| 5樓: | >>參與討論 |
| 作者: lipm 于 2005/6/4 14:56:00 發(fā)布:
好! very GOOD! |
|
| 6樓: | >>參與討論 |
| 作者: signal7902 于 2005/6/4 22:23:00 發(fā)布:
請問根目錄下的子目錄和文件的名稱放在哪兒? 磁盤根目錄放在根目錄區(qū),可是根目錄下的子目錄和文件對應(yīng)的名稱放在哪兒,數(shù)據(jù)區(qū)?具體的對應(yīng)位置怎么計(jì)算? |
|
| 7樓: | >>參與討論 |
| 作者: dengm 于 2005/6/4 22:48:00 發(fā)布:
目錄(不包括root)也是一種文件 |
|
| 8樓: | >>參與討論 |
| 作者: lookic 于 2005/6/16 18:03:00 發(fā)布:
頂 酷酷 |
|
| 9樓: | >>參與討論 |
| 作者: whlz58 于 2005/6/17 7:36:00 發(fā)布:
fat32 root區(qū)也是文件 fat32 root區(qū)也是文件 |
|
| 10樓: | >>參與討論 |
| 作者: 浮云者 于 2005/6/17 16:03:00 發(fā)布:
頂! |
|
| 11樓: | >>參與討論 |
| 作者: 艾森豪威爾 于 2005/6/17 16:10:00 發(fā)布:
建議樓主再寫一篇《FAT32文件系統(tǒng)格式詳細(xì)說明》 頂! |
|
| 12樓: | >>參與討論 |
| 作者: st963432 于 2005/6/21 9:46:00 發(fā)布:
好 |
|
| 13樓: | >>參與討論 |
| 作者: novar 于 2005/6/22 15:39:00 發(fā)布:
“FAT32文件結(jié)構(gòu)詳細(xì)介紹”已經(jīng)重新開貼 |
|
| 14樓: | >>參與討論 |
| 作者: kaiserljx 于 2005/6/22 20:57:00 發(fā)布:
很好的東西。樓主辛苦 |
|
| 15樓: | >>參與討論 |
| 作者: jinggx 于 2005/6/25 5:31:00 發(fā)布:
頂 |
|
|
|
| 免費(fèi)注冊為維庫電子開發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號 |