在主引導區后面就是FAT表。從上面可以得知一個FAT表是229個扇區。它里邊的內容很簡單,里邊的內容就是指出下一個簇在哪里。你的盤有多少個簇,那么它的FAT表就要有多少個項來描述它們。因為FAT16是用2個字節(16位)來描述一個簇的,所以這時FAT表的大小就應該是2位的簇數個字節。FAT表中,第4,5個簇表示第2個簇,第6,7個字節表示第3個簇,第8,9字節表示第4個簇……。就這樣,每一個簇都有兩個和它對應的字節。這兩個字節里面存放的數據就是下一個64K數據所在的簇號。2個字節最大能表示65535,一個簇最大為64K,所以FAT16最多能給65535*64K≈4G。這就是為什么大小為4G的FAT16格式SD卡簇大小必須為64K大小原因。實際上,並不是所有的數值都代表簇號,有幾個值被賦於了特定的含義, 我們先看看這幾個特殊值代表的含義。
FAT16和FAT32每個文件名都占32個字節,這里放的是短文件名,也就是“8.3”格式的。
但FAT16的根目錄區只有32個扇區,計算一下,每個扇區512字節,共32個扇區,而每個文件要占用32個字節,很顯然,根目錄只能放512個文件了。因此,FAT16的根目錄下只能放512個文件(及文件夾)就是這個原因。 先看前32字節,它的內容是這樣的
(可見fat也有inode的概念,但是它把inode直接放在dentry里了,沒有ext那么繞.但ext那樣的搜索效率肯定更高,有時候你做pathwalk,像/home/test/test.c,假如home下有很多文件,而你只想快速的找到test,那么按ext的dentry設計,目錄項更精簡,排布更密集,一個扇區里能放的entry更多,搜索肯定快的多)
以上摘選自FAT16文件系統結構簡述
另外這篇文章很好 https://blog.csdn.net/yanghao58686763/article/details/1921025?utm_source=blogxgwz5
fat表是fat文件系統的核心,基本上這個文件系統有多少個簇(相當於ext2的block概念)用來裝文件(目錄也算文件),fat表里就有多少個項,這個項的內容就是指向下一個項.
相當於一個數組鏈表.