網絡技術是從1990年代中期發展起來的新技術,它把互聯網上分散的資源融為有機整體,實現資源的全面共享和有機協作,使人們能夠透明地使用資源的整體能力并按需獲取信息。資源包括高性能計算機、存儲資源、數據資源、信息資源、知識資源、專家資源、大型數據庫、網絡、傳感器等。 當前的互聯網只限于信息共享,網絡則被認為是互聯網發展的第三階段。 FAT是DOS、Windows9X系統的文件尋址格式,位于DBR之后。在解釋文件分配表的概念的時候,我們有必要談談簇(Cluster)的概念。文件占用磁盤空間,基本單位不是字節而是簇。一般情況下,軟盤每簇是1個扇區,硬盤每簇的扇區數與硬盤的總容量大小有關,可能是4、8、16、32、64……同一個文件的數據并不一定完整地存放在磁盤的一個連續的區域內,而往往會分成若干段,像一條鏈子一樣存放。這種存儲方式稱為文件的鏈式存儲。由于硬盤上保存著段與段之間的連接信息(即FAT),操作系統在讀取文件時,總是能夠準確地找到各段的位置并正確讀出。 為了實現文件的鏈式存儲,硬盤上必須準確地記錄哪些簇已經被文件占用,還必須為每個已經占用的簇指明存儲后繼內容的下一個簇的簇號。對一個文件的最后一簇,則要指明本簇無后繼簇。這些都是由FAT表來保存的,表中有很多表項,每項記錄一個簇的信息。由于FAT對于文件管理的重要性,所以為了安全起見,FAT有一個備份,即在原FAT的后面再建一個同樣的FAT。初形成的FAT中所有項都標明為“未占用”,但如果磁盤有局部損壞,那么格式化程序會檢測出損壞的簇,在相應的項中標為“壞簇”,以后存文件時就不會再使用這個簇了。FAT的項數與硬盤上的總簇數相當,每一項占用的字節數也要與總簇數相適應,因為其中需要存放簇號。FAT的格式有多種,最為常見的是FAT16和FAT32。 當一個磁盤Format后,在其邏輯0扇區(即BOOT扇區)后面的幾個扇區中存在著一個重要的數據表—文件分配(FAT),文件分配表一式兩份,占據扇區的多小憑磁盤類型大小而定。顧名思義,文件分配表是用來表示磁盤問件的空分配信息的。它不對引導區,文件目錄的信息進行表示,也不真正存儲文件內容。 我們知道磁盤是由一個一個扇區組成的,若干個扇區合為一個簇,文件存取是以簇為單位的,哪怕這個文件只有1個字節。每個簇在文件分配表中都有對應的表項,簇號即為表項號,每個表項占1.5個字節(磁盤空間在10MB以下)或2個字節(磁盤空間在10MB以上)。為了方便起見,以后所說的表項都是指2個字節的。 文件分配表結構如1(H表示16進制) 表1 第0字節 表頭,表磁盤類型。FFH雙面軟盤,每次道8扇區FEH單面軟盤,每磁道8扇區FDH雙面軟盤,每磁道9扇區FCCH單面軟盤,每磁道9扇區FC8H硬盤 第1~2字節 (表項號1)表示第一簇狀態,因第一簇被系統占據,故此兩字節為FFFFH 第3~4字節 (表項號2)表示第二簇狀態,若為FFFH表此簇為壞的,DOS已標記為不能用;0000H表示此簇為空,可以用;FFF8H表不能示該簇為文件的最后一簇;其余數字表示文件的下一個簇號,注意高字節在后,低字節在前。 第5~6字節 (表項號3)表示第三簇狀態,同上。 注意: 不要把表項內的數字誤認為表示當前簇號,而應是該文件的下一個簇的簇號。.高字節在后,低字節在前是一種存儲數字方式,讀出時應對其進行調整。是如兩字節12H,34H,應調整為3412H。 文件分配表與文件目錄(FDT)相配合,可以統一管理整個磁盤的文件。它告訴系統磁盤上哪些簇是壞的或已被使用,哪些簇可以用,并存儲每個文件所使用的簇號。它是文件的“總調度師”。 當DOS寫文件時,首先在文件目錄中檢查是否有相同文件名,若無則使用一個文件目錄表項,然后依次檢測FAT中的每個表項對應的簇中,同時將該簇號寫入文件目錄表項相的26-27字節,如文件長度不止一簇,則繼續向后尋找可用簇,找到后將其簇號寫入上一次找到的表項中,如此直到文件結束,在最后一簇的表項里填上FFF8H,形成單向鏈表。 DOS刪除文件時只是把文件目錄表中的該文件的表項第0個字節改為E5H,表此項已被刪除,并在文件分配表中把該文件占用的各簇的表項清0,并釋放空間。其文件的內容仍然在盤上,并沒有被真正刪除,這就是undelete.exe,unerase.exe等一類恢復刪除工具能起作用的原因。 文件分配表在系統中的地位十分重要,用戶最好不要去修改它,以免誤操作帶來嚴重的后果。 FAT表的定位 硬盤分區的主要結構說明: (Cylinder柱面/磁道-Side磁頭-Sector扇區地址以下簡稱為?-?-?) 《主分區》 名稱 地址 長度(扇區) 主引導記錄(Main Boot Record) 0-0-1 1 系統扇區(System Secotrs) 0-0-2,0-0-63 62 引導扇區(Boot) 0-1-1 1 FAT16系統中,此扇區包含BPB(BIOS Parameter Block)表,描述邏輯盤結構組成,包含隱藏扇區數目(從0-1-1開始計算)、FAT扇區數、FAT拷貝數、硬盤磁頭總數、根目錄表項最大值等。 FAT32系統中,BPB表的偏移與FAT16不同,但表項基本相同。整個隱藏扇區部分都作為邏輯盤的描述區域。 隱藏扇區(Hidden Secotrs): FAT16 0-1-1 1 FAT32 0-1-1 32 文件分配表(File Allocation Table): FAT16 0-1-2 根據邏輯盤容量變化 FAT32 0-1-33 根據邏輯盤容量變化 說明: FAT16的每個表項由2字節(16位)組成,通常每個表項指向的簇包含64個扇區,即32K字節。 邏輯盤容量最大為2047MB。 FAT32的每個表項由4字節(32位)組成,通常每個表項指向的簇包含8個扇區,即4K字節。 邏輯盤容量最小為512MB。 對于C分區,在MBR的偏移01c2H處,FAT16為06H,FAT32為0CH。 有關計算公式為: 每個扇區長度=512字節 總簇數=邏輯盤容量/簇容量 總簇數=FAT表長度(字節)/每個表項長度(字節)-2 FAT表長度=邏輯盤容量/簇容量*每個表項長度 FAT表的開始由介質描述符+一串“已占用”標志組成: FAT16硬盤----F8 FF FF 7F FAT32硬盤----F8 FF FF 0F FF FF FF 0F 每個有效的FAT結構區包含兩個完全相同的拷貝:FAT1、FAT2 文件目錄表(File Directory Table),即根目錄區,又稱為ROOT區: 緊跟在FAT2的下一個扇區,長度為32個扇區(256個表項)。如果支持長文件名,則每個表項 為64個字節,其中,前32個字節為長文件鏈接說明;后32個字節為文件屬性說明,包括文件長 度、起始地址、日期、時間等。如不支持長文件名,則每個表項為32個字節的屬性說明。 數據區(Data Area): 緊跟在FDT的下一個扇區,直到邏輯盤的結束地址。 《擴展分區》 名稱 地址 長度(扇區) 擴展分區(Extend Partition) ?-y-1 1 系統扇區(System Secotrs) ?-y-2,?-y-63 62 引導扇區(Boot) ?-(y+1)-1 1 其后各項與主分區相同…… FAT表引起的讀寫故障 硬盤文件分配表龐大無法手工修復,只能依靠工具。 FAT表記錄著硬盤數據的存儲地址,每一個文件都有一組FAT鏈指定其存放的簇地址。FAT表的損壞意味著文件內容的丟失。慶幸的是DOS系統本身提供了兩個FAT表,如果目前使用的FAT表損壞,可用第二個進行覆蓋修復。但由于不同規格的磁盤其FAT表的長度及第二個FAT表的地址也是不固定的,所以修復時必須正確查找其正確位置,一些工具軟件如NU等本身具有這樣的修復功能,使用也非常的方便。采用DEBUG也可實現這種操作,即采用其m命令把第二個FAT表移到第一個表處即可(不建議這樣做)。如果第二個FAT表也損壞了,則也無法把硬盤恢復到原來的狀態,但文件的數據仍然存放在硬盤的數據區中,可采用CHKDSK或SCANDISK命令進行修復,最終得到*.CHK文件,這便是丟失FAT鏈的扇區數據。如果是文本文件則可從中提取出完整的或部分的文件內容。 軟盤文件分配FAT表修復 在運行某個程序時,有時會在屏幕上看到:File allocation table bad,drive A(文件分配表壞)的錯誤信息,導致程序不能正常運行。 我們知道,在磁盤中有兩個文件分配表:FAT1和FAT2。FAT1用于日常工作,FAT2備用。因此,在FAT1損壞時,可用FAT2表修補。 具體方法是:運行DEBUG,將FAT2讀入緩沖區,用緩沖區的FAT2數據覆蓋磁盤中的FAT1。 例:修復3寸1.44M軟盤,在A驅 在DOS環境下進入debug環境 在“-”提示符下進行如下操作: -L 100 0 0A 9 -W 100 0 1 9 -q 其它類型的軟盤的修復方法參照下表進行。 起止邏輯扇區 5.25"低密 5.25"高密 3.5"低密 3.5"高密 BOOT區 0 0 0 0 FAT1 1-2 1-7 1-3 1-9 FAT2 3-4 8-0EH 4-6 0A-12H 例如我們要修復5.25"高密軟盤的FAT,則需將上述參數改為: -L 100 0 8 7 -W 100 0 1 7 -q 網絡的神奇作用吸引著越來越多的用戶加入其中,正因如此,網絡的承受能力也面臨著越來越嚴峻的考驗―從硬件上、軟件上、所用標準上......,各項技術都需要適時應勢,對應發展,這正是網絡迅速走向進步的催化劑。 |
溫馨提示:喜歡本站的話,請收藏一下本站!