| 開発者 | マイクロソフト、SCP、IBM、コンパック、デジタルリサーチ、ノベル、カルデラ |
|---|---|
| フルネーム | ファイル アロケーション テーブル: FAT12 (12 ビット バージョン)、 FAT16 (16 ビット バージョン)、 FAT32 (28 ビットを使用する 32 ビット バージョン)、 exFAT (64 ビット バージョン) |
| 紹介された | 1977 (スタンドアロン ディスク BASIC-80 ) FAT12: 1980 年 8 月 (SCP QDOS ) FAT16: 1984 年 8 月 (IBM PC DOS 3.0) FAT16B: 1987 年 11 月 ( Compaq MS-DOS 3.31) FAT32: 1996 年 8 月 ( Windows 95 OSR2 ) exFAT: 2006 年 11 月 ( Windows Embedded CE 6.0 ) |
| パーティションID | MBR / EBR : FAT12 : ea FAT16 : ea FAT32 : ea exFAT : ea BDP : 0x010x040x060x0E0x0B0x0C0x07EBD0A0A2-B9E5-443387C0-68B6B72699C7 |
| 構造 | |
| ディレクトリの内容 | テーブル |
| ファイルの割り当て | リンクリスト |
| 不良ブロック | クラスターのタグ付け |
| 制限 | |
| 最大ボリュームサイズ | FAT12: 32 MB ( 64 KBクラスターの場合は256 MB ) FAT16: 2 GB ( 64 KBクラスターの場合は 4 GB ) FAT32: 2 TB ( 4 KBセクターの場合は16 TB ) |
| 最大ファイルサイズ | FAT16BおよびFAT32では4,294,967,295バイト(4 GB - 1) [1] |
| 最大ファイル数 | FAT12: 8 KBクラスターの場合 4,068 FAT16: 32 KBクラスター の場合 65,460 FAT32: 32 KBクラスターの場合 268,173,300 |
| ファイル名の最大長 | 8.3 ファイル名、またはLFN を使用する場合は 255 UCS-2文字 |
| 特徴 | |
| 記録された日付 | 変更日時、作成日時(DOS 7.0以降のみ)、アクセス日時(ACCDATEが有効になっている場合のみ使用可能)、[2]削除日時(DELWATCH 2のみ) |
| 日付範囲 | 1980-01-01から2099-12-31 ( 2107-12-31 ) |
| 日付解決 | 最終更新時間は 2 秒、 作成時間は 10 ミリ秒、 アクセス日は 1 日、 削除時間は 2 秒 |
| フォーク | ネイティブではない |
| 属性 | 読み取り専用、非表示、システム、ボリューム、ディレクトリ、アーカイブ |
| ファイルシステムの 権限 | FAT12/FAT16: DR-DOS、PalmDOS、Novell DOS、OpenDOS、FlexOS、4680 OS、4690 OS、Concurrent DOS、Multiuser DOS、System Manager、REAL/32でのみ、読み取り、書き込み、実行、削除のファイル、ディレクトリ、ボリューム アクセス権 (実行権限は FlexOS、4680 OS、4690 OS でのみ、個別のファイル/ディレクトリ パスワードは FlexOS、4680 OS、4690 OS では不可、マルチユーザー セキュリティがロードされている場合のみ、ワールド/グループ/所有者権限クラス) FAT32: 部分的、DR-DOS、REAL/32、4690 OS でのみ |
| 透過的な 圧縮 | FAT12/FAT16: ボリュームごと、SuperStor、Stacker、DoubleSpace、DriveSpace FAT32: いいえ |
| 透過的な 暗号化 | FAT12/FAT16: DR-DOSのみボリューム単位 FAT32: いいえ |
FATファイルシステムは、MS-DOSおよびWindows 9xファミリのオペレーティングシステムで使用されるファイルシステムです。[3]モバイルデバイスや組み込みシステムでも引き続き使用されており、1981年から現在までのほぼすべての種類と年齢のコンピューターとデバイス間のデータ交換に適したファイルシステムです。
構造
FAT ファイル システムは 4 つの領域で構成されます。
FAT は、ヘッダー内のすべてのエントリ (明示的に記載されている場合、Atari ST ブートセクターの一部のエントリを除く) と FAT にリトルエンディアン形式を使用します。 [5]クラスターの数に必要な数よりも多くの FAT セクターを割り当てることができます。各 FAT コピーの最後のセクターの末尾は、対応するクラスターがない場合には未使用になることがあります。セクターの合計数 (ブートレコードに記載されている) は、データ (クラスター × クラスターあたりのセクター数)、FAT (FAT の数 × FAT あたりのセクター数)、ルートディレクトリ (FAT32 の場合は該当なし)、およびブートセクターを含む隠しセクターで使用されるセクター数よりも大きくなることがあります。この場合、ボリュームの末尾に未使用のセクターが生じます。パーティションにファイルシステムが占めるセクターの合計数よりも多くのセクターが含まれている場合も、ボリュームの後のパーティションの末尾に未使用のセクターが生じます。
予約セクター領域
ブートセクター
フロッピー ディスクなどのパーティション化されていないストレージ デバイスでは、ブート セクター( VBR ) は最初のセクター (物理 CHS アドレス 0/0/1 または LBA アドレス 0 の論理セクター 0) です。ハード ディスクなどのパーティション化されたストレージ デバイスでは、ブート セクターは、デバイスのパーティション テーブルで指定されているパーティションの最初のセクターです。
BIOS パラメータ ブロック
DOS 3.0 BPB:
以下の拡張機能はDOS 3.0以降に文書化されていましたが、DOS 2.11のいくつかのバージョンですでにサポートされていました。[28] MS-DOS 3.10は依然としてDOS 2.0形式をサポートしていましたが、DOS 3.0形式も使用できました。
DOS 3.2 BPB:
公式には、MS-DOS 3.20 は依然として DOS 3.0 形式を使用していましたが、SYSすでにFORMAT6 バイト長い形式をサポートするように適応されていました (すべてのエントリが使用されるわけではありません)。
DOS 3.31 BPB:
DOS 3.31 で正式に導入され、DOS 3.2 では使用されていませんが、一部の DOS 3.2 ユーティリティは既にこの新しい形式を認識するように設計されています。公式ドキュメントでは、オフセット0x013の論理セクター エントリがゼロの場合にのみ、これらの値を信頼することを推奨しています。
ボリュームのクラスタ番号をCN論理セクター番号に変換する簡単な式は次のとおりですLSN: [24] [25] [26]
- 予約済みセクター数がオフセット0x00Eに格納され、 FAT 数がオフセット0x010に格納され、 FAT あたりのセクター数がオフセット0x016 (FAT12/FAT16) または0x024 (FAT32) に格納され、ルート ディレクトリ エントリがオフセット0x011に格納され、セクター サイズがオフセット0x00Bに格納され、整数に切り上げられる (1 回) ことを確認します。
SSA=RSC+FN×SF+ceil((32×RDE)/SS)RSCFNSFRDESSceil(x) - クラスタあたりのセクターがオフセット0x00Dに格納されている場所を決定します。
LSN=SSA+(CN−2)×SCSC
パーティション化されていないメディアでは、ボリュームの隠しセクターの数はゼロであるため、ボリュームの論理セクター サイズが基礎となるメディアの物理セクター サイズと同じである限り、アドレスLSNとアドレスは同じになります。これらの条件下では、アドレスとLBA間の変換も簡単です。
CHSLSNs
LSN=SPT×(HN+(NOS×TN))+SN−1ここで、トラックあたりのセクター数はオフセット0x018SPTに格納され、サイド数はオフセット0x01Aに格納されます。トラック番号、ヘッド番号、セクター番号はシリンダヘッドセクターに対応します。この式により、既知の CHS からLBAへの変換が示されます。
NOSTNHNSN
拡張 BIOS パラメータ ブロック
OS/2 1.0 および DOS 4.0 以降、FAT12 および FAT16 で使用される追加の構造。拡張 BIOS パラメータ ブロック(EBPB)とも呼ばれます(セクター オフセット0x024より下のバイトは、 DOS 3.31 BPB と同じです)。
FAT32 拡張 BIOS パラメータ ブロック
本質的に、FAT32 は 28 バイトを EBPB に挿入し、その後に残りの 26 (または場合によっては 7 バイトのみ) の EBPB バイトを挿入します (FAT12 および FAT16 の場合、上記で示したとおり)。Microsoft および IBM オペレーティング システムは、ボリュームで使用される FAT ファイル システムのタイプを、使用されている BPB 形式や指定されたファイル システム タイプではなく、クラスターの数のみで決定します。つまり、技術的には、FAT12 および FAT16 ボリュームにも「FAT32 EBPB」を使用することができ、小さな FAT32 ボリュームには DOS 4.0 EBPB を使用できます。このようなボリュームは、Windows オペレーティング システムによって奇妙な条件下で作成されることが判明したため、[nb 6]オペレーティング システムは、これらのハイブリッド形式に対応できるように準備する必要があります。
例外
3.2 より前のバージョンの DOS では、BPB が存在する場合でも、FAT12 ディスケット フォーマットを決定するために、BPB 内のメディア記述子バイトまたは最初の FAT のクラスター 0 内の FAT ID バイトに全面的または部分的に依存していました。見つかった FAT ID と検出されたドライブ タイプに応じて、BPB に実際に格納されている値を使用する代わりに、次の BPB プロトタイプのいずれかをデフォルトで使用します。[nb 1]
もともと、FAT ID はビットフラグとして意図されていたもので、ビット 2 をクリアして 80 トラック (40 トラックではなく) フォーマットを示し、ビット 1 をクリアして 9 セクタ (8 セクタではなく) フォーマットを示し、ビット 0 をクリアして片面 (両面ではなく) フォーマットを示す以外はすべてのビットが設定されていましたが、[7]この方式はすべての OEM で採用されたわけではなく、ハードディスクと高密度フォーマットの導入により廃止されました。また、86-DOSと MS-DOS でサポートされているさまざまな 8 インチ フォーマットは、この方式に適合しません。
マイクロソフトは、FAT ID 0xFEの2つの8インチフォーマットを区別するために、単密度アドレスマークの読み取りを試みることを推奨しています。これでエラーが発生した場合、メディアは倍密度である必要があります。[23]
この表には、86-DOS でサポートされている互換性のない 8 インチおよび 5.25 インチFAT12 フロッピー フォーマットがいくつか記載されていません。これらのフォーマットは、ディレクトリ エントリのサイズ (16 バイトと 32 バイト) または予約済みセクター領域の範囲 (複数のトラック全体と 1 つの論理セクターのみ) が異なります。
Apricot PCおよびF1e [34]用のMS-DOSで使用された片面315KBのFAT12形式の実装では、そのコンピュータの非IBM互換BIOSに対応するために、異なるブートセクターレイアウトが採用されていました。ジャンプ命令とOEM名は省略され、MS-DOS BPBパラメータ(標準ブートセクターのオフセット0x00B - 0x017 )はオフセット0x050に配置されていました。Portable 、 F1、PC duo、Xi FDは、代わりに非標準の両面720KBのFAT12形式をサポートしていました。[34]ブートセクターレイアウトとメディアIDの違いにより、これらの形式は他の多くのオペレーティングシステムと互換性がありませんでした。これらの形式のジオメトリパラメータは次のとおりです。
- 315 KB: 論理セクターあたりのバイト数: 512 バイト、クラスターあたりの論理セクター数: 1、予約済み論理セクター数: 1、FAT 数: 2、ルート ディレクトリ エントリ数: 128、合計論理セクター数: 630、FAT ID: 0xFC、FAT あたりの論理セクター数: 2、トラックあたりの物理セクター数: 9、ヘッド数: 1。[34] [35]
- 720 KB: 論理セクターあたりのバイト数: 512 バイト、クラスターあたりの論理セクター数: 2、予約済み論理セクター数: 1、FAT 数: 2、ルートディレクトリエントリ数: 176、論理セクター合計数: 1440、FAT ID: 0xFE、FAT あたりの論理セクター数: 3、トラックあたりの物理セクター数: 9、ヘッド数: 2。[34]
Apricot MS-DOS の後のバージョンでは、Apricot ブート セクタに加えて、標準ブート セクタを持つディスクの読み取りと書き込みが可能になりました。これらの形式は、 Apricot ACT シリーズのDOS Plus 2.1e/g でもサポートされていました。
BBC Master 512の DOS Plus 版は、80 トラック、両面、倍密度の 5.25 インチ ドライブで 2 つの FAT12 フォーマットをサポートしていましたが、従来のブート セクターはまったく使用されていませんでした。800 KB データ ディスクはブート セクターを省略し、FAT の単一のコピーで開始しました。[35]論理セクター 0 の再配置された FAT の最初のバイトは、ディスクの容量を決定するために使用されました。640 KB ブート ディスクは、ブート ローダーを含むミニチュアADFSファイル システムで開始し、その後に単一の FAT が続きました。[35] [36]また、640 KB フォーマットは、物理 CHS セクター番号が 0 (一般的な 1 ではなく) から始まり、セクターがセクター トラック ヘッド (一般的なセクター ヘッド トラックではなく) の順序で増加するという点で異なっていました。[36] FAT は次のトラックの先頭から開始しました。これらの違いにより、これらのフォーマットは他のオペレーティング システムでは認識されません。これらのフォーマットのジオメトリ パラメーターは、形式は次のとおりです:
- 800 KB: 論理セクターあたりのバイト数: 1024 バイト、クラスターあたりの論理セクター数: 1、予約済み論理セクター数: 0、FAT 数: 1、ルート ディレクトリ エントリ数: 192、合計論理セクター数: 800、FAT ID: 0xFD、FAT あたりの論理セクター数: 2、トラックあたりの物理セクター数: 5、ヘッド数: 2。[35] [36]
- 640 KB: 論理セクターあたりのバイト数: 256 バイト、クラスターあたりの論理セクター数: 8、予約済み論理セクター数: 16、FAT 数: 1、ルート ディレクトリ エントリ数: 112、合計論理セクター数: 2560、FAT ID: 0xFF、FAT あたりの論理セクター数: 2、トラックあたりの物理セクター数: 16、ヘッド数: 2。[35] [36]
Master 512 用の DOS Plus は、論理セクター 1 の FAT の最初のバイトを使用して容量を判別し、 180 KBまたは360 KBにフォーマットされた標準 PC ディスクにもアクセスできました。
DEC Rainbow 100 (すべてのバリエーション) は、80 トラック、片面、4 倍密度 5.25 インチ ドライブで 1 つの FAT12 フォーマットをサポートしていました。最初の 2 つのトラックはブート ローダー用に予約されていましたが、MBR も BPB も含まれていませんでした (MS-DOS では、代わりに静的なメモリ内 BPB が使用されていました)。ブート セクター (トラック 0、サイド 0、セクター 1) は、DI 0xF3で始まる Z80 コードでした。8088 ブートストラップは Z80 によってロードされました。トラック 1、サイド 0、セクター 2 は、メディア/FAT ID バイト0xFAで始まります。フォーマットされていないディスクでは、代わりに0xE5 が使用されます。ファイル システムは、トラック 2、サイド 0、セクター 1 から始まります。ルート ディレクトリには、FAT のコピーが 2 つと、96 のエントリがあります。さらに、2:1 セクター インターリーブを実現する物理トラックから論理トラックへのマッピングがあります。ディスクは、物理セクターでフォーマットされました。予約トラックの後の各トラックには1から10の番号が付けられた順番で保存されるが、論理セクター1から10は物理セクター1、6、2、7、3、8、4、9、5、10に保存される。[37]
FS情報セクター
「FS情報セクター」は、特定の操作(特に空き容量の取得)のアクセス時間を高速化するためにFAT32 [38]で導入されました。これは、FAT32 EBPBブートレコードで指定された論理セクター番号の0x030の位置(通常はブートレコード自体の直後の論理セクター1)にあります。
すべてのオペレーティング システムでこのセクターが更新または使用されるわけではないため、セクターのデータは古く、現在のメディアの内容を反映していない可能性があります。また、たとえ更新または使用されたとしても、ボリュームが適切にアンマウントされずにメディアが取り出されたときや停電後には、内容は有効ではありません。したがって、オペレーティング システムは、まず、クラスター 1 の FAT エントリまたはオフセット 0x041 の FAT32 EBPB にあるボリュームのオプションのシャットダウン ステータス ビットフラグを検査し、これらのビットフラグがボリュームが以前に適切にアンマウントされていないことを示している場合は、FS 情報セクターに格納されているデータを無視する必要があります。これにより、最初の空き領域クエリまたはデータ クラスター割り当ての速度が低下する可能性がある以外、問題は発生しません。断片化を参照してください。
このセクターがFAT32ボリューム上に存在する場合、許容される最小論理セクターサイズは512バイトですが、そうでない場合は128バイトになります。一部のFAT32実装では、オフセット0x030のエントリに0xFFFF [ 19 ] (または0x0000 )の値を指定することにより、FS情報セクターをオプションにすることで、Microsoftの仕様をわずかに変更しています。
FAT領域
ファイルアロケーションテーブル
クラスターマップ
ボリュームのデータ領域は、同じサイズのクラスター(連続した小さなブロック)に分割されます。クラスターのサイズは、使用されているFATファイルシステムの種類とドライブのサイズによって異なりますが、一般的なクラスターのサイズは2〜32 KiBです。[39]
各ファイルは、そのサイズに応じて 1 つ以上のクラスターを占有する場合があります。したがって、ファイルはクラスターのチェーン (単一リンク リストと呼ばれる) によって表されます。これらのクラスターは、必ずしもディスクの表面上で互いに隣接して保存されるわけではなく、データ領域全体で断片化されていることがよくあります。
FAT ファイル システムの各バージョンでは、FAT エントリに異なるサイズを使用します。数値が小さいほど FAT は小さくなりますが、大きなクラスターに割り当てる必要があるため、大きなパーティションのスペースが無駄になります。
FAT12ファイル システムは、FAT エントリごとに 12 ビットを使用するため、2 つのエントリは 3 バイトにまたがります。これは一貫してリトル エンディアンです。つまり、これらの 3 バイトを 1 つのリトル エンディアンの 24 ビット数と見なすと、最下位 12 ビットは最初のエントリ (例: クラスター 0) を表し、最上位 12 ビットは 2 番目のエントリ (例: クラスター 1) を表します。つまり、行の最初のクラスターの下位 8 ビットは最初のバイトに格納され、上位 4 ビットは 2 番目のバイトの下位ニブルに格納されます。一方、行の次のクラスターの下位 4 ビットは 2 番目のバイトの上位ニブルに格納され、その上位 8 ビットは 3 番目のバイトに格納されます。
- FAT ID / エンディアン マーカー (予約済みクラスター #0 内)。0xF0 はパーティション化されていないスーパーフロッピードライブ上のボリュームを示します(パーティション化されたディスクの場合は 0xF8 である必要があります)
- チェーン終了インジケーター / メンテナンス フラグ (予約済みクラスター #1 内)
- 断片化されていないファイルの 2 番目のチェーン (7 つのクラスター) (ここでは #2、#3、#4、#5、#6、#7、#8)
- 断片化され、おそらく大きくなったファイルの 3 番目のチェーン (7 つのクラスター) (ここでは、#9、#A、#14、#15、#16、#19、#1A)
- 断片化されていない、切り捨てられている可能性のあるファイルの 4 番目のチェーン (7 つのクラスター) (ここでは、#B、#C、#D、#E、#F、#10、#11)
- 空のクラスター (ここでは #12、#1B、#1C、#1E、#1F)
- サブディレクトリの 5 番目のチェーン (1 つのクラスター) (ここでは #13)
- 不良クラスター (3 つのクラスター) (ここでは #17、#18、#1D)
FAT16ファイル システムでは、FAT エントリごとに 16 ビットが使用されるため、1 つのエントリはリトルエンディアン バイト順で 2 バイトにまたがります。
FAT32ファイル システムでは、FAT エントリごとに 32 ビットを使用するため、1 つのエントリはリトルエンディアンのバイト順で 4 バイトに及びます。各エントリの上位 4 ビットは他の目的のために予約されており、フォーマット中にクリアされ、それ以外の場合は変更しないでください。エントリを 28 ビットのクラスター アドレスとして解釈する前に、これらのビットをマスクする必要があります。
- FAT32 BPB のエントリによってポイントされるルート ディレクトリの最初のチェーン (1 つのクラスター) (ここでは #2)
- 断片化されていないファイルの 2 番目のチェーン (6 つのクラスター) (ここでは #3、#4、#5、#6、#7、#8)
ファイルアロケーション テーブル( FAT ) は、予約済みセクター領域の直後に続く連続したセクター数です。これは、ボリューム上の各クラスターにマップされるエントリのリストを表します。各エントリには、次の 4 つのうちのいずれかが記録されます。
- チェーン内の次のクラスターのクラスター番号
- チェーンの終了を示す特別なクラスターチェーン終了( EOC ) エントリ
- 不良クラスタをマークするための特別なエントリ
- クラスターが未使用であることを示すゼロ
非常に初期のバージョンの DOS がファイル システムを認識するには、システムがボリュームからブートされているか、ボリュームの FAT がボリュームの 2 番目のセクター (物理 CHS アドレス 0/0/2 または LBA アドレス 1 の論理セクター 1)、つまりブート セクターの直後から始まっている必要があります。オペレーティング システムは、有効な BPB が見つからない DOS 1.0-1.1 FAT ディスケットの FAT のクラスター 0 エントリで FAT ID を見つけるために、FAT のこの固定された場所を想定しています。
特別エントリー
FAT の最初の 2 つのエントリには特別な値が格納されます。
最初のエントリ (FAT のクラスター 0) には、MS-DOS 1.20およびPC DOS 1.1以降の FAT ID (許可される値は0xF0 - 0xFF 、 0xF1 - 0xF7は予約済み) がビット 7 ~ 0 に保持され、これは DOS 2.0 以降のブート セクターの BPB (オフセット0x015 ) にもコピーされます。このエントリの残りの 4 ビット (FAT12 の場合)、8 ビット (FAT16 の場合)、または 20 ビット (FAT32 の場合、MSB の 4 ビットはゼロ) は常に 1 です。これらの値は、エントリがゼロの値を保持するすべてのデータ クラスターの「トラップ オール」チェーン終了マーカーとしても機能するように配置されています。さらに、 0xFF (および0x00 )以外の FAT ID の場合、ファイル システム ドライバーが使用する正しいニブルとバイト順序を判別できますが、FAT ファイル システムでは正式にはリトルエンディアン表現のみが使用され、代わりにビッグエンディアン値を使用するバリアントの実装は知られていません。86 -DOS 0.42からMS-DOS 1.14までは、FAT ID の代わりにハードワイヤード ドライブ プロファイルが使用されていましたが、このバイトは、86-DOS 0.42 より前に使用されていた 32 バイトまたは 16 バイトのディレクトリ エントリでフォーマットされたメディアを区別するために使用されていました。
2 番目のエントリ (FAT のクラスター 1) には、フォーマッタによって使用されるクラスター チェーンの終了マーカーが名目上格納されますが、通常は0xFFF / 0xFFFF / 0x0FFFFFFFが常に保持されます。つまり、FAT32 ボリュームのビット 31 ~ 28 を除き、これらのビットは通常常に設定されます。ただし、一部の Microsoft オペレーティング システムでは、ボリュームが実行中のオペレーティング システムを保持するボリュームではない場合にこれらのビットが設定されます (つまり、ここでは0x0FFFFFFFではなく0xFFFFFFFFを使用します)。[40](代替のチェーン終了マーカーと組み合わせて、最下位ビット 2-0 は、許容される最小のチェーン終了マーカー0xFF8 / 0xFFF8 / 0x?FFFFFF8に対してゼロになることがあります。0xFF0 / 0xFFF0 / 0x?FFFFFF0以上のクラスターは正式に予約されているため、ビット 3 も予約する必要があります。これらのビットのいずれかが設定されていない場合、一部のオペレーティングシステムでは一部のボリュームをマウントできない場合があるため、デフォルトのチェーン終了マーカーは変更しないでください。)DOS 1 および 2 では、エントリは将来の使用のために予約済みとして文書化されていました。
DOS 7.1 以降、このクラスター エントリの最上位 2 ビットには、FAT16 および FAT32 の現在のボリューム状態を表す 2 つのオプションのビットフラグが保持される可能性がありますが、FAT12 ボリュームでは保持されません。これらのビットフラグはすべてのオペレーティング システムでサポートされているわけではありませんが、この機能をサポートしているオペレーティング システムでは、シャットダウン時にこれらのビットが設定され、起動時に最上位ビットがクリアされます。ボリュームのマウント時に
ビット 15 (FAT16 の場合) またはビット 27 (FAT32 の場合) [41]が設定されていない場合、ボリュームはシャットダウンまたはイジェクトの前に適切にアンマウントされておらず、不明な、おそらく「ダーティ」な状態になっています。 [27] FAT32 ボリュームでは、FS 情報セクターに古いデータが保持されている可能性があるため、使用しないでください。オペレーティング システムは通常、次の起動時にSCANDISKまたはCHKDSK を実行し[nb 9] [41] (リムーバブル メディアの挿入時ではありません)、ボリュームの整合性を確保し、場合によっては再構築します。
ビット 14 (FAT16 の場合) またはビット 26 (FAT32 の場合) [41]がクリアされている場合、オペレーティング システムは起動時にディスク I/O エラーに遭遇しており、[41]不良セクタの兆候の可能性があります。この拡張機能を認識するオペレーティング システムは、これを次の起動時に表面スキャン ( SCANDISK ) を実行することを推奨するものと解釈します。 [27] [41] (同様のビットフラグ セットが、オフセット0x1Aの FAT12/FAT16 EBPB またはオフセット0x36の FAT32 EBPBに存在します。クラスター 1 エントリは、ボリュームをマウントするとファイル システム ドライバーからアクセスできますが、EBPB エントリはボリュームがマウントされていないときでも使用できるため、ディスク ブロック デバイス ドライバーやパーティション分割ツールで簡単に使用できます。)
BPB 内の FAT の数が 2 に設定されていない場合、最初の FAT (クラスター 1) 内の 2 番目のクラスター エントリも、 TFAT 対応オペレーティング システムのTFATボリュームの状態を反映する可能性があります。その FAT 内のクラスター 1 エントリの値が 0 である場合、これは 2 番目の FAT が最後の既知の有効なトランザクション状態を表し、最初の FAT にコピーする必要があることを示している可能性があります。一方、すべてのビットが設定されている場合は、最初の FAT が 2 番目の FAT にコピーされる必要があります。
非標準の FAT12/FAT16 実装の中には、可変サイズのルート ディレクトリ (通常は 2 [33] ) の開始クラスタを格納するためにクラスタ 1 エントリを使用するものがあります。これは、BPB 内のルート ディレクトリ エントリの数が 0 の値を保持し、FAT32 EBPB が見つからない (オフセット0x042に署名0x29または0x28がない) 場合に発生する可能性があります。 [ 20 ]ただし、この拡張は、クラスタ 1 エントリの他の使用法と競合するため、主流のオペレーティング システムではサポートされていません。この拡張が0xFEF未満の FAT12 および0x3FEF未満のクラスタと 2 つの FAT を持つ FAT16 ボリュームにのみ許可されている場合、ほとんどの競合を排除できます。
最初の2つのFATエントリには特別な値が格納されているため、データクラスター0または1は存在しません。最初のデータクラスター(FAT12/FAT16の場合はルートディレクトリの後)はクラスター2であり、[33]データ領域の先頭を示します。
クラスター値
FATエントリ値:
FAT32 は、クラスター番号に 28 ビットを使用します。32 ビット FAT エントリの残りの 4 ビットは通常 0 ですが、予約済みなので変更しないでください。標準準拠の FAT32 ファイル システム ドライバーまたはメンテナンス ツールは、上位 4 ビットが 0 であることを前提としてはなりません。また、将来これらのビットが他の目的に使用される可能性がある拡張に対応するために、クラスター番号を評価する前にこれらのビットを削除する必要があります。新しいクラスターを割り当てるときにファイル システム ドライバーによってこれらのビットがクリアされてはなりませんが、再フォーマット中にクリアする必要があります。
ルートディレクトリ領域
FAT12 および FAT16 ファイル システムのルート ディレクトリ テーブルは、特別なルート ディレクトリ領域の場所を占有します。
データ領域
FAT12 および FAT16 ファイル システムのルート ディレクトリ テーブルは特別なルート ディレクトリ領域の場所を占めますが、それ以外のすべてのディレクトリ テーブルはデータ領域に保存されます。データ領域に保存されるディレクトリの実際のエントリ数は、FAT のチェーンに別のクラスターを追加することで増加します。
ディレクトリテーブル
ディレクトリテーブルは、ディレクトリ(フォルダとも呼ばれる)を表す特別な種類のファイルです。86 -DOS 0.42以降、[46]各ファイルまたは (MS-DOS 1.40 および PC DOS 2.0 以降) その中に格納されているサブディレクトリは、テーブル内の 32 バイトのエントリで表されます。各エントリには、名前、拡張子、属性 (アーカイブ、ディレクトリ、隠し、読み取り専用、システム、ボリューム)、ファイル/ディレクトリのデータの最初のクラスターのアドレス、ファイル/ディレクトリのサイズ、日付[46]および (PC DOS 1.1 以降) 最終更新時刻が記録されます。86-DOS の以前のバージョンでは、16 バイトのディレクトリ エントリのみが使用され、16 MB を超えるファイルはサポートされず、最終更新時刻もサポートされませんでした。[46]
FATファイルシステム自体は、サブディレクトリを割り当てるために利用できる空きクラスタがある限り、サブディレクトリツリーの深さに制限を課しませんが、MS-DOS/PC DOSの内部現在のディレクトリ構造(CDS)は、ディレクトリの絶対パスを66文字(ドライブ文字を含むが、NULバイト区切り文字は除く)に制限します。[24] [25] [26]そのため、サポートされるサブディレクトリの最大深さは、いずれか早い方の32に制限されます。Concurrent DOS、Multiuser DOS、およびDR DOS 3.31から6.0(1992-11アップデートを含むまで)は、作業ディレクトリへの絶対パスを内部に格納しないため、この制限は表示されません。[47]同じことがAtari GEMDOSにも当てはまりますが、Atari Desktopは8レベルを超えるサブディレクトリをサポートしません。この拡張機能を認識するほとんどのアプリケーションは、少なくとも127バイトまでのパスをサポートします。 FlexOS、4680 OS、4690 OSも最大127バイトの長さをサポートしており、深さは60レベルまで可能です。[48] PalmDOS、DR DOS 6.0(BDOS 7.1以降)、Novell DOS、OpenDOSはMS-DOS互換のCDSを採用しているため、MS-DOS/PC DOSと同じ長さ制限があります。
各エントリの前には、VFAT ロング ファイル名 (LFN) をサポートするために「偽のエントリ」を付けることができます。詳細は下記を参照してください。
DOS の短いファイル名に使用できる文字は次のとおりです。
- 大文字
A–Z - 数字
0–9 - スペース (ただし、ベース名または拡張子の末尾のスペースはパディングとみなされ、ファイル名の一部とはみなされません。また、スペースを含むファイル名は、適切なエスケープ システムがなかったため、Windows 95 より前の DOS コマンド ラインでは簡単に使用できませんでした)。もう 1 つの例外は、DR-DOS の内部コマンド
MKDIR/MDおよびRMDIR/ですRD。これらは単一の引数を受け入れるため、スペースを入力できます。 ! # $ % & ' ( ) - @ ^ _ ` { } ~- 128~228文字目
- 230~255文字目
次のASCII文字は除外されます。
" * / : < > ? \ |
Windows/MS-DOSにはシェルエスケープ文字がありません+ , . ; = [ ]
長いファイル名のみ許可されます- 小文字
a–z
として保存されますA–Z; 長いファイル名で使用できます - 制御文字 0~31
- 文字 127 (DEL)
文字 229 ( 0xE5 ) は、フリー エントリ マーカーとして使用されるため、DOS 1 および 2 ではファイル名の最初の文字として使用できませんでした。DOS 3.0 以降では、この制限を回避するための特別なケースが追加されました。
次の追加文字は Atari の GEMDOS では許可されていますが、MS-DOS/PC DOS との互換性のためには使用しないでください。
" + , ; < = > [ ] |
;DR DOS 3.31 以降、PalmDOS、Novell DOS、OpenDOS、Concurrent DOS、Multiuser DOS、System Manager、および REAL/32 では、ファイル名にセミコロン ( ) を使用しないでください。これは、ファイルとディレクトリのパスワードを指定する構文 " ...\DIRSPEC.EXT;DIRPWD\FILESPEC.EXT;FILEPWD" と競合する可能性があるためです。オペレーティングシステムは、ファイル名をディスクに保存する前に、1 つのセミコロン[47] (DR-DOS 7.02 以降では 2 つも) と保留中のパスワードを削除します。(コマンドプロセッサ4DOS は、インクルードリストにセミコロンを使用し、ワイルドカードをサポートするコマンドでパスワード保護されたファイルの場合はセミコロンを 2 つ使用する必要があります。[47] )
アットマーク文字(@)は、多くのDR-DOS、PalmDOS、Novell DOS、OpenDOS、Multiuser DOS、System Manager、REAL/32コマンド、および4DOSでファイルリストに使用されるため、ファイル名に使用するのが難しい場合があります。[47]
マルチユーザーDOSおよびREAL/32では、感嘆符(!)は1つのコマンドラインで複数のコマンドを区切るために使用されるため、有効なファイル名文字ではありません。[47]
IBM 4680 OS および 4690 OS では、ファイル名に次の文字は使用できません。
? * : . ; , [ ] ! + = < > " - / \ |
さらに、次の特殊文字は、ホスト コマンド プロセッサ (HCP) および入力シーケンス テーブル ビルド ファイル名と競合するため、ファイル名の 1 文字目、4 文字目、5 文字目、および 8 文字目で使用することはできません。
@ # ( ) { } $ &
DOS ファイル名は現在のOEM 文字セットです。特定のコード ページに対してある方法で処理される文字が、別のコード ページ (DOS コマンドCHCP) に対しては、小文字と大文字、ソート、またはファイル名文字としての有効性に関して異なる方法で解釈される場合、予期しない影響が生じる可能性があります。
ディレクトリエントリ
Microsoft が長いファイル名と作成/アクセス タイムスタンプのサポートを追加する前は、ディレクトリ エントリのバイト0x0C~0x15は他のオペレーティング システムによって追加のメタデータを保存するために使用されていました。特に、Digital Research ファミリのオペレーティング システムは、ファイルのパスワード、アクセス権、所有者 ID、およびファイル削除データをそこに保存していました。Microsoft の新しい拡張機能は、デフォルトではこれらの拡張機能と完全に互換性がありませんが、そのほとんどはサード パーティの FAT 実装で共存できます (少なくとも FAT12 および FAT16 ボリュームでは)。
ルート ディレクトリ領域とサブディレクトリの両方における 32 バイトのディレクトリ エントリの形式は次のとおりです ( 8.3 filenameも参照)。
FlexOSベースのオペレーティングシステムIBM 4680 OSおよびIBM 4690 OSは、ディレクトリエントリ内の以前に予約された領域のいくつかのビットに格納された固有の配布属性をサポートしています。[ 62]
- ローカル: ファイルを配布せず、ローカル コントローラーにのみ保存します。[nb 14]
- 更新時にファイルをミラーリング: ファイルが更新された場合にのみファイルをサーバーに配布します。
- 閉じるときにファイルをミラーリング: ファイルが閉じられたときにのみファイルをサーバーに配布します。
- 更新時の複合ファイル: ファイルが更新されたときに、すべてのコントローラーにファイルを配布します。
- 閉じるときに複合ファイル: ファイルが閉じられるときに、すべてのコントローラにファイルを配布します。[63]
一部のオペレーティング システムで見つかった互換性のない拡張機能には、次のものがあります。
サイズ制限
FAT ファイル システムの FAT12、FAT16、FAT16B、および FAT32 バリアントには、クラスターの数とクラスターあたりのセクター数 (1、2、4、...、128) に基づく明確な制限があります。セクターあたりの標準値は 512 バイトです。
FAT12 の要件: 1,024 クラスタごとに FAT の各コピーに 3 セクター
FAT16 の要件: 256 クラスタごとに FAT の各コピーに 1 セクター
FAT32 の要件: 128 クラスタごとに FAT の各コピーに 1 セクター
FAT12 の範囲: 1 ~ 4,084 クラスタ: FAT のコピーごとに 1 ~ 12 セクター
FAT16 の範囲: 4,085 ~ 65,524 クラスタ: FAT のコピーごとに 16 ~ 256 セクター
FAT32 の範囲: 65,525 ~ 268,435,444 クラスタ: FAT のコピーごとに 512 ~ 2,097,152 セクター
FAT12 の最小値: クラスタごとに 1 セクター × 1 クラスタ = 512 バイト (0.5 KiB)
FAT16 の最小値: クラスタごとに 1 セクター× 4,085 クラスター = 2,091,520 バイト (2,042.5 KB)
FAT32 最小: クラスターあたり 1 セクター × 65,525 クラスター = 33,548,800 バイト (32,762.5 KB)
FAT12 最大: クラスターあたり 64 セクター × 4,084 クラスター = 133,824,512 バイト (≈ 127 MB)
[FAT12 最大: クラスターあたり 128 セクター × 4,084 クラスター = 267,694,024 バイト (≈ 255 MB)]
FAT16 最大: クラスターあたり 64 セクター × 65,524 クラスター = 2,147,090,432 バイト (≈2,047 MB)
[FAT16 最大: クラスターあたり 128 セクター × 65,524 クラスター= 4,294,180,864 バイト (≈4,095 MB)]
FAT32 の最大値: クラスターあたり 8 セクター × 268,435,444 クラスター = 1,099,511,578,624 バイト (≈1,024 GB)
FAT32 の最大値: クラスターあたり 16 セクター × 268,173,557 クラスター = 2,196,877,778,944 バイト (≈2,046 GB)
[FAT32 の最大値: クラスターあたり 32 セクター × 134,152,181 クラスター = 2,197,949,333,504 バイト (≈2,047 GB)]
[FAT32 の最大値: クラスターあたり 64 セクター × 67,092,469 クラスター = 2,198,486,024,192 バイト (≈2,047 GB)]
[FAT32 の最大値: クラスターあたり 128 セクター × 33,550,325 クラスター = 2,198,754,099,200 バイト (≈2,047 GB)]
- 凡例: 268435444+3 は0x0FFFFFF7です。これは、FAT32 バージョン 0 では 32 ビットのクラスター番号のうち 28 ビットしか使用しないためです。クラスター番号0x0FFFFFF7から0x0FFFFFFFまでは不良クラスターまたはファイルの末尾のフラグ、クラスター番号 0 は空きクラスターのフラグ、クラスター番号 1 は使用されません。[33]同様に、65524+3 はFAT16 では 0xFFF7、4084+3 はFAT12では0xFF7です。クラスターあたりのセクター数は 1 バイトに収まる 2 の累乗で、最小値は 1 ( 0x01 )、最大値は 128 ( 0x80 ) です。角括弧内の行は異常なクラスター サイズ 128 を示し、FAT32 では必要以上のクラスター サイズ 32 または 64 を示します。[64]
各 FAT32 エントリは 32 ビット (4 バイト) を占めるため、最大クラスター数 (268435444) には、セクター サイズが 512 バイトの場合、2097152 個の FAT セクターが必要です。2097152 は 0x200000 であり、この値を保存するには 2 バイト以上が必要です。そのため、FAT32 では、FAT16B バリアントで導入されたセクターの合計数の 32 ビット値の直後に、FAT32 ブート セクターに新しい 32 ビット値が導入されました。
DOS 4.0 で導入されたブート レコード拡張機能は、マジック 40 ( 0x28 ) または 41 ( 0x29 ) で始まります。通常、FAT ドライバーはクラスターの数のみを見て、FAT12、FAT16、および FAT32 を区別します。ブート レコード内の FAT バリアントを識別する人間が判読可能な文字列は、DOS 4.0 以降でフォーマットされたメディアにのみ存在するため、無視されます。
クラスタあたりのディレクトリ エントリ数を決定するのは簡単です。各エントリは 32 バイトを占めます。つまり、512 バイトのセクタ サイズの場合、セクタあたり 16 エントリになります。DOS 5 のRMDIR/コマンドは、サブディレクトリの最初の " " (このディレクトリ) および " " (親ディレクトリ) エントリを直接RD削除するため、RAM ディスク上のセクタ サイズ 32 は FAT12 で可能ですが、クラスタあたり 2 つ以上のセクタが必要です。DOS 4 拡張機能のない FAT12 ブート セクタには、最初の不要な FAT16B 32 ビットの隠しセクタ番号の前に 29 バイトが必要です。これにより、(RAM ディスクでは未使用の) ブート コードと、すべてのブート セクタの末尾のマジック0x55 0xAA用に 3 バイトが残ります。Windows NTでサポートされる最小セクタ サイズは 128 です。
...
Windows NTオペレーティング システムでは、FORMATコマンド オプション/A:128Kと は、それぞれセクター サイズ 1024 と 2048 の/A:256K最大クラスター サイズ (128) に対応します。一般的なセクター サイズ 512 の場合、クラスターあたり 128 セクターになります。
0x80/A:64K
ECMA-107 [24]と ISO/IEC 9293 [25] [26]の両方の版では、式で決定される最大クラスタ番号を 指定し、将来の標準化のために4086( 0xFF6 、FAT12)までのクラスタ番号と65526(0xFFF6、FAT16)までのクラスタ番号を予約しています。
MAXMAX=1+trunc((TS-SSA)/SC)MAX+1
Microsoft の EFI FAT32 仕様[4]では、4085 未満のクラスターを持つ FAT ファイル システムは FAT12、65,525 未満のクラスターを持つ FAT ファイル システムは FAT16、それ以外は FAT32 であると規定されています。FAT の先頭のクラスター 0 のエントリは、BPB にあるメディア記述子バイトと同一である必要がありますが、クラスター 1 のエントリは、クラスター チェーンのフォーマッタで使用されるチェーン終了値 ( 0xFFF、0xFFFF、または0x0FFFFFFF ) を反映します。クラスター番号 0 と 1 のエントリは、FAT12 の場合でもバイト境界で終了します (たとえば、メディア記述子0xF9の場合は0xF9FFFF ) 。
最初のデータクラスターは2、[33]であり、したがって最後のクラスターのMAX番号は になりますMAX+1。これにより、データクラスター番号は、FAT12では2...4085( 0xFF5 )、FAT16では2...65525( 0xFFF5)、FAT32では2...268435445(0x0FFFFFF5)になります。
したがって、将来の標準化のために予約されている値は0xFF6 (FAT12) と0xFFF6 (FAT16) のみである。以下に示すように、「4085 未満」は Linux 実装でも使用されている。[44]また、Microsoftの FAT 仕様では次のように定義されている。[4]
...< と書いてあっても、<= を意味するわけではありません。数字が正しいことにも注意してください。FAT12 の最初の数字は 4085、FAT16 の 2 番目の数字は 65525 です。これらの数字と「<」記号は間違っていません。"
断片化
FATファイルシステムには、新しく書き込まれたファイルがパーティション全体に散らばるのを防ぐ組み込みのメカニズムが含まれていません。[65]ファイルが頻繁に作成および削除されたり、ファイルの長さが頻繁に変更されるボリュームでは、時間の経過とともにメディアの断片化が進んでいきます。
FAT ファイル システムの設計では、外部の断片化で発生するような、ディスク構造の構成上のオーバーヘッドが発生したり、断片化の増加によって空きストレージ領域の量が減ったりすることはありませんが、断片化されたファイルの読み取りと書き込みに必要な時間が長くなります。これは、オペレーティング システムが FAT 内のクラスター チェーンをたどる必要があり (特に大容量の場合は、最初に部分をメモリにロードする必要があります)、メディア全体に物理的に分散されている対応するデータを読み取る必要があるためです。これにより、低レベルのブロック デバイス ドライバーがマルチセクター ディスク I/O を実行したり、より大きな DMA 転送を開始したりする機会が減少し、結果として I/O プロトコルのオーバーヘッドと、ディスク ドライブ内のアームの移動およびヘッドの安定時間が実質的に増加します。また、断片化が進むにつれて、オペレーティング システムがファイルや空きクラスターを見つけるのに時間がかかるようになるため、ファイル操作が遅くなります。
HPFSやexFATなどの他のファイル システムでは、使用済みおよび使用可能なクラスターを示す空き領域ビットマップを使用します。このビットマップをすばやく検索して、連続した空き領域を見つけることができます。別の解決策としては、すべての空きクラスターを 1 つ以上のリストにリンクする方法があります ( Unixファイル システムで行われるように)。代わりに、空きクラスターを見つけるために FAT を配列としてスキャンする必要があり、大容量ディスクではパフォーマンスが低下する可能性があります。
実際、大きなサブディレクトリ内のファイルを検索したり、FAT ボリューム上の空きディスク領域を計算したりする操作は、ディレクトリ テーブルまたは FAT 全体を線形に読み取る必要があるため、最もリソースを消費する操作の 1 つです。FAT12 および FAT16 ボリュームでは、クラスターの総量と FAT 内のそのエントリのサイズがまだ小さかったため、ほとんどの場合、FAT12 および FAT16 ボリュームでは、より高度なディスク構造の導入によって、FAT が元々設計および最適化されている、最小合計メモリ要件が 128 KB 以下 (DOS など) のリアル モード オペレーティング システムの 複雑さとメモリ フットプリントも増加することを考慮すると、これはまだ許容できます。
FAT32 の導入により、特に大容量のボリュームでは、シーク時間とスキャン時間が長くなることが明らかになりました。Microsoft のRaymond ChenDIRが Windows で作成される FAT32 パーティションの最大サイズを制限する理由として、空きディスク領域を常に最後の行として表示する" " 操作の実行に必要な時間を挙げました。 [66]クラスターの数が増えるにつれて、この行の表示にかかる時間はどんどん長くなりました。そのため、FAT32 では特別なファイル システム情報セクターが導入され、そこでは以前に計算された空き領域の量が電源サイクルを経ても保持されるため、空き領域カウンターの再計算が必要になるのは、取り外し可能な FAT32 形式のメディアをアンマウントせずに取り出す場合、またはオペレーティング システムを適切にシャットダウンせずにシステムの電源をオフにした場合のみです。この問題は、ATX以前のスタイルの PC、プレーン DOS システム、および一部のバッテリ駆動の消費者向け製品でよく見られます。
より大きな FAT パーティションによって強制される巨大なクラスター サイズ (16 KB、32 KB、64 KB) では、クラスター オーバーハング(ファイルがクラスター サイズの正確な倍数になることはめったにないため)によるファイル スラックによるディスク領域の無駄という形での内部断片化も問題になり始めます。特に、非常に多くの小さなファイルがある場合に問題になります。
FATファイルシステムドライバ、ブロックデバイスドライバ、ディスクツールの実装に対するさまざまな最適化と調整が、ディスク上の構造のレイアウトを変更することなく、ファイルシステムの固有の設計によるパフォーマンスのボトルネックのほとんどを克服するために考案されてきました。[67] [68]これらはオンライン方式とオフライン方式に分けられ、まずファイルシステムの断片化を回避し、既存の断片化にうまく対処する方法を導入し、ディスク上の構造を並べ替えて最適化することで機能します。最適化を行うことで、FATボリュームのパフォーマンスは、実用的なシナリオではより洗練されたファイルシステムのパフォーマンスに達することが多く、同時に非常に小さなシステムや古いシステムでもアクセスできるという利点も維持されます。
DOS 3.0 以降では、削除されたファイルのディスク領域を新しい割り当てにすぐに再利用するのではなく、以前に削除されたファイルのディスク領域も使用し始める前に、以前に未使用だった領域を検索します。これにより、削除されたファイルの整合性を可能な限り維持できるだけでなく、ファイルの割り当てが高速化され、以前に割り当てられたことのないディスク領域は常に断片化されていないため、断片化を回避できます。DOS は、メモリ内のマウントされた各ボリュームに最後に割り当てられたクラスターへのポインタを保持することでこれを実現し、DOS 2.x で行われていたように FAT の先頭ではなく、この場所から上に向かって空き領域の検索を開始します。 [13] FAT の末尾に到達すると、空き領域が見つかるか、空き領域が見つからずに元の位置に戻るまで、FAT の先頭から検索を続行します。[13]これらのポインタは起動後にFATの先頭を指すように初期化されますが、[13] FAT32ボリュームでは、DOS 7.1以降はFS情報セクターから最後の位置を取得しようとします。ただし、アプリケーションが頻繁に一時ファイルを削除して再作成する場合、このメカニズムは無効になります。オペレーティングシステムは無効なデータの整合性を維持しようとするため、最終的には断片化がさらに進むことになります。[13]一部のDOSバージョンでは、一時ファイルを作成するための特別なAPI関数を使用することで、この問題を回避できます。
さらに、DOS 3.0以降では、削除されたファイルのディレクトリエントリは0xE5とマークされます。 [42] DOS 5.0以降では、以前に使用されていないディレクトリエントリがテーブル内で使い果たされ、システムがテーブル自体を拡張しなければならない場合にのみ、これらのエントリを再利用します。[6]
DOS 3.3 以降、オペレーティング システムは、FASTOPEN最近開いたファイルまたはディレクトリの位置をさまざまな形式のリスト (MS-DOS/PC DOS) またはハッシュ テーブル (DR-DOS) で追跡することにより、ファイル操作のパフォーマンスを向上させる手段を提供しています。これにより、ファイルのシークとオープンの時間が大幅に短縮されます。DOS 5.0 より前では、ファイル システムまたはディスク ドライバーをバイパスするディスク デフラグ ソフトウェアと組み合わせてこのようなメカニズムを使用する場合は、特別な注意が必要です。
Windows NT は、大きな連続領域を選択して、FAT 上のファイルにディスク領域を事前に割り当てますが、障害が発生した場合、追加されていたファイルは、書き込まれたサイズよりも大きくなり、末尾に大量のランダム データが残ります。
他の高レベルメカニズムは、起動時または必要に応じて FAT の大きな部分または全体を読み込み、処理し、ディスク上の構造とは異なるボリュームのファイル構造のメモリ内ツリー表現を動的に構築する場合があります。[67] [68]これは、多くの空きクラスターがあるボリュームでは、FAT 自体のイメージよりもメモリを占有しない場合があります。特に、高度に断片化またはいっぱいになっているボリュームでは、FAT のイメージがメモリに格納されている場合でも、実際の FAT 上の線形スキャンよりもシークがはるかに高速になります。また、セクタまたはトラック レベルではなく、ファイルとクラスター チェーンの論理的に高いレベルで操作すると、そもそもある程度のファイル断片化を回避したり、ローカル ファイルの断片化をデフラグしたり、ディレクトリ エントリの名前またはアクセス パターンに基づいてバックグラウンドで並べ替えたりできるようになります。
FAT ファイル システムの断片化に関する問題の一部は、基盤となるブロックデバイス ドライバーのパフォーマンスの制限によっても発生します。これは、セクター バッファリングとトラックのブロック/デブロックに使用できるメモリが少ないほど顕著になります。
シングルタスクの DOS には、マルチセクター読み取りとトラックのブロッキング/デブロッキングの規定がありましたが、オペレーティングシステムと従来の PC ハードディスクアーキテクチャ (一度に 1 つの未処理の入出力要求のみ、DMA 転送なし) には、アプリケーションが前のチャンクを処理している間に次のデータを非同期にプリフェッチすることで断片化を軽減できるメカニズムが元々含まれていませんでした。このような機能は後から利用可能になりました。後の DOS バージョンでは、先読みセクターバッファリングのサポートも組み込まれ、物理セクターまたは論理セクターレベルで動作する動的にロード可能なディスクキャッシュプログラムが付属していました。多くの場合、EMSまたはXMSメモリを使用し、適応型キャッシュ戦略を提供したり、DPMSまたはCloaking を介して保護モードで実行して、従来の DOS API ではなく線形メモリ内のキャッシュデータに直接アクセスすることでパフォーマンスを向上させたりしました。
アプリケーションとシステム間のハードウェア保護が不足しているため、停電やクラッシュが発生した場合にデータが失われるという問題があるため、Microsoft ソフトウェア (存在する場合) では、ライトビハインド キャッシュがデフォルトで有効になっていないことがよくあります。
VFAT 長いファイル名

VFATロング ファイル名 (LFN) は、通常のファイル エントリの前にディレクトリに追加エントリを追加するというトリックを使用して FAT ファイル システムに格納されます。追加エントリには、ボリューム ラベル、システム、隠しファイル、読み取り専用属性 ( 0x0Fになる) が付けられますが、これは MS-DOS 環境では想定されていない組み合わせであるため、MS-DOS プログラムやサードパーティのユーティリティでは無視されます。特に、ボリューム ラベルのみを含むディレクトリは空とみなされ、削除が許可されます。このような状況は、長い名前で作成されたファイルをプレーン DOS から削除した場合に発生します。この方法は、DR DOS 6.0 (1991) 以降でボリューム属性を使用して保留中の削除ファイルを非表示にし、将来の削除取り消しの可能性をなくす DELWATCH 方法と非常によく似ています。また、1992 年に Ataris および Linux で長いファイル名を格納するために公に議論された方法にも似ています。[69] [70]
DOS の古いバージョンでは、ルート ディレクトリの LFN 名がボリューム ラベルと間違えられる可能性があるため、VFAT は、LFN 名エントリを追加する前にルート ディレクトリに空のボリューム ラベルを作成するように設計されています (ボリューム ラベルがまだ存在しない場合)。[nb 13]
各偽エントリには、レコード内のファイルサイズまたはタイムスタンプを含むフィールドを使用して、最大 13 個のUCS-2文字 (26 バイト) を含めることができます (ただし、開始クラスタ フィールドは含められません。ディスク ユーティリティとの互換性のため、開始クラスタ フィールドは 0 の値に設定されます。詳細については、 8.3 ファイル名を参照してください)。これらの 13 文字のエントリを最大 20 個まで連鎖させることができ、最大 255 文字の UCS-2 文字をサポートします。[55]
LFN の最後の文字の位置がディレクトリ エントリ境界 (13、26、39、...) にない場合は、次の文字位置に0x0000ターミネータが追加されます。その後、そのターミネータも境界にない場合は、残りの文字位置が0xFFFFで埋められます。単独のターミネータを含むディレクトリ エントリは存在しません。
LFN エントリは次の形式を使用します。
ファイル名を表すために複数の LFN エントリが必要な場合、ファイル名の末尾を表すエントリが最初になります。このエントリのシーケンス番号は、最後の論理 LFN エントリであることを表すためにビット 6 ( 0x40 ) が設定されており、シーケンス番号が最も高くなります。シーケンス番号は、後続のエントリで減少します。ファイル名の先頭を表すエントリのシーケンス番号は 1 です。値0xE5は、エントリが削除されたことを示すために使用されます。
FAT12 および FAT16 ボリュームでは、 0x1Aの値がゼロであること、および0x1Cの値がゼロ以外であることをテストすることで、VFAT LFN と DELWATCH で保留中の削除ファイルを区別できます。
たとえば、「File with very long filename.ext」のようなファイル名は、次のようにフォーマットされます。
チェックサムを使用すると、長いファイル名が 8.3 形式の名前と一致するかどうかも確認できます。このような不一致は、DOS を使用して同じディレクトリ位置でファイルを削除し、再作成した場合に発生する可能性があります。チェックサムは、以下のアルゴリズムを使用して計算されます。(pFCBName は、通常のディレクトリ エントリに表示される名前へのポインタです。つまり、最初の 8 文字はファイル名で、最後の 3 文字は拡張子です。ドットは暗黙的に使用されます。ファイル名の未使用のスペースは、スペース文字 (ASCII 0x20 ) で埋められます。たとえば、「Readme.txt」は「 」
になります。)README␠␠TXT
unsigned char lfn_checksum ( const unsigned char * pFCBName ) { int i ; unsigned char sum = 0 ;
( i = 11 ; i ; i -- )の場合、合計= ((合計& 1 ) << 7 ) + (合計>> 1 ) + * pFCBName ++ ;
合計を返す; }
ファイル名が小文字のみで構成されている場合、または小文字のベース名と大文字の拡張子の組み合わせ(またはその逆)であり、特殊文字が含まれておらず、8.3 の制限内に収まる場合、Windows NT および XP などのそれ以降のバージョンの Windows では VFAT エントリは作成されません。代わりに、ディレクトリ エントリのバイト0x0Cの 2 ビットを使用して、ファイル名を完全にまたは部分的に小文字と見なす必要があることを示します。具体的には、ビット 4 は小文字の拡張子、ビット 3 は小文字のベース名を意味します。これにより、「 」や「 」などの組み合わせが許可されますが、「」は使用できません。他のオペレーティング システムではほとんどサポートされていません。これにより、この拡張子が使用されている場合にすべて大文字のファイル名を認識する古いバージョンの Windows(Windows 95 / 98 / 98 SE / ME)との下位互換性の問題が発生し、USB フラッシュ ドライブなどのオペレーティング システム間でファイルを転送すると、ファイル名が変更される可能性があります。現在のLinux 2.6.xバージョンは読み取り時にこの拡張機能を認識します(ソース:カーネル2.6.18および)。マウントオプションは書き込み時にこの機能を使用するかどうかを決定します。[71]example.TXTHELLO.txtMixed.txt/fs/fat/dir.cfs/vfat/namei.cshortname
参照
- ファイルシステムの比較
- ドライブ文字の割り当て
- エクセル
- 拡張ブートレコード(EBR)
- FAT ファイルシステムと Linux
- ファイルシステムのリスト
- マスターブートレコード(MBR)
- パーティションタイプ
- DOS オペレーティングシステムのタイムライン
- トランザクションセーフな FAT ファイルシステム
- ターボFAT
- ボリューム ブート レコード(VBR)
注記
- ^ abc MS-DOS/PC DOS および DR-DOS との互換性を最大限に高めるために、フロッピー ディスクのフォーマットを判別しようとするオペレーティング システムは、BPB が存在すると想定する前に、セクター オフセット 0x000 のすべてのオペコード シーケンスをテストし、さらにセクターオフセット0x015で有効なメディア記述子バイトを探す必要があります。PC DOS 1.0 フロッピー ディスクには BPB が含まれていませんが、0xEBで始まり、オフセット0x002に0x90は表示されません。PC DOS 1.10 フロッピー ディスクは0xEB 0x?? 0x90で始まりますが、それでも BPB は含まれていません。どちらの場合も、オフセット0x015の有効なメディア記述子のテストは失敗します (有効なメディア記述子0xF0以上ではなく、値0x00 )。これらのテストが失敗した場合、DOS はブート セクタに続くセクタ (FAT12/FAT16 フロッピーの論理セクタ 1) の最初の FAT の最初のバイトにメディア記述子バイトが存在するかどうかをチェックします。
- ^ abcde ブートセクターのオフセット0x1FEのシグネチャは0x55 0xAAです。つまり、オフセット0x1FEでは0x55、オフセット0x1FFでは0xAAです。IBM PC互換機のコンテキストではリトルエンディアン表現を前提とする必要があるため、 x86プロセッサのプログラムでは16 ビットワード0xAA55と記述できます (順序が逆になっていることに注意してください)。一方、ビッグエンディアン表現を使用する他の CPU アーキテクチャのプログラムでは0x55AAと記述する必要があります。これは書籍やオリジナルの Microsoft リファレンスドキュメントでも何度も混同されているため、この記事では誤解を避けるためにオフセットベースのバイト単位のディスク上の表現を使用します。
- ^ abc Atariブート セクターのチェックサムエントリには、マジック値そのものではなく、アラインメント値が保持されます。マジック値0x1234はディスク上のどこにも保存されません。Intel x86プロセッサとは対照的に、Atari マシンで使用されるMotorola 680x0プロセッサはビッグ エンディアンのメモリ表現を使用するため、チェックサムを計算するときはビッグ エンディアンの表現を想定する必要があります。この結果、x86 マシンで実行されるチェックサム検証コードでは、16 ビットの加算の前にバイトのペアを交換する必要があります。
- ^ DR-DOS は、論理セクター サイズが最大 1024 バイトの FAT12/FAT16 論理セクター メディアから起動できます。
- ^ ab 次の DOS 関数は、これらのレジスタ値を返します: INT 21h/AH=2Ah 「システム日付の取得」の戻り値: CX = 年 ( 1980 .. 2099 )、DH = 月 (1..12)、DL = 日 (1..31)。INT 21h/AH=2Ch 「システム時刻の取得」の戻り値: CH = 時間 (0..23)、CL = 分 (0..59)、DH = 秒 (0..59)、DL = 1/100 秒 (0..99)。
- ^ Windows XP では、FAT16B 形式の ZIP-100 ディスクを FAT32 形式に再フォーマットするときに、このようなハイブリッド ディスクが作成されることがあります。作成されたボリュームは形式的には FAT32 ですが、FAT16B EBPB が引き続き使用されています。(FAT16 EBPB のみが使用された場合、Windows が FAT32 ボリューム上のルート ディレクトリの場所をどのように決定するかは不明です。)
- ^ ab ハードディスクの希望するフォーマットフィラー値を指定するオプションを提供するユーティリティの 1 つに、オプションの wipe パラメータを備えた DR-DOS の FDISK R2.31 があります。他のFDISK
/W:246ユーティリティとは異なり、DR-DOS FDISK はパーティション分割ツールであるだけでなく、新しく作成したパーティションをFAT12、FAT16、またはFAT32としてフォーマットすることもできます。これにより、間違ったボリュームを誤ってフォーマットしてしまうリスクが軽減されます。 - ^ DR-DOS と PC DOS の共存および DR-DOS の複数の並列インストールをサポートするために、デフォルトの "
IBMBIO␠␠COM" ブート ファイル名の拡張子は、 オプションを使用して変更できます。ここで、ext は新しい拡張子を表します。特別なシナリオで予想されるその他の潜在的な DR-DOS ブート ファイル名は、 " "、" "、" "、" "SYS /DR:extです。DRBIOS␠␠SYSDRDOS␠␠␠SYSIO␠␠␠␠␠␠SYSJO␠␠␠␠␠␠SYS - ^ 起動時にボリュームのダーティ シャットダウン フラグがまだクリアされている場合、ボリュームは適切にアンマウントされていません。これにより、たとえば、Windows 98 WIN.COM はSCANDISK を起動して、潜在的な論理ファイル システム エラーをチェックし、修復します。不良セクタ フラグがクリアされている場合は、表面スキャンも強制的に実行されます。これは、 MSDOS.SYSファイルの [OPTIONS] セクションで AUTOSCAN=0 を設定することで無効にできます。
- ^ abcd MS-DOS/PC DOS 3.3 以降の FAT12 ボリュームでクラスター値0xFF0が発生する場合の特別な注意事項については、他のリンクを参照してください。
- ^ ab MS-DOS 1.25およびPC DOS 2.0以降のFORMATの一部のバージョンでは、終了マーカー0x00 を使用する代わりに、すべてのディレクトリ エントリの最初のバイトを0xE5で埋めるオプション(旧バージョン用) がサポートされていました。これにより、ボリュームはPC DOS 1.0 - 1.1でもアクセス可能になりましたが、フォーマットに時間がかかるようになり、新しいバージョンの DOS では、終了マーカー0x00を使用することで実現される大幅な速度向上を利用できなくなりました。
/O - ^これが、ディレクトリ エントリで 0xE5 が特別な意味を持つ理由です。
- ^ ab VFAT 非対応のオペレーティング システムによる VFAT LFN エントリを含むディレクトリ ボリューム ラベルの潜在的な誤解釈を回避するために、DR-DOS 7.07 の FDISK および FORMAT ツールは、
NO␠NAME␠␠␠␠ユーザーがボリューム ラベルの入力を省略した場合に、ダミーの " " ディレクトリ ボリューム ラベルを明示的に書き込むことが知られています。ボリュームのルートにディレクトリ ボリューム ラベルが見つからない場合、オペレーティング システムは内部的にデフォルトで同じ文字列を返しますが、実際のボリューム ラベルが最初のエントリ (ディレクトリ エントリの後) として保存されていない場合、古いオペレーティング システムは誤って VFAT LFN エントリを取得する可能性があります。 - ^ このIBM 4680 OSおよび4690 OS配布属性タイプは、属性が誤って失われた場合にファイルがこのタイプにフォールバックするため、ディスク上のビット値が 0 である必要があります。
参考文献
- ^ 「ファイル システム」。Microsoft TechNet。2001年。2011 年 8 月 12 日時点のオリジナルからアーカイブ。2011年 7 月 31 日閲覧。
- ^ ab Microsoft (2006-11-15)。Windows 95 CD-ROM CONFIG.TXT ファイル、2013-01-28 にarchive.todayでアーカイブ、記事 135481、リビジョン: 1.1、2011-12-22 に取得: 「各ハード ディスクについて、ファイルが最後にアクセスされた日付を記録するかどうかを指定します。コンピュータがセーフ モードで起動されると、すべてのドライブの最終アクセス日付はオフになり、フロッピー ディスクでは既定で保持されません。構文:
ACCDATE=drive1+|- [drive2+|-]..." - ^ Bhat, WA (2010). 「FAT32 ファイルシステムの FAT データ構造のレビュー」S2CID 58178285.
{{cite web}}:欠落または空|url=(ヘルプ) - ^ abcdefghijklmno 「Microsoft Extensible Firmware Initiative FAT32 ファイル システム仕様、FAT: オンディスク フォーマットの概要」。Microsoft。2000年12 月 6 日。2021 年 7 月 23 日時点のオリジナルよりアーカイブ。2011年 7 月 3 日閲覧。
- ^ abcd ハーフ、ヴィルフリート;フランク・ミデル(1987年11月)。 「Daten auf Scheiben – CP/M、MSDOS および TOS のファイルと Diskettenstrukturen: Dateiverwaltung unter TOS」。c't - コンピュータ技術に関する雑誌。 c't Kartai (ドイツ語)。 Vol. 1987年、いいえ。 11. Verlag Heinz Heise GmbH & Co. KG。 241–246 ページ [246]。ISSN 0724-8679。
- ^ abcdefghijklmnop Chappell, Geoff (1994 年 1 月). Schulman, Andrew; Pedersen, Amorette (編). DOS 内部. Andrew Schulman プログラミング シリーズ (第 1 刷、第 1 版). Addison Wesley Publishing Company . ISBN 978-0-201-60835-9。(xxvi+738+ivページ、3.5インチフロッピー[1][2]) 正誤表:[3][4][5]
- ^ abcdefghijklmnopqrstu vw Microsoft MS-DOS 3.1 Programmierhandbuch (英語版) [ Microsoft MS-DOS 3.1 Programmer's Reference Manual in English ]。ミュンヘン: Markt & Technik Verlag (1986 年出版)。 1984年。ISBN 3-89090-368-18411-310-02、036-014-012。
ブート セクターの先頭のジャンプ命令に関して: 「ブート セクターの最初のバイトが E9H または EBIT (3 バイトの NEAR または 2 バイトのショート ジャンプの最初のバイト) か、EBH (NOP が続く 2 バイト ジャンプの最初のバイト) かを判断します。そうである場合、BPB はオフセット 3 から配置されます。」
(注:この本には多くの誤りが含まれています。) - ^ ab Daniel B. Sedory. IBMパーソナルコンピュータDOSバージョン1.00のブートセクター(1981年)。2005年8月2日([6] 2014年5月21日にWayback Machineにアーカイブ)。
- ^ ab Daniel B. Sedory. IBMパーソナルコンピュータDOSバージョン1.10のブートセクター(1982年)。2005年7月29日([7] 2014年5月21日にWayback Machineにアーカイブ)。
- ^ ab Caldera (1997). Caldera OpenDOS マシン可読ソースキット 7.01。マシン可読ソースキットの DISK.ASM ファイルには、DR-DOS が値0x69でもテストすることが示されています。
- ^ Paul, Matthias R. (2002-02-20). 「Need DOS 6.22 (Not OEM)」.ニュースグループ: alt.msdos.programmer. 2017-09-09 にオリジナルからアーカイブ。2006-10-14に取得。
- ^ Bass, Wally (1994-02-14). 「Cluster Size」.ニュースグループ: comp.os.msdos.programmer. 2017-09-09 時点のオリジナルよりアーカイブ。2006-10-14取得。
- ^ abcdefgh Dave Williams (1992). Programmer's Technical Reference for MSDOS and the IBM PC . DOSREF, Shareware version 01/12/1992. ISBN 1-878830-02-3 . ([8] Archived 2014-05-20 at the Wayback Machine , accessed on 2012-01-08). コメント: 著者は、DOS 4.0 が OEM ラベルをチェックすると述べていますが、DOS 3.2 もそれをチェックすることを否定しています (実際にはチェックしています)。
- ^ Paul, Matthias R. (2004-08-25). 「NOVOLTRK.REG」www.drdos.org . 2016-03-04 にオリジナルからアーカイブ。2011-12-17に取得。[9]
- ^ ab 「ディスクとファイル システムのトラブルシューティング」。Microsoft TechNet。2005年 11 月 5 日。2014 年 6 月 7 日にオリジナルからアーカイブ。2014年 6 月 15 日に取得。
- ^ IBM (1983). IBM PC テクニカル リファレンス ハンドブック. コメント: オリジナルの IBM PC の ROM BIOS ソース コードの完全なリストが含まれています。
- ^ abcd ハンス=ディーター・ヤンコウスキー、ディートマー・ラビッチ、ジュリアン・F・レシュケ (1992)。Atari Profibuch ST-STE-TT。 Sybex、第 4 版、第 12 バッチ。ISBN 3-88745-888-5、ISBN 978-3-88745-888-1。
- ^ Seagate Technologies、「Advanced Format 4Kセクターハードドライブへの移行(Wayback Machine @Archive.orgにアーカイブ)」、2010年([10])。
- ^ abcd Brown, Ralf D. (2002-12-29). 「x86 割り込みリスト」。2016-06-16 時点のオリジナルよりアーカイブ。2011-10-14に閲覧。
- ^ abcd de Boyne Pollard、Jonathan (2010) [2006]。「BIOSパラメータブロックのすべて」。よくある質問。2016年8月26日時点のオリジナルよりアーカイブ。 2014年6月2日閲覧。
- ^ abc Microsoft MS-DOS プログラマーズリファレンス: バージョン 5.0。Microsoft press。1991 年。ISBN 1-55615-329-5。
- ^ abcdefghijk 「MS-DOS でサポートされている標準フロッピー ディスク形式」。Microsoft ヘルプとサポート。2003 年 5 月 12 日。2015 年 1 月 9 日時点のオリジナルよりアーカイブ。2012年 9 月 11 日閲覧。
- ^ abc Microsoft (1987-07). MS-DOS 3.3 プログラマーズリファレンス.
- ^ abcdefghij 「情報交換用ディスクカートリッジのボリュームとファイル構造」。標準 ECMA-107 (第 2 版、1995 年 6 月)。ECMA。1995年。2018年 10 月 7 日時点のオリジナルからアーカイブ。2011年 7 月 30 日閲覧。
- ^ abcdefghij 「情報技術 - 情報交換用ディスクカートリッジのボリュームおよびファイル構造」。ISO /IEC 9293:1994。ISOカタログ。1994年。2012年1月17日時点のオリジナルよりアーカイブ。 2012年1月6日閲覧。
- ^ abcdefghij 「情報処理 - 情報交換用フレキシブルディスクカートリッジのボリュームおよびファイル構造」。ISO 9293:1987。ISOカタログ。1987年。2012年1月17日時点のオリジナルよりアーカイブ。 2012年1月6日閲覧。
- ^ abc Andries Brouwer (2002-09-20). 「FAT ファイルシステム」。2011-10-06 にオリジナルからアーカイブ。2011-10-16に閲覧。
- ^ abcdefghijklmnopqr Paterson, Tim ; Microsoft (2013-12-19) [1983]. 「Microsoft DOS V1.1 および V2.0: /msdos/v20source/SKELIO.TXT、/msdos/v20source/HRDDRV.ASM」. CHM . Computer History Museum、Microsoft。2019-08-14時点のオリジナルよりアーカイブ。2014-03-25に取得。(注: 発行元はこれが MS-DOS 1.1 と 2.0 であると主張していますが、実際はSCP MS-DOS 1.25と、 Altos MS-DOS 2.11とTeleVideo PC DOS 2.11の混合です。)
- ^ abcdefghij マーク・ズビコウスキー、ポール・アレン、スティーブ・バルマー、ルーベン・ボーマン、ロブ・ボーマン、ジョン・バトラー、チャック・キャロル、マーク・チェンバレン、デビッド・チェル、マイク・コーリー、マイク・コートニー、マイク・ドライフース、マイク、レイチェル・ダンカン、カート・エックハート、エリック・エバンス、リック・ファーマー、ビル・ゲイツ、マイケル・ギアリー、ボブ・グリフィン、ダグ・ホガース、ジェームズ・W・ジョンソン、カメル・カーマーニ、エイドリアン・キング、リード・コッホ、ジェームズ・ランドウスキー、クリス・ラーソン、トーマス・レノン、ダン・リプキー、マーク・マクドナルド、ブルース・マッキニー、パスカル・マーティン、エステル・マザーズ、ボブ・マシューズ、デビッド・メリン、チャールズ・マーゲンタイム、ランディ・ネビン、ダン・ニューウェル; Newell, Tani; Norris, David; O'Leary, Mike; O'Rear, Bob ; Olsson, Mike; Osterman, Larry; Ostling, Ridge; Pai, Sunil; Paterson, Tim ; Perez, Gary; Peters, Chris; Petzold, Charles ; Pollock, John; Reynolds, Aaron ; Rubin, Darryl; Ryan, Ralph; Schulmeisters, Karl; Shah, Rajen; Shaw, Barry; Short, Anthony; Slivka, Ben; Smirl, Jon; Stillmaker, Betty; Stoddard, John; Tillman, Dennis; Whitten, Greg; Yount, Natalie; Zeck, Steve (1988)。「技術アドバイザー」。MS -DOS 百科事典: バージョン 1.0 から 3.2。Duncan , Ray; Bostwick, Steve; Burgoyne, Keith; Byers, Robert A.; Hogan, Thom; Kyle, Jim; Letwin, Gordon ; Petzold, Charles ; Rabinowitz, Chip; Tomlin, Jim; Wilton, Richard; Wolverton, Van; Wong, William; Woodcock, JoAnne (完全改訂版)。レドモンド、ワシントン州、米国: Microsoft Press。ISBN 1-55615-049-0. LCCN 87-21452. OCLC 16581341.(xix+1570ページ; 26cm) (注: この版は、撤回された1986年の初版を別の著者チームによって大幅に改訂した後、1988年に出版されました。[11] 2018-10-14にWayback Machineでアーカイブされています)
- ^ ab 「FAT ブート セクターの詳細な説明」。Microsoftサポート技術情報。2003 年 12 月 6 日。2011 年 11 月 28 日時点のオリジナルからアーカイブ。2011年 10 月 16 日に取得。
- ^ abc Lai, Robert S.; The Waite Group (1987). Writing MS-DOS Device Drivers (第 2 版). Addison Wesley. ISBN 0-201-60837-5。
- ^ abcdefghijklmnopqrst Paterson, Tim ; Microsoft (2013-12-19) [1983]. 「Microsoft DOS V1.1 および V2.0: /msdos/v20source/DEVDRIV.txt」. Computer History Museum、Microsoft。 2019-08-14 時点のオリジナルよりアーカイブ。 2014-03-25閲覧。(注: 発行元はこれが MS-DOS 1.1 と 2.0 であると主張していますが、実際はSCP MS-DOS 1.25と、 Altos MS-DOS 2.11とTeleVideo PC DOS 2.11の混合です。)
- ^ abcde Tim Paterson (1983). 「An Inside Look at MS-DOS」. Byte . 2011-07-20 にオリジナルからアーカイブ。2011-07-18に取得。番号
は 2 から始まります。最初の 2 つの数字、0 と 1 は予約されています。
- ^ abcd PORT-DOS - Apricot PortableのUserpromptガイド。User-Prompt Guides、UK([12] 2013-05-22にWayback Machineでアーカイブ)。
- ^ abcde John C. Elliott (1998). DOSPLUS ディスクフォーマット. ([13] 2013-06-07にWayback Machineでアーカイブ).
- ^ abcd The BBC Master 512 . Yellow Pig's BBC Computer Pages ([14] Archived 2014-05-21 at the Wayback Machine ).
- ^ Digital Equipment Corporation. Rainbow 100 MS-DOS 2.01 テクニカル ドキュメント ボリューム 1 (QV025-GZ)、Microsoft MS-DOS オペレーティング システム BIOS リスト (AA-X432A-TV)、ユニバーサル ディスク ドライバー、1-17 ページ。1983 年。
- ^ 「FAT ブート セクターの詳細な説明」。DEW Associates Corporation。2002 年。2011 年 9 月 26 日時点のオリジナルよりアーカイブ。2011 年 10 月 16 日閲覧。
- ^ Tyagi, Tarun (2004-10-31). 「FAT および NTFS ファイル システムでのクラスター サイズ」。プログラミングありとプログラミングなしのデータ復旧。インド、ニューデリー: Gardners Books。p. 4。ISBN 978-81-7656-922-4. 2021年12月3日時点のオリジナルよりアーカイブ。2021年12月3日閲覧。
- ^ Daniel B. Sedory. MS-Windowsにおける「ダーティシャットダウンフラグ」に関する詳細なメモ。2001-12-04。([15] 2014-05-21にWayback Machineにアーカイブ)。
- ^ abcde 「Windows 98 リソースキット - 第 10 章 - ディスクとファイルシステム」。Microsoft TechNet。1998年。2012 年 5 月 1 日時点のオリジナルからアーカイブ。2012年 7 月 16 日閲覧。
- ^ abcd シュルマン、アンドリュー;ブラウン、ラルフ D. ; マクシー、デビッド; ミシェルズ、レイモンド J.; カイル、ジム (1994) [1993 年 11 月]。Undocumented DOS: 予約済みの MS-DOS 関数とデータ構造のプログラマー向けガイド - MS-DOS 6、Novell DOS、Windows 3.1 を含むように拡張 (第 2 版)。マサチューセッツ州レディング: Addison Wesley。p . 11。ISBN 0-201-63287-X。(xviii+856+viページ、3.5インチフロッピー) 正誤表: [16][17]
- ^ Peter Norton (1986). Inside the IBM PC, Revised and Enlarged、Brady。ISBN 0-89303-583-1、p. 157。
- ^ abc Andries Brouwer . 「Linux での FAT」。2014 年 7 月 1 日時点のオリジナルよりアーカイブ。2014 年 5 月 20 日閲覧。
- ^ Andries Brouwer (2002-09-20). 「FAT」。2017年12月17日時点のオリジナルよりアーカイブ。2012年1月11日閲覧。
- ^ abc Seattle Computer Products (1981). 「SCP 86-DOS 1.0 補遺」(PDF) 。 2012年10月3日時点のオリジナルよりアーカイブ(PDF) 。 2013年3月10日閲覧。
- ^ abcdefghijklmnopqrstu vwxyz aa ab ac ad ae af ag ah ai ajak Paul、Matthias R. (1997-07-30) [1994-05-01]。 NWDOS-TIP — Novell DOS 7 に関するヒントとコツ、詳細、バグ、回避策を含む Blick です。 MPDOSTIP (ドイツ語) (第 3 版)。 2016-11-05 のオリジナルからアーカイブ。2012 年 1 月 11 日に取得。(注: NWDOSTIP.TXT はNovell DOS 7とOpenDOS 7.01に関する包括的な作業であり、多くの文書化されていない機能と内部の説明が含まれています。これは、2001 年まで維持され、当時多くのサイトで配布されていた、著者のさらに大規模な MPDOSTIP.ZIP コレクションの一部です。提供されているリンクは、HTML に変換された古いバージョンのファイルを指し示しています。) [18]
- ^ IBM. 4690 OS ユーザーズ・ガイド バージョン5.2、IBM文書 SC30-4134-01、2008-01-10 ([19])。
- ^ ab Paterson, Tim ; Microsoft (2013-12-19) [1983]. 「Microsoft DOS V1.1 および V2.0: /msdos/v20source/FORMAT.TXT」. Computer History Museum、Microsoft。2019-08-14 時点のオリジナルよりアーカイブ。2014-03-25閲覧。(注: 発行元はこれが MS-DOS 1.1 と 2.0 であると主張していますが、実際はSCP MS-DOS 1.25と、 Altos MS-DOS 2.11とTeleVideo PC DOS 2.11の混合です。)
- ^ ab Shustek, Len (2014-03-24). 「Microsoft MS-DOS 初期ソースコード」。ソフトウェアの宝石: コンピュータ歴史博物館の歴史的ソースコードシリーズ。2019-08-10 のオリジナルからアーカイブ。2014-03-29に取得。(注: 作者はこれが MS-DOS 1.1 と 2.0 であると主張していますが、実際はSCP MS-DOS 1.25とAltos MS-DOS 2.11およびTeleVideo PC DOS 2.11の混合です。)
- ^ ab Levin, Roy (2014-03-25). 「Microsoft が MS-DOS および Word for Windows のソース コードを一般公開」。公式 Microsoft ブログ。2014-03-28 時点のオリジナルからアーカイブ。2014-03-29に取得。(注: 作者はこれが MS-DOS 1.1 と 2.0 であると主張していますが、実際はSCP MS-DOS 1.25とAltos MS-DOS 2.11およびTeleVideo PC DOS 2.11の混合です。)
- ^ JEIDA/JEITA/CIPA (2010). 「カメラ映像機器工業会規格 CIPA DC-009-Translation-2010 カメラファイルシステムの設計ルール: DCF バージョン 2.0 (2010 版)」(PDF) 。 2013 年 9 月 30 日時点のオリジナル(PDF)からアーカイブ。 2011 年 4 月 13 日閲覧。
- ^ abcdefghijklmnopq Caldera (1997). Caldera OpenDOS マシン可読ソースキット 7.01。マシン可読ソースキットの FDOS.EQU ファイルには、対応するディレクトリエントリの等式が含まれています。
- ^ John C. Elliott (1998). CP/M 4.1 ディスクフォーマット. ([20] Archived 2014-08-26 at the Wayback Machine ): 「CP/M 4.1 (DOS Plus [1.2]) では、CP/M と DOS の 2 つのファイルシステムを使用できます。Amstrad PC1512 に付属のバージョン [...] では、360k (CP/M) / 1.2Mb (DOS) より大きいフロッピー、または 32Mb より大きいハードドライブパーティションを処理できません。 [...] DOS ファイルシステムは、FAT12 または FAT16 のいずれかです。フォーマットは PCDOS 2.11 とまったく同じですが、次の点が異なります: ディレクトリエントリのバイト 0Ch [...] には、4 つの「ユーザー属性」F1'-F4' が保持されます [...] DRDOS スタイルのパスワードはサポートされていません。」
- ^ ab vinDaci (1998-01-06). 「Long Filename Specifications」。2001-04-20 時点のオリジナルよりアーカイブ。2007-03-13取得。
- ^ Henk Kelder. FAT32.IFS バージョン 0.74 用の FAT32.TXT。( 「@Macarlo, Inc」。2012 年 3 月 30 日時点のオリジナルよりアーカイブ。2012 年 1 月 14 日閲覧。コメント: この古いバージョンの README ファイルでは、古い0xEAおよび0xECマジック値についてまだ説明しています。
- ^ Henk Kelder (2003). FAT32.TXT for FAT32.IFS version 0.9.13." ([21] Archived 2022-01-25 at the Wayback Machine ): 「このバイトは [...] Windows 95 の実行中は変更されず、SCANDISKや DEFRAG でも変更されません。 [...] 別のプログラムがEA を持つファイルの値を0x00に設定すると、これらの EA は DosFindFirst/Next 呼び出しのみでは検出されなくなります。EA を取得するためのその他のOS/2呼び出し (DosQueryPathInfo、DosQueryFileInfo、および DosEnumAttribute) は、このバイトに依存しません。また、逆のことも発生する可能性があります。 [...] この場合、ディレクトリ スキャンのパフォーマンスのみが低下します。どちらの状況も [...] CHKDSKによって修正されます。」
- ^ Netlabs. FAT32.IFS Wikiとソース. ([22] 2013-05-11にWayback Machineでアーカイブ).
- ^ ab IBM. 4690 OSプログラミングガイドバージョン5.2、IBM文書SC30-4137-01、2007-12-06([23])。
- ^ abcdefghijklmn OpenDOS 開発者リファレンスシリーズ — システムおよびプログラマーズガイド — プログラマーズガイド。Caldera , Inc. 1997 年 8 月。Caldera 部品番号 200-DODG-003。2017 年 10 月 7 日時点のオリジナルよりアーカイブ。2014 年 5 月 20 日閲覧。(英国で印刷されました。)
- ^ Bob Eager、Tavi Systems(2000-10-28)。FATファイルシステム上の拡張属性の実装。([24] 2006-06-13にWayback Machineでアーカイブ)。
- ^ IBM (2003). 4690 OS 固有のファイル配布属性に関する情報、IBM 文書 R1001487、2003-07-30。( 「IBM 4690 OS 固有のファイル配布属性に関する情報 - 米国」。2014-05-21 にオリジナルからアーカイブ。2014-05-20に取得。): 「[...] ファイル タイプは、PC-DOS ファイル ディレクトリ構造の「予約ビット」部分に格納されます [...] これらの属性を尊重して保持するのは 4690 のみです。4690 システムで作成されたディスケットからコピーする場合、これらのビットがオンになっていると、4690 以外のさまざまなオペレーティング システムで異なるアクションが実行されます。[...] PC-DOS および Windows 2000 Professional は、エラーなしでファイルをコピーし、ビットをゼロにします。OS/2 [...] 1.2 [...] は、最初にファイルに対して CHKDSK /F を実行しない限り、ファイルのコピーを拒否します。[...] CHKDSK を実行すると、ファイルがコピーされ、ビットがゼロになります。[...] 4690 システムにコピーすると、[...] ファイルはローカル ファイルとしてコピーされます。」
- ^ IBM。4690保存および復元ファイル配布属性。IBM 文書 R1000622、2010-08-31 ( 「IBM 4690 保存および復元ファイル配布属性 - 米国」)。2014-05-21 にオリジナルからアーカイブ。2014-05-20に取得。)。
- ^ 「FAT32 ファイル システムの制限」。Microsoftサポート技術情報。2007 年 3 月 26 日。2011 年 8 月 15 日にオリジナルからアーカイブ。2011年 8 月 21 日に取得。クラスター
は 64 キロバイト以上にすることはできません。
- ^ Duncan, Ray (1989)。「新しい高性能ファイル システムの設計目標と実装」。Microsoft Systems Journal。2011 年 7 月 16 日時点のオリジナルからアーカイブ。2014年 5 月 20 日閲覧。[注: このテキスト ファイルには、いくつかの OCR エラーがあります。たとえば、「Ray」は著者の正しい名前であり、テキストに示されている「Roy」ではありません。]
- ^ Chen, Raymond (2006 年 7 月)。「Microsoft TechNet: FAT32 の簡潔で不完全な歴史」。Microsoft TechNet マガジン。2008 年 11 月 18 日時点のオリジナルよりアーカイブ。2014 年 5 月 20 日閲覧。
- ^ ab Les Bell; Associates Pty Ltd (1996-09-02) [1990]. 「OS/2 High Performance File System」. PC Support Advisor . 2014-03-01時点のオリジナルよりアーカイブ。2014-06-24閲覧。
- ^ ab Bridges, Dan (1996 年 2 月). 「高性能ファイル システムの内部 - パート 2/6: 概要」. Significant Bits, Brisbug PC User Group Inc. 2015 年 9 月 23 日時点のオリジナルよりアーカイブ。2014年 6 月 24 日閲覧。
- ^ Natuerlich! (1992-03-24). 「GEMDOS から長いファイル名を取得する」. comp.sys.atari.st.tech. 2014-04-24 にオリジナルからアーカイブ。2014-05-05に取得。
- ^ Torvalds, Linus (1992-12-23). 「Long filenames」. comp.os.minix. 2014-04-23 にオリジナルからアーカイブ。2014-05-05に取得。
- ^ "mount(8): ファイルシステムをマウントする". Linux manページ. 2014年5月5日時点のオリジナルよりアーカイブ。2014年5月20日閲覧。
外部リンク
- ECMA-107 情報交換用ディスクカートリッジのボリュームおよびファイル構造。ISO/IEC 9293 と同一。
- Microsoft Extensible Firmware Initiative FAT32 ファイル システム仕様、FAT: オンディスク フォーマットの概要
- FAT32 ファイルシステムの理解 (組み込みファームウェア開発者向けに説明)
- LFNに関する多くの情報を含むFATの理解
- FAT ブート セクターの詳細な説明: Microsoft サポート技術情報の記事 140418
- FAT32 ファイル システムの説明: Microsoft サポート技術情報の記事 154997
- FAT12/FAT16/FAT32 file system implementation for *nix: Includes libfat libraries and fusefat, a FUSE file system driver
- MS-DOS: Directory and Subdirectory Limitations: Microsoft Knowledge Base Article 39927
- Overview of FAT, HPFS, and NTFS File Systems: Microsoft Knowledge Base Article 100108
- Volume and file size limits of FAT file systems: Microsoft Technet, copy made by Internet Archive Wayback Machine
- Microsoft TechNet: A Brief and Incomplete History of FAT32 by Raymond Chen
- FAT32 Formatter Archived 2009-07-21 at the Wayback Machine: allows formatting volumes larger than 32 GB with FAT32 under Windows 2000, Windows XP and Windows Vista
- Fdisk does not recognize full size of hard disks larger than 64 GB: Microsoft Knowledge Base Article 263044, copy made by Internet Archive Wayback Machine. Explains inability to work with extremely large volumes under Windows 95/98.
- Microsoft Windows XP: FAT32 File System. Copy made by Internet Archive Wayback Machine of an article with summary of limits in FAT32 which is no longer available on Microsoft website.
- Visual Layout of a FAT16 drive
