FAT16文件系統(tǒng)格式_第1頁
FAT16文件系統(tǒng)格式_第2頁
FAT16文件系統(tǒng)格式_第3頁
FAT16文件系統(tǒng)格式_第4頁
FAT16文件系統(tǒng)格式_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、.FAT16文件系統(tǒng)格式詳細(xì)說明 硬盤上的數(shù)據(jù)按朝氣不同的特點和作用大致可分為5部分:MBR區(qū)、DBR區(qū)、FAT區(qū)、DIR區(qū)和DATA區(qū)。我們來分別介紹一下: (1)MBR區(qū)(主引導(dǎo)扇區(qū)) MBR(Main Boot Record),按其字面上的理解即為主引導(dǎo)記錄區(qū),位于整個硬盤的0磁道0柱面1扇區(qū)。不過,在總共512字節(jié)的主引導(dǎo)扇區(qū)中,MBR只占用了其中的446個字節(jié)(偏移0-偏移1BDH),另外的64個字節(jié)(偏移1BEH-偏移1FDH)交給了DPT(Disk Partition Table硬盤分區(qū)表)(見下表),最后兩個字節(jié)55,AA(偏移1FEH- 偏移1FFH)是分區(qū)的結(jié)束標(biāo)志。這個整

2、體構(gòu)成了硬盤的主引導(dǎo)扇區(qū)。 主引導(dǎo)記錄中包含了硬盤的一系列參數(shù)和一段引導(dǎo)程序。其中的硬盤引導(dǎo)程序的主要作用是檢查分區(qū)表是否正確并且在系統(tǒng)硬件完成自檢以后引導(dǎo)具有激活標(biāo)志的分區(qū)上的操作系統(tǒng),并將控制權(quán)交給啟動程序。MBR是由分區(qū)程序(如F)所產(chǎn)生的,它不依賴任何操作系統(tǒng),而且硬盤引導(dǎo)程序也是可以改變的,從而實現(xiàn)多系統(tǒng)共存。 偏移 長度 所表達(dá)的意義 0 字節(jié) 分區(qū)狀態(tài):如0-非活動分區(qū) 80- 活動分區(qū) 1 字節(jié) 該分區(qū)起始頭(HEAD) 2 字 該分區(qū)起始扇區(qū)和起始柱面 4 字節(jié) 該分區(qū)類型:如82- Linux Native分區(qū) 83- Linux Swap 分區(qū) 5 字節(jié)

3、該分區(qū)終止頭(HEAD) 6 字 該分區(qū)終止扇區(qū)和終止柱面 8 雙字 該分區(qū)起始絕對分區(qū) C 雙字 該分區(qū)扇區(qū)數(shù) 下面,我們以一個實例讓大家更直觀地來了解主引導(dǎo)記錄: 例:80 01 01 00 0B FE BF FC 3F 00 00 00 7E 86 BB 00 在這里我們可以看到,最前面的80是一個分區(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é)束的柱面號為

4、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)可以直接訪問的第一個扇區(qū),它包括一個引導(dǎo)程序和一個被稱為BPB(Bios Parameter Block)的本分區(qū)參數(shù)記錄表。引導(dǎo)程序的主要任務(wù)是當(dāng)MBR將系統(tǒng)控制權(quán)交給它時,判斷本分區(qū)跟目錄前兩個文件是不是操作系統(tǒng)的引導(dǎo)文件(以DOS為例,即是Io.sys和Msdos.sys)。如果確定存在,就把其讀入內(nèi)存,并把控制權(quán) 交給該文件。BPB參數(shù)塊記錄著

5、本分區(qū)的起始扇區(qū)、結(jié)束扇區(qū)、文件存儲格式、硬盤介質(zhì)描述符、根目錄大小、FAT個數(shù),分配單元的大小等重要參數(shù)。 (3)FAT區(qū) 在DBR之后的是我們比較熟悉的FAT(File Allocation Table文件分配表)區(qū)。在解釋文件分配表的概念之前,我們先來談?wù)劥兀╟luster)的概念。文件占用磁盤空間時,基本單位不是字節(jié)而是簇。簇的大小與磁盤的規(guī)格有關(guān),一般情況下,軟盤每簇是1個扇區(qū),硬盤每簇的扇區(qū)數(shù)與硬盤的總?cè)萘看笮∮嘘P(guān),可能是4、8、16、32、64 通過上文我們已經(jīng)知道,同一個文件的數(shù)據(jù)并不一定完整地存放在磁盤的一個連續(xù)的區(qū)域內(nèi),而往往會分成若干段,像一條鏈子一樣存放。這種存儲方式稱

