Linuxのファイルシステムが単一のディレクトリツリーとして設計されているのはなぜですか?


91

Linuxが単一のディレクトリツリーとして設計されている理由を説明できますか?

WindowsではC:\、やなどの複数のドライブを使用できますが、D:\Unixには単一のルートがあります。そこに具体的な理由はありますか?


14
@terdon-彼は単一のルートディレクトリ(/)とDOSスタイル(C:\ D:\)の両方について質問していると思います。
ヨルダン

27
Linuxでも複数のドライブを使用できます(通常はそうします)。実際、基本的な原則は同じでC:ありD:、Windowsのマウントポイントでもあります。Windowsに相当するの/My Computer、すべてがその下にマウントされることです。
テルドン

61
より関連性のある質問は、「なぜオペレーティングシステムに単一のルートがないのだろう」と思いますか?(DOS / Windowsの答えは、設計エラー/将来の計画の失敗/不必要な仮定です)
-JoelFan

21
Windowsはその前のMS-DOSのためにその奇妙なシステムを選択し、MS-DOSはCP / Mによって設定された初期の先例に従いました。MS-DOSはフロッピードライブベースのシステムでした(A:とB:最初は、たとえば単一のドライブシステムで、A:とB:は同じドライブですが、スワップ/コピー操作のために2つの異なる論理ディスクでした) 。MS-DOS PCで損傷を受けたほとんどの人と同様に、OPは/Linux上ではMSDOS / Windows上のC:と同じであると考えていますが、実際には同じではありません。
ウォーレンP

25
実際には、C:D:とスタッフはDOSとWin32とだけ互換性です。Windows NTには内部的にややUNIXに似たオブジェクト階層があり、ドライブ文字(および一般的にはWin32のもの)は単なる「実際の」オブジェクトへのシンボリックリンクです(c:\file.txt実際\??\c:\file.txtには\??\c:、へのシンボリックリンク\device\harddisk0\partition1です)。例はこちら
Matteo Italia

回答:


192

UnixファイルシステムはWindowsよりも何年も前に作成されているため、「Windowsがデバイスごとに個別の指定子を使用する理由は何ですか?」という質問に言い換えることができます。

階層ファイルシステムには、任意のファイルまたはディレクトリをルートディレクトリの子として見つけることができるという利点があります。データを新しいデバイスまたはネットワークデバイスに移動する必要がある場合、ファイルシステム内の場所は同じままである可​​能性があり、アプリケーションは違いを認識しません。

OSが静的で、I / O要件が高いアプリケーションがあるシステムがあるとします。/ usrを読み取り専用でマウントし、/ opt(アプリがそこにある場合)をSSDドライブに配置できます。ファイルシステムの階層は変わりません。Windowsでは、特にC:\ Program Files \の下に住むことを要求するアプリケーションでは、これははるかに困難です。


27
そして、その(修辞的な)質問には答えがあります:伝統。Unixとは異なる伝統が生まれました。WindowsはこれをDOSから取得し、DOSはCP / M-80から取得します。CP/ M-80は、多くのミニコンピューターおよびメインフレームオペレーティングシステムの一般的なパターンに従っています。ドライブ名は、ちょうどから短縮してしまっDISK0:たりSY:しますA:
RBerteig

