1. 程式人生 > >[檔案分配表(FAT)及其結構]

[檔案分配表(FAT)及其結構]

從表6-5中可看出,簇在FAT中的佔用1.5個位元組、2個位元組或4個位元組的登記項必須是下列值之一:
·
一個“0”值,表示這個簇未被分配使用。
·
一個“001HFEFH”“0001HFFEFH”“00000001HFFFFFFEFH”之間的值,表示該簇已經被佔用,且該值即是該簇所在檔案中下一個簇號的指標。
·
一個“BAD”(FF7HFFF7HFFFFFFF7H),表明該簇有壞扇區,不能使用。一個“EOF”(FF8HFFFHFFF8HFFFFHFFFFFFF8HFFFFFFFFH之間的任一值),表明該簇是檔案中的最後一簇。FAT的簇登記項中,0號登記項和1號登記項是表頭,簇的登記項從2號開始。系統隱含檔案
IO.SYS所在的首簇號總是0002
3.FAT
表的組成格式及功能綜上所述,現將FAT表的組成格式及功能總結如下:
·
表明磁碟型別。FAT的第0簇和第1簇為保留簇,其中第0位元組(首位元組)表示磁碟型別,其值與BPB中磁介質說明符對應的磁碟型別相同。
·
表明一個檔案所佔用各簇的簇鏈分配情況。FAT002簇開始分配給檔案。表項值“001H--FEFH”“0001H--FFEFH”“00000001H--FFFFFFEFH”中的任一值表明檔案的下一簇號。檔案的起始簇號由檔案目錄表(FDT)中每個目錄登記項的第2627位元組決定,作為FAT的入口,起始簇號在FAT中的表項值即檔案的第2簇號,第二簇號的表項值即第3簇號,依此類推,直到表項值為
FF8H--FFFHFFF8H--FFFFHFFFFFFF8H--FFFFFFFFH,表示該簇為檔案的最後一簇。
·
標明壞簇和可用簇。若軟盤格式化時發現壞扇區,即在相應簇的表項中寫入FF7H(或FFF7H),表明該扇區所在簇不能使用,DOS就不會將它分配給使用者檔案。磁碟上未用,但可用的空簇的表項值為000H(或0000H)。當需要存放新檔案時,檔案管理系統將它們按一定順序分配給新檔案。雖然FAT表記錄了檔案所用的磁碟空間資訊,但是DOS引導區、兩個FAT表、檔案目錄區等並不由FAT表中的簇表示。
4.FAT
表登記項與檔案的簇鏈關係FAT16檔案系統的16位登記項為例,檔案尋找簇鏈的計算步驟為:
·
假如我們已經從檔案目錄表(
FDT)中查得該檔案的起始簇號。
·
將該起始簇號換為10進位制數a,a即為查詢下一簇號的本簇號。
·a*2
(若是12FAT項,則a*1.5的乘積取整),即得到FAT中的相對位移b該位置存放檔案簇鏈的下一簇號。
·
從該相對位移b開始取一個字(低位在前,高位在後。如果是12位的FAT項,則按以下原則:若本簇號a為偶數,則保留該字低12位,否則保留高12位)。
·
重複以上簇鏈的查詢過程,直至找到其值為FF8--FFF的簇號。
5.
檔案簇鏈的操作例項下面用一個例子來說明檔案簇鏈的查詢過程:
·
假如已經從FDT中知道一個在1.44MB軟盤上檔案11.TXT的起始簇號為02
·a=02
即為查詢下一簇號的本簇號。DEBUG調出第一個FAT的內容如下:
A:/>DEBUG
-L CS:0 0 1 7
(將A盤第1扇區開始的7個扇區的根目錄FAT讀入記憶體)
-D CS:0
(顯示FAT的部分內容)
0F74:0000 F0 FF FF 03 40 00 FF 5F-01 07 F0 FF FF FF FF FF [email protected]_........
0F74:0010 FF FF FF FF FF FF FF FF-FF FF FF FF FF FF FF FF ...............o
......
·
由檔案起始簇號2*1.5=3.0,取整後得3,即0003開始的一個字中存放下一簇號。
·
FAT的第3位元組開始,取一個字4003
·
由於本簇號2為偶數,則保留低12位,003(第3簇)。
·
重複以上的查詢過程:
3*1.5=4.5,4.5
取整後為4,即0004開始的一個字中存放下一簇號。FAT的第4位元組開始,取一個字0040由於本簇號3為基數,則保留低12位,004(第4簇)。
·
再重複以上的查詢過程:
4*1.5=6
,即0006開始的餓一個字中存放下一簇號。FAT的第6位元組開始,取一個字5FFFH由於本簇號4為偶數,則保留低12位,FFFH(表明第4簇為結束簇)。由此得到該檔案的簇號鏈為:2=>3=>4

