• 沒有找到結果。

FAT 系統概述

第四章 FAT 檔案系統

4.1 FAT 系統概述

FAT 文件系統的最小資料儲存空間為叢集(Cluster),其容量不可超過 32 Kbytes,叢集又由磁區所構成,其具有的磁區數量為 2 的倍數,每個磁 區的容量可以為512、1024,2048 或 4096 bytes,而較常使用的磁區容量為 512 byte,相當於一個叢集最多可以有 64 個磁區 [8]。

在使用FAT 檔案系統時,當檔案資料小於一個 Cluster 的容量,依然會 佔用一個 Cluster,未使用的空間無法給其它檔案使用。如果檔案資料超過 一個Cluster 的容量以上,則會儲存於數個 Cluster 內,而且不用按照 Cluster 順序儲存,其連結順序會紀錄在文件分配表上。

FAT 檔案系統的檔案與目錄資料存放於目錄區(DIR),其分為短檔名與 長檔名兩種格式,本文將針對短檔名進行說明。在短檔名的檔案與目錄資 料結構中,每個檔案或目錄會擁有32 位元組的資料,其記錄該檔案的名稱、

屬性、建立日期和時間、資料容量、起始Cluster 位址等資訊。當我們要讀 取檔案目錄資料時,要先從 DIR 區域找到該檔案的檔案與目錄資料,然後 得知該檔案的起始Cluster 位址與資料容量。再由起始 Cluster 位址找到資料 所在的磁區位址,即可讀取檔案資料。

由上述可知道要讀取檔案資料會使用到目錄(DIR)、文件分配表(FAT) 和資料(DATA)區域,因此系統在執行 FAT 檔案系統時,首要步驟為計算出 DIR、FAT 與 DATA 區域的實體磁區位址(Physical Sector Address),如此才 能正確的進行檔案存取 。

儲存裝置有實體與邏輯兩種磁區位址,實體磁區(PSN)從儲存裝置的第 零個磁區開始,邏輯磁區(LSN)則是從磁碟分區的起始磁區開始。

我們以圖 4-1 來解說讀取檔案的流程,假設要讀 AS000D6.WAV 檔案 的資料,首先使用Boot sector 所記錄的參數(RevdSecCnt = 131、NumFAT = 2、FATSz16 = 238、RootEntCnt = 32,見表 4-4)來計算 FAT、DIR 與 DATA 等區域的起始磁區位址(FAT start sector = 132,DIR start sector = 608,First Data Sector = 640),然後由 DIR 區域讀取 32 bytes 的檔案目錄資訊,並判斷 是否為所要的檔案,圖(a)為 DIR 區域的內容,找到該檔案所在的位址後,

讀取記錄檔案開始叢集的參數資料(位差 0x1A,FstClus = 0x0002),利用式 29 可將叢集位址(0x0002)轉換為磁區位址,圖(b)為檔案資料的開始磁區,

亦 Cluster 為 2 的資料磁區。當 Cluster 資料讀取完畢後,透過圖(d)的 FAT 表格資料來得到下一個 Cluster 的位址,Cluster 2 位址的數值為 3,表示接 下來的資料是存放在Cluster 3,圖(c)為 Cluster 為 3 的磁區資料。

(a)

(b) (c)

(d)

Hidden sector = 131 PSN = LSN + 131 FAT LSN = 1 DIR LSN = 477 DATA Start LSN = 509 Sector per Cluster = 64 Cluster 2 LSN = 509 Cluster 3 LSN = 573

圖 4-1 讀取 FAT 檔案資料範例:(a)DIR 磁區資料;(b)Cluste 2 磁區資料;

First Cluster

FAT 檔案系統的磁區結構包括四個不同的部份,保留區域(Reserved Region)、文件分配表區域(FAT Region)、根目錄區域(Root Directory Region) 與資料區域(Data Region)。圖 4-2 為本系統 2GB SD 記憶卡的各個區域的起 始磁區位址與磁區容量配置。

File System Layout Physical Sector Number and Partition Table (65.5KB)

0 to 130

File Allocation Table Region 132 to 607 (132 ~ 369)

相關文件