

Unixおよびそれに触発されたオペレーティングシステムでは、ファイルシステムはオペレーティングシステムの中心的なコンポーネントと見なされています。[1]また、ファイルシステムは、1969年にケン・トンプソンによって設計および実装されたシステムの最初の部分の1つでもありました。[2]
他のオペレーティング システムと同様に、ファイル システムは情報の保存と取得、およびプロセス間通信のいくつかの形式の 1 つを提供します。つまり、伝統的に Unix システムを構成する多数の小さなプログラムは、他のプログラムが読み取れるようにファイルに情報を保存できます。ただし、第 3 版以降、パイプがこの役割を補完しています。また、ファイル システムは、端末、プリンター、マウスへのエントリ ポイントである、いわゆるデバイス ファイルを通じて他のリソースへのアクセスも提供します。
この記事の残りの部分では、オリジナルの Unix オペレーティング システムとその類似の多くのオペレーティング システムの両方を指す総称としてUnix を使用します。
原則
ファイルシステムは、1 つのルート ディレクトリ ツリーとして表示されます。[1]ディスク パーティション、リムーバブル メディア、ネットワーク共有などの個別のボリュームを個別のツリーとしてアドレス指定する代わりに( DOSやWindowsのように、各ドライブにはそのファイルシステム ツリーのルートを示すドライブ文字があります)、このようなボリュームをディレクトリにマウントすると、ボリュームのファイルシステム ツリーが、より大きなツリー内のそのディレクトリとして表示されます。[1]ツリー全体のルートは で示されます/。
オリジナルのBell Labs Unixでは、2 つのディスク構成が一般的で、最初のディスクにはスタートアップ プログラムが含まれ、2 番目のディスクにはユーザーのファイルとプログラムが含まれていました。この 2 番目のディスクは、usr最初のディスクと同じ名前の空のディレクトリにマウントされ、2 つのディスクが 1 つのファイル システムとして表示され、2 番目のディスクの内容は で表示できるようになりました/usr。
Unix のディレクトリにはファイルは含まれません。代わりに、ファイル名と、いわゆるinodeへの参照がペアになって含まれます。inodeには、ファイルとそのメタデータ(所有者、権限、最終アクセス時刻など。名前は含まれません) が含まれます。ファイル システム内の複数の名前が同じファイルを参照する場合があり、この機能はハード リンクと呼ばれます。[1]ハード リンクの数学的特性により、ファイル システムは限定された種類の有向非巡回グラフになりますが、ディレクトリは通常ハード リンクされていないため、ツリーを形成します。(1969 年に最初に構想されたように、Unix ファイル システムは実際には、パス名ではなくディレクトリへのハード リンクがナビゲーションを提供する一般的なグラフとして使用される予定でした。[2] )
ファイルの種類
オリジナルのUnixファイルシステムは、通常のファイル、ディレクトリ、およびデバイスファイルとも呼ばれる「特殊ファイル」の3種類のファイルをサポートしていました。[1] Berkeley Software Distribution (BSD)とSystem Vはそれぞれ、プロセス間通信に使用するファイルタイプを追加しました。BSDはソケットを追加し、[3] System VはFIFOファイルを追加しました。
BSD では、ファイルの種類の範囲にシンボリック リンク(「シンボリック リンク」と呼ばれることが多い) も追加されました。シンボリック リンクは、他のファイルを参照するファイルであり、ハード リンクを補完します。 [3]シンボリック リンクは、 Multicsの同様の機能をモデルにしており、[4]ハード リンクとは異なり、ファイルシステムをまたがる可能性があり、その存在はターゲット オブジェクトとは無関係です。他の Unix システムでは、追加のファイルの種類がサポートされる場合があります。[5]
従来のディレクトリレイアウト
プログラム、システム設定ファイル、ユーザーのホームディレクトリなど、ある種のファイルの配置には一定の規則が存在します。これらはバージョン7 Unix以降、hier(7) マニュアルページで初めて文書化されました。[6]その後のバージョン、派生版、クローン版でも、通常は同様のマニュアルページがあります。[7] [8] [9] [10] [11] [12]
ディレクトリレイアウトの詳細は時代とともに変化してきました。ファイルシステムレイアウトはSingle UNIX仕様の一部ではありませんが、 System V Application Binary Interface、Intel Binary Compatibility Standard、Common Operating System Environment、Linux FoundationのFilesystem Hierarchy Standard (FHS)など、その一部について標準化する試みはいくつかあります。[13]
以下は、Unix オペレーティング システム上のファイルの一般的な場所の概要です。
参照
参考文献
- この記事には、 Creative Commons Attribution-ShareAlike 3.0 Unported Licenseに基づいてライセンスされているが、 GFDLに基づいてライセンスされていないCitizendium の記事「Unix ファイルシステム」の内容が組み込まれています。
- ^ abcde Ritchie, DM ; Thompson, K. (1978 年 7 月). 「UNIX タイムシェアリングシステム」. Bell System Tech. J. 57 ( 6): 1905–1929. CiteSeerX 10.1.1.112.595 . doi :10.1002/j.1538-7305.1978.tb02136.x.
- ^ ab Ritchie, Dennis M. (1979). Unix タイムシェアリングシステムの進化。言語設計およびプログラミング方法論会議。
- ^ ab Leffler, Samuel J. ; McKusick, Marshall Kirk ; Karels, Michael J. ; Quarterman, John S. ( 1989年 10 月)。4.3BSD UNIX オペレーティングシステムの設計と実装。Addison - Wesley。ISBN 978-0-201-06196-3。
- ^ McKusick、Marshall Kirk、他「A Fast Filesystem for Unix」(PDF)。Freebsd.org 。CSRG、UC Berkeley 。2016 年11 月 16 日閲覧。
- ^ – Linuxプログラマーズマニュアル– システムコール
- ^ ab – バージョン 7 Unixプログラマーズマニュアル
- ^ – FreeBSDその他の情報マニュアル
- ^ – OpenBSDその他の情報マニュアル
- ^ 「hier(7) 2.9.1 BSDのマニュアルページ」
- ^ "ULTRIX 4.2 の hier(7) マニュアル ページ".
- ^ 「SunOS 4.1.3のhier(7)マニュアルページ」
- ^ – Linuxプログラマーズマニュアル– 概要、規則、その他
- ^ George Kraft IV (2000 年 11 月 1 日)。「Linux に製品をインストールする場所はどこですか?」Linux Journal。2014年11 月 13 日閲覧。
- ^ abcde Kernighan, Brian W. ; Pike, Rob (1984). The UNIX Programming Environment . Prentice-Hall. pp. 63–65. Bibcode :1984upe..book.....K.
- ^ ab Ritchie, Dennis. 「Unix Notes from 1972」 。 2018年1月14日閲覧。
- ^ System V アプリケーションバイナリインタフェースエディション 4.1 (1997-03-18)
- ^ MD McIlroy (1987). 「A Research Unix reader: annotated excerpts from the Programmer's Manual, 1971–1986」(PDF) . Bell Labs. CSTR 139.
- ^ 「第 7 章 sendmail」。UNICOS / mp ネットワーク設備管理。Cray。2013年9月 14 日閲覧。
- ^ 「fhs-spec リビジョン 44」。