6、為文件的鏈?zhǔn)酱鎯ΑS脖P上的文件常常要進(jìn)行創(chuàng)建、刪除、增長、縮短等操作。這樣操作做的越多,盤上的文件就可能被分得越零碎(每段至少是1簇)。但是,由于硬盤上保存著段與段之間的連接信息(即FAT),操作系統(tǒng)在讀取文件時,總是能夠準(zhǔn)確地找到各段的位置并正確讀出。不過,這種以簇為單位的存儲法也是有其缺陷的。這主要表現(xiàn)在對空間的利用上。每個文件的最后一簇都有可能有未被完全利用的空間(稱為尾簇空間)。一般來說,當(dāng)文件個數(shù)比較多時,平均每個文件要浪費半個簇的空間。 好了,我們言歸正傳,為了實現(xiàn)文件的鏈?zhǔn)酱鎯Γ脖P上必須準(zhǔn)確地記錄哪些簇已經(jīng)被文件占用,還必須為每個已經(jīng)占用的簇指明存儲后繼內(nèi)容的下一個簇的簇號,對

7、一個文件的最后一簇,則要指明本簇?zé)o后繼簇。這些都是由FAT表來保存的,表中有很多表項,每項記錄一個簇的信息。 由于FAT對于文件管理的重要性,所以FAT有一個備份,即在原FAT的后面再建一個同樣的FAT。初形成的FAT中所有項都標(biāo)明為未占用,但如果磁盤有局部損壞,那么格式化程序會檢測出損壞的簇,在相應(yīng)的項中標(biāo)為壞簇,以后存文件時就不會再使用這個簇了。FAT的項數(shù)與硬盤上的總簇數(shù)相當(dāng),每一項占用的字節(jié)數(shù)也要與總簇數(shù)相適應(yīng),因為其中需要存放簇號。FAT的格式有多種,最為常見和為讀者所熟悉的是FAT16和FAT32,其中FAT16是指文件分配表使用16位數(shù)字,由于16位分配表最多能管理65536(即

8、2的16次方)個簇,也就是所規(guī)定的一個硬盤分區(qū)。 由于每個簇的存儲空間最大只有32KB,所以在使用FAT16管理硬盤時,每個分區(qū)的最大存儲容量只有(6553632 KB)即2048MB,也就是我們常說的2G?,F(xiàn)在的硬盤容量是越來越大,由于FAT16對硬盤分區(qū)的容量限制,所以當(dāng)硬盤容量超過2G之后,用戶只能將硬盤劃分成多個2G的分區(qū)后才能正常使用,為此微軟公司從Windows 95 OSR2版本開始使用FAT32標(biāo)準(zhǔn),即使用32位的文件分配表來管理硬盤文件,這樣系統(tǒng)就能為文件分配多達(dá)4294967296(即2的32次方)個簇,所以在簇同樣為32KB時每個分區(qū)容量最大可達(dá)65G以上。此外使用FAT

9、32管理硬盤時,每個邏輯盤中的簇長度也比使用FAT16標(biāo)準(zhǔn)管理的同等容量邏輯盤小很多。由于文件存儲在硬盤上占用的磁盤空間以簇為最小單位,所以某一文件即使只有幾十個字節(jié)也必須占用整個簇,因此邏輯盤的簇單位容量越小越能合理利用存儲空間。所以FAT32更適于大硬盤。 (4)DIR區(qū)(根目錄區(qū)) DIR(Directory)是根目錄區(qū),緊接著第二FAT表(即備份的FAT表)之后,記錄著根目錄下每個文件(目錄)的起始單元,文件的屬性等。定位文件位置時,操作系統(tǒng)根據(jù)DIR中的起始單元,結(jié)合FAT表就可以知道文件在硬盤中的具體位置和大小了。 (5)數(shù)據(jù)(DATA)區(qū) 數(shù)據(jù)區(qū)是真正意義上的數(shù)據(jù)存儲的地方,位于

10、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

11、 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

12、 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 |.EF.E 0070 F9 FB 38 66 24 7C 04 CD-13 72 3C 8A 46 10 98 F7 .8f$|r.tJNt 00D0 3B FB 72 E5 EB D7 2B C9-B8 D8 7D 87 46 3E 3C D8 .r+.F. 00E

13、0 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 .rH 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

14、 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.vv.Bv. 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.

15、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 diskDisk 01A0 20 49 2F 4F 20 65 72 72-6F 72 FF 0D 0A 52 65 70 I/O errorRep 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

16、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 keyIO 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 jumpinstruc

17、tion 03 8 system name 0b 33 BIOS parameter block 3e c0 bootstrap code fe 2 sector signature Structure of the BIOS paramter block (BPB) offset length meaning 00 0x2 logical bytes per sector 02 0x1 sectors per cluster 03 0x2 number of reserved sectors starting from 0 05 0x1 number of FATs 06 0x2 numbe

