前提
OS とは何か?という人はまずは以下を参照下さい。
ファイルシステムの役割、構造、OSとの関係
Windows から Explorer 等のアプリケーションを使って、ファイルシステム上のファイルを扱うことができます。
この事実から、ファイルシステムは OS の一部だと勘違いしてしまうかもしれませんが、ファイルシステムは OS とは独立しています。
OS とファイルシステムのどちらが先に存在しているかというと、ファイルシステムが先です。
OS インストール時の OS とファイルシステムの関係
OS のインストール時に、インストール先として HDD や SSD を選択しますが、その際には具体的に以下を実施します。
- ファイルシステムへのフォーマット
- ブートセクタの作成およびOSプログラムファイルの配置
フォーマットは『初期化』とも呼ばれますが、これにより、単なる 0 と 1 のビットしか扱えない HDD/SSD が、『どのような形式でファイルを配置していくのか?』というのを理解し、ファイルを配置していくことができるようになります。
ファイルシステムを構成した後に、OS が使うプログラム群・ライブラリ群をそのファイルシステムにインストール(配置)するのです。
ファイルシステムの構造を駐車場に例えると、HDD/SSD は土地で、駐車スペース番号を振って管理するのがファイルシステム、車はファイルそのものです。フォルダは実はファイルの1種として見做されますが、この喩えで言えば駐車スペースの区画になります。
なお、OS がインストール可能なファイルシステムはインストールする OS によって決まっています。Windows をインストールするのであれば NTFS、Linux をインストールするのであれば XFS や ext4 等、VMware ESXi であれば VMFS、等です。
インストール後の OS とファイルシステムの関係
OS インストール後、マシンを起動すると今度は HDD/SSD のブートセクタからブートローダをメモリに展開し、ブートローダが OS をメモリ上に展開します。
OS が起動した後の一般プロセス(MS Office や Apache 等各種アプリケーションなんでも) はファイルシステムにアクセスする際は OS が用意するシステムコール『 "read()", "write()", "ioctl()" 等』を使って HDD/SSD 上のファイルへアクセスします。
OS とファイルシステムとアクセス権
ファイルシステムには、どのユーザがどのフォルダ/ファイルにアクセスしてよいかを定める『アクセス権』の領域が用意されています。
例えば Windows の場合、NTFS ファイルシステムのファイルにはファイルのメタ属性として『Windows ユーザアカウントの識別子である SID』と『その SID に対するアクセス権限』がセットで記述されています(例えばAさんはフルコントロール、Bさんは読み取りのみ、等)。
一方、Windows OS では SAM (Security Accounts Manager) というプログラムとデータベースによってユーザアカウントを管理しており、ユーザがファイルへアクセスする際はこのプログラムによって SID が把握され、ファイルのアクセス権に合致するかを確認します。
なお、SAM は常駐プログラムでもありますが、その元ネタは C:\Windows\system32\config\SAM というファイルです。
OS がインストールされていないドライブのファイルシステム
Windows では慣例的に C ドライブに OS がインストールされます。パーティションを分けたり、HDD/SSD を増設したり、DVD ドライブを付けたりして、Dドライブ、Eドライブ、と増やしていくことができます。
この時の増設ドライブのフォーマットは、C ドライブとは異なっていても問題ありません。ただし OS が読み書きのサポートをしている必要があります。
DVDドライブであれば iso9600 というフォーマットになり、これは Windows でサポートされますが、XFS や ext4 はサポートされないため、アクセスしようとしても中身を見ることができません。
一方、Linux であればモジュールをインストールすることで NTFS の中を見ることができます。
このように、OS とファイルシステムは独立した存在ではあるものの、機能的には緊密に連携しているものなのです。
コメント