音影先锋亚洲天堂网|电影世界尽头的爱完整版播放|国产 熟女 91|高清无码免费观看欧美日韩|韩国一区二区三区黄色录像|美女亚洲加勒比在线|亚洲综合网 开心五月|7x成人在线入口|成人网站免费日韩毛片区|国产黄片?一级?二级?三级

登錄 免費(fèi)注冊 首頁 | 行業(yè)黑名單 | 幫助
維庫電子市場網(wǎng)
技術(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)格式詳細(xì)說明
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樓: >>參與討論
瘋海龍
re
加酷!

3樓: >>參與討論
sd325
挺好
挺好

4樓: >>參與討論
haleliu
very GOOD
 
5樓: >>參與討論
lipm
好!
very GOOD!

6樓: >>參與討論
signal7902
請問根目錄下的子目錄和文件的名稱放在哪兒?
磁盤根目錄放在根目錄區(qū),可是根目錄下的子目錄和文件對應(yīng)的名稱放在哪兒,數(shù)據(jù)區(qū)?具體的對應(yīng)位置怎么計(jì)算?

7樓: >>參與討論
dengm
目錄(不包括root)也是一種文件
 
8樓: >>參與討論
lookic

酷酷

9樓: >>參與討論
whlz58
fat32 root區(qū)也是文件
fat32 root區(qū)也是文件


10樓: >>參與討論
浮云者
頂!
 
11樓: >>參與討論
艾森豪威爾
建議樓主再寫一篇《FAT32文件系統(tǒng)格式詳細(xì)說明》
頂!

12樓: >>參與討論
st963432

 
13樓: >>參與討論
novar
“FAT32文件結(jié)構(gòu)詳細(xì)介紹”已經(jīng)重新開貼
 
14樓: >>參與討論
kaiserljx
很好的東西。樓主辛苦
 
15樓: >>參與討論
jinggx

 
參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
用過rtl8019的請進(jìn)來
FAT32文件系統(tǒng)詳細(xì)介紹
關(guān)于ucgui的幾個(gè)問題,謝謝。
初學(xué)者請教大俠-UC/0SⅡ中中斷嵌套寄存器保存到那里去
芯片設(shè)計(jì)
免費(fèi)注冊為維庫電子開發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入


Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號