UNIXはディレクトリを検索するためにバイナリ検索を使用しますか?

UNIXはディレクトリを検索するためにバイナリ検索を使用しますか?

私は現在W. Richard Stevensが書いた「Advanced UNIXプログラミング」という本を読んでいます。ディレクトリを入力すると、システムは入力された名前の番号を検索します。

私は中だと思った。彼らはこの番号をどのように確認しますか?保存されたファイルは、バイナリ検索で検索できるように名前でソートされていますか?それとも、リストの最後に新しいファイルを追加しますか?

ベストアンサー1

さまざまなファイルシステム形式、さまざまなシナリオでのパフォーマンス(大きなディレクトリと小さなディレクトリ、読み取りと書き込み、同時アクセスなど)、設計の単純さ(エラーの可能性、開発努力など)、ディスクのオーバーヘッドが異なります。ファイルコンテンツ以外の項目に対する(スペース)などの間でトレードオフが行われます。

古いファイルシステム(例:UFS、FFS外部2、元外部3、...)はディレクトリをエントリの配列(各エントリにはファイル名、inode番号、およびいくつかの追加のメタデータを含む)として保存し、線形検索を実行することを好みます。新しいファイルは、配列の最初の空き項目に追加されます。空き項目がない場合、配列は最初に展開されます。これにより、大規模ディレクトリのパフォーマンスが低下する可能性があります。

最新のファイルシステム(例:外部3オプションとしてdir_index外部4ジブスBTFSレイセルフス高周波FS高周波FS+,...) ログ時間照会、ある種のバランス検索ツリー、ハッシュテーブル、またはその両方の組み合わせ(ハッシュバランス検索ツリー)を使用して、ディレクトリをデータ構造として保存する傾向があります。Bツリー。これはファイルシステムコードをより複雑にしますが、大きなディレクトリで良いパフォーマンスを維持します。

おすすめ記事