「ファイルシステム」の版間の差分

削除された内容 追加された内容
左脳 (会話 | 投稿記録)
120.202.249.198 (会話) による ID:51473056 の版を取り消し
3行目:
より正確に定義すれば、ファイルシステムは[[抽象データ型]]の集まりであり、[[補助記憶装置#分類|ストレージ]]、[[階層構造]]、[[データ]]の操作/アクセス/検索のために実装されたものである。ファイルシステムを特殊用途の[[データベース管理システム]] (DBMS) と見なせるかどうかは議論があるが、ファイルシステムとデータベース管理システムには多くの共通点がある。
 
== 概要 ==
Very nice site!
最も身近なファイルシステムは補助記憶装置上のもので、「[[ディスクセクタ|セクタ]]」などと呼ばれる通常512バイトの固定サイズの「[[ブロック (データ)|ブロック]]」の配列にアクセスするものである。ファイルシステムはこのセクタ群を使用してファイルや[[ディレクトリ]]を構成し、各セクタがどのファイルに使用され、使用されていないセクターはどれなのかを把握する必要がある。
 
しかし、ファイルシステム自体は[[記憶装置]]を利用する必要はない。ファイルシステムは何らかのデータへの操作とアクセスを提供するものであり、そのデータが記憶装置に格納されているか(例えば、[[コンピュータネットワーク|ネットワーク]]接続経由で)動的に生成させるかは問題ではない。
 
ファイルシステムがストレージ上にあるかどうかに関わらず、一般的なファイルシステムはファイルの'''[[ファイル名]]'''を束ねるディレクトリを持つ。通常、ファイル名は何らかのファイル・アロケーション・テーブルのインデックスと対応しており、それは[[MS-DOS]]のファイルシステムである[[File Allocation Table|FAT]]でも、[[Unix系]]ファイルシステムでの[[inode]]でもそのようになっている。ディレクトリ構造は平坦な場合もあるし、ディレクトリの下にサブディレクトリのある階層構造の場合もある。いくつかのファイルシステムではファイル名も構造化されていて、[[拡張子]]やバージョン番号の文法が存在する。そうでない場合、ファイル名は単なる文字列であり、ファイル毎の[[メタデータ]]は適当な場所に格納される。
 
階層型ファイルシステムは[[UNIX]]で有名な[[デニス・リッチー]]の初期の研究対象であった。それまでの実装では階層はあまり深くできなかった。例えば[[IBM]]の初期に生まれたデータベース管理システムである[[IMS]]などがそうである。UNIXの成功により、リッチーはその後のOS開発([[Plan 9]]や[[Inferno (オペレーティングシステム)|Inferno]])でもファイルシステムのコンセプトを様々な対象に広げていった。
 
初期のファイルシステムはファイルとディレクトリの生成、移動、削除といった機能を提供していた。ディレクトリへの追加リンクを生成する機能(UNIXにおける[[ハードリンク]])、親リンク(UNIX系OSにおける「<tt>'''..'''</tt>」)の名称変更、ファイル間の双方向リンクの生成といった機能は当初は存在しなかった。
 
初期のファイルシステムはファイルの切捨て(内容を一部削除すること)、ファイルとファイルの連結、ファイルの生成、ファイルの移動、ファイルの削除、ファイルの更新などの機能を提供していた。ファイルの先頭へのデータ挿入 (prepend)、ファイルの先頭からの内容切捨て、任意の位置の内容の削除や挿入などといった機能は提供されていなかった。提供された操作は対称性に乏しく、どんな状況でも便利というものではない。例えばUNIXにおけるプロセス間の[[パイプ (コンピュータ)|パイプ]]はファイルシステム上には実装できない。というのもパイプはファイル先頭からの切捨てに対応できないためである。
 
ファイルシステムの基本操作への安全なアクセスは[[アクセス制御リスト]]または[[Capability-based security|ケーパビリティ]]に基づいて行われる。研究によれば、アクセス制御リストは完全なセキュリティを確保するのが困難といわれており、研究中の最新のOSではケーパビリティが使われる傾向にある。商用ファイルシステムはまだアクセス制御リストを使用している([[コンピュータセキュリティ]]参照)。
 
また、[[アプリケーションソフトウェア]]の中にも、独自のファイルシステムを採用しているものがある。([[FMRシリーズ]]・[[FM TOWNS]]用の[[ワードプロセッサ|ワープロ]]ソフトウェアである「[[FM-OASYS]]」など)
 
== 分類 ==