版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、FAT文件系統(tǒng)原理 四 轉(zhuǎn)載FAT文件系統(tǒng)原理(四)(轉(zhuǎn)載)2011/06/12 10:18FAT文件系統(tǒng)原理(四)FAT16存儲(chǔ)原理:當(dāng)把一部分磁盤(pán)空間格式化為fat文件系統(tǒng)時(shí),fat文件系統(tǒng)就將這個(gè)分區(qū)當(dāng)成整塊可分配的區(qū)域進(jìn)行規(guī)劃,以便于數(shù)據(jù)的存儲(chǔ)。一般來(lái)講,其劃分形式如圖7所示。我們把FAT16部分提取出來(lái),詳細(xì)描述一下:FAT16是Microsoft較早推出的文件系統(tǒng),具有高度兼容性,目前仍然廣泛應(yīng)用于個(gè)人電腦尤其是移動(dòng)存儲(chǔ)設(shè)備中,F(xiàn)AT16簡(jiǎn)單來(lái)講由圖4.3.11所示的6部分組成(主要是前5部分)。引導(dǎo)扇區(qū)(DBR)我們已經(jīng)說(shuō)過(guò),FAT16在DBR之后沒(méi)有留有任何保留扇區(qū),其后緊隨的
2、便是FAT表。FAT表是FAT16用來(lái)記錄磁盤(pán)數(shù)據(jù)區(qū)簇鏈結(jié)構(gòu)的。像前面我們說(shuō)過(guò)的例子一樣,F(xiàn)AT將磁盤(pán)空間按一定數(shù)目的扇區(qū)為單位進(jìn)行劃分,這樣的單位稱為簇。通常情況下,每扇區(qū)512字節(jié)的原則是不變的。簇的大小一般是2n(n為整數(shù))個(gè)扇區(qū)的大小,像512B,1K,2K,4K,8K,16K,32K,64K。實(shí)際中通常不超過(guò)32K。之所以簇為單位而不以扇區(qū)為單位進(jìn)行磁盤(pán)的分配,是因?yàn)楫?dāng)分區(qū)容量較大時(shí),采用大小為512b的扇區(qū)管理會(huì)增加fat表的項(xiàng)數(shù),對(duì)大文件存取增加消耗,文件系統(tǒng)效率不高。分區(qū)的大小和簇的取值是有關(guān)系的,見(jiàn)表9(單擊此處查看PDF版全文)圖4.3.11 Fat16的組織形式引導(dǎo)扇區(qū)F
3、AT1 FAT2(重復(fù)的)根文件夾其他文件夾及所有文件剩余扇區(qū)1扇區(qū)實(shí)際情況取大小同F(xiàn)AT1 32個(gè)扇區(qū)開(kāi)始簇編號(hào)(從2開(kāi)始)不足一簇表9 FAT16分區(qū)大小與對(duì)因簇大小分區(qū)空間大小每個(gè)簇的扇區(qū)簇空間大小0MB-32MB 1512個(gè)字節(jié)33MB-64MB 21k 65MB-128MB 42k 129MB-225MB 84k 256MB-511MB 16 8k 512MB-1023MB 32 16k 1024MB-2047MB 64 32k 2048MB-4095MB 128 64k注意:少于32680個(gè)扇區(qū)的分區(qū)中,簇空間大小可最多達(dá)到每個(gè)簇8個(gè)扇區(qū)。不管用戶是使用磁盤(pán)管理器來(lái)格式化分區(qū),還是
4、使用命令提示行鍵入format命令格式化,格式化程序都創(chuàng)建一個(gè)12位的FAT。少于16MB的分區(qū),系統(tǒng)通常會(huì)將其格式化成12位的FAT,F(xiàn)AT12是FAT的初始實(shí)現(xiàn)形式,是針對(duì)小型介質(zhì)的。FAT12文件分配表要比FAT16和FAT32的文件分配表小,因?yàn)樗鼘?duì)每個(gè)條目使用的空間較少。這就給數(shù)據(jù)留下較多的空間。所有用FAT12格式化的5.25英寸軟盤(pán)以及1.44MB的3.5英寸軟盤(pán)都是由FAT12格式化的。除了FAT表中記錄每簇鏈結(jié)的二進(jìn)制位數(shù)與FAT16不同外,其余原理與FAT16均相同,不再單獨(dú)解釋。格式化FAT16分區(qū)時(shí),格式化程序根據(jù)分區(qū)的大小確定簇的大小,然后根據(jù)保留扇區(qū)的數(shù)目、根目錄的
5、扇區(qū)數(shù)目、數(shù)據(jù)區(qū)可分的簇?cái)?shù)與FAT表本身所占空間來(lái)確定FAT表所需的扇區(qū)數(shù)目,然后將計(jì)算后的結(jié)果寫(xiě)入DBR的相關(guān)位置。FAT16 DBR參數(shù)的偏移0x11處記錄了根目錄所占扇區(qū)的數(shù)目。偏移0x16記錄了FAT表所占扇區(qū)的數(shù)據(jù)。偏移0x10記錄了FAT表的副本數(shù)目。系統(tǒng)在得到這幾項(xiàng)參數(shù)以后,就可以確定數(shù)據(jù)區(qū)的開(kāi)始扇區(qū)偏移了。FAT16文件系統(tǒng)從根目錄所占的32個(gè)扇區(qū)之后的第一個(gè)扇區(qū)開(kāi)始以簇為單位進(jìn)行數(shù)據(jù)的處理,這之前仍以扇區(qū)為單位。對(duì)于根目錄之后的第一個(gè)簇,系統(tǒng)并不編號(hào)為第0簇或第1簇(可能是留作關(guān)鍵字的原因吧),而是編號(hào)為第2簇,也就是說(shuō)數(shù)據(jù)區(qū)順序上的第1個(gè)簇也是編號(hào)上的第2簇。FAT文件系統(tǒng)
6、之所以有12,16,32不同的版本之分,其根本在于FAT表用來(lái)記錄任意一簇鏈接的二進(jìn)制位數(shù)。以FAT16為例,每一簇在FAT表中占據(jù)2字節(jié)(二進(jìn)制16位)。所以,F(xiàn)AT16最大可以表示的簇號(hào)為0xFFFF(十進(jìn)制的65535),以32K為簇的大小的話,F(xiàn)AT32可以管理的最大磁盤(pán)空間為:32KB65535=2048MB,這就是為什么FAT16不支持超過(guò)2GB分區(qū)的原因。FAT表實(shí)際上是一個(gè)數(shù)據(jù)表,以2個(gè)字節(jié)為單位,我們暫將這個(gè)單位稱為FAT記錄項(xiàng),通常情況其第1、2個(gè)記錄項(xiàng)(前4個(gè)字節(jié))用作介質(zhì)描述。從第三個(gè)記錄項(xiàng)開(kāi)始記錄除根目錄外的其他文件及文件夾的簇鏈情況。根據(jù)簇的表現(xiàn)情況FAT用相應(yīng)的取
7、值來(lái)描述,見(jiàn)表10表10 FAT16記錄項(xiàng)的取值含義(16進(jìn)制)FAT16記錄項(xiàng)的取值對(duì)應(yīng)簇的表現(xiàn)情況0000未分配的簇0002FFEF已分配的簇FFF0FFF6系統(tǒng)保留FFF7壞簇FFF8FFFF文件結(jié)束簇看一幅在winhex所截FAT16的文件分配表,圖10:如圖,F(xiàn)AT表以F8 FF FF FF開(kāi)頭,此2字節(jié)為介質(zhì)描述單元,并不參與FAT表簇鏈關(guān)系。小紅字標(biāo)出的是FAT扇區(qū)每2字節(jié)對(duì)應(yīng)的簇號(hào)。相對(duì)偏移0x40x5偏移為第2簇(順序上第1簇),此處為FF,表示存儲(chǔ)在第2簇上的文件(目錄)是個(gè)小文件,只占用1個(gè)簇便結(jié)束了。第3簇中存放的數(shù)據(jù)是0x0005,這是一個(gè)文件或文件夾的首簇。其內(nèi)容為
8、第5簇,就是說(shuō)接下來(lái)的簇位于第5簇-FAT表指引我們到達(dá)FAT表的第5簇指向,上面寫(xiě)的數(shù)據(jù)是FF FF,意即此文件已至尾簇。第4簇中存放的數(shù)據(jù)是0x0006,這又是一個(gè)文件或文件夾的首簇。其內(nèi)容為第6簇,就是說(shuō)接下來(lái)的簇位于第6簇-FAT表指引我們到達(dá)FAT表的第6簇指向,上面寫(xiě)的數(shù)據(jù)是0x0007,就是說(shuō)接下來(lái)的簇位于第7簇-FAT表指引我們到達(dá)FAT表的第7簇指向直到根據(jù)FAT鏈讀取到扇區(qū)相對(duì)偏移0x1A0x1B,也就是第13簇,上面寫(xiě)的數(shù)據(jù)是0x000E,也就是指向第14簇-14簇的內(nèi)容為FF FF,意即此文件已至尾簇。后面的FAT表數(shù)據(jù)與上面的道理相同。不再分析。FAT表記錄了磁盤(pán)數(shù)據(jù)
9、文件的存儲(chǔ)鏈表,對(duì)于數(shù)據(jù)的讀取而言是極其重要的,以至于Microsoft為其開(kāi)發(fā)的FAT文件系統(tǒng)中的FAT表創(chuàng)建了一份備份,就是我們看到的FAT2。FAT2與FAT1的內(nèi)容通常是即時(shí)同步的,也就是說(shuō)如果通過(guò)正常的系統(tǒng)讀寫(xiě)對(duì)FAT1做了更改,那么FAT2也同樣被更新。如果從這個(gè)角度來(lái)看,系統(tǒng)的這個(gè)功能在數(shù)據(jù)恢復(fù)時(shí)是個(gè)天災(zāi)。FAT文件系統(tǒng)的目錄結(jié)構(gòu)其實(shí)是一顆有向的從根到葉的樹(shù),這里提到的有向是指對(duì)于FAT分區(qū)內(nèi)的任一文件(包括文件夾),均需從根目錄尋址來(lái)找到。可以這樣認(rèn)為:目錄存儲(chǔ)結(jié)構(gòu)的入口就是根目錄。FAT文件系統(tǒng)根據(jù)根目錄來(lái)尋址其他文件(包括文件夾),故而根目錄的位置必須在磁盤(pán)存取數(shù)據(jù)之前得以
10、確定。FAT文件系統(tǒng)就是根據(jù)分區(qū)的相關(guān)DBR參數(shù)與DBR中存放的已經(jīng)計(jì)算好的FAT表(2份)的大小來(lái)確定的。格式化以后,跟目錄的大小和位置其實(shí)都已經(jīng)確定下來(lái)了:位置緊隨FAT2之后,大小通常為32個(gè)扇區(qū)。根目錄之后便是數(shù)據(jù)區(qū)第2簇。FAT文件系統(tǒng)的一個(gè)重要思想是把目錄(文件夾)當(dāng)作一個(gè)特殊的文件來(lái)處理,F(xiàn)AT32甚至將根目錄當(dāng)作文件處理(旁:NTFS將分區(qū)參數(shù)、安全權(quán)限等好多東西抽象為文件更是這個(gè)思想的升華),在FAT16中,雖然根目錄地位并不等同于普通的文件或者說(shuō)是目錄,但其組織形式和普通的目錄(文件夾)并沒(méi)有不同。FAT分區(qū)中所有的文件夾(目錄)文件,實(shí)際上可以看作是一個(gè)存放其他文件(文件
11、夾)入口參數(shù)的數(shù)據(jù)表。所以目錄的占用空間的大小并不等同于其下所有數(shù)據(jù)的大小,但也不等同于0。通常是占很小的空間的,可以看作目錄文件是一個(gè)簡(jiǎn)單的二維表文件。其具體存儲(chǔ)原理是:不管目錄文件所占空間為多少簇,一簇為多少字節(jié)。系統(tǒng)都會(huì)以32個(gè)字節(jié)為單位進(jìn)行目錄文件所占簇的分配。這32個(gè)字節(jié)以確定的偏移來(lái)定義本目錄下的一個(gè)文件(或文件夾)的屬性,實(shí)際上是一個(gè)簡(jiǎn)單的二維表。這32個(gè)字節(jié)的各字節(jié)偏移定義如表11:表11 FAT16目錄項(xiàng)32個(gè)字節(jié)的表示定義字節(jié)偏移(16進(jìn)制)字節(jié)數(shù)定義0x00x7 8文件名0x80xA 3擴(kuò)展名0xB 1屬性字節(jié)00000000(讀寫(xiě))00000001(只讀)0000001
12、0(隱藏)00000100(系統(tǒng))00001000(卷標(biāo))00010000(子目錄)00100000(歸檔)0xC0x15 10系統(tǒng)保留0x160x17 2文件的最近修改時(shí)間0x180x19 2文件的最近修改日期0x1A0x1B 2表示文件的首簇號(hào)0x1C0x1F 4表示文件的長(zhǎng)度對(duì)圖10中的一些取值進(jìn)行說(shuō)明:(1)、對(duì)于短文件名,系統(tǒng)將文件名分成兩部分進(jìn)行存儲(chǔ),即主文件名+擴(kuò)展名。0x00x7字節(jié)記錄文件的主文件名,0x80xA記錄文件的擴(kuò)展名,取文件名中的ASCII碼值。不記錄主文件名與擴(kuò)展名之間的.主文件名不足8個(gè)字符以空白符(20H)填充,擴(kuò)展名不足3個(gè)字符同樣以空白符(20H)填充。
13、0x0偏移處的取值若為00H,表明目錄項(xiàng)為空;若為E5H,表明目錄項(xiàng)曾被使用,但對(duì)應(yīng)的文件或文件夾已被刪除。(這也是誤刪除后恢復(fù)的理論依據(jù))。文件名中的第一個(gè)字符若為.或.表示這個(gè)簇記錄的是一個(gè)子目錄的目錄項(xiàng)。.代表當(dāng)前目錄;.代表上級(jí)目錄(和我們?cè)赿os或windows中的使用意思是一樣的,如果磁盤(pán)數(shù)據(jù)被破壞,就可以通過(guò)這兩個(gè)目錄項(xiàng)的具體參數(shù)推算磁盤(pán)的數(shù)據(jù)區(qū)的起始位置,猜測(cè)簇的大小等等,故而是比較重要的)(2)、0xB的屬性字段:可以看作系統(tǒng)將0xB的一個(gè)字節(jié)分成8位,用其中的一位代表某種屬性的有或無(wú)。這樣,一個(gè)字節(jié)中的8位每位取不同的值就能反映各個(gè)屬性的不同取值了。如就表示這是個(gè)文件,屬性
14、是只讀、系統(tǒng)。(3)、0xC0x15在原FAT16的定義中是保留未用的。在高版本的WINDOWS系統(tǒng)中有時(shí)也用它來(lái)記錄修改時(shí)間和最近訪問(wèn)時(shí)間。那樣其字段的意義和FAT32的定義是相同的,見(jiàn)后邊FAT32。(4)、0x160x17中的時(shí)間=小時(shí)*2048+分鐘*32+秒/2。得出的結(jié)果換算成16進(jìn)制填入即可。也就是:0x16字節(jié)的04位是以2秒為單位的量值;0x16字節(jié)的57位和0x17字節(jié)的02位是分鐘;0x17字節(jié)的37位是小時(shí)。(5)、0x180x19中的日期=(年份-1980)*512+月份*32+日。得出的結(jié)果換算成16進(jìn)制填入即可。也就是:0x18字節(jié)04位是日期數(shù);0x18字節(jié)57
15、位和0x19字節(jié)0位是月份;0x19字節(jié)的17位為年號(hào),原定義中0119分別代表19802099,目前高版本的Windows允許取0127,即年號(hào)最大可以到2107年。(6)、0x1A0x1B存放文件或目錄的表示文件的首簇號(hào),系統(tǒng)根據(jù)掌握的首簇號(hào)在FAT表中找到入口,然后再跟蹤簇鏈直至簇尾,同時(shí)用0x1C0x1F處字節(jié)判定有效性。就可以完全無(wú)誤的讀取文件(目錄)了。(7)、普通子目錄的尋址過(guò)程也是通過(guò)其父目錄中的目錄項(xiàng)來(lái)指定的,與數(shù)據(jù)文件(指非目錄文件)不同的是目錄項(xiàng)偏移0xB的第4位置1,而數(shù)據(jù)文件為0。對(duì)于整個(gè)FAT分區(qū)而言,簇的分配并不完全總是分配干凈的。如一個(gè)數(shù)據(jù)區(qū)為99個(gè)扇區(qū)的FAT
16、系統(tǒng),如果簇的大小設(shè)定為2扇區(qū),就會(huì)有1個(gè)扇區(qū)無(wú)法分配給任何一個(gè)簇。這就是分區(qū)的剩余扇區(qū),位于分區(qū)的末尾。有的系統(tǒng)用最后一個(gè)剩余扇區(qū)備份本分區(qū)的DBR,這也是一種好的備份方法。早的FAT16系統(tǒng)并沒(méi)有長(zhǎng)文件名一說(shuō),Windows操作系統(tǒng)已經(jīng)完全支持在FAT16上的長(zhǎng)文件名了。FAT16的長(zhǎng)文件名與FAT32長(zhǎng)文件名的定義是相同的,關(guān)于長(zhǎng)文件名,在FAT32部分再詳細(xì)作解釋。FAT32存儲(chǔ)原理:FAT32是個(gè)非常有功勞的文件系統(tǒng),Microsoft成功地設(shè)計(jì)并運(yùn)用了它,直到今天NTFS鋪天蓋地襲來(lái)的時(shí)候,F(xiàn)AT32依然占據(jù)著Microsoft Windows文件系統(tǒng)中重要的地位。FAT32最早是
17、出于FAT16不支持大分區(qū)、單位簇容量大以致空間急劇浪費(fèi)等缺點(diǎn)設(shè)計(jì)的。實(shí)際應(yīng)用中,F(xiàn)AT32還是成功的。FAT32與FAT16的原理基本上是相同的,圖4.3.12標(biāo)出了FAT32分區(qū)的基本構(gòu)成。圖4.3.12 Fat32的組織形式引導(dǎo)扇區(qū)其余保留扇區(qū)FAT1 FAT2(重復(fù)的)根文件夾首簇其他文件夾及所有文件剩余扇區(qū)1扇區(qū)31個(gè)扇區(qū)實(shí)際情況取大小同F(xiàn)AT1第2簇不足一簇保留扇區(qū)數(shù)據(jù)區(qū)FAT32在格式化的過(guò)程中就根據(jù)分區(qū)的特點(diǎn)構(gòu)建好了它的DBR,其中BPB參數(shù)是很重要的,可以回過(guò)頭來(lái)看一下表4和表5。首先FAT32保留扇區(qū)的數(shù)目默認(rèn)為32個(gè),而不是FAT16的僅僅一個(gè)。這樣的好處是有助于磁盤(pán)DB
18、R指令的長(zhǎng)度擴(kuò)展,而且可以為DBR扇區(qū)留有備份空間。上面我們已經(jīng)提到,構(gòu)建在FAT32上的win98或win2000、winXP,其操作系統(tǒng)引導(dǎo)代碼并非只占一個(gè)扇區(qū)了。留有多余的保留扇區(qū)就可以很好的拓展OS引導(dǎo)代碼。在BPB中也記錄了DBR扇區(qū)的備份扇區(qū)編號(hào)。備份扇區(qū)可以讓我們?cè)诖疟P(pán)遭到意外破壞時(shí)恢復(fù)DBR。FAT32的文件分配表的數(shù)據(jù)結(jié)構(gòu)依然和FAT16相同,所不同的是,F(xiàn)AT32將記錄簇鏈的二進(jìn)制位數(shù)擴(kuò)展到了32位,故而這種文件系統(tǒng)稱為FAT32。32位二進(jìn)制位的簇鏈決定了FAT表最大可以尋址2T個(gè)簇。這樣即使簇的大小為1扇區(qū),理論上仍然能夠?qū)ぶ?TB范圍內(nèi)的分區(qū)。但實(shí)際中FAT32是不能
19、尋址這樣大的空間的,隨著分區(qū)空間大小的增加,F(xiàn)AT表的記錄數(shù)會(huì)變得臃腫不堪,嚴(yán)重影響系統(tǒng)的性能。所以在實(shí)際中通常不格式化超過(guò)32GB的FAT32分區(qū)。WIN2000及之上的OS已經(jīng)不直接支持對(duì)超過(guò)32GB的分區(qū)格式化成FAT32,但WIN98依然可以格式化大到127GB的FAT32分區(qū),但這樣沒(méi)必要也不推薦。同時(shí)FAT32也有小的限制,F(xiàn)AT32卷必須至少有65527個(gè)簇,所以對(duì)于小的分區(qū),仍然需要使用FAT16或FAT12。分區(qū)變大時(shí),如果簇很小,文件分配表也隨之變大。仍然會(huì)有上面的效率問(wèn)題存在。既要有效地讀寫(xiě)大文件,又要最大可能的減少空間的浪費(fèi)。FAT32同樣規(guī)定了相應(yīng)的分區(qū)空間對(duì)應(yīng)的簇的
20、大小,見(jiàn)表12:表12 FAT32分區(qū)大小與對(duì)因簇大小分區(qū)空間大小每個(gè)簇的扇區(qū)簇空間大小8GB 84k=8GB且16GB 16 8k=16GB且32GB 32 16k=32GB 64 32k簇的取值意義和FAT16類似,不過(guò)是位數(shù)長(zhǎng)了點(diǎn)罷了,比較見(jiàn)表13:表13 FAT各系統(tǒng)記錄項(xiàng)的取值含義(16進(jìn)制)FAT12記錄項(xiàng)的取值FAT16記錄項(xiàng)的取值FAT32記錄項(xiàng)的取值對(duì)應(yīng)簇的表現(xiàn)情況000 0未分配的簇002FFF 0002FFEF 00000002FFFFFFEF已分配的簇FF0FF6 FFF0FFF6 FFFFFFF0FFFFFFF6系統(tǒng)保留FF7 FFF7 FFFFFFF7壞簇FF8FF
21、F FFF8FFFF FFFFFFF8FFFFFFFF文件結(jié)束簇FAT32的另一項(xiàng)重大改革是根目錄的文件化,即將根目錄等同于普通的文件。這樣根目錄便沒(méi)有了FAT16中512個(gè)目錄項(xiàng)的限制,不夠用的時(shí)候增加簇鏈,分配空簇即可。而且,根目錄的位置也不再硬性地固定了,可以存儲(chǔ)在分區(qū)內(nèi)可尋址的任意簇內(nèi),不過(guò)通常根目錄是最早建立的(格式化就生成了)目錄表。所以,我們看到的情況基本上都是根目錄首簇占簇區(qū)順序上的第1個(gè)簇。在圖4.3.12中也是按這種情況制作的畫(huà)的。FAT32對(duì)簇的編號(hào)依然同F(xiàn)AT16。順序上第1個(gè)簇仍然編號(hào)為第2簇,通常為根目錄所用(這和FAT16是不同的,F(xiàn)AT16的根目錄并不占簇區(qū)空間
22、,32個(gè)扇區(qū)的根目錄以后才是簇區(qū)第1個(gè)簇)FAT32的文件尋址方法與FAT16相同,但目錄項(xiàng)的各字節(jié)參數(shù)意義卻與FAT16有所不同,一方面它啟用了FAT16中的目錄項(xiàng)保留字段,同時(shí)又完全支持長(zhǎng)文件名了。對(duì)于短文件格式的目錄項(xiàng)。其參數(shù)意義見(jiàn)表14:表14 FAT32短文件目錄項(xiàng)32個(gè)字節(jié)的表示定義字節(jié)偏移(16進(jìn)制)字節(jié)數(shù)定義0x00x7 8文件名0x80xA 3擴(kuò)展名0xB*1屬性字節(jié)00000000(讀寫(xiě))00000001(只讀)00000010(隱藏)00000100(系統(tǒng))00001000(卷標(biāo))00010000(子目錄)00100000(歸檔)0xC 1系統(tǒng)保留0xD 1創(chuàng)建時(shí)間的10
23、毫秒位0xE0xF 2文件創(chuàng)建時(shí)間0x100x11 2文件創(chuàng)建日期0x120x13 2文件最后訪問(wèn)日期0x140x15 2文件起始簇號(hào)的高16位0x160x17 2文件的最近修改時(shí)間0x180x19 2文件的最近修改日期0x1A0x1B 2文件起始簇號(hào)的低16位0x1C0x1F 4表示文件的長(zhǎng)度*此字段在短文件目錄項(xiàng)中不可取值0FH,如果設(shè)值為0FH,目錄段為長(zhǎng)文件名目錄段說(shuō)明:(1)、這是FAT32短文件格式目錄項(xiàng)的意義。其中文件名、擴(kuò)展名、時(shí)間、日期的算法和FAT16時(shí)相同的。(2)、由于FAT32可尋址的簇號(hào)到了32位二進(jìn)制數(shù)。所以系統(tǒng)在記錄文件(文件夾)開(kāi)始簇地址的時(shí)候也需要32位來(lái)記
24、錄,F(xiàn)AT32啟用目錄項(xiàng)偏移0x120x13來(lái)表示起始簇號(hào)的高16位。(3)、文件長(zhǎng)度依然用4個(gè)字節(jié)表示,這說(shuō)明FAT32依然只支持小于4GB的文件(目錄),超過(guò)4GB的文件(目錄),系統(tǒng)會(huì)截?cái)嗵幚怼AT32的一個(gè)重要的特點(diǎn)是完全支持長(zhǎng)文件名。長(zhǎng)文件名依然是記錄在目錄項(xiàng)中的。為了低版本的OS或程序能正確讀取長(zhǎng)文件名文件,系統(tǒng)自動(dòng)為所有長(zhǎng)文件名文件創(chuàng)建了一個(gè)對(duì)應(yīng)的短文件名,使對(duì)應(yīng)數(shù)據(jù)既可以用長(zhǎng)文件名尋址,也可以用短文件名尋址。不支持長(zhǎng)文件名的OS或程序會(huì)忽略它認(rèn)為不合法的長(zhǎng)文件名字段,而支持長(zhǎng)文件名的OS或程序則會(huì)以長(zhǎng)文件名為顯式項(xiàng)來(lái)記錄和編輯,并隱藏起短文件名。當(dāng)創(chuàng)建一個(gè)長(zhǎng)文件名文件時(shí),系統(tǒng)
25、會(huì)自動(dòng)加上對(duì)應(yīng)的短文件名,其一般有的原則:(1)、取長(zhǎng)文件名的前6個(gè)字符加上1形成短文件名,擴(kuò)展名不變。(2)、如果已存在這個(gè)文件名,則符號(hào)后的數(shù)字遞增,直到5。(3)、如果文件名中后面的數(shù)字達(dá)到5,則短文件名只使用長(zhǎng)文件名的前兩個(gè)字母。通過(guò)數(shù)學(xué)操縱長(zhǎng)文件名的剩余字母生成短文件名的后四個(gè)字母,然后加后綴1直到最后(如果有必要,或是其他數(shù)字以避免重復(fù)的文件名)。(4)、如果存在老OS或程序無(wú)法讀取的字符,換以_長(zhǎng)文件名的實(shí)現(xiàn)有賴于目錄項(xiàng)偏移為0xB的屬性字節(jié),當(dāng)此字節(jié)的屬性為:只讀、隱藏、系統(tǒng)、卷標(biāo),即其值為0FH時(shí),DOS和WIN32會(huì)認(rèn)為其不合法而忽略其存在。這正是長(zhǎng)文件名存在的依據(jù)。將目錄
26、項(xiàng)的0xB置為0F,其他就任由系統(tǒng)定義了,Windows9x或Windows 2000、XP通常支持不超過(guò)255個(gè)字符的長(zhǎng)文件名。系統(tǒng)將長(zhǎng)文件名以13個(gè)字符為單位進(jìn)行切割,每一組占據(jù)一個(gè)目錄項(xiàng)。所以可能一個(gè)文件需要多個(gè)目錄項(xiàng),這時(shí)長(zhǎng)文件名的各個(gè)目錄項(xiàng)按倒序排列在目錄表中,以防與其他文件名混淆。長(zhǎng)文件名中的字符采用unicode形式編碼(一個(gè)巨大的進(jìn)步哦),每個(gè)字符占據(jù)2字節(jié)的空間。其目錄項(xiàng)定義如表15。表15 FAT32長(zhǎng)文件目錄項(xiàng)32個(gè)字節(jié)的表示定義字節(jié)偏移(16進(jìn)制)字節(jié)數(shù)定義0x0 1屬性字節(jié)位意義7保留未用6 1表示長(zhǎng)文件最后一個(gè)目錄項(xiàng)5保留未用4順序號(hào)數(shù)值3 21 00x10xA 10長(zhǎng)文件名unicode碼0xB 1長(zhǎng)文件名目錄項(xiàng)標(biāo)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年太湖創(chuàng)意職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)傾向性測(cè)試題庫(kù)及參考答案詳解1套
- 2026年吐魯番職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性測(cè)試題庫(kù)及參考答案詳解
- 2026年長(zhǎng)沙南方職業(yè)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性考試題庫(kù)及答案詳解一套
- 2026年江蘇省泰州市單招職業(yè)傾向性測(cè)試題庫(kù)及完整答案詳解1套
- 2026年西安電力機(jī)械制造公司機(jī)電學(xué)院?jiǎn)握新殬I(yè)傾向性考試題庫(kù)及答案詳解一套
- 2026年江西工業(yè)職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)技能考試題庫(kù)及答案詳解一套
- 2026年錦州師范高等專科學(xué)校單招職業(yè)技能考試題庫(kù)及參考答案詳解1套
- 2026年黑龍江藝術(shù)職業(yè)學(xué)院?jiǎn)握新殬I(yè)傾向性測(cè)試題庫(kù)及參考答案詳解
- 2026年遼寧建筑職業(yè)學(xué)院?jiǎn)握新殬I(yè)技能測(cè)試題庫(kù)及答案詳解1套
- 2026年吉林電子信息職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)技能測(cè)試題庫(kù)及參考答案詳解1套
- 2025中原農(nóng)業(yè)保險(xiǎn)股份有限公司招聘67人筆試備考重點(diǎn)試題及答案解析
- 2025中原農(nóng)業(yè)保險(xiǎn)股份有限公司招聘67人備考考試試題及答案解析
- 2025年違紀(jì)違法典型案例個(gè)人學(xué)習(xí)心得體會(huì)
- 2025年度河北省機(jī)關(guān)事業(yè)單位技術(shù)工人晉升高級(jí)工考試練習(xí)題附正確答案
- 交通運(yùn)輸布局及其對(duì)區(qū)域發(fā)展的影響課時(shí)教案
- 2025年中醫(yī)院護(hù)理核心制度理論知識(shí)考核試題及答案
- GB/T 17981-2025空氣調(diào)節(jié)系統(tǒng)經(jīng)濟(jì)運(yùn)行
- 比亞迪儲(chǔ)能項(xiàng)目介紹
- 2025 年高職酒店管理與數(shù)字化運(yùn)營(yíng)(智能服務(wù))試題及答案
- 2025年9月廣東深圳市福田區(qū)事業(yè)單位選聘博士11人備考題庫(kù)附答案
- 糖尿病足潰瘍VSD治療創(chuàng)面氧自由基清除方案
評(píng)論
0/150
提交評(píng)論