磁気ディスクには多数のファイルが保存されています。例えば,index.html という名前のファイルが物理的に磁気ディスクのどの個所にあるかを管理するする方式について学習します(ここでは,磁気ディスクを例にして説明しますが,この方式は外部記憶装置全般に利用されています)。
また,誤操作や不正の防止などの観点から,ファイルへのアクセスを制限することもOSの重要な機能です。その設定についても学習します。
FAT,NTFS,クラスタ,アクセス権
ファイル管理は、OSが担当する主要な機能の一つで、次のような機能をもっています。それらの機能をソフトウェアとして実装したのがファイル管理システムです。
レガシーシステムではOSがレコード管理機能を持っていました(データ管理ともいいます)が、現在の主流であるオープン系システムではOSによる管理はファイルシステムまでであり、各ファイル内のファイル構造は、アプリケーションが管理しています。ファイルの拡張子である txt や jpeg などがそのアプリケーションを示しています。
ディスクは,同心円のトラックを固定長に区切ったセクタを単位にデータを記録し,読み書きしています(参照:磁気ディスクの容量計算)。
しかし,1セクタの容量は512バイトであり,ファイルのサイズはそれよりはるかに大きいので,セクタを単位にファイル管理を行うのは不適切です。それで,複数個のセクタをまとめてクラスタとし,そのクラスタとファイルを関係づけています。
例えば、このページを見るには、… webtext/hs-fat-ntis/index.html と記述します。これは、フォルダwebtext内のフォルダhs-fat-ntisにあるファイルindex.htmlを指しており、このような階層をディレクトリといい、このような記述で該当ファイルを指定するのをパスといいます。パソコンにあるファイルを指定するのでもディレクトリを使います。
このように、ファイル管理は、物理的な格納場所と論理的な格納場所を対応付ける機能をもっています。
ディレクトリの詳細は、「ディレクトリ」にあります。
アクセス権とは,どのファイル(フォルダ,ディレクトリ)に関して,誰に,どのようなアクセスを許可するかということです。その設定は,OSによりやや異なりますが,ここではUNIXを例にして基本事項を示します。
アクセス権には次の3つがあります。
r:読込(Read)
w:書込(Write)
x:実行(eXecute)プログラムなどの実行はできるが読み書きはできない
これを組み合わせて次のように3文字で権限を表します。r→w→xの順に記述,-は権限を与えないことを示します。
rwx:すべての権限を与える
r-x:読むことと実行することができるが,書き込み(更新)はできない
rw-:読み書きできる(プログラムでなければxは無関係)
--x:読み書きはできないがプログラムの実行だけはできる
---:アクセスできない
これを一つの数値で表現することもあります。rを4,wを2,xを1とした合計値を用います。
rwx=7(4+2+1)
r-x=5(4+1)
rw-=6(4+2)
--x=1
---=0
アクセス権を与える対象者を次の3つに区分します。
所有者
グループ:所有者が設定したグループに所属するメンバ全員
その他:グループに属さない人
それぞれに設定した上述の3文字を所有者→グループ→その他の順に並べて9文字にすることにより,全体のアクセス権を示すことができます。また,所有者,グループ,その他の数値をそれぞれ100,10,1の位にすることにより,数値で表現することができます。
rw-rw-r--(664):所有者およびグループは読み書きできるが,その他は読むだけで書けない。
rw-r-----(640):書込みができるのは所有者だけ,グループは読むだけ、その他はアクセス不可
なお,実際にはこの9文字の前に,ファイルの削除・ファイル名の変更の権限を示す1文字のスティッキ・ビットを加えた10文字にするのですが,それに関しては省略します。
残念なことに、OSによりファイル管理システムが異なります。Windowsでは,FAT(File Allocation Table)とその発展方式であるNTFS(NT File System)というファイル管理システムが使われています。MacではHFS+,UNIXではFFS,汎用コンピュータではVTOCなどがあります。ここでは,まず初期のFATを例にしてファイル管理システムの基本を説明し,その発展については現在広く利用されているNTFSを例にします。
この節は,ファイル名とディスクでの物理的な格納場所(格納されているセクタ番号)の関連に関する基本事項ですが,私たちのレベルを超える事項ですので,イメージを理解するだけで十分です。また,厳密な記述にはなっていません。
FATでは,ディスクの内部に,次のような構造で情報が格納されています。このディスクにアクセスしたとき,OSは,これらの情報を得てファイルを読み出したり書き込んだりします。そしてファイルの生成や削除をしたときに,これらの情報を書き換えます。
MBR
┌─────────────┐
┌─┼─パーティション1の定義 │
│ │ パーティション2の定義─┼─┐
│ └─────────────┘ │
│ │
│ パーティション1 │ パーティション2
│ ┌───────────┐ │ ┌───────────┐
└→│ DPB │ └→│ DPB │
│ FAT部 │ │ FAT部 │
│ ルートディレクトリ │ │ ルートディレクトリ │
├───────────┤ ├───────────┤
│ │ │ │
│ データ部 │ │ データ部 │
│ │ │ │
└───────────┘ └───────────┘
FATはマイクロソフトが開発したもので,FAT12(初期のMS-DOS)→FAT16(MS-DOS 3.x)→FAT32(Windows95)へと発展してきました。そして,WindowsNT系のOS用に開発しのがNTFS(NT File System)で,これが現在の Windows での標準システムになっています。 NTFSは,FATと比較して,次のような利点があります。
NTFSの欠点は,Windows以外のOSとは非互換なことです。FATはマイクロソフト製品ですが,MacOSやUNIXなどWindows以外のOSでのファイル管理システムでも,基本的にはFAT形式のファイルを取り扱えるのですが,NTFS形式のファイルを他のOSでアクセスするには,面倒な処理を行う必要があり,それでも不可能なことがあります。