より高い (より論理的な) レベルから FAT ファイル システムがどのように機能するかを理解しようとしています。FAT ファイル システムにはファイル アロケーション テーブルがあり、ディスク内の使用可能なアロケーション ユニット (クラスタ) ごとに 1 つのエントリがあります。このデータ構造は、ファイルがディスク上に表示される最初のクラスターのアドレスを使用してファイルをマップするために使用されます (ファイルはほぼ確実に複数のクラスターを占有し、これらのクラスターは連結リスト形式で接続されます)。ここまでは順調ですね。しかし、ファイル アロケーション テーブルのキーは何でしょうか? ファイル名はフルパスですか?
たとえば、ファイル C:\folder1\myFile.txt にアクセスする必要があるとします。I/O マネージャーは、エントリが見つかるまで、ファイル アロケーション テーブル内のファイル名 (パスを含む) を検索します。最初のクラスターのアドレスを返します。それがどのように機能するのですか?このトピックに関する多くのドキュメントをオンラインで読みましたが、どういうわけか、ファイル アロケーション テーブルへのアクセスはまだあいまいです。よろしくお願いいたします。
[編集]
オンラインで読めば読むほど、私は混乱します。この簡単な例で試してみます。うまくいけば、私の質問が明確になります。C ドライブに 2 つのファイルしかないとします。
C:\myFile.txt
C:\folder1\myFile.txt
ファイル アロケーション テーブルには (非常に抽象的な方法で) 3 つのエントリがあります。
| Filename | Extension | First Cluster |
|----------|-----------|---------------|
1 | MYFILE | TXT | 150 |
2 | FOLDER1 | | 300 |
3 | MYFILE | TXT | 900 |
これまでのところ私が正しいと仮定して、C:\folder1 の myFile.txt にアクセスしたいとしましょう: 同じ名前のエントリが 2 つあるため、ファイル名 (MYFILE.TXT) 自体をキーとして使用することはできません (どのエントリを選択すればよいかわかりません)。
この時点で、フォルダから開始する必要があると思われるため、FAT をスキャンして FOLDER1 を見つけます。エントリ #2 (クラスタ 300) を取得します。次は何ですか?指定したクラスターのハード ドライブにアクセスできるように、テーブルをスキャンして "MYFILE.TXT" に必要なディレクトリ エントリを見つけるにはどうすればよいですか?
多分私はこれを間違った視点から見ているのかもしれませんが、わかりません。助けてくれてありがとう。