6
@RBerteig-多分、特にWindowsの場合の伝統かもしれませんが、Rob Pikeは、The Hideous Name(pdos.csail.mit.edu/~rsc/pike85hideous.pdf
Bruce Ediger

13
Windows NT以降、Windowsの特定の仮想パスにデバイスをマウントしてUnixとまったく同じことを実現することが可能でしたが、ホームPC(サーバーやビジネス展開ではやや一般的)では珍しいことです。必要に応じて、これをUnix Way(tm)の正当性と見なすこともできます。
JSBձոգչ13年

8
@BruceEdiger DOSが正しいと主張するつもりはありません。なぜWindowsがそうであるのかという背景があり、それがMSが帽子から引き出したものではないことを指摘するだけです。
RBerteig

1
@BruceEdiger:わあ。素敵な紙。それは、パイクが何かについて間違いなく間違っているのを見た数少ない機会の1つです。(つまり、ARPANETネームサービングシステムは拡張できません。最近ではDNSと呼んでおり、非常にうまく拡張されています。権限と委任を備えた絶対階層空間のコア概念は完全に変更されていません。)確かに、これはメールに関連する非IPネットワークが消滅したためです。
ケビンキャスカート

87

これは、一部は歴史的な理由によるものであり、一部はこの方法の方が理にかなっているためです。

Multics

Multicsは、ディレクトリを含むことができるディレクトリを備えた、今日知られている階層ファイルシステムを導入した最初のオペレーティングシステムです。RCデイリーとPGノイマンによる「セカンダリストレージ用の汎用ファイルシステム」を引用:

論文のセクション2は、ファイルの階層構造を示しており、システムの柔軟な使用を可能にします。この構造には、汎用性を保証するのに十分な機能が含まれています。(…)

理解を容易にするために、ファイル構造はファイルのツリーと考えることができますが、その一部はディレクトリです。つまり、1つの例外を除いて、各ファイル(たとえば、各ディレクトリ)は、正確に1つのディレクトリ内の1つのブランチによって直接指し示されます。例外は、ツリーのルートにあるルートディレクトリまたはルートです。どのディレクトリからも明示的にポイントされていませんが、ルートはファイルシステムに既知の架空のブランチによって暗黙的にポイントされています。(…)

ユーザーは常に、作業ディレクトリと呼ばれる1つのディレクトリで操作していると見なされます。彼は、エントリ名を指定するだけで、作業ディレクトリ内のエントリが効果的に指すファイルにアクセスできます。一度に複数のユーザーが同じ作業ディレクトリを使用できます。

他の多くの側面と同様に、Multicsは柔軟性を追求しました。ユーザーはファイルシステムのサブツリーで作業し、残りは無視できますが、ディレクトリを使用してファイルを整理することもできます。ディレクトリはアクセス制御にも使用されました。READ属性はユーザーがディレクトリ内のファイルを一覧表示することを許可し、EXECUTE属性はユーザーがそのディレクトリ内のファイルにアクセスすることを許可しました。

Multicsは、単一のストレージプールを持つという原則にも従いました。論文はこの側面については触れていません。単一のストレージプールは、当時のハードウェアとよく一致していました。リムーバブルストレージデバイスはなく、少なくともユーザーが気にかけるものはありませんでした。Multicsには個別のバックアップストレージプールがありましたが、これはユーザーには透過的でした。

Unix

UnixはMulticsから多くのインスピレーションを得ましたが、Multicsは柔軟性を目的としていたのに対して、シンプルさを目的としていました。

単一の階層ファイルシステムは、Unixに適していました。Multicsと同様に、ストレージプールは通常ユーザーには関係ありません。しかし、リムーバブルデバイスがあり、Unixはmountand 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では再解析ポイントを介したマウントが可能です。


3
:それはデフォルトの動作ではありませんが、NTFSファイルシステムを使用してWindowsにも、単一のルートの下に、すべてのストレージをマウントすることができますtechnet.microsoft.com/en-us/library/cc753321.aspx howtogeek.com/98195/... serverfault.com/questions / 24400 /…
ゲルロス

3
関連する部分は、MS-DOS 1.0がフロッピーベースだったようです。このようなシステムでは、(a)は、あなたのファイルが上にあった、と(b)は、物理ディスクを知ることが重要だったA:B:あなたがそれらのうちの2つを持っていた場合、あなたのフロッピードライブを区別するためのまともな大会でした。ハードドライブのサポートがMS-DOS 2.0で追加されたときC:、HDを1つの大きなフロッピーとして扱うことにより、ドライブの指定により下位互換性が許可されました。
user1024

5
実際、当初CP / Mは64 KBではなく16 KBのRAMで実行するように設計されていました。64 KBの数値は、おそらくアプリケーションにある程度の余裕を持たせるためです。コマンドプロセッサ(CCP)は上書きされ、必要に応じて再読み込みされましたが、BIOSとBDOSは常にメモリ常駐でした。そう、そこからBIOSが生まれました-IBMはこの用語を思いつきませんでした!ウィキペディアCP / M:ハードウェアモデルオペレーティングシステムのコンポーネントを参照してください。16 KBは、密に書き込まれたページが約3つしかないことに注意してください(70行×80文字/行×3ページ= 16800バイト)。
CVn

36

単一のディレクトリツリーを持つことの背後にセキュリティ上の懸念はありません。

Unixを設計した人たちは、特定のリソースがどの物理デバイスに含まれているかをユーザーが知る必要があるオペレーティングシステムの経験が豊富でした。オペレーティングシステムの目的の一部は、実際のハードウェア上に抽象マシンを作成することであるため、物理的な場所によるリソースのアドレス指定をはるかに簡単にすることを考え、すべてを単一の名前ツリーに入れることにしました。

これはUnixデザインの背後にある天才の一部にすぎません。


28

ここでは、最新のWindowsに保持されるMS-DOSからのドライブ文字名が赤いニシンであることに注意してください。ドライブ文字名は、複数のルートを持つファイルシステム構造の最適な表現ではありません。それらは、そのようなシステムのストローマン実装です。

複数のルートをサポートする適切に実装されたファイルシステムは、ボリュームのような任意の命名を許可しdvdrom:/path/to/file.aviます。このようなシステムは、Windowsを悩ます笑いやすいユーザーインターフェイスの問題を取り除きます。たとえば、カメラなどのデバイスを接続すると、WindowsエクスプローラーのUIにより、Camera(または何でも)というデバイスがあり、のようなパスがあると思われますComputer\Camera\DCIM\...。ただし、このパスのテキストバージョンをエクスプローラーから切り取って貼り付けると、パス名コンポーネントの一部がユーザーインターフェイスのフィクションであり、基礎となるOSに認識されないため、実際には機能しません。複数のルートを持つ適切に実装されたシステムでは、問題ありません。camera:\DCIM\...システム内のすべてのレベルで均一に認識されるパス。さらに、古いPCから古いハードドライブに移植した場合、のようなドライブ文字の名前に固執することはありませんがF:、のように好きな名前を付けることができますold-disk:

したがって、Unixがファイルシステム構造に複数のルートを持っている場合、MS-DOSやWindowsで1文字のドライブ名を使用するのではなく、このように正しく実行されます。言い換えれば、Unixスキームと優れたマルチルート設計のみを比較してみましょう。

それでは、なぜUnixには正気なマルチルート実装がなく、正気なワンルート実装が有利なのでしょうか?それはおそらく単純化のためです。マウントポイントは、名前を介してボリュームにアクセスできるすべての機能を提供します。追加のプレフィックス構文を使用して名前空間を拡張する必要はありません。

数学的に言えば、ルートノードを追加し、切り離された部分を子にすることで、切り離されたツリーグラフ(「フォレスト」)を結合できます。

さらに、ボリュームがルートレベルにある必要がない方が柔軟性があります。ボリュームを示す特別な構文がないため(単なるパスコンポーネントです)、マウントポイントはどこにでも配置できます。あなたがあなたのマシンに3枚の古いディスクを持ってくるかのように、あなたはそれらを持つことができ/old-disk/one/old-disk/twoあなたが欲しいしかしあなたは、あなたがファイルやディレクトリを整理する方法を、ディスクを整理することができますなど、。

パスに依存するアプリケーションを作成でき、ストレージデバイスの再構成時にパスの有効性を維持できます。例えば、アプリケーションのようなよく知られたパスを使用することができる/var/logとします/var/lib。これは、かどうかはあなた次第です/var/logし、/var/lib同じディスクボリューム上または別のものです。パスを維持したまま、システムを新しいストレージトポロジに移行できます。

マウントポイントは良いアイデアです。これが、Windows 2000前後からWindowsにマウントポイントがある理由です。

ボリュームマウントポイントは、デバイスがコンピューターに追加またはコンピューターから削除されるときに発生するシステムの変更に対して堅牢です。 Microsoft Technet


6
おそらく偶然に、あなたの「良いマルチルート設計」は古いAmigaDOSシステムによく似ており、別のボリューム内の特定のディレクトリを参照する「割り当てられた」ボリュームを含む任意のボリューム名を許可します。(適切なソフトウェアを使用して)たとえば、FTP:などのパスでFTPサーバー上のファイルにアクセスできるボリュームなどの「仮想」ボリュームを持つこともできますFTP:hostname/path/to/file
イルマリカロネン

3
これは非常に主観的なように思われるため、これは本当に良い答えではありません。そのかなりあからさまなWindowsバッシング。
リグ

3
@Rigそれは本当かもしれませんが、WindowsはMS-DOSにまでさかのぼるこれらのドライブ文字名をまだ持っているために徹底的なバッシングに値します。これは、ほとんどのユーザーが使い慣れているマルチルートファイルシステムですが、シングルルートとの比較の目的で実際に使用することはできません。
カズ

3
@Kazまだこの答えは大げさだと思う。Windowsはファイルシステムを異ならせますが、間違ったり、ひどい、または人道に対する罪を犯すことはありません。資格があるので、あなたはそれを好きではありません。マイクロソフトはこのスキームを思い付くことさえしませんでした、彼らはその日のポピュラーなシステムからそれを借りました、しかし、彼らはレガシーコードで合理的な保守性のためにそれを維持しなければなりません。
リグ

1
@Rig Sure; たとえば、火打ち石の矢を使って次の夕食をとるよりもひどいことではありません。フリントアローヘッドは、実際には全盛期の最先端でした。ああ、しかし、おっと、DOSとドライブ文字について、実際に言うことはできません。
カズ

13

* nixとWindowsの両方がドライブをマウントします。Windowsでは、これらはマウントポイントに自動的にマウントされます。デフォルトでは、アルファベット順に昇順です。これらのデフォルトは次のとおりです。

  • A:およびB:=>フロッピー
  • C: =>最初のハードドライブの最初のパーティション
  • D: =>他のパーティションが存在しない場合は、次のパーティションまたは次のハードドライブまたはCD / DVDドライブ。

これらのマウントポイントはそれぞれディレクトリです。

* nixでは、マウントポイントはユーザーが決定します。たとえば、1つのパーティションがとしてマウントされ/、別のパーティションがとしてマウントされてい/homeます。だから、/home別のドライブです、それはE:Windows で言うのと同等です。

Windowsと* nixの両方の場合、マウントポイントは個別のディレクトリです。唯一の違いは、* nixの中で、これらの別々のディレクトリがのサブディレクトリであるということです/が、C:Windowsでいる間、すべてのポイントが直下に搭載されているマウント/の下、My Computerのは言わせて。

ユーザーの観点からの主な利点は、マウントが完全に透明であることです。ディレクトリ/homeが実際に別のパーティションにあることを知る必要はありません。通常のディレクトリとして使用できます。代わりに、DOSでは、マウントポイントの名前で明示的に呼び出す必要があります。E:\home

外付けドライブは、両方のシステムでほぼ同じ方法でマウントされます。D:Windowsと/mnt/cdromLinuxの場合を言います。これらはそれぞれディレクトリであり、実際には違いは見当たりません。WindowsでCDROMをドライブに挿入すると、ディスクはD:Linux と同じようにマウントされます。


3
好奇心から、誰かがWindowsで27台のドライブを作成したい場合はどうなるか知っていますか?Windowsは27番目のドライブを何と呼びますか?:D
ジョセフR.

2
ははは。Windowsはそれを行うにはあまりにも鈍いようです。
ジョセフR.

3
軽微な選択:Windowsのドライブ文字はデフォルトでアルファベットの昇順ですが、名前を変更することができます。
RBerteig

3
@terdon:彼はドライブをディレクトリ内にマウントするだけです-POSIX OSで行うのとまったく同じです。
マッテオイタリア

3
@JosephR:ある時点で、いつかはわかりませんが、おそらくNT- WindowsはUnixのようにディレクトリにドライブをマウントできるようになりました。デフォルトでは、実際にこれを行う人はいません(驚いたことですが、nuke-and-paveの再インストールの頻度で、別のボリュームに/ homeを置くことに似たものが今では普及していると思います)。ただし、ドライブ文字/数字/記号が不足している場合、これはシステムにドライブを追加する場合に行う必要のあることです。
スプーニエスト

10

上記の回答、特にDoug O'Nealの回答には同意しますが、MS-DOS「C:」や「A:」などの明示的なデバイスマウントポイントのように、それらはすべて少し見落としていると思います。

Rob Pikeは名前の構文についてThe Hideous Nameを書きましたが、Russ Coxはそれを要約しました

名前空間...は、新しい構文を追加せずに新しいセマンティクスを追加できる場合に最も強力です。

デバイスを任意にマウントできる単一の名前空間により、非常に柔軟な操作が可能になります。私は定期的に使用/mnt/sdb1/mnt/cdrom、現在使用されていないディスクまたはCDを一時的にファイルシステム全体に配置します。NFSサーバー上にホームディレクトリを置くことはまったく珍しいことではないので、どのマシンにログインしても、$HOMEどこでも同じようになります。

結論は次のとおりです。特別なものに特別な構文を使用すると、できることには明確な制限が課せられます。未使用のディスク、CD、DVD、またはネットワークファイルシステム/「共有」を「E:」または「W:」などにしかマウントできない場合、柔軟性が大幅に低下します。


1
シンボリックリンクは本当に必要ありません。/ usr / localなどの任意のパスにパーティション(またはネットワークストレージなど)を直接マウントできますが、/ usr / localがネットワークマウントを指しているネットワークを見つけると、いつも困惑します。はい、存在します。その理由はいくつかあります。/usr/localは、管理者がOSディストリビューターからのものではないものを置くための標準的な場所の1つです。
クリストファー・クロイツィヒ

@Christopher Creutzig-同意しましたが、私の例にはシンボリックリンクは必要ありません。柔軟な命名スキーマがどのように機能するかを示す別の例を紹介したいだけです。それはおそらく最良の例ではありません。
ブルースエディガー

ところで、愚かなウェブを見てください。 proto://specifichost.domain.tld/topleveldir/middle/specificdoc.html
カズ

2
@Christopher Creutzig-いくつかの場所で/ usr / localをネットワークドライブとして設定しました。「ローカル」とは、マシンではなくサイトのローカルを意味します。
-doneal24

3
@Kaz、proto://ビジネスは実用的な必要性だと思います。すべてのソフトウェアが、そこにあるすべてのURIスキームについて知ることを期待することはできません。したがって、スキームIDが終了し、URIの残りの部分がいつ開始するかを知ることは役立ちます。
エイドリアンラトナパラ

5

これはばかげています。Windowsには単一の階層ポイントもあります。しかし、それは隠されており、非標準です。ほとんどの場合、ウィンドウ。

この場合、それは「マイコンピュータ」の概念です。これは、Unixのルート(/)と同等です。ルートはカーネルに存在する概念であることを忘れないでください。あなたはそれが好きかどうか。Windowsが「マイコンピュータ」を扱うように。もちろん、unixのルートにパーティションをマウントできます。これはほとんどの人が行うことです。そして、多くのものは特定のパス(例:/ etc /)を調べますが、それに限定されません。必ず、ドライブを/ C:/にマウントしてください。UNIXでそれを行うことは禁止されていません。

C:\はWindowsのルートではなく、1つのパーティションのマウントポイントです。これは最上位の「マイコンピュータ」になければなりません。UNIXでは、他のツリーの下にパーティションをマウントできます。だから、LinuxではC:をマウントでき/ますが、D:がマウントされている/mnt/d/...またはマウントされています/が、それはトリッキーであり、すでにマウントされているパスの上にマウントするときの2つのファイルシステムの動作に依存します。

したがって、ウィンドウにランダムに課せられるのと同じ制限に従うように「強制」することで、ウィンドウの場合とまったく同じにすることができます。

/ (treat this as "My Computer")
/c/ (mount your first data partition here)
/d/ (mount your second data partition here)

次に、ブートオプションでマウントオプションを渡す必要があります。あなたは/ etc / ...を持たないだろうが、それはウィンドウが課す制限をシミュレートしているからだ。


4
Windowsの内部には単一の階層があり、マウントポイントさえありますが、デフォルトではそれらを使用しません。
ジル

1
@Gillesわからない すべてのドライバを「マイコンピュータ」ルートノードに接続すると、デフォルトではどのように使用されないのですか?
gcb

5
これはGUIプレゼンテーションのみです。ファイルパスはを使用しませんMy Computer
ジル

3
My Computerは、シェル階層のルートノードです。ドライブ名が付いている場合はドライブが含まれますが、コントロールパネルと接続されているWindows Phoneも含まれます。シェル階層は、パスの代わりにPIDLを使用します。
–MSalters

4
@gcb:ポイントは、シェル階層が「通常の」アプリケーションで直接使用できないことです。CreateFile「マイコンピュータ」または他のシェルフォルダを渡すことはできません。シェル関連のコードによってのみ理解される抽象化であり、すべてのカーネル呼び出し(したがって、ほとんどの言語のファイル管理はカーネルファイルAPIの観点から実装されているため、アプリケーションの90%)はこのことについて何も知りません。シェルフォルダーは、プログラムが「シェルの名前空間を理解する」「標準ダイアログ」を使用する場合、および選択されたファイルが「実際の」(=カーネル理解)パスに直接マップされる場合にのみ使用できます。
マッテオイタリア

5

Windowsがドライブ文字を持っている理由は、おそらくMicrosoftやDOSよりも前に遡ります。IBMシステムでは、リムーバブルドライブへの文字の割り当てが一般的であったため、MicrosoftはCP / MをコピーしてIBMの指示に基づいて行動していた可能性があります。そして当初、DOSにはディレクトリがありませんでした。

MS-DOSが1つまたは2つのリムーバブルディスクがあり、固定メディアがないコンピューターで実行された場合、ディレクトリを備えたファイルシステムは本当に必要ありませんでした。180キロバイトのディスクが1つ、または2つあれば、ファイルを整理するのに苦労するほど十分なファイルがありませんでした。

https://en.wikipedia.org/wiki/Drive_letter_assignment


1
これはせいぜい不正確です。CP / Mは、Microsoft / IBM-PC DOSよりも何年も前のものでした(IBMの当初のアイデアは、「PC」にCP / Mを使用することでした。さまざまなCP / Mシステムに互換性がないという事実)、IBM-PC DOSが基本的にCP / Mのソースコード互換クローンである86-DOSに大きく基づいていることほとんど異議を唱えていません。
CVn

4

実際、LinuxはUnix(またはUnix、議論を参照)に基づいており、Unixはメインフレーム環境から来ており、複数のデバイスを使用することは明らかでした。単一のディレクトリツリー内にデバイスをマウントすると、最大限の柔軟性が得られ、オペレーティングシステムがアクセスできるデバイスの数が制限されることはありません。

一方、ドライブのDOS文字は、1つまたは2つのフロッピーステーションと単一のディスクドライブを備えたPCに適したデザインです。大きなフロッピー5,25 'は常にA :、小さな​​フロッピー3,5'は常にB :、ディスクドライブは常にC:です。ファイルをフロッピーにコピーするか、ディスクにコピーするかを常に知っています。2台以上のフロッピードライブと2台(または4台)のハードディスクを物理的に接続できない場合、柔軟性は必要ありません。

DOSの設計はエンドユーザーに優しいものでしたが、Unixの設計は管理者に優しいものでした。現在、ドライブ文字はWindowsの負担です。ユーザーは、文字を知るよりも、リムーバブルドライブの内容でエクスプローラウィンドウを自動的に開くことに依存しています。Ubuntuも同じことをしています。


1

実際にはそうではありません。Windowsは別のパススキームを使用します(同じではありません)。

「ユニット文字」は、パス、ディスク、パーティションを簡単に覚えておくためのものです。

ARCパスは、ウィンドウ内のファイルのパスを定義します(ただし、ブート時にのみユーザーに表示されます)。

http://support.microsoft.com/kb/102873

https://serverfault.com/questions/5910/how-do-i-determine-the-arc-path-for-a-particular-drive-letter-in-windows

Windows NTでは、ディスク、パーティション、およびユニット文字の間に関係はありません:ボリューム全体をフォルダに「置く」ことができます(例:c:\ myseconddiskは物理ディスク全体になる可能性があります!)


1
ARCパスは、NTがAlphaおよびMIPSに移植されたときの一部のROMとの互換性のために、ブート専用です。システムの実行中は、UNCパスを使用します。
ninjalj

0

私が指摘したい2つのこと-

  1. Linuxのハードドライブには、実際には/ dev / sdb1のような文字/名前が割り当てられています。しかし、それらは単一/ルート構造から到達するためにどこにでもマウントできます
  2. Windows(過去に自分を含む)が別のドライブを使用していた最も一般的な理由は、ドキュメント、音楽、プログラムなどを保管する場所を確保することでした。ファイルシステム障害、それらのファイルへのアクセスがまだありました。Linuxではこの問題はありません-ファイルシステムははるかに信頼性が高く、私の直接のアクションまたは間違いによって(OSは最先端のレポです、試してみましょう!)、アップグレードしない限りOSは壊れませんはるかに簡単です。また、まれに、すべてのソフトウェアが追加したリポジトリまたはppaを介して利用可能であったため、再インストールする必要がありました(そして、ホームディスクをライブディスクに簡単にコピーできました)。

2
最初のポイントでは、ハードドライブとファイルシステムを組み合わせています。ファイルシステムのある時点で/ dev / sdb1をマウントすると、ドライブ上のファイルにアクセスできます。/ dev / sdb1を直接開くと、rawディスクブロックが表示されます。一般に、特に暗号化されたファイルシステムを使用する場合、あまり役に立ちません。
doneal24

Windowsユーザーが理解できる方法でそれを関連付けようとしていました。C:どちらかのWindowsでのハードドライブではなく、誰もがそのようそれを参照する
ドレイクClarris

1.あなたはまだ手紙なしであなたのファイルを保つことができます。2. POSIXシステムでは、ハードドライブはパーティションテーブルなしで全体としてパーティション化でき、サムドライブはパーティションテーブルを持つことができます。名前。
Behrooz

0

歴史を振り返ってみると、Unixはオーディオ用の8トラックテープシステムおよび9トラックのIBMデータシステム(データ用に8トラック/ 8ビット、パリティ用に1つ)の時点で開始されたことがわかります。技術的にはほぼ同じです。

その時点で、ファイルの場所に関する情報はテープ上の情報の一部に保存され、テープからデータを読み取るときに定義されます(ファイルのように、開始位置と終了署名がある)。また、ドライブの開始時にFATが1つだけではなく、検索を高速化するために複数のFATを使用した理由も説明します。また、複数のドライブがある場合は、/ dev内およびデバイス間で移動したファイルのアドレスを介してリンクされます。

私はあなたがそれがより早く始まり、MS Dosエリア(CP / M)と後のWindows NTの背後にある決定が単一のエントリポイントではなくVMメインフレームのドライブ文字に単に関連しているという見解を持つことができると信じていますより現代的な、今日のデータ量は存在せず、最終的にはドライブ文字が不足したり、乱雑になったりするとは考えていませんでした。

9トラックドライブドライブ文字の割り当て

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.