加藤(大阪)です。 森山さんに便乗して、同じく少しだけ。 Sun, 6 Jun 2004 14:28:35 +0900 付 "K.Moriyama" <forest@xxxxxxxxxxxxx> さんのメールより: > たしか MS-DOS Ver 2.11までが FAT12 だったかと...この後 Ver 3.x > になり、FATも16になったように思います。 自分もそう記憶しています。 古い 128Mb の MO ディスクが FAT12 フォーマットで、この辺りが容量的な限界 だったようです。(ちなみに当事の MO いまだに SCSI で mount 可能です) > > FAT はそもそも最初からディレクトリエントリ(クラスタ接続情報 > > と呼ぶのが正しいかも)が 32bit あったのですが、最初はそのうちの > > 12bit しか使ってなかったのです > > これは知らなかった...どうりで、12 > 16 > 32 と簡単に拡張 > できたハズだ... これはちょっと違うような・・・。 FAT(File Alocation Table)とディレクトリエントリ(ディレクトリスロットとも いいます)は別物で、強いて言えばクラスタエントリかな。本に例えれば前者は 索引、後者は目次(かえってまわりくどい?)相当です。 FAT は長谷さんもおっしゃってる「クラスタ接続情報」かつ、クラスタ使用状況 の一覧表(Table)であり、ディレクトリエントリはファイル、ディレクトリの登 録情報で、ファイル名等と共に先頭クラスタ番号が書かれています。 ファイルが呼び出されると、ディレクトリエントリから名前を検索し先頭クラス タ番号を得て FAT を参照しファイル実体の在処を確定して呼び出すという二段 構えのしくみになっています。 又、FAT12 では FAT 内のクラスタエントリは 32bit ではなく、文字通り 12bit で、3byte = 24bit をふたつのエントリで別け合うというヤヤコシイことになっ ていたと思います。 32 つながりで言うと、ディレクトリエントリのサイズは 32byteで(この事は長 谷さん御指摘のサイトの DIRENT 構造体のサイズそのものですね)、ロングファ イルネームは 32byte 中 FAT12では未使用の部分を利用し、ディレクトリエント リを幾つか繋げて実現してるようです。 この内二つ目以降のエントリは、MS-DOS 等ロングファイルネーム未対応の OS からは未使用(或はシステム予約)エントリにみえ、互換性を実現しているのです が、一部マイナー OS ではこれがトラブルの原因になったりもしてました。 # どこが「少しだけ」やねん!> オレ # 多分 32 トリビアぐらい・・・。 -- 加藤 雅 <mkato@xxxxxxxxxxxxx> http://add10.hp.infoseek.co.jp/rox/