これは、一部は歴史的な理由によるものであり、一部はこの方法の方が理にかなっているためです。
Multics
Multicsは、ディレクトリを含むことができるディレクトリを備えた、今日知られている階層ファイルシステムを導入した最初のオペレーティングシステムです。RCデイリーとPGノイマンによる「セカンダリストレージ用の汎用ファイルシステム」を引用:
論文のセクション2は、ファイルの階層構造を示しており、システムの柔軟な使用を可能にします。この構造には、汎用性を保証するのに十分な機能が含まれています。(…)
理解を容易にするために、ファイル構造はファイルのツリーと考えることができますが、その一部はディレクトリです。つまり、1つの例外を除いて、各ファイル(たとえば、各ディレクトリ)は、正確に1つのディレクトリ内の1つのブランチによって直接指し示されます。例外は、ツリーのルートにあるルートディレクトリまたはルートです。どのディレクトリからも明示的にポイントされていませんが、ルートはファイルシステムに既知の架空のブランチによって暗黙的にポイントされています。(…)
ユーザーは常に、作業ディレクトリと呼ばれる1つのディレクトリで操作していると見なされます。彼は、エントリ名を指定するだけで、作業ディレクトリ内のエントリが効果的に指すファイルにアクセスできます。一度に複数のユーザーが同じ作業ディレクトリを使用できます。
他の多くの側面と同様に、Multicsは柔軟性を追求しました。ユーザーはファイルシステムのサブツリーで作業し、残りは無視できますが、ディレクトリを使用してファイルを整理することもできます。ディレクトリはアクセス制御にも使用されました。READ属性はユーザーがディレクトリ内のファイルを一覧表示することを許可し、EXECUTE属性はユーザーがそのディレクトリ内のファイルにアクセスすることを許可しました。
Multicsは、単一のストレージプールを持つという原則にも従いました。論文はこの側面については触れていません。単一のストレージプールは、当時のハードウェアとよく一致していました。リムーバブルストレージデバイスはなく、少なくともユーザーが気にかけるものはありませんでした。Multicsには個別のバックアップストレージプールがありましたが、これはユーザーには透過的でした。
Unix
UnixはMulticsから多くのインスピレーションを得ましたが、Multicsは柔軟性を目的としていたのに対して、シンプルさを目的としていました。
単一の階層ファイルシステムは、Unixに適していました。Multicsと同様に、ストレージプールは通常ユーザーには関係ありません。しかし、リムーバブルデバイスがあり、Unixはmount
and umount
コマンドを介してユーザーに公開しました(「スーパーユーザー」、つまり管理者に予約されています)。で、「UNIXタイムシェアリングシステム」、デニス・リッチーとケン・トンプソンについて説明します。
ファイルシステムのルートは常に同じデバイスに格納されますが、ファイルシステム階層全体がこのデバイスに存在する必要はありません。2つの引数を持つマウントシステムリクエストがあります。既存の通常ファイルの名前と、関連するストレージボリューム(ディスクパックなど)が独自のディレクトリ階層を含む独立したファイルシステムの構造を持つ特別なファイルの名前です。 。マウントの効果は、これまでの通常のファイルへの参照が、リムーバブルボリューム上のファイルシステムのルートディレクトリを参照するようにすることです。実際、mountは、階層ツリー(通常のファイル)の葉をまったく新しいサブツリー(リムーバブルボリュームに格納されている階層)に置き換えます。マウント後、リムーバブルボリューム上のファイルと永続的なファイルシステム内のファイルは実質的に区別されません。たとえば、インストールでは、ルートディレクトリはディスクドライブの1つの小さなパーティションにあり、ユーザーのファイルを含む他のドライブはシステム初期化シーケンスによってマウントされます。マウント可能なファイルシステムは、対応する特殊ファイルに書き込むことで生成されます。ユーティリティプログラムを使用して空のファイルシステムを作成するか、既存のファイルシステムを単純にコピーすることができます。
階層ファイルシステムには、複数のストレージデバイスの管理の複雑さをカーネルに集中させるという利点もあります。つまり、カーネルはより複雑でしたが、結果としてすべてのアプリケーションがよりシンプルになりました。カーネルはハードウェアデバイスを気にしなければならないが、ほとんどのアプリケーションは気にしないので、これはより自然な設計です。
窓
Windowsの祖先は、元々VAXミニコンピューター用に設計されたオペレーティングシステムであるVMSと、初期のIntelマイコン用に設計されたオペレーティングシステムであるCP / Mの 2つの系譜に遡ります。
VMSには、分散階層ファイルシステムFiles-11がありました。Files-11では、ファイルへのフルパスには、ノード名、そのノードのアカウント指定、デバイス名、ディレクトリツリーパス、ファイル名、ファイルタイプ、バージョン番号が含まれます。VMSには強力な論理名機能があり、特定のディレクトリへのショートカットを定義できるため、ユーザーはディレクトリの「実際の」場所を気にする必要はほとんどありません。
CP / Mは、64kBのRAMとフロッピードライブを備えたコンピューター向けに設計されたため、単純化されました。ディレクトリはありませんでしたが、ファイル参照にはドライブ表示(A:
またはB:
)を含めることができます。
MS-DOS 2.0がディレクトリを導入したとき、それはCP / Mに続くMS-DOS 1と互換性のある構文で導入しました。そのため、パスは1文字の名前のドライブに根ざしていました。(また、/
VMSおよびCP / Mではコマンドラインオプションを開始するためにスラッシュ文字が使用されていたため、ディレクトリ区切り文字として別の文字を使用する必要がありました。 )。
WindowsはDOSおよびVMSアプローチとの互換性を保持しているため、関連性が低くなってもドライブ文字の概念を保持していました。現在、Windowsは内部的にUNCパスを使用しています(元々、OS / 2用にMicrosoftとIBMが開発した、関連する祖先のもの)。これはパワーユーザー向けに予約されていますが(おそらく歴史の重みによる)、Windowsでは再解析ポイントを介したマウントが可能です。