FAT32文件系統的存儲組織結構(二) 分類: VC++ 2014-08-27 09:15 467人閱讀 評論(0) 收藏


  前面已經基於一個格式化的空U盤分析了一下FAT32文件系統存儲的組織結構,下面我們從文件操作的角度來分析一下文件系統的運作機制。由於換了個U盤,所以仍然貼出剛格式化的空U盤的幾個重要的數據區如下:

DBR FDT_DN

根目錄_DN

我們可以看出,在分區格式化的時候,系統將卷標TEST_FAT32存儲在2號簇,即跟目錄區,如上面根目錄貼圖所示。同時,在FDT區2號簇標記位置寫入了文件結束符FF FF FF 0F。顯然,FAT32文件系統將目錄當做普通文件來處理的。

下面我們在根目錄下新建一個文件夾TEST1,看會有什么變化:

建立了TEST1文件夾后,FDT變成如下:

FDT_TEST1

根目錄變成如下:

根目錄2

重新分配了3號簇:

3號簇_NEW

從上面的變化可以直觀的看出,系統在新建文件夾時完成了如下動作:

     a.在父目錄所在簇上建立新的目錄項,存儲當前所建文件夾信息。

     b.分配一個新簇,給新建的文件夾建立兩個目錄項:父目錄和當前目錄。

     c.在FDT表中新分配的簇對應的位置上寫下文件結束符。

     d.建立各部分的鏈路關系:新建文件夾所對應的目錄項的文件起始簇號字段寫上新分配簇的簇號,新簇上的兩個目錄項的文件起始簇號字段分配寫上父目錄所在簇號(此處是0,本來我以為是2,即根目錄所在簇,不知道為什么,可能特地用0指示根目錄吧)和當前簇號(此處是3)。

為了驗證我們上面分析的正確性,我們再在TEST1文件夾下建立新文件夾TEST11,看是否做了如下操作:

      a.在父目錄(即TEST1)所在簇(即3號簇)上建立新的目錄項,存儲TEST11文件夾信息。

     b.分配一個新簇(應該是4號簇),給新建的文件夾(即TEST11)建立兩個目錄項:父目錄和當前目錄。

     c.在FDT表中新分配的簇(應該是4號簇)對應的位置上寫下文件結束符。

     d.建立各部分的鏈路關系:新建文件夾(即TEST11)所對應的目錄項的文件起始簇號字段寫上新分配簇的簇號(應該是4號簇),,新簇上的兩個目錄項的文件起始簇號字段分配寫上父目錄所在簇號(3號簇)和當前簇號(應該是4號簇)。

新建TEST11文件夾后FDT變成:

FDT_TEST11

根目錄沒有變化:

根目錄2

3號簇變成:

3號簇

新分配4號簇:

4號簇

顯然我們的估計沒有錯的,也進一步證明我們前面的分析是正確的。

下面我們再分析建立文件的情況

我們先建立一個100字節的文件TEST.TXT,然后把這個文件拷貝到U盤的根目錄下,FDT變成如下:

FDT

根目錄變成:

根目錄

新分配5號簇保存文件內容:

5號簇

從上面的變化可以直觀的看出,系統新建文件和新建文件夾所完成的操作是一樣一樣的:

     a.在父目錄所在簇上建立新的目錄項,存儲當前所建文件信息。

     b.分配一個新簇,存儲新建的文件的內容。

     c.在FDT表中新分配的簇對應的位置上寫下文件結束符。

     d.建立鏈路關系:新建文件所對應的目錄項的文件起始簇號字段寫上新分配簇的簇號。

結束總結:

      1.在FAT32文件系統中,目錄和文件的存儲采用統一的方式。

      2.文件系統的操作的單位是簇,每新建立一個文件或文件夾,至少會重新分配一個簇號。

      3.如果一個文件或目錄的內容要多個簇才能存儲得下,則系統會分配多個簇來存儲文件或目錄的內容

      4.當需要多個簇時,這些簇可能連續也可能不連續,但無論是連續或是不連續,系統都是采用FDT鏈表的形式來組織的。

版權聲明:本文為博主原創文章,未經博主允許不得轉載。


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
  © 2014-2022 ITdaan.com 联系我们: