• ベストアンサー

FAT情報の格納位置領域について教えてください

FATのことなど、今まで考えたこともなかったのですが、暇になって思いを めぐらせているうち気になりました^^ 多分きっとディスクの先頭にFATはあるんだろうな?、と予想してるんです が、これでよろしいでしょうか? 心配なのは、生DOSで使用したFATのディスクを、WINDOWS95以降でロング ネームのファイルを上書き使用してVFAT情報を加えるような場合、どう なってるんだろう?と思って投稿しました。 FAT領域と、第一号データの間には、VFAT拡張情報が入れるような隙間領域 があるんでしょうか? (MS-DOS規格が制定された当時は未来のことなど考えていなかっただろう し…とも思うと眠れなくなりました^^) どうぞよろしくおねがいします。

質問者が選んだベストアンサー

  • ベストアンサー
  • 121CCagent
  • ベストアンサー率52% (15538/29858)
回答No.5

>>ルートディレクトリにサブディレクトリ(フォルダ)を作成 >>するとデータ領域にそのサブディレクトリのディレクトリエントリが >>作成されて行きます。 スミマセン。ここの部分が書き間違えてました。 ルートディレクトリにフォルダ(サブディレクトリ)やファイルを作ると ルートディレクトリエントリが使われます。 作成したフォルダ(サブディレクトリ)にファイルやサブディレクトリ を更に作るとデータ領域にそのディレクトリエントリが作成される形になります。 >ディレクトリエントリはディスクの物理的な先頭ではなくて、 >あくまでルートを含めてディレクトリの先頭にある、 >ということだったのですね! ディレクトリエントリではフォルダ(ディレクトリ)もファイルも同等に扱われますので DOSの8.3形式のファイル・フォルダを作成するごとに一つのディレクトリエントリを使用・作成 します。ルートディレクトリエントリについては http://www.geocities.co.jp/SiliconValley-PaloAlto/2038/fat.html 等にも書かれていますが保存される場所が固定されています。 ルートディレクトリの作成したフォルダに作成したファイルやフォルダについては データ領域に随時作成されていきます。ディレクトリエントリがディレクトリの先頭に 必ずしもあるわけではありません。 >生DOSだと1ディレクトリ当たり512個ぶらさがり可能だけれど FAT16ではルートディレクトリエントリが512個なだけで サブディレクトリにファイル・フォルダを作成した場合に作成されるディレクトリエントリ (データ領域に作成されるディレクトリエントリ)には512個という制限はありません。 http://support.microsoft.com/default.aspx?scid=kb;ja;436213 FAT16の場合は最大65534個まで8.3形式のファイル・フォルダを作成可能です。 >ディレクトリエントリが二つ必要なVFATではその半分の数しか格納できない VFATではディレクトリエントリを2つ必要というのは間違いです。 ロングファイルネームは255文字で最大255byteのデータになりますが 1つのディレクトリエントリは32byteと固定長になっておりロングファイルネーム 用に使われるディレクトリエントリは長いファイル名を13文字ごとに分割して ディレクトリエントリに記録されていきます。最大数の255文字のファイル名をつけた 場合は使われるディレクトリエントリは20個近くになります。 FAT16でルートディレクトリに長い名前のファイルやフォルダを大量に作ると 用意されているルートディレクトリエントリ512個があっと言う間に一杯になることが あったりします。

altosax
質問者

お礼

たびたび本当に有難うございます! >データ領域に随時作成されていきます なるほど! 前回まで今一つ魔法っぽくて消化不良だったのですがこれでガッテンです! 道理でDOSで使用後にWindows95で上書きしても何ともなかった訳ですね! 〉最大数の255文字のファイル名をつけた場合は使われるディレクトリエントリは20個近くになります なるほど!! そういう遣り繰りのしかたで繋いでいた訳ですね! おかげさまで今夜は快眠です^^ 本当に有難うございました!

その他の回答 (4)

  • 121CCagent
  • ベストアンサー率52% (15538/29858)
回答No.4

>未来のVFATのことを考慮していないMS-DOSでデータ >を書きこんだフロッピー等をあとからVFATで使用すると、 >「二つめのディレクトリエントリ」格納領域が無くて >困りそうですが、実際は大丈夫なのはどんな >工夫がされていることになりますでしょうか? FAT16ではルートディレクトリエントリが予め512個分用意されています。 (2HDのフロッピーの場合は224個) またルートディレクトリにサブディレクトリ(フォルダ)を作成 するとデータ領域にそのサブディレクトリのディレクトリエントリが 作成されて行きます。 VFATはルートディレクトリでは予め用意されているディレクトリエントリのうち 空いているものを使用。サブディレクトリでは必要に応じて新しいディレクトリエントリ を作成します。 参考資料 http://support.microsoft.com/default.aspx?scid=kb%3Bja%3B39927 http://support.microsoft.com/default.aspx?scid=kb;ja;436213 http://ja.wikipedia.org/wiki/File_Allocation_Table http://www.wdic.org/w/TECH/%E3%83%AD%E3%83%B3%E3%82%B0%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E5%90%8D

