磁盤分區方式有多種,目前比較主流的是FATNTFS,本文記錄下FAT16的一些內容。ios
1、 磁盤的整體結構
物理:
一個機械硬盤由不少盤片組成,一個盤片有兩個面,對應兩個讀寫磁頭。磁頭以0、一、2... 編號。每一個盤片被劃分紅多個同心圓磁道,不一樣盤片上半徑相同的同心圓構成了一個柱面,從外至裏編號爲 0、一、2...
每一個磁道被劃分爲幾十個扇區(Sector),通常容量是 512byte(字節),扇區按照必定規則編號爲 一、二、3...
也就是說,一個硬盤是以扇區爲基本單位,有柱面數x磁頭數(盤面數)x每一個面上的扇區數 個扇區。spa
存儲:
從前到後,磁盤有如下部分:
1.MBR(master boot record)扇區
位於硬盤的第一個扇區,bios在執行本身固有的程序之後就會進入到mbr中的第一條指令,MBR分爲兩部分:引導代碼和DPT(硬盤分區表),最後以55AA結束。下圖爲一塊磁盤的MBR部分,其中選中部分爲DPT。在 DPT共64個字節中,以 16個字節爲分區表項單位描述一個分區的屬性。第一個分區表項描述一個分區的屬性,通常爲基本分區。第二個分區表項描述除基本分區外的其他
空間,通常而言,是擴展分區。操作系統
2.保留扇區,通常爲62個3d
3.第一個分區,一般爲活動分區blog
4.第二分區DPT、保留扇區ip
5.第二扇區
......it
2、FAT16分區原理
假設前面描述的磁盤第一分區方式爲FAT16,其結構從前到後以下:
1.DBR
2.FAT1
3.FAT2
4.根文件夾:32個扇區
5.其餘文件夾及文件,以簇爲單位從2開始編號
6.剩餘扇區io
1.DBR區(DOS BOOT RECORD)即操做系統引導記錄區
一般佔用512字節,由跳轉指令、廠商標誌、操做系統版本號、BPB(BIOS Parameter Block)、擴展BPB、os引導程序、結束標誌幾部分組成。下以下圖所示,前三個字節爲跳轉指令,以後8個字節爲廠商標誌和操做系統版本號,以後被選中的53個字節爲BPB,以後的代碼爲擴展BPB,引導程序代碼,結束標誌(55AA)。ast
BPB部分簡介
1)前兩個字節爲扇區字節數,圖中一個扇區爲512字節,爲02 00,可是採起小端存儲方式,因此圖中爲00 02。其餘合法值爲1024 、2048 、4096。
2)一個字節爲每一個簇的扇區數,圖中爲1.其餘合法值爲二、四、八、1六、3二、64 和 128。
3)兩個字節爲保留扇區數,圖中爲08 00
4)一個字節爲FAT數,圖爲02
5)兩個字節爲根目錄項數,圖爲00 02,表明有512項
6)兩個字節爲小扇區數,圖爲00 38
7)一個字節爲媒體描述符,圖爲F8,表示硬盤,0xF0表示高密度的3.5寸軟盤
8)兩個字節爲每一個FAT表的扇區數,圖爲38 00,表示一個FAT表有56個扇區
9)兩個字節表示每道扇區數,圖爲3F 00
10)兩個字節表示磁頭數,圖爲FF 00
11)四個字節表示隱藏扇區數,圖爲80 00 00 00
12)四個字節表示大扇區數,圖爲00 00 00 00,若是小扇區數字段的值不爲0,那麼本字段的值爲0
13)以後爲擴展BPB字段,在此不作展開。class
2.FAT表+目錄區存儲原理
FAT1和FAT2的內容相同,做爲備份,因此下文直接說FAT。
FAT是一個數據表,以 2 個字節爲單位,這個單位稱爲FAT記錄項,一般狀況其第一、2個記錄(前4個字節)用做介質描述。從第三個記錄項開始記錄除根目錄外的其餘文件及文件夾的簇鏈狀況。FAT表中兩字節的取值意義以下表所示:
目錄區中的記錄項以32字節爲單位,這32個字節的內容以下表所示,根據文件的首簇號去FAT表中尋找文件的下一個部分,以此類推,以鏈表的形式將文件不連續存儲。
參考資料:FAT文件系統原理