私は現在、W。リチャードスティーブンスの「AdvanceUNIX Programming」という本を読んでいます。そこで、UNIX上のすべてのファイルに番号があり、ファイル名はユーザーの便宜のために作成されていることを読みました。ディレクトリが入力されると、システムは入力された名前の番号を検索します。
どうやって番号を探すのかと思いました。ファイルは、バイナリ検索で見つけることができるように、名前で並べ替えて保存されていますか?それとも、リストの最後に新しいファイルを追加するだけですか?
多くの異なるファイルシステム形式があり、さまざまなシナリオ(大きなディレクトリと小さなディレクトリ、読み取りと書き込み、同時アクセスなど)でのパフォーマンス、設計の単純さ(バグの可能性、開発作業など)、ディスクオーバーヘッド(スペース)の間でさまざまな妥協点があります。ファイルの内容以外に使用されます)など。
古いファイルシステム(UFS、FFS、ext2、元のext3など)は、ディレクトリをエントリの配列として格納し(各エントリにはファイル名、iノード番号、場合によっては追加のメタデータが含まれます)、線形検索を実行する傾向があります。新しいファイルは、配列の最初の空きエントリに追加されます。空きエントリがない場合、配列は最初に拡大されます。これにより、大きなディレクトリではパフォーマンスが低下します。
新しいファイルシステム(たとえば、オプション付きのext3dir_index
、ext4、zfs、btrfs、reiserfs、HFS、HFS +、…)は、対数時間ルックアップ、ある種の平衡検索ツリー、ハッシュテーブル、またはそれらの組み合わせを使用して、ディレクトリをデータ構造として格納する傾向があります。 2つのうち(ハッシュのバランスの取れた検索ツリー)—通常はBツリーのいくつかのバリアント。これにより、ファイルシステムコードはより複雑になりますが、大きなディレクトリでも良好なパフォーマンスが維持されます。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加