ツリー/階層ファイルシステムとフラットファイルシステムの機能的な違いは何ですか?

ツリー/階層ファイルシステムとフラットファイルシステムの機能的な違いは何ですか?

私が考えることができる唯一の違いは審美的です。

たとえば、ファイルが多い場合は、ディレクトリを含むツリー型ファイルシステムだけでなくクリーンアップされないため、ユーザーが望むファイルを閲覧するのは困難です。

お持ちですか?機能の違い?

ツリーファイルシステムはサブディレクトリを作成できるシステムですが、フラットファイルシステムにはサブディレクトリがなく、すべてのファイルを含むフォルダしかありません。

答え1

ファイルシステム構造の比較

私たちは美的ではない違いを見つけるためにファイルシステム構造を比較したいと思います。

私達は比較する階層
ディレクトリツリー構造を有するファイルシステム、平らなサブディレクトリがない単一のディレクトリと同様に、すべてのファイルを1つの場所に含むファイルシステム。

2つの主な違いは、CPU時間とメモリ使用量です。
ここに関連付けることができるもう1つのタイプは実装の複雑さです。

ファイルアクセスパフォーマンス

これディレクトリ機能の一覧表示ディレクトリ内のファイル数によって異なります。
階層ファイルシステムでもファイルを削除するためにディレクトリにファイルを一覧表示することは、ファイルが多い場合に問題になる可能性があります。

これはすべて100個のディレクトリではなく、100個のディレクトリのそれぞれにある数十万個のファイルに関連しています。すべてのファイルをフラットファイルシステムに置いたり、1つのディレクトリの途中に置かないことをお勧めします。

問題は、ディレクトリリストがリスト全体を巡回することです。ディレクトリ内でツリーが使用されないためです。
ファイルを見つけるには、平均してファイル名の約半分を読む必要があります。

フラットファイルシステムに1,000,000個のファイルがある場合、これは500,000個の名前を読む必要があることを意味します。

ツリー構造では、ファイルをそれぞれ1000個のファイルを含む1000個のディレクトリに分割することで、2つのレベルのツリーを使用できます。名前を見つけるには、各レベルで平均500の名前、つまり合計1000の名前を読む必要があります。
100項目を含む3つのレベルを使用することもできます。平均して私達は150の名前を読まなければなりません。

この計算例によれば、ツリー構造はフラットファイルシステムよりはるかに速く、約2000倍高速です。

様々な用途

階層ファイルシステムのツリー部分は、特定の目的に使用することができる。別の目的、残りはこの目的には使用しませんが、たとえば次のようにすることが
できます。他のファイルシステム(フラットかどうか)は、階層ファイルシステムのサブディレクトリに配置されます。
フラットファイルシステムへのマウントは、階層ファイルシステムのルートにマウントするよりも意味がありません。

特権

ツリー構造のファイルシステムには、権限を割り当てることができるサブセクション(サブディレクトリ)があります。
フラットファイルシステムでは、他の人にファイル名の一部だけを表示させることはできません。
フラットファイルシステムでファイルサブセットに対する権限を一度に変更することはできません。各個別のファイル権限を変更する必要があり、権限が不明であり、変更中に数秒または数分かかることがあります。

小さくてシンプル

フラットファイルシステムは、リソースが制限された環境(組み込みシステム)に利点があります。
フラットファイルシステムの実装は非常に簡単です。処理するファイル数が少ないと、階層ファイルシステムよりも高速になる可能性があります。

ハードウェアデバイスは、一度に1000個以下の番号が付けられたファイルのリストを保存する必要があります。この作業では、より小さなプロセッサが許可されている場合は、フラットファイルシステムを使用してバッテリ寿命を延ばすことが合理的です。

フラットファイルシステムの単純さは、ファイルシステムの実装時にバグがないことを保証するのにも役立ちます。

関連情報