ファイルシステム初心者

ファイルシステム初心者

各ファイル システムのファイル サイズとアドレス可能なメモリの合計に制限がある理由がわかりません。たとえば、FAT32 の最大ファイル サイズが 4GB なのはなぜでしょうか。

答え1

基本的に、そのほとんどは、4GB のファイルが知られておらず、2TB のパーティションが信じられないほど大きい時代に設計された古い標準 (特に FAT16/32) に帰着します。当時としては完全に合理的な標準のトレードオフが行われました。

調べてみると、当時のコンピュータの使用が制限されていたため、古いファイルシステムは非常に制限されていました。現在では、非常に大きなパーティションを作成できるため、今後 20 ~ 30 年は対応するデバイスが入手できない可能性があります。

答え2

ここではプログラミング理論と OS 設計の大部分を省略します。そうしないと、何日もかかってしまいます。

簡単に言えば、それらが書かれた時点で、実装において、具体的にはファイルのアドレス指定とアクセス方法に関して、特定の仮定と決定が行われたためです。

コンピュータ用語では、あらゆるものには必ず最大値があり、無限は存在しません。

さらに重要なのは、すべてのディレクトリ エントリが、所有権、特別な属性と権限、ファイルの種類 (ディレクトリ、シンボリック リンク、ハード リンク、通常のファイル、パイプ、ブロック デバイス、キャラクタ デバイスなど) など、自身を識別するための一意の方法を持つ必要があることです。ほとんどの UNIX ファイルシステムでは、これは「inode番号' であり、それぞれが一意である必要があるため、異なる番号の可能な数よりも多くのファイルを持つことはできません。

他の問題は最適化の問題です(またはそうでした)。ファイルシステムの操作はシステムが行うものなのでとても多くの場合、設計者は当然、合理的と思われる最小サイズの数値範囲を選択する傾向があります。これは、コンピューターは (ビット長の観点から) 小さい数値のほうが大きい数値よりもはるかに高速に計算できるためです... また、市場で見られる最大のハード ドライブが 1 ギガバイトまたは 2 ギガバイトである場合、65,000 個のファイルと最大ファイル システム サイズが 2 テラバイトというのは、かなり先進的であると考える傾向があるかもしれません。

それから時が経ち、10 年も経たないうちにカーネル プログラマーが、あなたのファイルシステム コードにリバース エンジニアリングでより優れた容量を組み込もうとして、あなたの名前と先見の明のなさを呪うことになります。

関連情報