相關推薦

[檔案分配(FAT)及其結構]

從表6-5中可看出,簇在FAT中的佔用1.5個位元組、2個位元組或4個位元組的登記項必須是下列值之一:·一個“0”值,表示這個簇未被分配使用。·一個“001H~FEFH”、“0001H~FFEFH”或“00000001H~FFFFFFEFH”之間的值,表示該簇已經被佔用,且該值即是該簇所在檔案中下一個簇號的指

資料結構中的線性及其結構

線性表(linear list) )      線性表是n個型別相同資料元素的有限序列,通常記作(a 0 , a 1 , …a i-1 , a i , a i+1 …,a n-1 )。 1.相同資料型別 線上性表的定義中,我們看到從a 0 到a n-

根據Ibatis的SqlMap配置檔案生成結構

       有一份應用完整的原始碼,不過就是缺少了表結構,如果讓我根據DO物件一個個去慢慢建立,也是個讓人頭痛的問題,一是因為有幾十個表,二是這個東西拷貝貼上一點技術含量都沒有,這真不是我願意乾的活。本來是想在網上搜索一份這樣的工具,關鍵字到是用了一大堆,

散列表(雜湊及其儲存結構和特點詳解

順序儲存的結構型別需要一個一個地按順序訪問元素,當這個總量很大且我們所要訪問的元素比較靠後時,效能就會很低。散列表是一種空間換時間的儲存結構,是在演算法中提升效率的一種比較常用的方式,但是所需空間太大也會讓人頭疼,所以通常需要在二者之間權衡。我們會在之後的具體演算法章節中得到更多的領悟。 什麼是散列表 讓我

[一]class 檔案淺析 .class檔案格式詳解 欄位方法屬性常量池欄位 class檔案屬性 資料型別 資料結構

ClassFile { u4 magic;//唯一作用是確定這個檔案是否為一個能被虛擬機器所接受的class檔案。魔數值固定為0xCAFEBABE,不會改變 u2 minor_version;//唯一作用是確定這個檔案是否為一個能被虛擬機器所接受的class檔案。魔數值固定為0xCAFEBABE,不會

FAT32檔案系統的FAT分析(二)

1.      FAT表的作用及結構特點 FAT32與FAT16表的作用和結構類似,這裡只道不同 A:FAT32的FAT表也是由FAT表項構成的,每個FAT項的大小為4個位元組 B:FAT項的大小為4個位元組,即32位,但是隻用到了26位,最多管理226 =671088

MySQL innodb引擎下根據.frm和.ibd檔案恢復結構和資料

  一次恢復資料庫表結構和資料的實戰,僅以此貼作為記錄。   由於,前幾天我們使用的資料庫被入侵(順便鄙視一下安全管理人員),資料庫中的表都顯示不存在(僅剩一個黑客自建的----qq_xxxxx的表,但物理檔案都在,例如:.frm、.ibd檔案等)。因此,產生了這次恢復表結

HTML5及其驗證

最小值 標準 pattern maxlength phone box reg 再次 其中 HTML5表單及其驗證 HTML表單一直都是Web的核心技術之一,有了它我們才能在Web上進行各種各樣的應用。HTML5 Forms新增了許多新控件及其API,方便我們做更復雜

單鏈實現及其基本操作

rate || == tac rgs 是否 targe param val import java.util.HashMap; import java.util.Scanner; import java.util.Stack; /** * *

查詢一個用戶下的所有,查詢表結構。設置列寬。

color logs 表名 pan for des .cn alt cnblogs SELECT * FROM TAB; DESC 表名 設置表列寬: COL 屬性名 FOR A長度; 查詢一個用戶下的所有表,查詢表結構。設置表列寬。

哈希數據結構原理

數據 jpg src mage logs blog 原理 結構 哈希表 哈希表數據結構原理

1.1線性的邏輯結構

type 抽象 i+1 類型 線性結構 一個數 數據 bsp 基本 線性結構的基本特征 線性結構是一個數據元素有序集 集合中必存在唯一一個“第一元素” 集合中必須存在唯一一個“最後元素” 除最後一個元素外所有元素都

線性(存儲結構數組)--Java 實現

log 遍歷數組 int 附加 arch 無序 過去 play out 1 /*線性表的數組實現 2 *特點:插入刪除慢需要平均移動一半的數據,查找較快 3 *註意:有重復和無重復的數據對應的操作會有些不同 4 *註意數組一旦創建其大小就固定了 5 *J

有序線性(存儲結構數組)--Java實現

ole 插入元素 urn true boolean ava code -- key 1 /*有序數組:主要是為了提高查找的效率 2 *查找:無序數組--順序查找,有序數組--折半查找 3 *其中插入比無序數組慢 4 * */ 5 public class

3.21電腦重裝“operation not found system ”和xp分盤”分配有標記為已使用的未用簇”

文件 分配 文件丟失 由於 激活 引導 OS div 使用 問題一、是用光盤重裝系統後重啟,提示operation not found system ①考慮是系統問題,沒裝好,還是引導文件丟失;換新盤裝,若還是一樣; ②分析認為是分區問題,必須是活動分區+主分區,進pe用

單鏈-數據結構-python實現

技術 div int move print nod 包含 list() python 單向鏈表-用python實現 節點 包含兩個域 元素域和鏈接域 元素域 是存放具體的數據 鏈接域 是存放指向下一個節點 單鏈表的操作 is_empty() 鏈表是否

線性存儲結構的選擇

指針 環境 數據量 程序 元素 鏈表 靜態 角度 比較 1.從存儲的角度考慮: 順序表的存儲空間是靜態分布的,在程序執行之前必須明確規定它的規模,也就是說事先對MAXSIZE要有合適的設計,過大造成浪費,過小容易溢出。 點線性表的長度或存儲規模難以估計時,不易采用順序

線性的順序結構

資料結構是演算法的基礎操作 線性表的順序結構操作有著快熟查詢的優勢 程式碼示例: 1 #ifndef SQLIST_H_INCLUDED 2 #define SQLIST_H_INCLUDED 3 4 #include<iostream> 5 #include&l

大話資料結構(一)——線性順序儲存結構的java實現

    在看《大話資料結構》的時候,裡面詼諧的語言和講解吸引了我,但是這本書是用C來實現的,但是作為一個手擼java的人就想著用java來實現一下這些資料結構,於是就有了這些大話資料結構之java實現。哈哈,感覺這樣會讓自己的理解加深不少。 &n

ORACLE-介紹空間及其的建立以及在空間下使用者的建立

什麼是表空間: ORACLE資料庫被劃分成稱作為表空間的邏輯區域——形成ORACLE資料庫的邏輯結構。一個ORACLE資料庫能夠有一個或多個表空間,而一個表空間則對應著一個或多個物理的資料庫檔案。表空間是ORACLE資料庫恢復的最小單位,容納著許多資料庫實體,如表、檢視、索引、聚簇、回退段和臨時