18、r of root dir entries 08 0x2 total sectors. 0 if ofs 15h used 0a 0x1 media descriptor 0b 0x2 number of sectors per FAT 0d 0x2 number of logical sectors per track 0f 0x2 number of logical heads 11 0x4 number of hidden sectors 15 0x4 total sectors 19 0x1 physical drive number 1a 0x1 reserved 1b 0x1 si

19、gnature byte for extended boot record 1c 0x4 serial number 20 0xb label 2b 0x8 FAT type values for the example boot sector offset length meaning 00 0x2 logical bytes per sector 02 0x1 sectors per cluster 03 0x2 number of reserved sectors starting from 0 05 0x1 number of FATs 06 0x2 number of root di

20、r entries 08 0x2 total sectors. 0 if ofs 15h used 0a 0x1 media descriptor 0b 0x2 number of sectors per FAT 0d 0x2 number of logical sectors per track 0f 0x2 number of logical heads 11 0x4 number of hidden sectors 15 0x4 total sectors 19 0x1 physical drive number 1a 0x1 reserved 1b 0x1 signature byte

21、 for extended boot record 1c 0x4 serial number 20 0xb label 2b 0x8 FAT type Check the C source code to define the FAT boot sector. Structure of a FAT disk disk address length contents 0 1 MBR 1 PhysSectPerTrck - 1 Undefined PhysSectPerTrck 1 Boot sector PhysSectPerTrck+1 NumFATs*NumSectPerFAT FATs B

22、ookKeep-SectRootDir SectRootDir Root directory BookKeep LogcDiskSize-BookKeep Data space SectRootDir = RootDirSize / 16 BookKeep = PhysSectPerTrck + 1 + NumFATs * NumSectPerFAT + SectRootDir FAT The FAT is an array of up to 65,536 16-bit unsigned integers. The first 2 and last 16 entries in the FAT

23、are reserved. All other elements are of type: index into the FAT array. Each of the non-reserved FAT entries correspond to a cluster on the disk. FAT index Meaning as index Meaning as value 0x0000 reserved cluster is available 0x0001 reserved undefined 0x0002-0xffef data cluster next cluster in chai

24、n is at this index 0xfff0-0xfff6 reserved undefined 0xfff7 reserved bad cluster 0xfff8-0xffff reserved end of the current cluster chain FAT entries 0x0000 and 0x0001 contain other information, usually 0xfff8 and 0xffff respectively. The fragment below is from the start of a FAT FFF8 FFFF 0000 0004 F

25、FFF 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 The fragment above shows a file using clusters 0x0003 & 0x0004. Folders A folder is a data structure stored on the disk. The root folder is stored before the data area. Other folders are stored in the data area in the same way as files;

26、 These folders may grow in size, shrink in size and be stored non-contiguously in the same way as files. The structure of all folders is as an array of folder entries. The end of the folder is marked by a folder entry starting with a 00h byte. Folder entry structure offset length contents 0x00 0x8 n

27、ame 0x08 0x3 extension 0x0b 0x1 flags 0x0c 0xa reserved 0x16 0x2 time 0x18 0x2 date 0x1a 0x2 first cluter 0x1c 0x4 size The date field is in DOS date format, and the time field is in DOS time. 第1309篇:范談Flash文件系統(tǒng)(一) 發(fā)布時間:2006年3月18日 點擊次數(shù):1282 來源: 作者: 詳細(xì)內(nèi)容: 【摘 要】本文主要簡單介紹Flash文件系統(tǒng),文中涉及Flash存儲器基本特征,以及怎樣利

28、用Flash文件系統(tǒng)實現(xiàn)對Flash存儲器的較好的操作管理功能。 【關(guān)鍵字】Flash存儲器 Flash文件系統(tǒng) 。Flash存儲器Flash文件系統(tǒng),顧名思義就是采用Flash作為外存儲器實現(xiàn)的文件系統(tǒng)。因此,Flash文件系統(tǒng)地實現(xiàn)就必須考慮Flash存儲器的特點。Flash存儲器由于具有存儲容量大、掉電數(shù)據(jù)不丟失以及可多次擦寫等許多優(yōu)點,正逐步取代其它半導(dǎo)體存儲器件而廣泛應(yīng)用于移動電話、PDA以及數(shù)碼相機等移動電子產(chǎn)品中。其作為存儲數(shù)據(jù)和應(yīng)用程序的存儲體,可以將大量數(shù)據(jù)方便、快捷地移動和交換。Flash內(nèi)部分為多個存儲單元塊(block),每個存儲單元塊又由多個頁(page)組成。存儲單

