私は子供の頃からWindowsを使用していて、「Windowsファイルシステム」というフレーズを聞いたとき、ディレクトリ内のディレクトリ(フォルダ)、SYSTEMというフォルダ、PROGRAM FILESというフォルダなどを思い浮かべます。これはシステムですか?フォルダのレイアウトだけですか?
そして最近、私はLinuxを使い始めました。私のリファレンスブックには、Linuxファイルシステムではすべてがルートから始まり、そこから分岐していると書かれています。これはWindowsとどう違うのですか?つまり、LinuxシステムとWindowsシステムは、ディレクトリツリーを設定するための2つの方法にすぎません。これはファイルシステムの意味ですか?
音が本当であるにはあまりにも良い...
例としてFAT32ファイルシステムを見てみましょう。 Windows XPをインストールできますが、メモリカードでも使用できます。メモリカードでは、これらのフォルダを合計することはできません。
So ...オペレーティングシステムファミリのディレクトリレイアウトとファイルシステムを混同しないでください。
いいえ...これは、ディレクトリ構造を機能させる基本的なビットとバイトを指します。
FAT32 の内容を見てみましょう。
FATテーブルは、次のような多くのエントリで構成されています。これにより、ディレクトリまたはファイルがクラスター空間のどこに格納されているか、およびいくつかの属性とサイズを特定できます。
ディレクトリエントリは、ディレクトリ/ファイルエントリのリストを指します...
クラスター空間では、クラスターを移動して必要なデータを見つけることができます。クラスタには基本的に、次のフラグメントが存在するデータと情報が含まれています
違いに気付くように画像をお見せします。残りは読者の宿題です。詳細は このブログアーカイブ またはGoogleでご覧いただけます。
主な考え方は、NTFSはFAT32を大幅に改善したもので、より堅牢で効率的です。断片化をさらに防ぐためにビットマップを使用することにより、(未)使用済みスペースのより良いアイデアを持っています。等々...
— http://thinkdifferent.typepad.com/photos/uncategorized/04ntfsfilesystem.png
アイデアは、ext2/ext3がスーパーブロックとiノードを使用することです。これにより、ソフトリンクとハードリンク、ファイルであるディレクトリ、複数の名前を持つファイルなどが可能になります。メインの要旨は、ファイルシステムがより多くのmeta-ishものを実行できるようにするために抽象化されています...
— http://thinkdifferent.typepad.com/photos/uncategorized/03extfilesystem.png
LinuxとWindowsの大きな違いは、少なくともファイルシステムとディレクトリツリーに関しては、Linuxでは「すべてがファイル」であり、すべてが単一のルートから派生していることです。これは、BSD、OS X、SolarisなどのほとんどすべてのUnix由来のOSにも当てはまりますが、私は「Linux」を総称して(完全に正確ではない場合)言います。
しかし、それは実際にはどういう意味ですか?
Windowsでは、ファイルシステムに複数の名前付きルートを使用できます。これらはドライブ文字として理解できます:C: D: E:
など。それぞれにルート(\
)と、その下にあるツリーがあります。最近のバージョンのWindowsでは、ボリューム(パーティションと見なすもの)を既存の空のフォルダーにマウントできるボリュームマウントポイントなどを使用できます。したがって、たとえば、光学(CD/DVD/BR)ドライブのルートを表すD:
\の代わりに、C:\Optical
にマウントすることができます。これは、Linuxの動作により似ています。 Linuxが使用するものと同様に、Windowsのすべてのオブジェクトの基盤となる単一ルートのオブジェクト名前空間もあり、 Object Manager によって管理されますが、ほとんどのユーザーは、主にカーネルで使用するため、参照されることはほとんどありません。
Linuxのルートは1つです:/
。 すべてはその子孫であり、必ずしもハードドライブを表す必要はありません。ハードドライブ、オプティカルドライブ、メモリカード、ネットワーク共有、プリンター、スキャナー、CPU、RAM、プロセスなど...すべてがこの単一の名前空間内のどこかに表され、標準のファイル管理APIを使用して任意のプロセスからアクセスできます。十分に高いレベルのアクセス。読み書きできるからといって、Linuxのハードドライブ上のファイルであるとは限りません。たとえば、デバイスは通常/dev
にマウントされているため、そこにアクセスすることは、デバイスと話していることを意味します。サウンドカード、スキャナー、カメラなどです。これらは、 デバイスファイル 。 Procfs は、通常/proc
にマウントされる特別な「ファイルシステム」であり、実行中のすべてのプロセスに「ディレクトリ」があり、各ディレクトリ内のファイルは、それを呼び出すために使用されるコマンドラインなどに関連していますプロセス、メモリマップ、開いているファイルなど Sysfs は、実行中のカーネルオブジェクトに関する豊富な情報を公開するために使用される別の特別なファイルシステム(/sys
にマウント)であり、 -特定のファイルに書き込むだけで、実行中のカーネルを調整します。
ファイルシステムは、ディレクトリツリーの設定方法だけでなく、この情報がメディア上でどのようにエンコードされるかも重要です。 Linuxには、ext3、xfs、raiserfsなど、いくつかのファイルシステムがあります。
ファイルシステムは、MS WordとPDFがドキュメントを保存するための異なる形式であるか、MP3とWAVがオーディオを保存するための異なる形式である方法にいくらか似ている、ファイルとフォルダーを保存するための異なる形式と考えることができます。
いくつかのファイルとフォルダーを考えると、ファイルシステムは、それらを再度読み取ることができるようにそれらをディスクに格納する形式とコードです。
すべてのビデオプレーヤーがすべてのビデオ形式を再生できるわけではないのと同様に、すべてのオペレーティングシステムがすべてのファイルシステムを読み取ることができるわけではありません。例えば。 Linuxからのファイルをext3フォーマットのUSBスティックに保存する場合、Windowsはext3ファイルシステムの処理方法を認識していないため、ファイルを読み取ることができません。
一般的なファイルシステムには、
ファイルシステムの比較 については、Wikipediaを参照してください。