FAT関連メモ

  • FSINFO

 FAT32 で導入された、空き領域計算高速化の為の情報領域。
 通常、ブートセクタの次のセクタに配置される模様。
 1セクタ分確保されているが、有効データは8バイト分。
 なんとも贅沢と言うか、勿体無い気もするわけだけど、こんなもんか?

  • バックアップブートセクタ

 FAT32 で導入された、ブートセクタのバックアップ領域。
 通常、ブートセクタを含む6セクタ分が、続けて書き込まれている模様。
 都合12セクタ分が、システム領域として使用されているようだが、
 一般的には、32セクタ分がシステム領域として予約されている模様。
 この32セクタ分の出所は、今のところ不明。

  • FATのセクタ数

 FAT12,16では2バイト分(16bit)、FAT32では4バイト分(32bit)。
 


う〜ん。
頭、こんがらがるなぁ〜。
以下、頭の中を、ダラダラと...


セクタは一般的に512バイトなので、FAT12だと341.333...エントリ?
そう言えば、FAT12を扱っている時には、あまり疑問に思わなかったけど、
FAT12で、セクタを跨ぐ、半端なエントリは、どう処理しているんだろう?
素直に考えれば、連続的に扱っているだろうから、
そうか... FAT領域をセクタ単位で処理しようとする方が間違いなのかなぁ...
FAT領域は、基本的に、全部メモリに読み込んで処理するのかな?
FDの場合だと、9セクタ分、8.5KiBの領域が必要...
512 * 9 / 1.5 = 3072
512 * 8 / 1.5 = 2730
1.44 FD の全セクタ数は、2880だから、9セクタ必要になると。
FAT16の場合は、1セクタで、256エントリって事になるな。
でも、16bitでクラスタを管理するわけだから、最大は、0xFFFF。
って事は、FAT領域としては、最大でも、0x10000/0x100 = 0x100。
256セクタ分、128KiBってところか...
1セクタ=1クラスタとして、FAT16での最大容量は、0x10000 * 512 = 32Mi。
128セクタ(最大)=1クラスタとしたら、0x10000 * 64Ki = 4Gi。
最大クラスタは64セクタのようなので、0x10000 * 32Ki = 2Gi。
ふむ。
で、FAT32の場合は、これが、1セクタで128エントリになるわけで、
クラスタ管理は、32bit(利用されるのは、28bit?)、最大で0xFFFFFFF。
同じように、FAT領域の最大は、0x10000000/0x80 = 0x200000。
2097152セクタ分、1Gi!!
更に、1セクタ=1クラスタとして、最大容量は、0x10000000 * 512 = 128Gi。
最低でも、8セクタ=1クラスタ???
あぁ、ダメだ。
もうちょっと整理しないと〜!!