FAT情報の格納位置領域について教えてください
FAT情報の格納位置領域について教えてください
FATのことなど、今まで考えたこともなかったのですが、暇になって思いを
めぐらせているうち気になりました^^
多分きっとディスクの先頭にFATはあるんだろうな?、と予想してるんです
が、これでよろしいでしょうか?
心配なのは、生DOSで使用したFATのディスクを、WINDOWS95以降でロング
ネームのファイルを上書き使用してVFAT情報を加えるような場合、どう
なってるんだろう?と思って投稿しました。
FAT領域と、第一号データの間には、VFAT拡張情報が入れるような隙間領域
があるんでしょうか?
(MS-DOS規格が制定された当時は未来のことなど考えていなかっただろう
し…とも思うと眠れなくなりました^^)
どうぞよろしくおねがいします。
投稿日時 - 2006-03-19 15:35:41
>>ルートディレクトリにサブディレクトリ(フォルダ)を作成
>>するとデータ領域にそのサブディレクトリのディレクトリエントリが
>>作成されて行きます。
スミマセン。ここの部分が書き間違えてました。
ルートディレクトリにフォルダ(サブディレクトリ)やファイルを作ると
ルートディレクトリエントリが使われます。
作成したフォルダ(サブディレクトリ)にファイルやサブディレクトリ
を更に作るとデータ領域にそのディレクトリエントリが作成される形になります。
>ディレクトリエントリはディスクの物理的な先頭ではなくて、
>あくまでルートを含めてディレクトリの先頭にある、
>ということだったのですね!
ディレクトリエントリではフォルダ(ディレクトリ)もファイルも同等に扱われますので
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個があっと言う間に一杯になることが
あったりします。
投稿日時 - 2006-03-23 00:23:22
お礼
たびたび本当に有難うございます!
>データ領域に随時作成されていきます
なるほど! 前回まで今一つ魔法っぽくて消化不良だったのですがこれでガッテンです!
道理でDOSで使用後にWindows95で上書きしても何ともなかった訳ですね!
〉最大数の255文字のファイル名をつけた場合は使われるディレクトリエントリは20個近くになります
なるほど!!
そういう遣り繰りのしかたで繋いでいた訳ですね!
おかげさまで今夜は快眠です^^
本当に有難うございました!
投稿日時 - 2006-03-23 02:07:19
0人が「このQ&Aが役に立った」と投票しています
ベストアンサー以外の回答(4件中 1~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
投稿日時 - 2006-03-22 17:37:31
いつも本当に有難うございます。
なあるほど!
ディレクトリエントリはディスクの物理的な先頭ではなくて、あく
までルートを含めてディレクトリの先頭にある、ということだった
のですね!
生DOSだと1ディレクトリ当たり512個ぶらさがり可能だけれど
ディレクトリエントリが二つ必要なVFATではその半分の数しか格納
できない、(けれど普通の実用上はそれで充分)というのが「工夫」
の正体だった訳ですね!
おかげさまで、夜眠れるようになりました^^
(理解誤解してましたら、また教えてください^^;)
投稿日時 - 2006-03-22 22:33:26
>もともと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 形式のエイリアスを格納するために別のディレクトリ エントリを使用します。
とあるようにディレクトリエントリ使い方を工夫することでロングファイルネームに対応したと言うことです。
投稿日時 - 2006-03-20 20:49:35
なるほど、「ディレクトリエントリ」という物の概念が今までよくわかって
いなかったのですが、FATを補佐するテーブル領域だと思ってよさそうです
ね?
#2の方が教えてくださった
http://www.geocities.co.jp/SiliconValley-PaloAlto/2038/fat.html
こちらの参考URLを見ると、セクタ番号の若い順にFAT,ディレクトリエントリ、
データ領域、となっているので少しわかってきました^^
・・・そうしますと、未来のVFATのことを考慮していないMS-DOSでデータ
を書きこんだフロッピー等をあとからVFATで使用すると、「二つめのディ
レクトリエントリ」格納領域が無くて困りそうですが、実際は大丈夫なの
はどんな工夫がされていることになりますでしょうか?
今まで「使えりゃそれでいいじゃん^^」としか思っていなかったのですが、
けっこうマイクロソフトが考えてくれていることは思いのほか親切だなあ
と感心しています。
投稿日時 - 2006-03-22 07:46:04
http://www002.upp.so-net.ne.jp/jsrc/pc-98/vfat.html
http://www.geocities.co.jp/SiliconValley-PaloAlto/2038/fat.html
等参照されてみてどうでしょうか?
投稿日時 - 2006-03-19 17:39:41
どうもありがとうございました。
ソートの結果というのはコンソール出力だけかと思っていたらディスクの
FATまで書き換えてしまうんですね!これには驚きました。
16進ダンプの見方がわからなくてもどかしいのですが、もともとFAT領域
というのは、かなり(VFAT情報がすっかり収まるほど)余裕をもって広く
確保されていた、という結論になりますでしょうか?
投稿日時 - 2006-03-20 15:07:05
こうなっているようです
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
投稿日時 - 2006-03-19 16:40:57
さっそくにどうもありがとうございます!
>(ディスクの無駄ですし)
そのとおりですよね!
ところで、参考URLを拝見したのですが、
「実際には VFAT は仮想的なレイヤであり、実際にディスクに記録されるときには FAT に変換される」
というくだりがあって大変興味を惹かれたのですが、
この説明文の意味するところはどういうことになるでしょうか?
MS-DOS時代に無駄な領域確保されていなかったにもかかわらず、FAT領域にVFATが収まってしまう、という意味が是非知りたいのです。
どうぞ引き続きまして宜しくお願いします。
投稿日時 - 2006-03-19 16:55:57
新着
注目ピックアップ