• ベストアンサー

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

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

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

  • ベストアンサー
  • 121CCagent
  • ベストアンサー率51% (14183/27649)
回答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
  • ベストアンサー率51% (14183/27649)
回答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
  • ベストアンサー率51% (14183/27649)
回答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
  • ベストアンサー率51% (14183/27649)
回答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

  • FAT16でフォーマットって!?

    ハードディスクのパーテーション領域を変更したのですが(CとDドライブの比率を変えてCドライブを大きくしたかった…)、FAT16にてハードディスクのCドライブをフォーマットするにはFDISKでパーテーション領域を設定したあとどうすればよいのでしょう? 設定した直後、MS-DOS画面上での領域情報ではシステム欄は「UNKNOWN」ですが、CもDドライブもフォーマットをするとどうしてもFAT32になってしまい、のちにパソコンについているメーカーのリカバリーCDでWin98をインストールしようとしても、途中でエラーになってしまい出来ません。 FAT32じゃ無理ですよねぇ。 無知なのにパーテーション領域変更している私で申し訳ないですf( ̄ー ̄;) Windowsの起動ディスクのFDにより、 Dドライブは「A:\>FORMAT D」コマンドでフォーマットしたら、FAT32になりました。 Cドライブは上記同様にするとFAT32になってしまったので、改めて、試しに 「A:\>FORMAT C:/s」コマンドでシステムディスクとしてフォーマット出来るか!?と思ってやってみましたが、 「システムファイルを読み込むにはメモリが足りません。フォーマットを中止しました」 となり何も出来ませんでした。 現在の領域情報はMS-DOS画面によると、 C:1  A  PRI DOS  4503バイト  UNKNOWN 79%         EXT DOS  1224バイト           21%  →ちなみにこちらのDドライブは論理MS-DOSでありFAT32になっている

  • FAT16のデータ領域の開始位置について

    FAT16では、ディスク内に(1)FAT領域、(2)ディレクトリエントリ領域、(3)データ領域というそれぞれの領域を持つと聞いています。 さらに「データ領域」への書き込み処理は「クラスタサイズ(例えば、512バイト)」の単位で行われているそうですが、このデータ領域への書き込みに関して疑問点があります。 複数のファイルを書いた場合、それぞれのファイルに対応するデータ領域の先頭アドレスは必ずクラスタサイズの整数倍になるのでしょうか?質問を言い換えれば、データ領域の1つのクラスタ内に複数のファイルのデータが混在することはあるのでしょうか?

  • MS-DOSについて

    コンピュターの知識取得に乗り遅れた年金受給者です。 MS-DOS(DOS/V)にはFAT16と、それ以外のOSがあります。WINDOWS95以後のMS-DOSは、それ以前のMS-DOSとは違うとされていますが、どう違うのでしょうか。 特に、WINDOWS3.1までのMS-DOSは基本MS-DOSとされFAT16ですし、対応している使用領域は2GBまでですが、WINDOWS95で使用されているMS-DOSもFAT16ながら使用領域は4GBですね。 どう違うのでしょうか。  皆さんの英知を誰か授けてください。宜しくお願いします。

  • FAT32にするには

    WinXPのディスクの管理では、FAT32は32Gまでしかフォーマットできないと思いますが。 何かソフトを使用すれば、FAT32で32G以上の領域をフォーマットすることが可能になるのでしょうか。可能ならソフト名を教えて下さい。

  • ハードディスクの領域解放について

    LINUXを入れて使っていた13Gのハードディスクを友人から譲り受 けWIN98起動ディスクのFDISKで領域を開放してフォーマットし直して, ブートディスクとして使おうとしましたが,領域の変更がききません。 友人は譲ってくれる前にWIN98でフォーマットして98が起動する状態に してくれましたが,エクスプローラーで見ると,3.48Gちょっとしか ありません。FDISKの画面では論理ドライブ(FAT32)の領域に当たりま す。拡張DOS領域は13Gあり,そのほかに基本DOS領域(FAT16)は24Mあっ て,Cドライブとなっているのはこの基本DOS領域だけで,残りはDド ライブになってしまっています。この13Gをウィンドウズで認識させる ため,FDSKで領域を開放したいのですが,Dにある論理ドライブの削除 を指示通りやっても削除しましたというメッセージの後で領域情報を見 ると削除できず元の通りに残っています。従って拡張DOS領域も,基本 DOS領域も削除できないというメッセージが出て,領域解放ができません。 フォーマットしようにも論理ドライブのみのフォーマットで使える容量は 3Gどまりです。どなたか対策をお教えください。よろしくお願いします。

  • FDISKで3領域を区切ったのですがCとDドライブしかできません

    NECのVALUESTAR NX VE35Dでシステムインストールディスク(起動ディスク)で領域を作成しました。8GBのうち基本MS-DOS領域を2MB、論理MS-DOS領域3MBを2つ作ろうとしました。不思議なことに、基本MSーDOS領域を作成した後、拡張MSーDOS領域を作成すると、Cドライブに1,2と表示されて、Dドライブに拡張MS-DOSが作成されないのです。その後、論理MS-DOS領域を作ったらDドライブに作成されました。 フォーマットの段階では、Cドライブの基本MS-DOS領域しかフォーマットされないのです。 Windowsをインストールしたあと、マイコンピュータでハードディスクの内容を見たのですが、Cドライブは2MBで使用サイズと空き領域の合計が合っているのですが、Dドライブは不思議なことに、なにもインストールしていないにもかかわらず、合計サイズ3GB、使用領域4GB、空き領域3GBと表示されているのです。 マニュアルにそってFDISKをしたのですが、どこか操作が違っていたのか、何か異常なのでしょうか。

  • FDISKで拡張領域に論理ドライブを作成できない

    FDISKで拡張領域をDに割り当てようとしているのですが、うまくいきません。 現在のハードディスクは C: 1 A PRI DOS 14316 FAT32   2  EXT DOS 12888 となっていて、「3.拡張MS-DOS領域内に論理MS-DOSドライブを作成」しようとすると、 論理ドライブは定義されていません。 拡張MS-DOS領域の使用可能な領域はすべて 論理ドライブに割り当てられています。 と表示されてできません。論理ドライブは定義されていないのに、すべて論理ドライブに割り当てられているというのがよく分からないのですが、どうしたら拡張領域をDドライブに割り当てられるのでしょうか? PCはSotecのS200で、元々ハードディスク C, Dがありました。Turbolinuxの動作試験版を拡張領域にインストールしようとしたのですがエラーが出てできなかったので、とりあえず元に戻そうと思っているのですが。WindowsからはCドライブだけが見えています。 よろしくお願いします。

  • ハードデイスクの初期化できません.

    ノートパソコンのハードデイスクの初期化をW98の起動デイスクでしているのですが前回ドライブ2にW98をインストールしたので,拡張MS-DOS領域内MS-DOSドライブ削除では、論理ドライブは、定義されていないとなっています。  拡張MS-DOSの削除では、論理ドライブがあるときは、拡張MS-DOS領域の削除できませんとなってます。基本MS-DOSの領域の削除では、ドライブ1の基本MS-DOS領域は削除できませんとなってます。 アクティブな領域の設定では、ドライブ1の起動できるただ1つの領域はすでに、アクティブになってますと答えてきます。 表示は、領域1 種類EXT.DOS 2996Mバイト  領域C:2 状態A 種類PRT.DOS  8Mバイト システムFAT12  総容量5726Mバイトと表示されてます。パーテイションの削除されません助けてください。

  • 40MBのハードディスクを二つに領域分割したい

    Gateway 1400XL のDドライヴを領域分割しましたが、それにともない以下のようなトラブルに遭遇しました。どなたかお知恵を下さい。(大事なファイルが消えちゃったとか、そういうレヴェルの問題ではありません。) <トラブルの概要> 購入時に慎重にハードディスクドライヴを二つ設定しました。主ドライブとして40GB、補助ドライヴとして40GMあります。どちらも 40GB UATA100 HDD という仕様です。 購入時に後者も正しく D:として40 GBが認識され、かつ機能していました。今日、これを「Gatewayオペレーティングシステム・バックアップCD」を使って fdisk コマンドで 領域を 50%(20ギガ)ずつに分けようとしました。(起動ディスクとして使っている C: については、まったく手を加えていません。また支障も出ていません。) 作業途上で、「領域情報を表示」の画面で、 領域 C:1 状態 A 種類PRI DOS 43959Mバイト FAT32 使用100% ディスクの総容量は 8025Mバイトです また 領域 D:1 状態  種類PRI DOS 43959Mバイト FAT32 使用100% ディスクの総容量は 8025Mバイトです と表示されました。 この時点ではあまり気にせずに、そのまま先に進み、領域を削除し、領域を作成し、という作業を2度繰り返したあと、領域をフォーマットし、確認すると 現在のハードディスク:2 領域 D:1 状態  種類PRI DOS 4016Mバイト FAT32 使用100% 2 状態  種類EXT DOS 4008Mバイト  使用100% ディスクの総容量は 8025Mバイトです <問い> 何故こうなるのでしょう。ハードディスク容量が8ギガ(5分の1)になってしまいました。あるいは認識上だけの問題ですか? はたして40ギガという容量が大きすぎて、20ギガへの領域分割は無理なのでしょうか?(fdisk のヴァージョンは Microsoft Windows 98 ハードディスクセットアッププログラム(c) Copyright Microsoft Corp. 1983-1998 とあります。) 現在、Windowsを再起動して「マイコンピュータ」から、構成を確認すると  ローカルディスク(C:) 42.9 GB  空き領域 41.0 GB  ローカルディスク(D:) 3.91 GB  空き領域 3.91 GB  ローカルディスク(C:) 3.90 GB  空き領域 3.90 GB と表示されます。つまり、パーティションを切ったことによって、元来40ギガあったはずのハードディスクが 3.9+3.9=7.8ギガになってしまった(と認識してしまう)のです。 このままでは気持ち悪くてDおよびEドライヴを使えません。 よろしくご教示ください。

  • NTFSとFAT32の違いおよび、NTFSの圧縮について

    FAT32でテレビ録画用PCにしていたら、ファイルが壊れてしまって今は、NTFSフォーマットにしています。やはり、NTFSフォーマットのほうがファイルは壊れにくいのでしょうか? また、ハードディスクのプロパティに、 「ドライブを圧縮してディスク領域を空ける」 といチェックがあるのですが、コレはどの程度効果があるものでしょうか?そして、コレにチェックして圧縮した場合、不利益、利益となる点はありますか?例えば、OSの交換とか、HDDの増設とか・・・ また、ハードディスクが壊れた際、救出というのは、困難になるのでしょうか? 因みに、以前は、FAT32でしたので、Ontrackや、DOSコマンド、Win2000の上書きインストールなどで何とか救出できました。 NTFSに関しても、長所はたくさん書いてあるのですが、短所を書いたHPがいまいち見つからないので、分かる方教えてください。よろしくお願いいたします。