29、元塊是可擦除的最小單位,頁是寫入數(shù)據(jù)的最小單位。Flash存儲器讀取數(shù)據(jù)與一般的存儲器類似,可以實現(xiàn)隨機讀取,讀出的速度也很快。而Flash存儲器的寫操作則和一般的存儲器有所不同,Flash的寫操作必須先按存儲塊擦除(寫入0xff到要擦除的存儲單元塊中),再按頁順序?qū)懭?。由于Flash存儲器擦除耗時較長,所以Flash存儲器寫入的時間主要在于Flash存儲器內(nèi)部的擦除操作等。Flash存儲器第一塊一定是有效塊,而其它塊可能會在使用前就是壞塊或者在使用過程中變成壞塊(invalid block)。Flash存儲器對內(nèi)部壞塊的判定是,根據(jù)其每一個單元存儲塊中的第3區(qū)中的第6 Cloumn內(nèi)容是否為

30、0xff來定。雖然Flash存儲器內(nèi)容會有壞塊,但是由于每一塊的內(nèi)部結(jié)構(gòu)都是相互獨立的,所以只要對其狀態(tài)加以識別,壞塊并不影響系統(tǒng)對有效塊的操作。第1310篇:范談Flash文件系統(tǒng)(二) 發(fā)布時間:2006年3月18日 點擊次數(shù):1523 來源: 作者: 詳細(xì)內(nèi)容: .Flash文件系統(tǒng)有了Flash存儲器,相應(yīng)的應(yīng)該有對應(yīng)的系統(tǒng)來管理,于是有了Flash文件系統(tǒng)的出現(xiàn)。和常規(guī)的文件系統(tǒng)類似,我認(rèn)為Flash文件系統(tǒng)地提出,至少需要實現(xiàn)以下幾個特點:1. 統(tǒng)一管理Flash存儲器存儲空間,實施存儲空間的分配與回收2. 實現(xiàn)文件的按名存取,使用方便,直觀3. 向用戶提供一個方便使用的接口(提供

31、對文件系統(tǒng)操作命令,以及提供對文件的操作命令4. 優(yōu)化存儲速度和空間利用屏蔽物理因素的影響,如對于壞損單元,采用透明的壞損管理 u Flash文件系統(tǒng)具體如何設(shè)計一般來說,整個文件系統(tǒng)應(yīng)該分為兩個層次:最一層,直接和物理硬件接觸,管理Flash物理存儲器;第二層,在基層之上,實現(xiàn)文件管理,如實現(xiàn)FAT。 u Flash文件系統(tǒng)設(shè)計中的注意事項2.1第一層(1)物理地址到邏輯地址的映射為了在Flash物理地址和FAT操作的邏輯地址之間建立一個好的映射關(guān)系,須對Flash的存儲空間在邏輯上進(jìn)行了重新定義。結(jié)合Flash特點,將每個存儲單元塊內(nèi)部分成若干物理扇區(qū)。具體實現(xiàn)時,每個物理扇區(qū)可以分為 基

32、本的數(shù)據(jù)區(qū) 和 其它信息保留區(qū)(如安全性)。 確定好扇區(qū)的結(jié)構(gòu)和大小之后,物理地址到邏輯地址的映射也就確定了。 (2)可靠性設(shè)計一個完善的文件系統(tǒng)需要有良好的可靠性。 籠統(tǒng)的講,可靠性的實現(xiàn),需要存儲器信息的支持,扇區(qū)的信息保留區(qū)就可以利用起來。(3)壞塊管理由于Flash內(nèi)部會有壞塊,因此Flash存儲管理系統(tǒng)需要對Flash進(jìn)行壞塊管理。一般壞塊的管理分以下兩種情況: 初始壞塊處理。Flash存儲器在使用前可能會有壞塊,而且這些壞塊是隨機分布的。所以,Flash文件管理系統(tǒng)在系統(tǒng)執(zhí)行讀寫操作之前先建立一個壞塊表,然后對Flash存儲器進(jìn)行初始化掃描以發(fā)現(xiàn)壞塊,并將壞塊標(biāo)記為不可用,加入到壞塊表中。 操作過程中壞塊處理。在擦除或者編程過程中發(fā)生錯誤時,Flash文件管理系統(tǒng)將該塊中其它頁的數(shù)據(jù)重新拷貝到一個新的空塊中,然后再將該塊標(biāo)記為壞塊,加入到壞塊表中。在這個處理過程中,由于對Flash的擦除或者編程操作都會使得Flash存儲單元塊的內(nèi)容改變,所以Flash文件管理系統(tǒng)一旦發(fā)現(xiàn)Flash存儲器

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論