altosax
質問者

お礼

いつも本当に有難うございます。 なあるほど! ディレクトリエントリはディスクの物理的な先頭ではなくて、あく までルートを含めてディレクトリの先頭にある、ということだった のですね! 生DOSだと1ディレクトリ当たり512個ぶらさがり可能だけれど ディレクトリエントリが二つ必要なVFATではその半分の数しか格納 できない、(けれど普通の実用上はそれで充分)というのが「工夫」 の正体だった訳ですね! おかげさまで、夜眠れるようになりました^^ (理解誤解してましたら、また教えてください^^;)

  • 121CCagent
  • ベストアンサー率52% (15538/29858)
回答No.3

>もともとFAT領域というのは、 >かなり(VFAT情報がすっかり収まるほど)余裕をもって広く >確保されていた、という結論になりますでしょうか? そういうことではないと思います。 http://support.microsoft.com/default.aspx?scid=kb%3Bja%3B120138 http://support.microsoft.com/default.aspx?scid=kb%3Bja%3B403149 MS-DOS では、ファイルやサブディレクトリ 1 つに対し、1 つのディレクトリエントリを使用しますが、Windows 95 は、長いファイル名、サブディレクトリ名、8.3 に短縮されたエイリアス毎に、それぞれディレクトリエントリを使用します。 MS-DOS では、それぞれのファイルとフォルダごとに 1 つのディレクトリ エントリを使用しますが、Windows 95 では、長いファイル名とフォルダ名、関連付けられた 8.3 形式のエイリアスを格納するために別のディレクトリ エントリを使用します。 とあるようにディレクトリエントリ使い方を工夫することでロングファイルネームに対応したと言うことです。

altosax
質問者

お礼

なるほど、「ディレクトリエントリ」という物の概念が今までよくわかって いなかったのですが、FATを補佐するテーブル領域だと思ってよさそうです ね? #2の方が教えてくださった http://www.geocities.co.jp/SiliconValley-PaloAlto/2038/fat.html こちらの参考URLを見ると、セクタ番号の若い順にFAT,ディレクトリエントリ、 データ領域、となっているので少しわかってきました^^ ・・・そうしますと、未来のVFATのことを考慮していないMS-DOSでデータ を書きこんだフロッピー等をあとからVFATで使用すると、「二つめのディ レクトリエントリ」格納領域が無くて困りそうですが、実際は大丈夫なの はどんな工夫がされていることになりますでしょうか? 今まで「使えりゃそれでいいじゃん^^」としか思っていなかったのですが、 けっこうマイクロソフトが考えてくれていることは思いのほか親切だなあ と感心しています。

  • 121CCagent
  • ベストアンサー率52% (15538/29858)
回答No.2
altosax
質問者

お礼

どうもありがとうございました。 ソートの結果というのはコンソール出力だけかと思っていたらディスクの FATまで書き換えてしまうんですね!これには驚きました。 16進ダンプの見方がわからなくてもどかしいのですが、もともとFAT領域 というのは、かなり(VFAT情報がすっかり収まるほど)余裕をもって広く 確保されていた、という結論になりますでしょうか?

noname#17587
noname#17587
回答No.1

こうなっているようです FATが制定されたときには無駄な領域など確保していなかったでしょう (ディスクの無駄ですし) http://x68000.q-e-d.net/~68user/unix/pickup?%A5%D5%A5%A1%A5%A4%A5%EB%A5%B7%A5%B9%A5%C6%A5%E0

altosax
質問者

補足

さっそくにどうもありがとうございます! >(ディスクの無駄ですし) そのとおりですよね! ところで、参考URLを拝見したのですが、 「実際には VFAT は仮想的なレイヤであり、実際にディスクに記録されるときには FAT に変換される」 というくだりがあって大変興味を惹かれたのですが、 この説明文の意味するところはどういうことになるでしょうか? MS-DOS時代に無駄な領域確保されていなかったにもかかわらず、FAT領域にVFATが収まってしまう、という意味が是非知りたいのです。 どうぞ引き続きまして宜しくお願いします。

関連するQ&A