NTFS ファイル システムは基本的に b ツリーだと聞きました。本当?他のファイルシステムはどうですか? 彼らは何の木ですか?
また、FAT32 は FAT16 とどう違うのですか?
FAT ファイル システムはどのような種類のツリーを使用していますか?
NTFS ファイル システムは基本的に b ツリーだと聞きました。本当?他のファイルシステムはどうですか? 彼らは何の木ですか?
また、FAT32 は FAT16 とどう違うのですか?
FAT ファイル システムはどのような種類のツリーを使用していますか?
FAT (FAT12、FAT16、および FAT32) は、いかなる種類のツリーも使用しません。パーティション自体を記述するデータのブロックに加えて、2 つの興味深いデータ構造が使用されます。組み込みシステムで互換性のある実装を作成するために必要なレベルの完全な詳細は、Microsoftおよびサード パーティから入手できます。ウィキペディアには、別の出発点としてまともな記事があり、それには、それがどのようにして現在の形になったのかについての多くの歴史も含まれています.
元の質問はツリーの使用に関するものだったので、FAT ファイル システムで実際にどのような小さなデータ構造が存在するかを簡単にまとめます。正確な詳細と歴史については、上記の参考文献を参照してください。
各ディレクトリ内のファイルのセットは、最初はファイルが作成された順序で単純なリストに格納されます。削除はエントリを削除済みとしてマークすることによって行われるため、その後のファイル作成でそのスロットが再利用される可能性があります。リスト内の各エントリは固定サイズの構造体であり、従来の 8.3 ファイル名とフラグ ビット、サイズ、日付、開始クラスタ番号を保持するのに十分な大きさです。長いファイル名 (国際文字のサポートも含む) は、残りのすべてのファイル属性を保持する元の 8.3 スロットと並んで、追加のディレクトリ エントリ スロットを使用して長い名前を保持することによって行われます。
ディスク上の各ファイルは、一連のクラスターに格納されます。各クラスターは、固定数の隣接するディスク ブロックです。各ディレクトリ (ディスクのルート ディレクトリを除く) はファイルのようなもので、追加のクラスターを割り当てることで、必要に応じて拡張できます。
クラスターは、ファイル システムが共通名を取得する (誤った名前の) ファイル アロケーション テーブルによって管理されます。このテーブルは、ディスク パーティション内の各クラスターに 1 つずつ、スロットのパック配列です。FAT12 という名前は、各スロットが 12 ビット幅、FAT16 スロットが 16 ビット、FAT32 スロットが 32 ビットであることを意味します。スロットには、空のクラスター、最後のクラスター、不良クラスターのコード値、またはファイルの次のクラスターのクラスター番号が格納されます。このように、ファイルの実際のコンテンツは、チェーンと呼ばれるクラスターのリンクされたリストとして表されます。
ディスクが大きいほど、より広い FAT エントリやより大きなアロケーション ユニットが必要になります。FAT12 は基本的に、サイズが 1MB をはるかに超えることのないメディアに対して 4K クラスタの上限が理にかなっているフロッピー ディスクでのみ見られます。FAT16 と FAT32 はどちらも、サム ドライブとフラッシュ カードでよく見られます。そこでの FAT サイズの選択は、目的のアプリケーションに部分的に依存します。
特定のファイルのコンテンツへのアクセスは簡単です。そのディレクトリ エントリから、合計サイズ (バイト単位) と最初のクラスター番号がわかります。クラスタ番号から、最初の論理ディスク ブロックのアドレスをすぐに計算できます。クラスター番号でインデックス付けされた FAT から、そのファイルに割り当てられたチェーン内の割り当てられた各クラスターを見つけます。
新しいファイルの保存や既存のファイルの拡張に適した空き領域を見つけるのは簡単ではありません。FAT ファイル システムは、フリー クラスタをコード値でマークするだけです。空きクラスタを 1 つ以上見つけるには、FAT を検索する必要があります。
ディレクトリは順序付けされておらず、目的のファイルをディレクトリ内で線形時間検索する必要があるため、ファイルのディレクトリ エントリの検索も高速ではありません。長いファイル名を使用すると、ファイルごとに複数のディレクトリ エントリが占有されるため、検索時間が長くなることに注意してください。
FAT には、小さなマイクロプロセッサで実装できるほど簡単に実装できるという利点があり、小さな組み込みシステムと PC 間のデータ交換を費用対効果の高い方法で行うことができます。その結果、その癖と奇妙さは長い間私たちと共にあると思います.
これは、FAT16 と FAT32 の比較表です。
FAT16 および FAT32 という名前の数字は、ファイル アロケーション テーブル エントリに必要なビット数を表します。
FAT16 は、16 ビットのファイル アロケーション テーブル エントリ (2 16 アロケーション ユニット) を使用します。
Windows 2000 は、FAT32 ファイル アロケーション テーブル エントリの最初の 4 ビットを予約します。つまり、FAT32 には最大 2 28 アロケーション ユニットがあります。ただし、この数は、Windows 2000 フォーマット ユーティリティによって 32 GB に制限されています。
FAT32 は、32 ビットの数値を使用してクラスター番号を格納します。最大 4 GiB のサイズのより大きなディスクとファイルをサポートします。
私がトピックを理解している限り、FAT は、ディスク上のステータスに関するデータを格納するために使用されるファイル アロケーション テーブルを使用します。木を使っていないようです。私は間違っているかもしれません。