Файл FAT система представляет собой особый тип компьютерной файловой системы архитектуры и семейство стандартных промышленных файловых систем , использующих его.
Разработчики) | Microsoft , SCP , IBM , Compaq , Digital Research , Novell , Caldera |
---|---|
ФИО | Таблица размещения файлов: FAT12 (12-битная версия), FAT16 (16-битные версии), FAT32 (32-битная версия с 28 используемыми битами), exFAT (64-битные версии) |
Введено | 1977 г. ( автономный диск BASIC-80 ) FAT12: август 1980 г. (SCP QDOS ) FAT16: август 1984 г. (IBM PC DOS 3.0) FAT16B: ноябрь 1987 г. ( Compaq MS-DOS 3.31) FAT32: август 1996 г. ( Windows 95 OSR2 ) exFAT: ноябрь 2006 г. ( Windows Embedded CE 6.0 ) |
Идентификатор раздела | MBR / EBR : FAT12 : ea FAT16 : ea FAT32 : ea exFAT : ea BDP : 0x01 0x04 0x06 0x0E 0x0B 0x0C 0x07 EBD0A0A2-B9E5-443387C0-68B6B72699C7 |
Структуры | |
Содержимое каталога | Таблица |
Размещение файлов | Связанный список |
Плохие блоки | Теги кластера |
Пределы | |
Максимум. размер тома | FAT12: 32 МБ (256 МБ для кластеров по 64 КБ ) FAT16: 2 ГБ (4 ГБ для кластеров по 64 КБ ) FAT32: 2 ТБ (16 ТБ для секторов по 4 КБ ) |
Максимум. размер файла | 4 294 967 295 байт (4 ГБ - 1) с FAT16B и FAT32 [1] |
Максимум. количество файлов | FAT12: 4068 для кластеров 8 КБ FAT16: 65 460 для кластеров 32 КБ FAT32: 268 173 300 для кластеров 32 КБ |
Максимум. длина имени файла | 8.3 имя файла или 255 символов UCS-2 при использовании LFN |
Функции | |
Даты записаны | Дата / время изменения, дата / время создания (только для 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; классы прав доступа World / Group / Owner только с загруженной многопользовательской безопасностью) FAT32: Частично, только с DR -DOS, REAL / 32 и 4690 OS |
Прозрачное сжатие | FAT12 / FAT16: на том, SuperStor , Stacker , DoubleSpace , DriveSpace FAT32: Нет |
Прозрачное шифрование | FAT12 / FAT16: только по объему с DR-DOS FAT32: нет |
Файловая система FAT - это устаревшая файловая система, простая и надежная. [3] Он предлагает хорошую производительность даже в очень легких реализациях, но не может обеспечить такую же производительность, надежность и масштабируемость, как некоторые современные файловые системы. Тем не менее, он поддерживается по соображениям совместимости почти всеми разрабатываемыми в настоящее время операционными системами для персональных компьютеров и многих домашних компьютеров , мобильных устройств и встроенных систем и, таким образом, является хорошо подходящим форматом для обмена данными между компьютерами и устройствами практически любого типа и возраста. с 1981 года по настоящее время.
Первоначально разработанная в 1977 году для использования на гибких дисках , FAT вскоре была адаптирована и использовалась почти повсеместно на жестких дисках в эпоху DOS и Windows 9x в течение двух десятилетий. Сегодня файловые системы FAT по-прежнему широко используются на гибких дисках, USB-накопителях , флэш- дисках и других твердотельных картах и модулях памяти , а также на многих портативных и встроенных устройствах. DCF реализует FAT в качестве стандартной файловой системы для цифровых камер с 1998 года. [4] FAT также используется для системного раздела EFI (тип раздела 0xEF ) на этапе загрузки компьютеров, совместимых с EFI .
Для гибких дисков FAT стандартизирован как ECMA- 107 [5] и ISO / IEC 9293: 1994 [6] (заменяющий ISO 9293: 1987 [7] ). Эти стандарты охватывают FAT12 и FAT16 с поддержкой только коротких файлов 8.3 ; длинные имена файлов с VFAT являются частично запатентованы . [8] Согласно патентам Google, статус «Общее пространство имен для длинных и коротких имен файлов» (US5758352A) истек в 2019 году, что может означать, что срок действия патента истек полностью. [9]
Технический обзор
Название файловой системы происходит из-за того, что файловая система часто использует индексную таблицу, таблицу размещения файлов , статически выделяемую во время форматирования. Таблица содержит записи для каждого кластера , непрерывной области дискового хранилища. Каждая запись содержит либо номер следующего кластера в файле, либо маркер, указывающий конец файла, неиспользуемое дисковое пространство или специальные зарезервированные области диска. Корневой каталог диска содержит номер первого кластера каждого файла в каталоге; Затем операционная система может просматривать таблицу FAT, ища номер кластера каждой последующей части дискового файла в виде цепочки кластеров до тех пор, пока не будет достигнут конец файла. Во многом таким же образом подкаталоги реализованы как специальные файлы, содержащие записи каталогов соответствующих файлов.
Первоначально разработанная как 8-битная файловая система, максимальное количество кластеров было значительно увеличено по мере развития дисковых накопителей, и поэтому количество битов, используемых для идентификации каждого кластера, увеличилось. Последовательные основные версии формата FAT названы по количеству битов элемента таблицы: 12 ( FAT12 ), 16 ( FAT16 ) и 32 ( FAT32 ). За исключением исходного 8-битного предшественника FAT , каждый из этих вариантов все еще используется. Стандарт FAT также был расширен другими способами, при этом в целом сохранена обратная совместимость с существующим программным обеспечением.
Макет
Область, край | Размер в секторах | СОДЕРЖАНИЕ |
---|---|---|
Зарезервированные секторы | (количество зарезервированных секторов ) | Загрузочный сектор |
Информационный сектор ФС (только FAT32) | ||
Больше зарезервированных секторов (необязательно) | ||
FAT Регион | (количество FAT) * (секторов на FAT) | Таблица размещения файлов №1 |
Таблица размещения файлов №2 ... (необязательно) | ||
Регион корневого каталога | (количество корневых записей * 32) / (байтов на сектор) | Корневой каталог (только FAT12 и FAT16) |
Область данных | (количество кластеров) * (секторов в кластере) | Область данных (для файлов и каталогов) ... (до конца раздела или диска) |
Файловая система FAT состоит из четырех областей:
- Зарезервированные секторы
- Первый зарезервированный сектор (логический сектор 0) - это загрузочный сектор (также называемый загрузочной записью тома или просто VBR ). Он включает область, называемую блоком параметров BIOS ( BPB ), которая содержит некоторую базовую информацию о файловой системе, в частности ее тип и указатели на расположение других разделов, и обычно содержит код загрузчика операционной системы .
- Важная информация из загрузочного сектора доступна через структуру операционной системы, называемую блоком параметров диска ( DPB ) в DOS и OS / 2.
- Общее количество зарезервированных секторов указано в поле внутри загрузочного сектора и обычно составляет 32 в файловых системах FAT32. [10]
- Для файловых систем FAT32 зарезервированные секторы включают в себя информационный сектор файловой системы в логическом секторе 1 и резервный загрузочный сектор в логическом секторе 6.
- В то время как многие другие поставщики продолжали использовать односекторную настройку (только логический сектор 0) для загрузчика начальной загрузки, код загрузочного сектора Microsoft с момента введения FAT32 расширился и теперь охватывает логические сектора 0 и 2, причем логический сектор 0 зависит от подпрограммы в логическом секторе 2. Область резервного загрузочного сектора также состоит из трех логических секторов 6, 7 и 8. В некоторых случаях Microsoft также использует сектор 12 области зарезервированных секторов для расширенного загрузчика.
- FAT Регион
- Обычно он содержит две копии таблицы размещения файлов для проверки избыточности, хотя редко используется даже утилитами восстановления диска.
- Это карты области данных, указывающие, какие кластеры используются файлами и каталогами. В FAT12 и FAT16 они сразу следуют за зарезервированными секторами.
- Обычно дополнительные копии хранятся в жесткой синхронизации при записи, а при чтении они используются только при возникновении ошибок в первой FAT.
- Первые два кластера (кластер 0 и 1 ) на карте содержат специальные значения.
- Регион корневого каталога
- Это таблица каталогов, в которой хранится информация о файлах и каталогах, расположенных в корневом каталоге. Он используется только с FAT12 и FAT16 и налагает на корневой каталог фиксированный максимальный размер, который предварительно выделяется при создании этого тома. FAT32 хранит корневой каталог в области данных вместе с файлами и другими каталогами, что позволяет ему расти без таких ограничений. Таким образом, для FAT32 область данных начинается здесь.
- Область данных
- Здесь хранятся фактические данные файла и каталога, которые занимают большую часть раздела. Традиционно неиспользуемые части области данных инициализируются значением-заполнителем, равным 0xF6 согласно таблице параметров диска INT 1Eh (DPT) во время форматирования на IBM-совместимых машинах, но также используется в Atari Portfolio . 8-дюймовые дискеты CP / M обычно поставлялись предварительно отформатированными со значением 0xE5 ; [11] посредством Digital Research [12] это значение также использовалось на дискетах формата Atari ST . [nb 1] Amstrad использовал 0xF4 вместо этого. Некоторые современные форматеры стирают жесткие диски со значением 0x00 , тогда как значение 0xFF , значение по умолчанию для незапрограммированного блока флэш-памяти, используется на флэш-дисках для уменьшения износа . Последнее значение обычно также используется на дисках ROM. (Некоторые расширенные инструменты форматирования позволяют настроить байт-заполнитель формата. [Nb 2] )
- Размер файлов и подкаталогов можно произвольно увеличивать (до тех пор, пока есть свободные кластеры), просто добавляя дополнительные ссылки в цепочку файлов в FAT. Файлы распределяются в единицах кластеров, поэтому, если файл размером 1 КБ находится в кластере 32 КБ , 31 КБ теряется.
- FAT32 обычно начинает таблицу корневого каталога в кластере номер 2: первом кластере области данных.
FAT использует формат с прямым порядком байтов для всех записей в заголовке (за исключением, если это явно указано, для некоторых записей в загрузочных секторах Atari ST) и FAT (ов). [12] Можно выделить больше секторов FAT, чем необходимо для количества кластеров. Конец последнего сектора каждой копии FAT может не использоваться, если нет соответствующих кластеров. Общее количество секторов (как указано в загрузочной записи) может быть больше, чем количество секторов, используемых данными (кластеры × секторы на кластер), FAT (количество FAT × секторов на FAT), корневой каталог (n / a для FAT32) и скрытых секторов, включая загрузочный сектор: это приведет к появлению неиспользуемых секторов в конце тома. Если раздел содержит больше секторов, чем общее количество секторов, занятых файловой системой, это также приведет к появлению неиспользуемых секторов в конце раздела после тома.
Площадь зарезервированных секторов
Загрузочный сектор
На устройствах без разделов, таких как дискеты , загрузочный сектор ( VBR ) является первым сектором (логический сектор 0 с физическим адресом CHS 0/0/1 или адресом LBA 0). Для разделенных на разделы устройств, таких как жесткие диски, первый сектор является главной загрузочной записью, определяющей разделы, а первый сектор разделов, отформатированных с файловой системой FAT, снова является загрузочным сектором.
Общая структура первых 11 байтов, используемых большинством версий FAT для IBM-совместимых x86-машин, начиная с DOS 2.0:
Смещение байта | Длина (байты) | СОДЕРЖАНИЕ |
---|---|---|
0x000 | 3 | Инструкция по переходу. Если у загрузочного сектора есть действительная подпись, находящаяся в последних двух байтах загрузочного сектора (проверенная большинством загрузчиков, находящихся в системной BIOS или MBR), и этот том загружается с, предыдущий загрузчик передаст выполнение этой записи точки с определенными значениями регистров, и тогда инструкция перехода пропустит оставшуюся часть (неисполняемого) заголовка. См. Раздел Загрузочная запись тома . Начиная с DOS 2.0, допустимые загрузочные диски x86 должны начинаться либо с короткого перехода, за которым следует NOP ( последовательность opstring0xEB 0x ?? 0x90 [13] [14], как это видно с DOS 3.0 [nb 3] - и в DOS 1.1 [15] [16] ) или ближайший прыжок ( 0xE9 0x ?? 0x ?? [13] [14] как видно на большинстве ( Compaq , TeleVideo ) дисков, отформатированных под DOS 2.x, а также на некоторых ( Epson , Olivetti ) дисках с DOS 3.1). Для обратной совместимости MS-DOS, PC DOS и DR-DOS также допускают переход ( 0x69 0x ?? 0x ?? ) [13] [14] [17] на съемных дисках. На жестких дисках DR DOS дополнительно принимает замененную последовательность JMPS, начиная с NOP ( 0x90 0xEB 0x ?? ), [17] тогда как MS-DOS / PC DOS - нет. (См. Ниже совместимость с Atari ST.) Наличие одного из этих шаблонов opstring (в сочетании с проверкой действительного значения дескриптора мультимедиа по смещению 0x015 ) служит индикатором для DOS 3.3 и выше, что присутствует какой-то BPB (хотя точный размер не должен определяться из цели перехода, поскольку некоторые загрузочные секторы содержат данные частного загрузчика после BPB), а для DOS 1.x (и некоторые тома DOS 3.0), им придется вернуться к методу DOS 1.x, чтобы определить формат через байт носителя в FAT (в логическом секторе 1 ). |
0x003 | 8 | OEM-имя (заполнено пробелами 0x20 ). Это значение определяет, в какой системе был отформатирован диск. Хотя официально зарегистрировано как бесплатное использование OEM, MS-DOS / PC DOS (начиная с версии 3.1), Windows 95/98 / SE / ME и OS / 2 проверяют это поле, чтобы определить, на какие другие части загрузочной записи можно полагаться и как интерпретировать их. Следовательно, установка произвольных или фиктивных значений метки OEM может привести к тому, что MS-DOS, PC DOS и OS / 2 не смогут правильно распознать том и вызвать повреждение данных при записи. [18] [19] [20] Распространенными примерами являются " Некоторые поставщики хранят лицензионную информацию или ключи доступа в этой записи. Volume Tracker в Windows 95/98 / SE / ME перезапишет метку OEM Некоторые загрузчики вносят изменения или отказываются передавать управление загрузочному сектору в зависимости от определенных значений, обнаруженных здесь (например, смещение NEWLDR 0x018 ). Загрузочное ПЗУ профессионального компьютера Wang будет рассматривать диск как загрузочный только в том случае, если первые четыре символа метки OEM - « Если в FAT32 EBPB подпись со смещением сектора 0x042 это 0x29 и обе записи общего сектора равны 0, запись файловой системы может служить 64-битной записью общего количества секторов, а запись OEM-метки может использоваться как альтернативный тип файловой системы вместо обычной записи со смещением 0x052 . Аналогичным образом, если для этой записи установлено значение " |
0x00B | варьируется | Блок параметров BIOS ( 13 , 19 , 21 или 25 байтов), расширенный блок параметров BIOS (32 или 51 байт) или расширенный блок параметров BIOS FAT32 (60 или 79 байтов); размер и содержимое различаются в зависимости от операционной системы и версии, см. ниже |
варьируется | варьируется | Загрузочный код, специфичный для файловой системы и операционной системы; часто начинается сразу после [E] BPB, но иногда между концом [E] BPB и началом загрузочного кода сохраняются дополнительные «частные» данные загрузчика; поэтому скачок со смещением 0x001 не может использоваться для надежного получения точного формата [E] BPB. (В сочетании как минимум с DOS 3.31 BPB некоторые загрузчики GPT (например, BootDuet ) используют 0x1FA - 0x1FD для хранения старших 4 байтов скрытых секторов для томов, расположенных за пределами первых 2 32 -1 секторов. Поскольку это место может содержать код или другие данные в других загрузочных секторах, оно не может быть записано, когда 0x1F9 - 0x1FD не все содержат ноль.) |
0x1FD | 1 | Номер физического диска (только в загрузочных секторах DOS от 3.2 до 3.31). В OS / 2 1.0 и DOS 4.0 эта запись перемещена в смещение сектора. 0x024 (по смещению 0x19 в EBPB ). Большинство загрузочных секторов Microsoft и IBM поддерживают значения 0x00 по смещению 0x1FC и 0x1FD с тех пор, хотя они не являются частью подписи на 0x1FE . Если он принадлежит загрузочному тому, можно настроить расширенную MBR DR-DOS 7.07 (см. NEWLDR offset 0x014 ), чтобы динамически обновить эту запись до значения DL, предоставленного во время загрузки, или значения, хранящегося в таблице разделов. Это позволяет загружать альтернативные диски, даже есликод VBR игнорирует значение DL. |
0x1FE | 2 | Подпись загрузочного сектора ( 0x55 0xAA ). [10] [nb 4] Эта подпись указывает на загрузочный код, совместимый с IBM PC, и проверяется большинством загрузчиков, находящихся в системном BIOS или MBR, перед передачей выполнения в загрузочный код загрузочного сектора (но, например, не исходной IBM ПЗУ-BIOS ПК [23] ). Эта подпись не указывает на конкретную файловую систему или операционную систему. Поскольку эта подпись присутствует не на всех дисках в формате FAT (например, не на DOS 1.x [15] [16] или на томах FAT, не предназначенных для загрузки x86), операционные системы не должны полагаться на наличие этой подписи при регистрации. в томах (старые выпуски MS-DOS / PC DOS до 3.3 проверяли эту подпись, но более новые выпуски, а также DR-DOS нет). Инструменты форматирования не должны записывать эту подпись, если записанный загрузочный сектор не содержит хотя бы x86-совместимой фиктивной заглушки загрузчика; как минимум, он должен останавливать процессор в бесконечном цикле ( 0xF4 0xEB 0xFD ) или введите INT 19h и RETF ( 0xCD 0x19 0xCB ). Эти opstrings не должны использоваться при смещении сектора. 0x000 , однако, потому что DOS проверяет другие коды операций как сигнатуры. Многие дискеты MSX-DOS 2 используют 0xEB 0xFE 0x90 при смещении сектора 0x000, чтобы поймать ЦП в замкнутом цикле, сохраняя при этом шаблон кода операции, распознаваемый MS-DOS / PC DOS. Эта подпись должна быть расположена с фиксированным смещением сектора. 0x1FE для секторов размером 512 и выше. Если размер физического сектора больше, он может повторяться в конце физического сектора. ST Atari будет считать, что диск является загрузочным для Atari 68000, если контрольная сумма 256 слов с прямым порядком байтов в загрузочном секторе равна 0x1234 . [24] [nb 5] Если код загрузчика совместим с IBM, важно убедиться, что контрольная сумма в загрузочном секторе не совпадает с этой контрольной суммой случайно. Если это произойдет, можно использовать изменение неиспользуемого бита (например, до или после области загрузочного кода), чтобы гарантировать, что это условие не выполняется. В редких случаях обратная подпись 0xAA 0x55 наблюдается на образах дисков. Это может быть результатом неправильной реализации в инструменте форматирования на основе ошибочной документации [nb 4], но также может указывать на поменяемый местами порядок байтов образа диска, который мог иметь место при передаче между платформами с использованием другого порядка байтов . Значения BPB и файловые системы FAT12, FAT16 и FAT32 предназначены для использования только прямого порядка байтов, и нет известных реализаций вариантов, использующих вместо этого значения с прямым порядком байтов . |
Дискеты Atari ST в формате FAT имеют очень похожую структуру загрузочного сектора:
Смещение байта | Длина (байты) | СОДЕРЖАНИЕ |
---|---|---|
0x000 | 2 | Инструкция по переходу. Исходные загрузочные секторы Atari ST начинаются с инструкции 68000 BRA.S ( 0x60 0x ?? ). [12] Для совместимости с операционными системами ПК диски с форматированием Atari ST начиная с TOS 1.4 начинаются с 0xE9 0x ?? вместо. |
0x002 | 6 | OEM-имя (заполнено пробелами 0x20 ), например, " Loader " ( 0x4C 0x6F 0x61 0x64 0x65 0x72 ) на томах, содержащих загрузчик Atari ST. См. Меры предосторожности при использовании имен OEM для дисков, отформатированных на ПК выше. Смещение и длина этой записи отличаются от записи на дисках, отформатированных на ПК. |
0x008 | 3 | Серийный номер диска [12] (по умолчанию: 0x00 0x00 0x00 ), используемый Atari ST для обнаружения смены диска. (Windows 9x Volume Tracker всегда будет хранить " IHC " здесь на незащищенных от записи гибких дисках; см. Выше.) Это значение необходимо изменить, если содержимое диска было изменено извне, в противном случае ST Atari могут не распознать изменение при повторной вставке. Эта запись перекрывает поле OEM Name на дисках, отформатированных на ПК. Для максимальной совместимости здесь может потребоваться сопоставление определенных шаблонов; см. выше. |
0x00B | 19 | Блок параметров BIOS DOS 3.0 (формат с прямым порядком байтов ) |
0x01E | варьируется | Данные частного загрузочного сектора (смешанный формат с прямым порядком байтов и прямым порядком байтов ) |
варьируется | варьируется | Загрузочный код Atari ST, специфичный для файловой системы и операционной системы. Не следует делать никаких предположений относительно позиции загрузки кода, которая должна быть перемещаемой. Если загрузка операционной системы (TOS.IMG [12] ) не удалась, код может вернуться в Atari ST BIOS с 68000 RTS ( код операции0x4E75 с большой прямой порядок байтов последовательности байтов 0x4E 0x75 [nb 4] ) инструкция и все регистры без изменений. |
0x1FE | 2 | Контрольная сумма. 16-битная контрольная сумма за 256 тупоконечник слов 512 байт загрузочного сектора , включая это слово должны соответствовать значению магического0x1234 для обозначения исполняемого кода загрузочного сектора Atari ST 68000. [24] Эта запись контрольной суммы может использоваться для соответствующего выравнивания контрольной суммы. [№ 5] Если размер логического сектора превышает 512 байт, остаток не включается в контрольную сумму и обычно заполняется нулями. [24] Поскольку некоторые операционные системы ПК ошибочно не принимают дискеты в формате FAT, если 0x55 0xAA [nb 4] сигнатуры здесь нет, рекомендуется разместить 0x55 0xAA в этом месте (и добавьте IBM-совместимый загрузчик или заглушку) и используйте неиспользуемое слово в личных данных или в области загрузочного кода или серийном номере, чтобы гарантировать, что контрольная сумма 0x1234 [nb 5] не совпадает (если только общий оверлей жирного кода не будет одновременно исполняться и на IBM PC, и на Atari ST). |
Тома MSX-DOS в формате FAT12 имеют очень похожую структуру загрузочного сектора:
Смещение байта | Длина (байты) | СОДЕРЖАНИЕ |
---|---|---|
0x000 | 3 | Инструкция по прыжку-пустышке (например, 0xEB 0xFE 0x90 ). |
0x003 | 8 | OEM-имя (заполнено пробелами 0x20 ). |
0x00B | 19 | DOS 3.0 BPB |
0x01E | варьируется (2) | Точка входа кода MSX-DOS 1 для процессоров Z80 в загрузочный код MSX. Это то место, куда машины MSX-DOS 1 переходят при передаче управления загрузочному сектору. Это расположение пересекается с форматами BPB, начиная с DOS 3.2, или с кодом загрузочного сектора, совместимым с x86, для загрузочных секторов, совместимых с IBM PC, и приведет к сбою на компьютере MSX, если не будут приняты особые меры предосторожности, такие как замыкание ЦП здесь (opstring 0x18 0xFE для JR 0x01E ). |
0x020 | 6 | Подпись тома MSX-DOS 2 " VOL_ID ". |
0x026 | 1 | Флаг восстановления MSX-DOS 2 (по умолчанию: 0x00 . Если VOL_ID подпись присутствует на смещении сектора 0x020 , этот флаг указывает, содержит ли том удаленные файлы, которые можно восстановить (см. Смещение 0x0C в записях каталога). |
0x027 | 4 | Серийный номер диска MSX-DOS 2 (по умолчанию: 0x00000000 ). Если VOL_ID подпись присутствует на смещении сектора 0x020 , MSX-DOS 2 хранит здесь серийный номер тома для обнаружения смены носителя. |
0x02B | 5 | зарезервированный |
0x030 | варьируется (2) | Точка входа кода MSX-DOS 2 для процессоров Z80 в загрузочный код MSX. Это то место, куда машины MSX-DOS 2 переходят при передаче управления загрузочному сектору. Это расположение перекрывается с форматами EBPB, начиная с DOS 4.0 / OS / 2 1.2, или с кодом загрузочного сектора, совместимым с x86, для загрузочных секторов, совместимых с IBM PC, и приведет к сбою на компьютере MSX, если не будут приняты особые меры предосторожности, такие как застревание процессора в плотная петля здесь (opstring 0x18 0xFE для JR 0x030 ). |
0x1FE | 2 | Подпись |
Блок параметров BIOS
Общая структура первых 25 байтов блока параметров BIOS (BPB), используемых версиями FAT, начиная с DOS 2.0 (байты при смещении сектора От 0x00B до 0x017 хранятся с DOS 2.0, но не всегда используются до DOS 3.2, значения в 0x018 в 0x01B используются начиная с DOS 3.0):
Смещение сектора | Смещение BPB | Длина (байты) | СОДЕРЖАНИЕ |
---|---|---|---|
0x00B | 0x00 | 2 | Байт на логический сектор в степени двойки; наиболее распространенное значение - 512. Некоторые операционные системы не поддерживают секторы других размеров. Для простоты и максимальной производительности размер логического сектора часто идентичен размеру физического сектора диска, но в некоторых сценариях может быть больше или меньше. Минимально допустимое значение для незагрузочных томов FAT12 / FAT16, содержащих до 65535 логических секторов, составляет 32 байта или 64 байта для более чем 65535 логических секторов. Минимальное практическое значение - 128. Некоторые OEM-версии DOS до DOS 3.31 использовали размер логических секторов до 8192 байтов для логических секторных файлов FAT . Atari ST GEMDOS поддерживает размеры логических секторов от 512 до 4096. [24] DR-DOS поддерживает загрузку с томов FAT12 / FAT16 с размером логических секторов до 32 КБ, а реализации INT 13h поддерживают физические сектора размером до 1024 байт / сектор. [nb 6] Минимальный размер логического сектора для стандартных томов FAT32 составляет 512 байт, который может быть уменьшен до 128 байт без поддержки информационного сектора FS . Дисководы и контроллеры используют физические сектора размером 128, 256, 512 и 1024 байта (например, PC / AX). Портфель Атари поддерживает размер сектора 512 томов размером более 64 Кбайт, 256 байт для томов больше 32 Кбайт и 128 байт для небольших объемов. Магнитооптические приводы использовали размеры секторов 512, 1024 и 2048 байтов. В 2005 году на некоторых пользовательских жестких дисках Seagate использовались сектора размером 1024 байта вместо 512 байтов по умолчанию. [25] Жесткие диски расширенного формата используют 4096 байт на сектор ( 4Kn ) с 2010 года, но также смогут имитировать 512-байтовые сектора ( 512e ) в течение переходного периода. Linux и, соответственно, Android, поддерживают размер логического сектора намного больше, официально задокументированный на странице Man для утилит файловой системы, как до 32 КБ. |
0x00D | 0x02 | 1 | Логических секторов на кластер. Допустимые значения: 1, 2, 4, 8, 16, 32, 64 и 128. Некоторые версии MS-DOS 3.x поддерживали максимальный размер кластера только 4 КБ, тогда как современные MS-DOS / PC DOS и Windows 95 поддерживают максимальный размер кластера 32 КБ. Windows 98 / SE / ME также частично поддерживает кластер размером 64 КБ, но некоторые службы FCB недоступны на таких дисках, и различные приложения не работают. Семейство Windows NT и некоторые альтернативные версии DOS, такие как PTS-DOS, полностью поддерживают кластеры размером 64 КБ. Для большинства операционных систем на основе DOS максимальный размер кластера остается равным 32 КБ (или 64 КБ) даже для секторов размером более 512 байт. Для логических секторов размером 1 КБ, 2 КБ и 4 КБ Windows NT 4.0 поддерживает размер кластера 128 КБ, в то время как для секторов 2 КБ и 4 КБ размер кластера может достигать 256 КБ. Некоторые версии DR-DOS обеспечивают ограниченную поддержку кластеров 128 КБ с 512 байтами / сектором с использованием значения секторов / кластера 0. MS-DOS / PC DOS будет зависать при запуске, если это значение ошибочно указано как 0. [26] ( INT 21h AX = 53h ) |
0x00E | 0x03 | 2 | Количество зарезервированных логических секторов . Количество логических секторов перед первой FAT в образе файловой системы. По крайней мере, 1 для этого сектора, обычно 32 для FAT32 (для хранения расширенного загрузочного сектора, информационного сектора FS и резервных загрузочных секторов). Поскольку тома, отформатированные в DR-DOS 7.0x FAT32, используют односекторный загрузочный сектор, информационный сектор FS и резервный сектор, некоторые тома, отформатированные под DR-DOS, используют здесь значение 4. |
0x010 | 0x05 | 1 | Количество таблиц размещения файлов. Почти всегда 2; RAM-диски могут использовать 1. Большинство версий MS-DOS / PC DOS не поддерживают более двух файловых систем. Некоторые операционные системы DOS поддерживают только две FAT во встроенном драйвере диска, но поддерживают другие подсчеты FAT для драйверов блочных устройств, загружаемых позже. Тома, объявляющие 2 FAT в этой записи, никогда не будут рассматриваться как тома TFAT . Если значение отличается от 2, некоторые операционные системы Microsoft могут попытаться смонтировать том как том TFAT и использовать второй кластер ( кластер 1 ) первой FAT для определения статуса TFAT. |
0x011 | 0x06 | 2 | Максимальное количество записей корневого каталога FAT12 или FAT16. 0 для FAT32, где корневой каталог хранится в обычных кластерах данных; см. смещение 0x02C в EBPB FAT32. Значение 0 без FAT32 EBPB (без подписи 0x29 или 0x28 по смещению 0x042 ) может также указывать на корневой каталог переменного размера в некоторых нестандартных реализациях FAT12 и FAT16, которые хранят начальный кластер корневого каталога в записи кластера 1 в FAT. [27] Это расширение, однако, не поддерживается основными операционными системами [27], поскольку оно может конфликтовать с другими видами использования записи кластера 1 для флагов обслуживания, текущего маркера конца цепочки илирасширений TFAT . Это значение необходимо настроить так, чтобы записи каталога всегда занимали полные логические секторы, при этом каждая запись каталога занимала 32 байта. MS-DOS / PC DOS требует, чтобы это значение было кратным 16. Максимальное значение, поддерживаемое на гибких дисках, - 240, [13] максимальное значение, поддерживаемое MS-DOS / PC DOS на жестких дисках, - 512. [13] DR -DOS поддерживает загрузку с томов FAT12 / FAT16, если загрузочный файл находится в первых 2048 записях корневого каталога. |
0x013 | 0x08 | 2 | Всего логических секторов. 0 для FAT32. (Если ноль, используйте 4-байтовое значение по смещению. 0x020 ) |
0x015 | 0x0A | 1 | Дескриптор мультимедиа (сравните: FAT ID ): [28] [29] [30] [nb 3]
Это значение должно отражать дескриптор носителя, хранящийся (в записи для кластера 0 ) в первом байте каждой копии FAT. Некоторые операционные системы до DOS 3.2 ( 86-DOS , MS-DOS / PC DOS 1.x и MSX-DOS версии 1.0) полностью игнорируют параметры загрузочного сектора и используют значение дескриптора носителя из первого байта FAT для внутреннего выбора. предварительно определенные шаблоны параметров. Должно быть больше или равно 0xF0 начиная с DOS 4.0. [13] На съемных дисках DR-DOS предполагает наличие BPB, если это значение больше или равно 0xF0 , [13] тогда как для фиксированных дисков это должно быть 0xF8, чтобы предположить наличие BPB. Первоначально эти значения предназначались для использования в качестве битовых флагов; для любых съемных носителей без распознанного формата BPB и дескриптора носителя либо 0xF8 или 0xFA в 0xFF MS-DOS / PC DOS обрабатывает бит 1 как флаг, чтобы выбрать формат из 9 секторов на дорожку, а не формат из 8 секторов, и бит 0 как флаг для обозначения двустороннего носителя. [14] Ценности От 0x00 до 0xEF и От 0xF1 до 0xF7 зарезервированы и не должны использоваться. |
0x016 | 0x0B | 2 | Логические секторы в таблице размещения файлов для FAT12 / FAT16. FAT32 устанавливает это значение в 0 и использует 32-битное значение при смещении. 0x024 вместо этого. |
DOS 3.0 BPB:
Следующие расширения были задокументированы, начиная с DOS 3.0, однако они уже поддерживались некоторыми выпусками DOS 2.11. [32] MS-DOS 3.10 по-прежнему поддерживает формат DOS 2.0, но может также использовать формат DOS 3.0.
Смещение сектора | Смещение BPB | Длина (байты) | СОДЕРЖАНИЕ |
---|---|---|---|
0x00B | 0x00 | 13 | DOS 2.0 BPB |
0x018 | 0x0D | 2 | Физических секторов на дорожку для дисков с геометрией INT 13h CHS, [10] например, 15 для дискеты «1,20 МБ» (1200 КБ). Нулевой элемент указывает, что этот элемент зарезервирован, но не используется. |
0x01A | 0x0F | 2 | Количество головок для дисков с геометрией INT 13h CHS, [10] например, 2 для двусторонней дискеты. Ошибка во всех версиях MS-DOS / PC DOS до 7.10 приводит к сбою этих операционных систем для геометрии CHS с 256 головками, поэтому почти все BIOS выбирают максимум 255 головок. Нулевой элемент указывает, что этот элемент зарезервирован, но не используется. |
0x01C | 0x11 | 2 | Количество скрытых секторов, предшествующих разделу, содержащему этот том FAT. Это поле всегда должно быть нулевым на носителях, которые не разделены на разделы. Эта запись DOS 3.0 несовместима с аналогичной записью по смещению 0x01C в BPB, начиная с DOS 3.31. Его нельзя использовать, если запись логических секторов со смещением 0x013 равен нулю. |
DOS 3.2 BPB:
Официально MS-DOS 3.20 еще используется формат DOS 3.0, но SYS
и FORMAT
были приспособлены для поддержки 6 байт длиннее формат уже (из которых были использованы не все записи).
Смещение сектора | Смещение BPB | Длина (байты) | СОДЕРЖАНИЕ |
---|---|---|---|
0x00B | 0x00 | 19 | DOS 3.0 BPB |
0x01E | 0x13 | 2 | Всего логических секторов, включая скрытые. Эта запись DOS 3.2 несовместима с аналогичной записью по смещению 0x020 в BPB, начиная с DOS 3.31. Его нельзя использовать, если запись логических секторов со смещением 0x013 равен нулю. |
DOS 3.31 BPB:
Официально представленные в DOS 3.31 и не используемые в DOS 3.2, некоторые утилиты DOS 3.2 были разработаны с учетом этого нового формата. Официальная документация рекомендует доверять этим значениям, только если запись логических секторов по смещению 0x013 равен нулю.
Смещение сектора | Смещение BPB | Длина (байты) | СОДЕРЖАНИЕ |
---|---|---|---|
0x00B | 0x00 | 13 | DOS 2.0 BPB |
0x018 | 0x0D | 2 | Физических секторов на дорожку для дисков с геометрией INT 13h CHS, [10] например, 18 для дискеты «1,44 МБ» (1440 КБ). Не используется для дисков, которые больше не поддерживают доступ по протоколу CHS. Идентично записи, доступной с DOS 3.0 . Нулевой элемент указывает, что этот элемент зарезервирован, но не используется. Значение 0 может указывать на доступ только LBA, но может вызывать исключение деления на ноль в некоторых загрузчиках, чего можно избежать, сохранив здесь нейтральное значение 1, если никакая геометрия CHS не может быть разумно эмулирована. |
0x01A | 0x0F | 2 | Количество головок для дисков с геометрией INT 13h CHS, [10] например, 2 для двусторонней дискеты. Не используется для дисков, которые больше не поддерживают доступ по протоколу CHS. Идентично записи, доступной с DOS 3.0 . Ошибка во всех версиях MS-DOS / PC DOS до 7.10 приводит к сбою этих операционных систем для геометрии CHS с 256 головками, поэтому почти все BIOS выбирают максимум 255 головок. Нулевой элемент указывает, что этот элемент зарезервирован, но не используется. Значение 0 может указывать на доступ только LBA, но может вызывать исключение деления на ноль в некоторых загрузчиках, чего можно избежать, сохранив здесь нейтральное значение 1, если никакая геометрия CHS не может быть разумно эмулирована. |
0x01C | 0x11 | 4 | Количество скрытых секторов, предшествующих разделу, содержащему этот том FAT. Это поле всегда должно быть нулевым на носителях, которые не разделены на разделы. [5] [6] [7] Эта запись DOS 3.31 несовместима с аналогичной записью по смещению 0x01C в DOS 3.0-3.3 BPB. По крайней мере, ему можно доверять, если он содержит ноль или если запись логических секторов по смещению 0x013 равен нулю. Если это относится к расширенному активному разделу (AAP), выбранному во время загрузки, запись BPB будет динамически обновляться расширенной MBR, чтобы отразить значение «относительных секторов» в таблице разделов, сохраненное по смещению. 0x1B6 в MBR AAP или NEWLDR, чтобы можно было загружать операционную систему из EBR . (Некоторые загрузчики GPT (например, BootDuet ) используют смещения загрузочного сектора 0x1FA - 0x1FD для хранения старших 4 байтов значения 64-битных скрытых секторов для томов, расположенных за пределами первых 2 32 -1 секторов.) |
0x020 | 0x15 | 4 | Всего логических секторов (если больше 65535; в противном случае см. Смещение 0x013 ). Эта запись DOS 3.31 несовместима с аналогичной записью по смещению 0x01E в DOS 3.2-3.3 BPB. Официально он должен использоваться только в том случае, если запись логических секторов по смещению 0x013 равно нулю, но некоторые операционные системы (некоторые старые версии DR DOS) используют эту запись также для дисков меньшего размера. Для разделенных носителей, если это и запись в 0x013 равны 0 (как показано на некоторых томах DOS 3.x FAT16), многие операционные системы (включая MS-DOS / PC DOS) будут извлекать значение из записи соответствующего раздела (по смещению 0xC ) в MBR . Если обе эти записи равны 0 на томах, использующих FAT32 EBPB с подписью 0x29 , значения, превышающие предел 4 294 967 295 (2 32 -1) (например, некоторые тома DR-DOS с 32-разрядными записями кластера) могут использовать 64-разрядную запись со смещением 0x052 вместо этого. |
Простая формула переводит заданный номер кластера тома CN
в логический номер сектора LSN
: [5] [6] [7]
- Определите (один раз) , где по смещению хранится счетчик зарезервированных секторов.
SSA=RSC+FN×SF+ceil((32×RDE)/SS)
RSC
0x00E , количество FATFN
по смещению 0x010 , количество секторов на FATSF
по смещению 0x016 (FAT12 / FAT16) или 0x024 (FAT32), записи корневого каталогаRDE
по смещению 0x011 , размер сектораSS
по смещению 0x00B иceil(x)
округляет до целого числа. - Определите , где по смещению хранятся сектора в кластере.
LSN=SSA+(CN−2)×SC
SC
0x00D .
На неразмеченных СМИ номер тома скрытых секторов равно нуль , и , следовательно , LSN
и LBA
адреса становятся такими же , так долго , как размер логического сектора тома идентичен размером физического сектора подстилающего медиума. В этих условиях также легко переводить между CHS
адресами, LSNs
а также:
LSN=SPT×(HN+(NOS×TN))+SN−1
, где секторы на дорожку SPT
хранятся со смещением 0x018 и количество сторон NOS
со смещением 0x01A . Номер дорожки, номер TN
головки и номер HN
сектора SN
соответствуют сектору головки цилиндра : формула дает известное преобразование CHS в LBA .
Расширенный блок параметров BIOS
Дополнительная структура, используемая FAT12 и FAT16 начиная с OS / 2 1.0 и DOS 4.0, также известная как расширенный блок параметров BIOS (EBPB) (байты ниже смещения сектора 0x024 такие же, как для DOS 3.31 BPB):
Смещение сектора | EBPB смещение | Длина (байты) | СОДЕРЖАНИЕ |
---|---|---|---|
0x00B | 0x00 | 25 | DOS 3.31 BPB |
0x024 | 0x19 | 1 | Номер физического диска ( 0x00 для (первого) съемного носителя, 0x80 для (первого) фиксированного диска согласно INT 13h ). Допустимые значения для возможных физических дисков в зависимости от BIOS: 0x00 - 0x7E и 0x80 - 0xFE . Значения 0x7F и 0xFF зарезервированы для внутренних целей, таких как удаленная загрузка или загрузка из ПЗУ, и никогда не должны выполняться на диске. Некоторые загрузчики , такие как загрузки MS-DOS / PC DOS загрузчика использовать это значение при загрузке операционной системы, другие игнорируют его вообще или использовать номер диска , представленный в регистре DL в основном загрузчике (например, со многими биосами и МУРЗАМИ ). Запись иногда изменяется инструментами SYS или может быть динамически исправлена предыдущим загрузчиком начальной загрузки, чтобы заставить код загрузочного сектора загружать операционную систему с физических дисков, альтернативных по умолчанию. Аналогичная запись существовала (только) в загрузочных секторах DOS от 3.2 до 3.31 со смещением сектора. 0x1FD . Если он принадлежит загрузочному тому, можно настроить расширенную MBR DR-DOS 7.07 (см. NEWLDR offset 0x014 ), чтобы динамически обновить эту запись EBPB до значения DL, предоставленного во время загрузки, или значения, хранящегося в таблице разделов. Это позволяет загружать альтернативные диски, даже есликод VBR игнорирует значение DL. |
0x025 | 0x1A | 1 | Зарезервированный;
|
0x026 | 0x1B | 1 | Расширенная загрузочная подпись. (Должно быть 0x29 [5] [6] [7] [28], чтобы указать, что EBPB со следующими 3 записями существует (начиная с OS / 2 1.2 и DOS 4.0). Может быть 0x28 на некоторых дисках OS / 2 1.0-1.1 и PC DOS 3.4, что указывает на более раннюю форму формата EBPB, за которой следует только серийный номер. MS-DOS / PC DOS 4.0 и выше, OS / 2 1.2 и выше, а также семейство Windows NT распознают обе подписи соответственно.) |
0x027 | 0x1C | 4 | ID тома (серийный номер) Обычно серийный номер «xxxx-xxxx» создается путем 16-битного сложения обоих значений DX, возвращаемых INT 21h / AH = 2Ah (получить системную дату) [nb 7] и INT 21h / AH = 2Ch (получить системное время). [nb 7] для старшего слова и еще одно 16-битное сложение обоих значений CX для младшего слова серийного номера. В качестве альтернативы, некоторые дисковые утилиты DR-DOS предоставляют |
0x02B | 0x20 | 11 | Этикетка тома раздела, заполненная пробелами ( 0x20 ), например, " NO␠NAME␠␠␠␠ " Программное обеспечение, изменяющее метку тома каталога в файловой системе, также должно обновлять эту запись, но не все программное обеспечение это делает. Метка тома раздела обычно отображается в инструментах создания разделов, поскольку она доступна без монтирования тома. Поддерживается с OS / 2 1.2 и MS-DOS 4.0 и выше.Недоступно, если подпись на 0x026 установлен на 0x28 . Эта область использовалась загрузочными секторами DOS 3.2–3.3 для хранения частной копии таблицы параметров диска (DPT) вместо использования указателя INT 1Eh для получения таблицы ROM, как в более поздних выпусках загрузочного сектора. Повторное использование этого места для в основном косметической метки тома раздела сводило к минимуму проблемы, если некоторые старые системные утилиты все еще пытались исправить прежний DPT. |
0x036 | 0x2B | 8 | Тип файловой системы, заполненный пробелами ( 0x20 ), например, " FAT12␠␠␠ ", " FAT16␠␠␠ ", " FAT␠␠␠␠␠ "Эта запись предназначена только для отображения и не должна использоваться операционной системой для определения типа файловой системы. Тем не менее, он иногда используется для целей идентификации сторонним программным обеспечением, поэтому значения не должны отличаться от официально используемых. Поддерживается с OS / 2 1.2 и MS-DOS 4.0 и выше. Недоступно, если подпись на 0x026 установлен на 0x28 . |
Блок параметров расширенного BIOS FAT32
По сути, FAT32 вставляет 28 байтов в EBPB, за которыми следуют оставшиеся 26 (а иногда только 7) байтов EBPB, как показано выше для FAT12 и FAT16. Операционные системы Microsoft и IBM определяют тип файловой системы FAT, используемой на томе, исключительно по количеству кластеров, а не по используемому формату BPB или указанному типу файловой системы, то есть технически возможно использовать «FAT32 EBPB» также для томов FAT12 и FAT16, а также EBPB DOS 4.0 для небольших томов FAT32. Поскольку было обнаружено, что такие тома создаются операционными системами Windows при некоторых странных условиях, операционные системы [nb 8] должны быть готовы к работе с этими гибридными формами.
Смещение сектора | FAT32 EBPB смещение | Длина (байты) | СОДЕРЖАНИЕ |
---|---|---|---|
0x00B | 0x00 | 25 | DOS 3.31 BPB |
0x024 | 0x19 | 4 | Логических секторов в таблице размещения файлов (соответствует старой записи по смещению 0x0B в DOS 2.0 BPB ). Байт по смещению 0x026 в этой записи никогда не должен становиться 0x28 или 0x29 , чтобы избежать неправильной интерпретации формата EBPB в операционных системах, не поддерживающих FAT32. |
0x028 | 0x1D | 2 | Описание накопителя / флаги зеркалирования (биты 3-0: отсчитываемое от нуля количество активной FAT, если установлен бит 7. [10] Если бит 7 очищен, все FAT зеркалируются как обычно. Остальные биты зарезервированы и должны быть равны 0.) Загрузочные секторы DR-DOS 7.07 FAT32 с двойной поддержкой LBA и CHS используют биты 15-8 для хранения флага доступа и части сообщения. Эти биты содержат любой битовый шаблон 0110: 1111b ( строчная буква «о», бит 13 установлен для доступа к CHS) или 0100: 1111b ( заглавная буква «O», бит 13 очищен для доступа к LBA). Байт также используется для второго символа в потенциальном сообщении об ошибке «No␠IBMBIO␠␠COM» (см. Смещение 0x034 ), отображается либо в смешанном, либо в верхнем регистре, что указывает на неудачный тип доступа). Инструменты форматирования или инструменты, не относящиеся к типу DR SYS, могут очищать эти биты, но другие инструменты для работы с дисками должны оставлять биты 15-8 без изменений. |
0x02A | 0x1F | 2 | Версия (определена как 0.0). Старший байт номера версии хранится по смещению 0x02B , и младший байт по смещению 0x02A . [10] Реализации FAT32 должны отказываться от монтирования томов с неизвестными им номерами версий. |
0x02C | 0x21 | 4 | Номер кластера начала корневого каталога, обычно 2 (первый кластер [37] ), если он не содержит плохих секторов. (Реализация Microsoft FAT32 налагает искусственное ограничение в 65 535 записей на каталог, в то время как многие сторонние реализации этого не делают.) Значение кластера 0 официально не разрешено и никогда не может указывать на допустимый начальный кластер корневого каталога. Некоторые нестандартные реализации FAT32 могут рассматривать это как индикатор для поиска корневого каталога фиксированного размера там, где это ожидается на томах FAT16; см. смещение 0x011 . |
0x030 | 0x25 | 2 | Номер логического сектора информационного сектора FS , обычно 1, т. Е. Второй из трех загрузочных секторов FAT32. Некоторые реализации FAT32 поддерживают небольшую вариацию спецификации Microsoft, в которой информационный сектор FS становится необязательным путем указания значения 0xFFFF [26] (или 0x0000 ) в этой записи. Поскольку логический сектор 0 никогда не может быть действительным информационным сектором FS, но информационные секторы FS используют ту же сигнатуру, что и во многих загрузочных секторах [ необходима ссылка ] , реализации файловой системы никогда не должны пытаться использовать логический сектор 0 в качестве информационного сектора FS и вместо этого предполагать что эта функция не поддерживается на этом конкретном томе. Без информационного сектора FS минимально допустимый размер логического сектора томов FAT32 может быть уменьшен до 128 байтов для специальных целей. |
0x032 | 0x27 | 2 | Номер первого логического сектора копии трех загрузочных секторов FAT32, обычно 6. [10] Поскольку тома в формате DR-DOS 7.0x FAT32 используют односекторный загрузочный сектор, некоторые тома, отформатированные под DR-DOS, используют здесь значение 2. Ценности 0x0000 [10] (и / или 0xFFFF [26] ) зарезервированы и указывают, что резервный сектор недоступен. |
0x034 | 0x29 | 12 | Зарезервировано (можно изменить на формат байта-заполнителя 0xF6 [nb 2] как артефакт MS-DOS FDISK , должен быть инициализирован 0 с помощью инструментов форматирования, но не должен быть изменен реализациями файловой системы или дисковыми инструментами позже.)Загрузочные секторы DR-DOS 7.07 FAT32 используют эти 12 байтов для хранения имени файла " |
0x040 | 0x35 | 1 | Ср. 0x024 для FAT12 / FAT16 (номер физического диска) BPB exFAT расположены со смещением сектора 0x040 в 0x077 , перекрывая все остальные записи стандартной FAT32 EBPB, включая эту. Их можно обнаружить по их подписи на этикетке OEM " |
0x041 | 0x36 | 1 | Ср. 0x025 для FAT12 / FAT16 (используется для различных целей; см. FAT12 / FAT16) Может содержать байт-заполнитель формата 0xF6 [nb 2] артефакты после разделения с помощью MS-DOS FDISK, но еще не отформатированы. |
0x042 | 0x37 | 1 | Ср. 0x026 для FAT12 / FAT16 (расширенная подпись загрузки, 0x29 ) Большинство реализаций файловой системы FAT32 не поддерживают альтернативную сигнатуру 0x28 [22] для обозначения сокращенной формы FAT32 EBPB с последующим только серийным номером (без записей типа метки тома и файловой системы), но поскольку эти 19 в основном неиспользуемых байтов могут служить различным целям в некоторых сценариях, реализации должны принимать 0x28 в качестве альтернативной подписи, а затем вернуться к использованию метки тома каталога в файловой системе вместо EBPB для совместимости с потенциальными расширениями. |
0x043 | 0x38 | 4 | Ср. 0x027 для FAT12 / FAT16 (идентификатор тома) |
0x047 | 0x3C | 11 | Ср. 0x02B для FAT12 / FAT16 (метка тома) Недоступно, если подпись по смещению 0x042 установлен на 0x28 . |
0x052 | 0x47 | 8 | Ср. 0x036 для FAT12 / FAT16 (Тип файловой системы, заполненный пробелами ( 0x20 ), например, " FAT32␠␠␠ ").Недоступно, если подпись на 0x042 установлен на 0x28 . Если обе записи общего числа логических секторов со смещением 0x020 и 0x013 - 0 на томах, использующих FAT32 EBPB с подписью 0x29 , тома с более чем 4 294 967 295 (2 32 -1) секторов (например, некоторые тома DR-DOS с 32-битными записями кластера) могут вместо этого использовать эту запись в качестве общей записи 64-битных логических секторов . В этом случае метка OEM со смещением сектора Вместо этого 0x003 может быть получен как тип файловой системы нового стиля. |
Исключения
Версии DOS до 3.2 полностью или частично полагались на байт дескриптора носителя в BPB или байт идентификатора FAT в кластере 0 первой FAT для определения форматов дискет FAT12, даже если присутствует BPB. В зависимости от найденного FAT ID и обнаруженного типа диска они по умолчанию используют один из следующих прототипов BPB вместо значений, фактически хранящихся в BPB. [№ 3]
Первоначально FAT ID должен был быть битовым флагом со всеми установленными битами, за исключением бита 2, очищенного для указания формата 80 дорожек (против 40 дорожек), бит 1 очищен, чтобы указать формат 9 секторов (против 8 секторов), и бит 0 очищен для обозначения одностороннего (по сравнению с двусторонним) формата [14], но эта схема не соблюдалась всеми OEM-производителями и устарела с появлением жестких дисков и форматов высокой плотности. Кроме того, различные 8-дюймовые форматы, поддерживаемые 86-DOS и MS-DOS, не подходят для этой схемы.
FAT ID (сравните с ID носителя при смещении BPB 0x0A ) [29] [30] | 0xFF | 0xFE | 0xFD | 0xFC | 0xFB | 0xFA | 0xF9 | 0xF8 | 0xF0 | 0xED | 0xE5 | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Размер | 8 " | 5,25 " | 8 " | 8 " | 5,25 " | 8 " | 8 " | 5,25 " | 5,25 " | 5,25 дюйма / 3,5 дюйма | 5,25 дюйма / 3,5 дюйма | 5,25 " | 3,5 дюйма | 3,5 дюйма | 5,25 " | 5,25 дюйма / 3,5 дюйма | 3,5 дюйма | 3,5 дюйма | 3,5 дюйма | 5,25 " | 8 " |
Плотность | ? | DD 48tpi | SD | DD | DD 48tpi | SD | SD | DD 48tpi | DD 48tpi | ? | ? | HD 96 точек на дюйм | DD 135tpi | HD 135 точек на дюйм | QD 96tpi | ? | DD | HD 135 точек на дюйм | ED | QD 96tpi | SD |
Модуляция | ? | MFM | FM | MFM | MFM | FM | FM | MFM | MFM | MFM | MFM | MFM | MFM | MFM | MFM | MFM | MFM | MFM | MFM | MFM | FM |
Форматированная емкость (КБ) | ? | 320 | 250 («старый») [32] [36] | 1200 | 160 | 250 («новый») [32] [36] | 500 | 360 | 180 | 640 | 320 | 1200 | 720 | 1440 | 720 | 360 | 360 | 1440 | 2880 | 720 | 243/250 |
Цилиндры (CHS) | 77 | 40 | 77 | 77 | 40 | 77 | 77 | 40 | 40 | 80 | 80 | 80 | 80 | 80 | 80 | 80 | 80 | 80 | 80 | 80 | 77 |
Физические секторы / дорожка (смещение BPB 0x0D ) | ? | 8 | 26 год | 8 | 8 | 26 год | 26 год | 9 | 9 | 8 | 8 | 15 | 9 | 18 | 9 (8 [35] ) | 9 | 9 | 18 | 36 | 9 (8 [35] ) | 26 год |
Кол-во голов (смещение BPB 0x0F ) | ? | 2 | 1 [32] [36] | 2 [14] [29] [36] (1) | 1 | 1 [14] [32] [36] | 2 [29] | 2 | 1 | 2 | 1 | 2 | 2 | 2 | 2 | 1 | 1 | 2 | 2 | 2 | 1 |
Байт полезной нагрузки / физический сектор | ? | 512 | 128 | 1024 | 512 | 128 | 128 | 512 | 512 | 512 | 512 | 512 | 512 | 512 | 512 | 512 | 512 | 512 | 512 | 512 | 128 |
Байт / логический сектор (смещение BPB 0x00 ) | ? | 512 | 128 | 1024 | 512 | 128 | 128 | 512 | 512 | 512 | 512 | 512 | 512 | 512 | 512 | 512 | 512 | 512 | 512 | 512 | 128 |
Логические секторы / кластер (смещение BPB 0x02 ) | ? | 2 | 4 | 1 | 1 | 4 | 4 | 2 | 1 | 2 | 1 [29] (2? [14] ) | 1 | 2 | 1 | ? | 2 | ? | 1 | 2 | ? | 4 |
Зарезервированные логические секторы (смещение BPB 0x03 ) | ? | 1 | 1 [32] [36] | 1 | 1 | 4 [32] [36] | 4 | 1 | 1 | 1 | 1 | 1 | 1 (2) | 1 | 1 | 1 | 1 | 1 | 1 | ? | 1 |
Количество FAT (смещение BPB 0x05 ) | ? | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 |
Записи корневого каталога (смещение BPB 0x06 ) | ? | 112 (7 секторов) | 68 (17 секторов) | 192 (6 секторов) | 64 (4 сектора) | 68 (17 секторов) | 68 (17 секторов) | 112 (7 секторов) | 64 (4 сектора) | 112 (7 секторов) | 112 (7 секторов) | 224 (14 секторов) | 112 (7 секторов) | 224 (14 секторов) | ? | 112 (7 секторов) | ? | 224 (14 секторов) | 240 (15 секторов) | ? | 64 (16 секторов) |
Всего логических секторов (смещение BPB 0x08 ) | ? | 640 | 2002 [32] [36] | 1232 [29] [36] (616 [14] ) | 320 | 2002 [14] [32] [36] | 4004 [29] | 720 | 360 | 1280 | 640 | 2400 | 1440 | 2880 | ? | 720 | ? | 2880 | 5760 | ? | 2002 г. |
Логические секторы / FAT (смещение BPB 0x0B ) | ? | 1 | 6 [32] [36] | 2 | 1 | 6 [32] [36] | 6? [29] | 2 | 2 | 2 | 2 [29] (1? [14] ) | 7 | 3 | 9 (7) | ? | 2 | ? | 9 | 9 | ? | 1 |
Скрытые секторы (смещение BPB 0x11 ) | ? | 0 | 3 [29] (0 [14] ) | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ? | 0 |
Общее количество кластеров | ? | 315 | 497 | 1227 | 313 | ? | 997? [29] | 354 | 351 | ? | ? | 2371 | 713 | 2847? | ? | ? | ? | 2847 | 2863 | ? | ? |
Логический порядок секторов | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? |
Отображение секторов | ? | ? | ? | ||||||||||||||||||
Первый физический сектор (CHS) | ? | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | ? | ? | 1 | 1 | 1 | ? | 1 | ? | 1 | 1 | ? | 1 |
DRIVER.SYS /F:n | ? | 0 | 3 | 4 | 0 | ? | 3 | 0 | 0 | ? | ? | 1 | 2 | 7 | ? | ? | ? | 7 | 9 | ? | 3 |
Наличие BPB | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | да | да | да | ? | ? | ? | да | да | ? | ? |
Служба поддержки | ? | ? [32] [36] | ? | ? |
Microsoft рекомендует различать два 8-дюймовых формата для FAT ID. 0xFE , пытаясь прочитать адресную метку с одинарной плотностью. Если это приводит к ошибке, среда должна быть двойной плотности. [30]
В таблице не указан ряд несовместимых форматов 8-дюймовых и 5,25-дюймовых гибких дисков FAT12, поддерживаемых 86-DOS , которые различаются либо размером записей каталога (16 байтов против 32 байтов), либо размером зарезервированного область секторов (несколько целых дорожек против только одного логического сектора).
Реализация одностороннего формата FAT12 размером 315 КБ, используемого в MS-DOS для ПК Apricot и F1e [38], имела разную компоновку загрузочного сектора для соответствия BIOS этого компьютера, несовместимого с IBM. Команда перехода и имя OEM были опущены, а параметры MS-DOS BPB (смещения 0x00B - 0x017 в стандартном загрузочном секторе) были расположены по смещению 0x050 . Портативное , F1 , дуэт ПК и Си FD поддерживают нестандартный двухсторонние 720 КБ формата FAT12 вместо этого. [38] Различия в макете загрузочного сектора и идентификаторах носителей сделали эти форматы несовместимыми со многими другими операционными системами. Параметры геометрии для этих форматов:
- 315 КБ: байтов на логический сектор: 512 байт, логических секторов на кластер: 1, зарезервированных логических секторов: 1, количество файлов FAT: 2, записей корневого каталога: 128, всего логических секторов: 630, идентификатор FAT: 0xFC , логических секторов на FAT: 2, физических секторов на дорожку: 9, количество головок: 1. [38] [39]
- 720 КБ: байтов на логический сектор: 512 байт, логических секторов на кластер: 2, зарезервированных логических секторов: 1, количество файлов FAT: 2, записей корневого каталога: 176, всего логических секторов: 1440, идентификатор FAT: 0xFE , логических секторов на FAT: 3, физических секторов на дорожку: 9, количество головок: 2. [38]
В более поздних версиях Apricot MS-DOS появилась возможность читать и записывать диски со стандартным загрузочным сектором в дополнение к дискам с Apricot. Эти форматы также поддерживались DOS Plus 2.1e / g для серии Apricot ACT.
Адаптация DOS Plus для BBC Master 512 поддерживала два формата FAT12 на 80-дорожечных, двусторонних, 5,25-дюймовых накопителях с двойной плотностью, которые вообще не использовали обычные загрузочные секторы. На дисках данных 800 КБ не был загрузочный сектор, и они начинались с единственная копия FAT. [39] Для определения емкости диска использовался первый байт перемещенной FAT в логическом секторе 0. Загрузочные диски размером 640 КБ начинались с миниатюрной файловой системы ADFS, содержащей загрузчик, за которой следовала единственная файловая система FAT . [39] [40] Кроме того, формат 640 КБ отличался тем, что использовались физические номера секторов CHS, начинающиеся с 0 (а не 1, как обычно), и увеличивались сектора в порядке сектор-заголовок (а не сектор-заголовок-дорожка, как common). [40] FAT запускается в начале следующего трека. Эти различия делают эти форматы нераспознаваемыми другими операционными системами. Геометрические параметры для этих форматов:
- 800 КБ: байтов на логический сектор: 1024 байта, логических секторов на кластер: 1, зарезервированных логических секторов: 0, количество файлов FAT: 1, записей корневого каталога: 192, всего логических секторов: 800, идентификатор FAT: 0xFD , логических секторов на FAT: 2, физических секторов на дорожку: 5, количество головок: 2. [39] [40]
- 640 КБ: байтов на логический сектор: 256 байт, логических секторов на кластер: 8, зарезервированных логических секторов: 16, количество файлов FAT: 1, записей корневого каталога: 112, всего логических секторов: 2560, идентификатор FAT: 0xFF , логических секторов на FAT: 2, физических секторов на дорожку: 16, количество головок: 2. [39] [40]
DOS Plus для Master 512 может также получить доступ к стандартным дискам ПК, отформатированным до 180 или 360 КБ , используя первый байт FAT в логическом секторе 1 для определения емкости.
DEC Rainbow 100 (все варианты) поддерживает один формат FAT12 на 80-дорожечных односторонних 5,25-дюймовых накопителях с четырехканальной плотностью. Первые две дорожки были зарезервированы для загрузчика, но не содержали MBR или BPB ( MS-DOS вместо этого использовала статический BPB в памяти). Загрузочный сектор (дорожка 0, сторона 0, сектор 1) был кодом Z80, начинающимся с DI. 0xF3 . Загрузчик 8088 был загружен Z80. Дорожка 1, сторона 0, сектор 2 начинается с байта Media / FAT ID 0xFA . Неформатированные диски используют 0xE5 вместо этого. Файловая система начинается на дорожке 2, сторона 0, сектор 1. В корневом каталоге есть 2 копии FAT и 96 записей. Кроме того, существует отображение физических и логических дорожек для осуществления перемежения секторов 2: 1. Диски были отформатированы с физическими секторами в порядке пронумерованных от 1 до 10 на каждой дорожке после зарезервированных дорожек, но логические сектора от 1 до 10 были сохранены в физических секторах 1, 6, 2, 7, 3, 8, 4, 9. , 5, 10. [41]
Информационный сектор ФС
«Информационный сектор FS» был введен в FAT32 [42] для ускорения времени доступа к определенным операциям (в частности, для получения количества свободного места). Он расположен в логическом номере сектора, указанном в загрузочной записи FAT32 EBPB в позиции 0x030 (обычно логический сектор 1, сразу после самой загрузочной записи).
Смещение байта | Длина (байты) | СОДЕРЖАНИЕ |
---|---|---|
0x000 | 4 | Подпись информационного сектора ФС ( 0x52 0x52 0x61 0x41 = " RRaA ")Пока информационный сектор FS расположен в логическом секторе 1, месте, где FAT обычно запускается в файловых системах FAT12 и FAT16 (только с одним зарезервированным сектором), наличие этой подписи гарантирует, что ранние версии DOS никогда не будут пытаются смонтировать том FAT32, поскольку они ожидают, что значения в кластере 0 и кластере 1 будут соответствовать определенным битовым шаблонам, которые не соответствуют этой сигнатуре. |
0x004 | 480 | Зарезервировано (байтовые значения должны быть установлены на 0x00 во время форматирования, но не следует полагаться и никогда не изменяться в дальнейшем) |
0x1E4 | 4 | Подпись информационного сектора ФС ( 0x72 0x72 0x41 0x61 = " rrAa ") |
0x1E8 | 4 | Последнее известное количество свободных кластеров данных на томе, или 0xFFFFFFFF, если неизвестно. Должен быть установлен на 0xFFFFFFFF во время форматирования и позже обновляется операционной системой. Не следует полностью полагаться на правильность во всех сценариях. Перед использованием этого значения операционная система должна проверить работоспособность этого значения, чтобы оно было меньше или равно количеству кластеров тома. |
0x1EC | 4 | Номер кластера данных, который был назначен последним. Должен быть установлен на 0xFFFFFFFF во время форматирования и позже обновляется операционной системой. С участием 0xFFFFFFFF система должна запускаться в кластере 0x00000002 . Не следует полностью полагаться на правильность во всех сценариях. Перед использованием этого значения операционная система должна проверить работоспособность этого значения, чтобы оно было допустимым номером кластера на томе. |
0x1F0 | 12 | Зарезервировано (байтовые значения должны быть установлены на 0x00 во время форматирования, но не следует полагаться и никогда не изменяться в дальнейшем) |
0x1FC | 4 | Подпись информационного сектора ФС ( 0x00 0x00 0x55 0xAA ) [10] [nb 4] (Все четыре байта должны совпадать до того, как содержимое этого сектора следует считать допустимым форматом.) |
Данные сектора могут быть устаревшими и не отражать текущее содержимое мультимедиа, потому что не все операционные системы обновляют или используют этот сектор, и даже если они это делают, содержимое недействительно, когда носитель был извлечен без надлежащего размонтирования тома или после сбой питания. Следовательно, операционные системы должны сначала проверить дополнительные битовые флаги состояния выключения тома, находящиеся в записи FAT кластера 1 или в EBPB FAT32 со смещением. 0x041 и игнорировать данные, хранящиеся в информационном секторе FS, если эти битовые флаги указывают, что том ранее не был правильно размонтирован. Это не вызывает никаких проблем, кроме возможного снижения скорости для первого запроса свободного пространства или выделения кластера данных; увидеть фрагментацию .
Если этот сектор присутствует на томе FAT32, минимально допустимый размер логического сектора составляет 512 байтов, тогда как в противном случае он был бы 128 байтов. Некоторые реализации FAT32 поддерживают небольшую вариацию спецификации Microsoft, делая информационный сектор FS необязательным путем указания значения 0xFFFF [26] (или 0x0000 ) в записи по смещению 0x030 .
Таблица размещения файлов
Карта кластера
Область данных тома разделена на кластеры одинакового размера - небольшие блоки непрерывного пространства. Размеры кластера различаются в зависимости от типа используемой файловой системы FAT и размера раздела; типичный размер кластера составляет от 2 до 32 КБ . [ необходима цитата ]
Каждый файл может занимать один или несколько кластеров в зависимости от своего размера. Таким образом, файл представлен цепочкой кластеров (называемой односвязным списком ). Однако эти кластеры не обязательно хранятся рядом друг с другом на поверхности диска, а часто вместо этого фрагментированы по всей области данных.
Каждая версия файловой системы FAT использует разный размер для записей FAT. Меньшие числа приводят к меньшему размеру FAT, но тратят пространство в больших разделах из-за необходимости выделения в больших кластерах.
FAT12 файловая система использует 12 бит на входе FAT, таким образом , две записи охватывают 3 байта. Он последовательно является прямым порядком байтов : если эти три байта рассматриваются как одно 24-битное число с прямым порядком байтов, 12 младших битов представляют первую запись (например, кластер 0), а 12 старших битов - вторую (например, кластер 1). . Другими словами, в то время как младшие восемь бит первого кластера в строке хранятся в первом байте, верхние четыре бита хранятся в младшем полубайте второго байта, тогда как младшие четыре бита последующего кластера в строке хранятся в старшем полубайте второго байта и его старших восьми битах в третьем байте.
Компенсировать | +0 | +1 | +2 | +3 | +4 | +5 | +6 | +7 | +8 | +9 | + А | + B | + C | + D | + E | + F |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
+0000 | F0 | F F | FF | 03 | 40 | 00 | 05 | 60 | 00 | 07 | 80 | 00 | FF | А Ф | 00 | 14 |
+0010 | С 0 | 00 | 0D | E0 | 00 | 0F | 00 | 01 | 11 | F 0 | FF | 00 | F 0 | FF | 15 | 60 |
+0020 | 01 | 19 | 7 0 | FF | F7 | А Ф | 01 | FF | 0 F | 00 | 00 | 7 0 | FF | 00 | 00 | 00 |
- Маркер FAT ID / endianness (в зарезервированном кластере № 0 ), где 0xF0 указывает том на несекционированном дисководе Superfloppy ( для разделенных дисков должно быть 0xF8 )
- Индикатор конца цепочки / флаги обслуживания (в зарезервированном кластере №1 )
- Вторая цепочка (7 кластеров) для нефрагментированного файла (здесь: # 2, # 3, # 4, # 5, # 6, # 7, # 8)
- Третья цепочка (7 кластеров) для фрагментированного, возможно, выросшего файла (здесь: # 9, #A, # 14, # 15, # 16, # 19, # 1A)
- Четвертая цепочка (7 кластеров) для нефрагментированного, возможно, усеченного файла (здесь: #B, #C, #D, #E, #F, # 10, # 11)
- Пустые кластеры (здесь: # 12, # 1B, # 1C, # 1E, # 1F)
- Пятая цепочка (1 кластер) для подкаталога (здесь: # 13)
- Плохие кластеры (3 кластера) (здесь: # 17, # 18, # 1D)
FAT16 файловой система использует 16 бит на вход FAT, таким образом , один ввод занимает два байта в обратном порядке байт:
Компенсировать | +0 | +1 | +2 | +3 | +4 | +5 | +6 | +7 | +8 | +9 | + А | + B | + C | + D | + E | + F |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
+0000 | F0 | FF | FF | FF | 03 | 00 | 04 | 00 | 05 | 00 | 06 | 00 | 07 | 00 | 08 | 00 |
+0010 | FF | FF | 0A | 00 | 14 | 00 | 0C | 00 | 0D | 00 | 0E | 00 | 0F | 00 | 10 | 00 |
+0020 | 11 | 00 | FF | FF | 00 | 00 | FF | FF | 15 | 00 | 16 | 00 | 19 | 00 | F7 | FF |
+0030 | F7 | FF | 1А | 00 | FF | FF | 00 | 00 | 00 | 00 | F7 | FF | 00 | 00 | 00 | 00 |
FAT32 файловая система использует 32 бита на запись FAT, таким образом один ввод охватывает четыре байта в прямой порядок байтов порядка байтов. Четыре старших бита каждой записи зарезервированы для других целей; они очищаются во время форматирования и не могут быть изменены в противном случае. Они должны быть замаскированы перед интерпретацией записи как 28-битного адреса кластера.
Компенсировать | +0 | +1 | +2 | +3 | +4 | +5 | +6 | +7 | +8 | +9 | + А | + B | + C | + D | + E | + F |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
+0000 | F0 | FF | FF | 0F | FF | FF | FF | 0F | FF | FF | FF | 0F | 04 | 00 | 00 | 00 |
+0010 | 05 | 00 | 00 | 00 | 06 | 00 | 00 | 00 | 07 | 00 | 00 | 00 | 08 | 00 | 00 | 00 |
+0020 | FF | FF | FF | 0F | 0A | 00 | 00 | 00 | 14 | 00 | 00 | 00 | 0C | 00 | 00 | 00 |
+0030 | 0D | 00 | 00 | 00 | 0E | 00 | 00 | 00 | 0F | 00 | 00 | 00 | 10 | 00 | 00 | 00 |
+0040 | 11 | 00 | 00 | 00 | FF | FF | FF | 0F | 00 | 00 | 00 | 00 | FF | FF | FF | 0F |
+0050 | 15 | 00 | 00 | 00 | 16 | 00 | 00 | 00 | 19 | 00 | 00 | 00 | F7 | FF | FF | 0F |
+0060 | F7 | FF | FF | 0F | 1А | 00 | 00 | 00 | FF | FF | FF | 0F | 00 | 00 | 00 | 00 |
+0070 | 00 | 00 | 00 | 00 | F7 | FF | FF | 0F | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 |
- Первая цепочка (1 кластер) для корневого каталога, на которую указывает запись в FAT32 BPB (здесь: # 2)
- Вторая цепочка (6 кластеров) для нефрагментированного файла (здесь: # 3, # 4, # 5, # 6, # 7, # 8)
Таблица размещения файлов ( FAT ) представляет собой непрерывный ряд секторов сразу после зоны зарезервированных секторов. Он представляет собой список записей, которые сопоставляются каждому кластеру тома. Каждая запись записывает одну из пяти вещей:
- номер следующего кластера в цепочке
- запись о конце цепочки кластера ( EOC ), которая указывает конец цепочки
- специальная запись, чтобы отметить плохой кластер
- ноль, чтобы отметить, что кластер не используется
Для очень ранних версий DOS, чтобы распознать файловую систему, система должна быть загружена с тома или FAT тома должна начинаться со второго сектора тома (логический сектор 1 с физическим адресом CHS 0/0/2 или адресом LBA 1) , то есть сразу после загрузочного сектора. Операционные системы предполагают, что это жестко привязанное расположение FAT, чтобы найти идентификатор FAT в записи кластера 0 FAT на дискетах с DOS 1.0-1.1 FAT, где не найдено действительных BPB.
Специальные записи
Первые две записи в FAT хранят специальные значения:
Первая запись (кластер 0 в FAT) содержит идентификатор FAT, начиная с MS-DOS 1.20 и PC DOS 1.1 (допустимые значения 0xF0 - 0xFF с 0xF1 - 0xF7 зарезервировано) в битах 7-0, который также копируется в BPB загрузочного сектора, смещение 0x015 начиная с DOS 2.0. Оставшиеся 4 бита (если FAT12), 8 бит (если FAT16) или 20 бит (если FAT32) этой записи всегда равны 1. Эти значения были организованы таким образом, чтобы запись также функционировала как «перехватчик всех» в конце записи. -chain маркер для всех кластеров данных, содержащих нулевое значение. Кроме того, для идентификаторов FAT, отличных от 0xFF (и 0x00 ) можно определить правильный порядок полубайтов и байтов (который будет использоваться) драйвером файловой системы, однако файловая система FAT официально использует только прямое обратное представление, и нет известных реализаций вариантов, использующих прямой порядок байтов. значения вместо этого. 86-DOS 0.42 до MS-DOS 1.14 использовали профили жестких дисков вместо FAT ID, но использовали этот байт, чтобы различать носители, отформатированные с 32-байтовыми или 16-байтовыми записями каталога, поскольку они использовались до 86- ДОС 0.42.
Вторая запись (кластер 1 в FAT) номинально хранит маркер конца цепочки кластера, используемый форматером, но обычно всегда содержит 0xFFF / 0xFFFF / 0x0FFFFFFF , то есть, за исключением битов 31-28 на томах FAT32, эти биты обычно всегда установлены. Однако некоторые операционные системы Microsoft устанавливают эти биты, если том не является томом, содержащим работающую операционную систему (т. Е. Используется 0xFFFFFFFF вместо 0x0FFFFFFF здесь). [43] (В сочетании с альтернативными маркерами конца цепочки младшие биты 2-0 могут стать нулевыми для самого низкого разрешенного маркера конца цепочки. 0xFF8 / 0xFFF8 / 0x? FFFFFF8 ; бит 3 также следует зарезервировать, учитывая, что кластеры 0xFF0 / 0xFFF0 / 0x? FFFFFF0 и выше официально зарезервированы. Некоторые операционные системы могут не иметь возможности монтировать некоторые тома, если какой-либо из этих битов не установлен, поэтому маркер конца цепочки по умолчанию не следует изменять.) Для DOS 1 и 2 запись была задокументирована как зарезервированная для использования в будущем. .
Начиная с DOS 7.1, два наиболее значимых бита этой записи кластера могут содержать два необязательных битовых флага, представляющих текущий статус тома в FAT16 и FAT32, но не в томах FAT12. Эти битовые флаги поддерживаются не всеми операционными системами, но операционные системы, поддерживающие эту функцию, будут устанавливать эти биты при завершении работы и сбрасывать наиболее значимый бит при запуске:
если бит 15 (в FAT16) или бит 27 (в FAT32) [44] не установлен. установленный при монтировании тома, том не был должным образом размонтирован перед выключением или извлечением и, следовательно, находится в неизвестном и, возможно, «грязном» состоянии. [31] На томах FAT32 информационный сектор FS может содержать устаревшие данные, поэтому его не следует использовать. Затем операционная система обычно запускает SCANDISK или CHKDSK при следующем запуске [nb 10] [44] (но не при вставке съемного носителя), чтобы гарантировать и, возможно, восстановить целостность тома.
Если бит 14 (в FAT16) или бит 26 (в FAT32) [44] очищен, операционная система обнаружила ошибки дискового ввода-вывода при запуске [44], что может указывать на наличие сбойных секторов. Операционные системы, знающие об этом расширении, будут интерпретировать это как рекомендацию выполнить сканирование поверхности ( SCANDISK ) при следующей загрузке. [31] [44] (Аналогичный набор битовых флагов существует в FAT12 / FAT16 EBPB по смещению 0x1A или FAT32 EBPB по смещению 0x36 . Хотя запись кластера 1 может быть доступна драйверам файловой системы после того, как они смонтировали том, запись EBPB доступна, даже если том не смонтирован, и, таким образом, ее проще использовать драйверам блочных устройств диска или инструментам разбиения.)
Если количество жиров в ВРВЕ не установлено в положении 2, второй элемент кластера в первой FAT (кластер 1) может также отражать статус TFAT объема для TFAT-осведомленных операционные систем. Если запись кластера 1 в этой FAT содержит значение 0, это может означать, что вторая FAT представляет последнее известное действительное состояние транзакции и должна быть скопирована поверх первой FAT, тогда как первая FAT должна быть скопирована поверх второй FAT, если все биты установлены.
Некоторые нестандартные реализации FAT12 / FAT16 используют запись кластера 1 для хранения начального кластера корневого каталога переменного размера (обычно 2 [37] ). Это может произойти, если количество записей корневого каталога в BPB имеет значение 0, а FAT32 EBPB не найден (нет подписи 0x29 или 0x28 по смещению 0x042 ). [27] Это расширение, однако, не поддерживается основными операционными системами, [27] так как оно противоречит другим возможным применениям записи кластера 1. Большинство конфликтов можно исключить, если это расширение разрешено только для FAT12 с менее чем 0xFEF и FAT16 с менее чем Кластеры 0x3FEF и 2 FAT.
Поскольку эти первые две записи FAT хранят специальные значения, нет кластеров данных 0 или 1. Первым кластером данных (после корневого каталога, если FAT12 / FAT16) является кластер 2, [37] обозначающий начало области данных.
Кластерные ценности
Значения записи FAT:
FAT12 | FAT16 | FAT32 | Описание |
---|---|---|---|
0x000 | 0x0000 | 0x? 0000000 | Бесплатный кластер; также используется DOS для ссылки на родительский каталог, запускающий кластер в записях ".." подкаталогов корневого каталога на томах FAT12 / FAT16. [11] [13] В противном случае, если это значение встречается в цепочках кластера (например, в записях каталога нулевой длины или в удаленных файлах), реализации файловой системы должны рассматривать это как маркер конца цепочки. [14] |
0x001 | 0x0001 | 0x? 0000001 | Зарезервировано для внутренних целей; MS-DOS / PC DOS используют это значение кластера в качестве временного индикатора несвободного кластера при построении цепочек кластеров во время выделения файлов (отображается на диске только в случае сбоя или сбоя питания в середине этого процесса). [11] [13] Если это значение встречается в цепочках кластеров на диске, реализации файловой системы должны рассматривать это как маркер конца цепочки. |
0x002 - 0xFEF | 0x0002 - 0xFFEF (0x0002 - 0x7FFF) | 0x? 0000002 - 0x? FFFFFEF | Используется как кластеры данных; значение указывает на следующий кластер. MS-DOS / PC DOS принимают значения до 0xFEF / 0xFFEF / 0x0FFFFFEF (иногда больше; см. Ниже), тогда как для Atari GEMDOS только значения до 0x7FFF разрешены на томах FAT16. |
0xFF0 [nb 11] - 0xFF5 (0xFF1 - 0xFF5) | 0xFFF0 - 0xFFF5 | 0x? FFFFFF0 - 0x? FFFFFF5 | Зарезервировано в некоторых контекстах [45] или также используется [5] [6] [7] [10] [46] в качестве кластеров данных в некоторых нестандартных системах. Следует избегать размеров томов, которые использовали бы эти значения в качестве кластеров данных, но если эти значения встречаются в существующих томах, файловая система должна обрабатывать их как обычные кластеры данных в цепочках кластеров (в идеале с применением дополнительных проверок работоспособности), аналогично тому, что MS- DOS, PC DOS и DR-DOS делают, [13] и в противном случае следует избегать выделения их для файлов. MS-DOS / PC DOS 3.3 и выше обрабатывает значение 0xFF0 [nb 11] [13] на томах FAT12 (но не на FAT16 или FAT32) как дополнительный маркер конца цепи, аналогичный 0xFF8 - 0xFFF . [13] Для совместимости с MS-DOS / PC DOS файловые системы не должны использовать кластер данных. 0xFF0 в цепочках кластеров на томах FAT12 (то есть рассматривать его как зарезервированный кластер, аналогичный 0xFF7 ). (NB. Соответствие младшего байта номера кластера значениям FAT ID и дескриптора носителя является причиной, по которой эти значения кластера зарезервированы.) |
0xFF6 | 0xFFF6 | 0x? FFFFFF6 | Зарезервированный; не использовать. [5] [6] [7] [10] [28] [46] (NB. Соответствует значению заполнителя формата по умолчанию 0xF6 на IBM-совместимых машинах.) Не следует создавать тома, которые использовали бы это значение в качестве кластера данных, но если это значение встречается в существующих томах, файловая система должна рассматривать его как обычный кластер данных в цепочках кластеров (в идеале с применением дополнительных проверок работоспособности). ), и в противном случае следует избегать выделения его для файлов. [14] |
0xFF7 | 0xFFF7 | 0x? FFFFFF7 | Плохой сектор в кластере или зарезервированный кластер (начиная с DOS 2.0). Значения переключения для максимального количества кластеров для файловых систем FAT12 и FAT16 определены как такие, что максимально возможные значения кластера данных ( 0xFF5 и 0xFFF5 , [13] соответственно) всегда будет меньше этого значения. [13] Следовательно, это значение обычно не может встречаться в цепочках кластеров, но если это так, его можно рассматривать как обычный кластер данных, поскольку 0xFF7 мог быть нестандартным кластером данных на томах FAT12 до появления маркера плохого кластера с DOS 2.0 или введения FAT16 с DOS 3.0, [14] и 0xFFF7 мог быть нестандартным кластером данных на томах FAT16 до появления FAT32 с DOS 7.10. Теоретически 0x0FFFFFF7 может быть частью допустимой цепочки кластеров на томах FAT32, но дисковые утилиты должны избегать создания томов FAT32, где это может произойти. Файловой системе следует избегать выделения этого кластера для файлов. [14] Дисковые утилиты не должны пытаться восстановить «потерянные кластеры», содержащие это значение в FAT, но считают их неисправными. |
0xFF8 - 0xFFF (и необязательно 0xFF0; [nb 11] см. Примечание) | 0xFFF8 - 0xFFFF | 0x? FFFFFF8 - 0x? FFFFFFF | Последний кластер в файле (EOC). Реализации файловой системы должны одновременно обрабатывать все эти значения как маркер конца цепочки. [14] Большинство реализаций файловых систем (включая 86-DOS, MS-DOS, PC DOS и DR-DOS) используют 0xFFF [14] / 0xFFFF [14] / 0x0FFFFFFF как маркер конца файла при размещении файлов, но использовались версии Linux до 2.5.40 0xFF8 / 0xFFF8 / 0x0FFFFFF8 . [47] Версии mkdosfs ( dosfstools до 3.0.26 ) продолжают использовать 0x0FFFFFF8 для корневого каталога на томах FAT32, тогда как некоторые инструменты восстановления и дефрагментации дисков используют другие значения в наборе (например, SCANDISK может использовать 0xFF8 / 0xFFF8 / 0x0FFFFFF8 вместо этого). В то время как в исходной 8-битной реализации FAT в автономном диске Microsoft BASIC разные маркеры конца ( 0xC0 .. 0xCD ) использовались для обозначения количества секторов (от 0 до 13), использованных в последнем кластере, занятом файлом, различные конечные маркеры были перепрофилированы под DOS для обозначения различных типов носителей [14] с указанием текущего используемого конечного маркера. в кластер 1 запись, однако, это понятие , кажется, не были широко использованы на практике, и в той мере, в некоторых случаях объемы не могут быть признаны некоторыми операционными системами, если некоторые из битов низкого порядка величины хранящиеся в кластере 1 не установлены. Кроме того, некоторые ошибочные реализации файловой системы принимают только 0xFFF / 0xFFFF / 0x? FFFFFFF как допустимый маркер конца цепи. Реализации файловой системы должны проверять значения кластеров в цепочках кластеров на соответствие максимально допустимому значению кластера, рассчитанному по фактическому размеру тома, и обрабатывать более высокие значения, как если бы они также были маркерами конца цепочки. (Младший байт номера кластера концептуально соответствует идентификатору FAT ID и значениям дескриптора носителя ; [14] см. Примечание выше для специального использования MS-DOS / PC DOS 0xFF0 [nb 11] на томах FAT12. [13] ) |
Несмотря на свое название, FAT32 использует только 28 бит из 32 возможных. Старшие 4 бита обычно равны нулю, но они зарезервированы и их не следует трогать. Стандартный совместимый драйвер файловой системы FAT32 или инструмент обслуживания не должен полагаться на то, что верхние 4 бита равны нулю, и он должен удалить их перед оценкой номера кластера, чтобы справиться с возможными будущими расширениями, где эти биты могут использоваться для других целей. Они не должны очищаться драйвером файловой системы при выделении новых кластеров, но должны очищаться во время переформатирования.
Ограничения по размеру
Варианты FAT12, FAT16, FAT16B и FAT32 файловых систем FAT имеют четкие ограничения, основанные на количестве кластеров и количестве секторов в кластере (1, 2, 4, ..., 128). Для типичного значения 512 байт на сектор:
Требования FAT12: 3 сектора на каждую копию FAT на каждые 1024 кластера
Требования FAT16: 1 сектор на каждую копию FAT на каждые 256 кластеров
Требования FAT32: 1 сектор на каждую копию FAT на каждые 128 кластеров
Диапазон FAT12: от 1 до 4084 кластера:
От 1 до 12 секторов на копию FAT Диапазон FAT16: от 4085 до 65 524 кластеров: от 16 до 256 секторов на копию FAT
Диапазон FAT32: от 65 525 до 268 435 444 кластера: от 512 до 2097 152 секторов на копию FAT
FAT12 минимум: 1 сектор на кластер × 1 кластер = 512 байт (0,5 КБ)
Минимум FAT16: 1 сектор на кластер × 4085 кластеров = 2 091 520 байт (2042,5 КБ)
Минимум FAT32: 1 сектор на кластер × 65 525 кластеров = 33 548 800 байт (32 762,5 КБ)
Максимум FAT12: 64 сектора на кластер × 4084 кластеры = 133 824 512 байт (≈ 127 МБ)
[максимум FAT12: 128 секторов на кластер × 4084 кластера = 267 694 024 байта (≈ 255 МБ)]
Максимум FAT16: 64 сектора на кластер × 65 524 кластера = 2147 090 432 байта (≈ 2047 МБ)
[максимум FAT16 : 128 секторов в сл Uster × 65,524 кластеры = 4,294,180,864 байт (≈4,095 МБ)]
FAT32 максимум: 8 секторов на кластер × 268,435,444 кластеров = 1,099,511,578,624 байт (≈1,024 Гб)
FAT32 максимум: 16 секторов на кластер × 268,173,557 кластеров = 2,196,877,778,944 байт (≈2,046 GB)
[ Максимум FAT32: 32 сектора на кластер × 134 152 181 кластер = 2197 949 333 504 байта (≈ 2047 ГБ)]
[Максимум FAT32: 64 сектора на кластер × 67 092 469 кластеров = 2198 486 024 192 байта (≈ 2047 ГБ)]
[Максимум FAT32: 128 секторов на кластер × 33 550 325 кластеров = 2 198 754 099 200 байт (≈2 047 ГБ)]
- Условные обозначения: 268435444 + 3 есть 0x0FFFFFF7 , поскольку FAT32 версии 0 использует только 28 бит в 32-битных номерах кластеров, номера кластеров 0x0FFFFFF7 до 0x0FFFFFFF отмечает плохие кластеры или конец файла, кластер номер 0 отмечает свободный кластер, а кластер номер 1 не используется. [37] Аналогично 65524 + 3 - это 0xFFF7 для FAT16 и 4084 + 3 0xFF7 для FAT12. Количество секторов в кластере представляет собой степень двойки, подходящую для одного байта, наименьшее значение - 1 ( 0x01 ), наибольшее значение 128 ( 0x80 ). Строки в квадратных скобках указывают на необычный размер кластера 128, а для FAT32 размер кластера больше необходимого 32 или 64. [48]
Поскольку каждая запись FAT32 занимает 32 бита (4 байта), максимальное количество кластеров (268435444) требует 2097152 сектора FAT для размера сектора 512 байтов. 2097152 это 0x200000 , и для хранения этого значения требуется более двух байтов. Следовательно, FAT32 представила новое 32-битное значение в загрузочном секторе FAT32 сразу после 32-битного значения для общего количества секторов, представленных в варианте FAT16B.
Расширения загрузочной записи, представленные в DOS 4.0, начинаются с магического 40 ( 0x28 ) или 41 ( 0x29 ). Обычно драйверы FAT смотрят только на количество кластеров, чтобы различать FAT12, FAT16 и FAT32: удобочитаемые строки, идентифицирующие вариант FAT в загрузочной записи, игнорируются, поскольку они существуют только для носителей, отформатированных в DOS 4.0 или более поздних версиях.
Определить количество записей каталога на кластер несложно. Каждая запись занимает 32 байта; в результате получается 16 записей на сектор при размере сектора 512 байт. Команда DOS 5 RMDIR
/ RD
удаляет начальные записи « .
» (этот каталог) и « ..
» (родительский каталог) в подкаталогах напрямую, поэтому размер сектора 32 на RAM-диске возможен для FAT12, но требует 2 или более секторов на кластер. Загрузочному сектору FAT12 без расширений DOS 4 требуется 29 байтов до первого ненужного 32-разрядного числа скрытых секторов FAT16B, это оставляет три байта для (на неиспользуемом RAM-диске) загрузочного кода и волшебства. 0x55 0xAA в конце всех загрузочных секторов. В Windows NT минимальный поддерживаемый размер сектора - 128.
В операционных системах Windows NT параметры FORMAT
команды /A:128K
и /A:256K
соответствуют максимальному размеру кластера 0x80
(128) с размером сектора 1024 и 2048 соответственно. Для общего размера сектора 512 /A:64K
получается 128 секторов на кластер.
Обе редакции каждого стандарта ECMA-107 [5] и ISO / IEC 9293 [6] [7] указывают максимальное количество кластеров, MAX
определяемое формулой , и зарезервированные номера кластеров до 4086 ( MAX=1+trunc((TS-SSA)/SC)
MAX+1
0xFF6 , FAT12) и более поздние 65526 ( 0xFFF6 , FAT16) для будущей стандартизации.
Спецификация Microsoft EFI FAT32 [10] утверждает, что любая файловая система FAT с менее чем 4085 кластерами - это FAT12, в противном случае любая файловая система FAT с менее чем 65525 кластерами - это FAT16, а в противном случае - FAT32. Запись для кластера 0 в начале FAT должна быть идентична байту дескриптора носителя, найденному в BPB, тогда как запись для кластера 1 отражает значение конца цепочки, используемое средством форматирования для цепочек кластеров ( 0xFFF , 0xFFFF или 0x0FFFFFFF ). Записи для номеров кластеров 0 и 1 заканчиваются на границе байта даже для FAT12, например, 0xF9FFFF для дескриптора медиа 0xF9 .
Первый кластер данных - 2, [37] и, следовательно, последний кластер MAX
получает номер MAX+1
. Это приводит к номерам кластеров данных 2 ... 4085 ( 0xFF5 ) для FAT12, 2 ... 65525 ( 0xFFF5 ) для FAT16 и 2 ... 268435445 ( 0x0FFFFFF5 ) для FAT32.
Поэтому единственными доступными значениями, зарезервированными для будущей стандартизации, являются: 0xFF6 (FAT12) и 0xFFF6 (FAT16). Как указано ниже, «менее 4085» также используется для реализаций Linux [46] или, как указано в спецификации Microsoft FAT: [10]
... когда он говорит <, это не означает <=. Также обратите внимание, что числа верны. Первое число для FAT12 - 4085; второе число для FAT16 - 65525. Эти числа и знаки «<» правильные.
Фрагментация
Файловая система FAT не содержит встроенных механизмов, предотвращающих рассыпание вновь записанных файлов по разделу. [49] На томах, где файлы часто создаются и удаляются или их длина часто меняется, носитель со временем будет становиться все более фрагментированным.
Хотя конструкция файловой системы FAT не вызывает каких-либо организационных издержек в дисковых структурах и не уменьшает объем свободного пространства для хранения с увеличением степени фрагментации , как это происходит с внешней фрагментацией , время, необходимое для чтения и записи фрагментированных файлов, будет увеличиваться по мере того, как операционная система должна будет следовать цепочкам кластеров в FAT (с частями, которые должны быть сначала загружены в память, особенно на больших объемах) и читать соответствующие данные, физически разбросанные по всей среде, что снижает шансы для низкоуровневого драйвера блочного устройства для выполнения многосекторного дискового ввода-вывода или инициирования более крупных передач DMA, тем самым эффективно увеличивая накладные расходы протокола ввода-вывода, а также время перемещения рычага и времени установки головки внутри дисковода. Кроме того, файловые операции станут медленнее по мере роста фрагментации, поскольку операционной системе требуется все больше времени для поиска файлов или свободных кластеров.
Другие файловые системы, например HPFS или exFAT , используют битовые карты свободного пространства, которые указывают используемые и доступные кластеры, которые затем можно быстро просмотреть, чтобы найти свободные смежные области. Другое решение - объединение всех свободных кластеров в один или несколько списков (как это сделано в файловых системах Unix ). Вместо этого FAT необходимо сканировать как массив, чтобы найти свободные кластеры, что может привести к снижению производительности при работе с большими дисками.
Фактически, поиск файлов в больших подкаталогах или вычисление свободного дискового пространства на томах FAT - одна из самых ресурсоемких операций, так как требует линейного чтения таблиц каталогов или даже всей FAT. Поскольку общее количество кластеров и размер их записей в FAT по-прежнему были небольшими на томах FAT12 и FAT16, большую часть времени это можно было допустить на томах FAT12 и FAT16, учитывая, что введение более сложных дисковых структур повлечет за собой также увеличилась сложность и объем памяти операционных систем реального режима с их минимальными требованиями к общей памяти 128 КБ или меньше (например, с DOS), для которых FAT была разработана и оптимизирована изначально.
С появлением FAT32 долгое время поиска и сканирования стало более очевидным, особенно на очень больших объемах. Возможным оправданием, предложенным Раймондом Ченом из Microsoft для ограничения максимального размера разделов FAT32, создаваемых в Windows, было время, необходимое для выполнения DIR
операции, которая всегда отображает свободное дисковое пространство в последней строке. [50] Отображение этой строки занимало все больше и больше времени по мере увеличения количества кластеров. Поэтому в FAT32 был введен специальный информационный сектор файловой системы, в котором ранее вычисленный объем свободного пространства сохраняется во время циклов включения питания, так что счетчик свободного пространства необходимо пересчитывать только тогда, когда съемный носитель в формате FAT32 извлекается без предварительного размонтирования или если система выключается без надлежащего завершения работы операционной системы, проблема в основном видна на ПК до ATX- стиля, на простых системах DOS и некоторых потребительских товарах с батарейным питанием.
Из-за огромных размеров кластера (16 КБ, 32 КБ, 64 КБ), вызванных более крупными разделами FAT, внутренняя фрагментация в виде потери дискового пространства из-за нехватки файлов из-за нависания кластера (поскольку файлы редко бывают точными кратными размеру кластера) начинает снижаться. тоже проблема, особенно когда файлов очень много.
Различные оптимизации и настройки для реализации драйверов файловой системы FAT, драйверов блочных устройств и дисковых инструментов были разработаны для преодоления большинства узких мест в производительности, присущих структуре файловой системы, без необходимости изменения компоновки структур на диске. [51] [52] Их можно разделить на интерактивные и автономные методы, и они работают, в первую очередь, пытаясь избежать фрагментации в файловой системе, развертывая методы, чтобы лучше справиться с существующей фрагментацией, а также переупорядочивая и оптимизируя на дисковых структурах. При оптимизации производительность томов FAT часто может достигать производительности более сложных файловых систем в практических сценариях, в то же время сохраняя преимущество доступности даже на очень маленьких или старых системах.
DOS 3.0 и выше не будет немедленно повторно использовать дисковое пространство удаленных файлов для нового распределения, а вместо этого будет искать ранее неиспользуемое пространство перед тем, как начать использовать дисковое пространство ранее удаленных файлов. Это не только помогает поддерживать целостность удаленных файлов как можно дольше, но также ускоряет выделение файлов и позволяет избежать фрагментации, поскольку никогда ранее выделенное дисковое пространство всегда не фрагментировалось. DOS выполняет это, сохраняя указатель на последний выделенный кластер на каждом смонтированном томе в памяти и начинает поиск свободного места с этого места вверх, а не с начала FAT, как это все еще выполнялось в DOS 2.x. [20] Если достигнут конец FAT, поиск продолжится до начала FAT, пока не будет найдено свободное место или пока не будет достигнута исходная позиция, не найдя свободного места. [20] Эти указатели инициализируются так, чтобы указывать на начало файловой системы FAT после загрузки, [20] но на томах FAT32 DOS 7.1 и выше будет пытаться получить последнюю позицию из информационного сектора FS . Однако этот механизм не работает, если приложение часто удаляет и воссоздает временные файлы, поскольку операционная система затем пытается поддерживать целостность пустых данных, что в конечном итоге приводит к еще большей фрагментации. [20] В некоторых версиях DOS можно использовать специальные функции API для создания временных файлов, чтобы избежать этой проблемы.
Кроме того, будут отмечены записи в каталоге удаленных файлов. 0xE5 начиная с DOS 3.0. [11] DOS 5.0 и выше начнет повторно использовать эти записи только тогда, когда ранее неиспользуемые записи каталога были израсходованы в таблице, и в противном случае системе пришлось бы расширять саму таблицу. [13]
Начиная с DOS 3.3 операционная система предоставляет средства для повышения производительности файловых операций FASTOPEN
, отслеживая положение недавно открытых файлов или каталогов в различных формах списков (MS-DOS / PC DOS) или хэш-таблиц (DR-DOS), что может значительно сократить время поиска и открытия файлов. До DOS 5.0 необходимо проявлять особую осторожность при использовании таких механизмов в сочетании с программным обеспечением дефрагментации диска в обход файловой системы или драйверов диска.
Windows NT заранее выделяет дисковое пространство для файлов в FAT, выбирая большие смежные области, но в случае сбоя добавляемые файлы будут казаться больше, чем когда-либо были записаны, с большим количеством случайных данных в конце.
Другие высокоуровневые механизмы могут считывать и обрабатывать более крупные части или полную FAT при запуске или по запросу, когда это необходимо, и динамически создавать в памяти древовидные представления файловых структур тома, отличные от структур на диске. [51] [52] На томах с большим количеством свободных кластеров это может занимать даже меньше памяти, чем образ самой FAT. В частности, на сильно фрагментированных или заполненных томах поиск становится намного быстрее, чем при линейном сканировании фактического FAT, даже если образ FAT будет храниться в памяти. Кроме того, работая на логически высоком уровне файлов и цепочек кластеров, а не на уровне секторов или дорожек, становится возможным в первую очередь избежать некоторой степени фрагментации файлов или выполнить локальную дефрагментацию файлов и переупорядочение записей каталога на основе их имена или шаблоны доступа в фоновом режиме.
Некоторые из предполагаемых проблем с фрагментацией файловых систем FAT также являются результатом ограничений производительности базовых драйверов блочных устройств , которые становятся более заметными, чем меньше памяти доступно для буферизации секторов и блокировки / снятия блокировки отслеживания:
В то время как однозадачная DOS имела положения для многосекторного чтения и блокировки / снятия блокировки слежения, операционная система и традиционная архитектура жесткого диска ПК ( только один ожидающий запрос ввода / вывода за один раз и никаких передач DMA ) изначально не содержали механизмов который может уменьшить фрагментацию за счет асинхронной предварительной выборки следующих данных, пока приложение обрабатывает предыдущие фрагменты. Такие возможности стали доступны позже. Более поздние версии DOS также обеспечивали встроенную поддержку упреждающей буферизации секторов и поставлялись с динамически загружаемыми программами кэширования диска, работающими на уровне физического или логического сектора, часто с использованием памяти EMS или XMS и иногда обеспечивающими стратегии адаптивного кэширования или даже работающими в защищенном режиме через DPMS или маскировка для повышения производительности за счет получения прямого доступа к кэшированным данным в линейной памяти, а не через обычные API-интерфейсы DOS.
Кэширование с отложенной записью часто не было включено по умолчанию в программном обеспечении Microsoft (если оно есть) из-за проблемы потери данных в случае сбоя питания или сбоя, что упрощается из-за отсутствия аппаратной защиты между приложениями и системой.
Таблица каталогов
Таблица каталога представляет собой специальный тип файла , который представляет собой каталог (также известный как папка). Начиная с 86-DOS 0.42 , [53] каждый файл или (начиная с MS-DOS 1.40 и PC DOS 2.0) подкаталог, хранящийся в нем, представлен 32-байтовой записью в таблице. Каждая запись записывает имя, расширение, атрибуты ( архив , каталог, скрытый, доступный только для чтения, система и том), адрес первого кластера данных файла / каталога, размер файла / каталога и дату [ 53] и (начиная с PC DOS 1.1) также время последней модификации. Более ранние версии 86-DOS использовали только 16-байтовые записи каталога, не поддерживали файлы размером более 16 МБ и не указывали время последней модификации. [53]
Помимо таблицы корневого каталога в файловых системах FAT12 и FAT16, которая занимает особое место в области корневого каталога , все таблицы каталогов хранятся в области данных. Фактическое количество записей в каталоге, хранящемся в области данных, может увеличиваться за счет добавления еще одного кластера в цепочку в FAT.
Сама файловая система FAT не накладывает никаких ограничений на глубину дерева подкаталогов до тех пор, пока есть свободные кластеры, доступные для размещения подкаталогов, однако внутренняя текущая структура каталогов (CDS) в MS-DOS / PC DOS ограничивает абсолютный путь к каталогу до 66 символов (включая букву диска, но исключая разделитель байтов NUL), [5] [6] [7], тем самым ограничивая максимальную поддерживаемую глубину подкаталогов 32, независимо от того, что происходит раньше. Concurrent DOS, Multiuser DOS и DR DOS 3.31–6.0 (вплоть до обновлений 1992-11 гг.) Не хранят абсолютные пути к рабочим каталогам внутри и поэтому не демонстрируют это ограничение. [54] То же самое применимо к Atari GEMDOS, но Atari Desktop не поддерживает более 8 уровней подкаталогов. Большинство приложений, знающих об этом расширении, поддерживают пути длиной не менее 127 байт. FlexOS, ОС 4680 и ОС 4690 также поддерживают длину до 127 байт, что позволяет уменьшить глубину до 60 уровней. [55] PalmDOS, DR DOS 6.0 (начиная с BDOS 7.1) и выше, Novell DOS и OpenDOS содержат компакт-диски, совместимые с MS-DOS, и поэтому имеют те же ограничения по длине, что и MS-DOS / PC DOS.
Каждой записи могут предшествовать «поддельные записи» для поддержки длинного имени файла VFAT (LFN); см. ниже.
Допустимые символы для коротких имен файлов DOS включают следующее:
- Заглавные буквы
A
-Z
- Цифры
0
-9
- Пробел (хотя конечные пробелы в базовом имени или расширении считаются заполнением, а не частью имени файла; также имена файлов с пробелами в них не могли легко использоваться в командной строке DOS до Windows 95 из-за отсутствие подходящей системы эвакуации ). Другим исключением являются внутренние команды
MKDIR
/MD
иRMDIR
/RD
в DR-DOS, которые принимают отдельные аргументы и, следовательно, позволяют вводить пробелы. ! # $ % & ' ( ) - @ ^ _ ` { } ~
- Персонажи 128–228
- Персонажи 230–255
Это исключает следующие символы ASCII :
" * / : < > ? \ |
Windows / MS-DOS не имеет escape-символа оболочки+ , . ; = [ ]
Допускается только в длинных именах файлов- Строчные буквы
a
-z
Сохраняются какA
-Z
; разрешено в длинных именах файлов - Управляющие символы 0–31
- Символ 127 (DEL)
Персонаж 229 ( 0xE5 ) не разрешалось использовать в качестве первого символа в имени файла в DOS 1 и 2 из-за его использования в качестве маркера свободной записи. Для обхода этого ограничения в DOS 3.0 и выше был добавлен специальный случай.
Следующие дополнительные символы разрешены в GEMDOS от Atari, но их следует избегать для совместимости с 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
". Операционная система удалит одну [54] (а также две - начиная с DR-DOS 7.02) точки с запятой и ожидающие пароли из имен файлов перед сохранением их на диске. (Командный процессор 4DOS использует точки с запятой для списков включения и требует, чтобы точка с запятой удваивалась для файлов, защищенных паролем, с любыми командами, поддерживающими подстановочные знаки. [54] )
Знак at ( @
) используется для списков файлов многими командами DR-DOS, PalmDOS, Novell DOS, OpenDOS и многопользовательской DOS, System Manager и REAL / 32, а также 4DOS, поэтому иногда его трудно использовать в именах файлов. . [54]
В многопользовательской DOS и REAL / 32 восклицательный знак (!) Не является допустимым символом имени файла, поскольку он используется для разделения нескольких команд в одной командной строке. [54]
В операционных системах IBM 4680 и 4690 в именах файлов нельзя использовать следующие символы:
? * : . ; , [ ] ! + = < > " - / \ |
Кроме того, следующие специальные символы не допускаются в первом, четвертом, пятом и восьмом символе имени файла, поскольку они конфликтуют с командным процессором хоста (HCP) и именами файлов построения таблицы входной последовательности:
@ # ( ) { } $ &
Имена файлов DOS находятся в текущем наборе символов OEM : это может иметь неожиданные последствия, если символы, обрабатываемые одним способом для данной кодовой страницы, интерпретируются по-разному для другой кодовой страницы (команда DOS CHCP
) в отношении нижнего и верхнего регистра, сортировки или валидность как символ имени файла.
Запись в справочнике
До того, как Microsoft добавила поддержку длинных имен файлов и отметок времени создания / доступа, байтов 0x0C - 0x15 записи каталога использовались другими операционными системами для хранения дополнительных метаданных, в первую очередь операционными системами семейства Digital Research, хранящими там пароли файлов, права доступа, идентификаторы владельцев и данные об удалении файлов. Хотя новые расширения Microsoft по умолчанию не полностью совместимы с этими расширениями, большинство из них могут сосуществовать в сторонних реализациях FAT (по крайней мере, на томах FAT12 и FAT16).
32-байтовые записи каталога, как в области корневого каталога, так и в подкаталогах, имеют следующий формат (см. Также 8.3 имя файла ):
Смещение байта | Длина (байты) | СОДЕРЖАНИЕ | ||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x00 | 8 | Краткое имя файла (с пробелами) Первый байт может иметь следующие специальные значения:
В версиях DOS до 5.0 сканирование таблиц каталогов начинается сверху вниз. Чтобы увеличить шансы на успешное восстановление файла, DOS 5.0 и выше запомнит позицию последней записанной записи каталога и будет использовать ее в качестве отправной точки для сканирования таблицы каталогов. | ||||||||||||||||||||||||||||||||||||||||||
0x08 | 3 | Короткое расширение файла (с пробелами) | ||||||||||||||||||||||||||||||||||||||||||
0x0B | 1 | Атрибуты файла
В DR DOS 6.0 и выше, включая PalmDOS, Novell DOS и OpenDOS, атрибут тома устанавливается для ожидающих удаления файлов и каталогов в DELWATCH. Комбинация атрибутов 0x0F используется для обозначения записи длинного имени файла VFAT, начиная с MS-DOS 7.0. Старые версии DOS могут ошибочно принять это за метку тома каталога, поскольку они принимают первую запись с атрибутом тома, установленным как метка тома. Этой проблемы можно избежать, если использовать метку тома каталога как часть процесса форматирования; по этой причине некоторые дисковые инструменты явно записывают | ||||||||||||||||||||||||||||||||||||||||||
0x0C | 1 |
| ||||||||||||||||||||||||||||||||||||||||||
0x0D | 1 |
Двойное использование для времени создания ms и file char не является конфликтным, поскольку время создания больше не важно для удаленных файлов. | ||||||||||||||||||||||||||||||||||||||||||
0x0E | 2 |
Если здесь биты 15-11> 23 или биты 10-5> 59 или биты 4-0> 29, или когда биты 12-0 со смещением 0x14 содержит битовую карту доступа, и это не том FAT32 или том, использующий расширенные атрибуты OS / 2, тогда эта запись фактически содержит хэш пароля, в противном случае можно предположить, что это время создания файла. | ||||||||||||||||||||||||||||||||||||||||||
0x10 | 2 |
Использование даты создания для существующих файлов и времени последнего изменения для удаленных файлов не является конфликтным, поскольку они никогда не используются одновременно. По той же причине использование размера записи существующих файлов и времени последнего изменения удаленных файлов также не является конфликтным. Даты создания и размеры записей не могут использоваться одновременно, однако оба хранятся только при создании файла и никогда не изменяются в дальнейшем, тем самым ограничивая конфликт системами FlexOS, 4680 OS и 4690 OS, которые также обращаются к файлам, созданным в чужих операционных системах. как потенциальные проблемы с отображением или сортировкой файлов в системах, пытающихся интерпретировать размер записи как время создания. Чтобы избежать конфликта, хранение дат создания должно быть дополнительной функцией поддерживающих его операционных систем. | ||||||||||||||||||||||||||||||||||||||||||
0x12 | 2 |
Использование идентификаторов владельцев существующих файлов и даты последнего изменения для удаленных файлов не является конфликтным, поскольку они никогда не используются одновременно. [54] Использование даты последнего изменения для удаленных файлов и даты доступа также не вызывает конфликта, поскольку даты доступа больше не важны для удаленных файлов, однако идентификаторы владельца и даты доступа не могут использоваться одновременно. | ||||||||||||||||||||||||||||||||||||||||||
0x14 | 2 |
Хранение двух старших байтов первого кластера в файле на FAT32 частично конфликтует с битовыми картами прав доступа. | ||||||||||||||||||||||||||||||||||||||||||
0x16 | 2 |
| ||||||||||||||||||||||||||||||||||||||||||
0x18 | 2 |
| ||||||||||||||||||||||||||||||||||||||||||
0x1A | 2 | Начало файла в кластерах в FAT12 и FAT16. Младшие два байта первого кластера в FAT32; с двумя старшими байтами, хранящимися по смещению 0x14 . Записи с флагом Volume Label, подкаталог "..", указывающий на корень FAT12 и FAT16, и пустые файлы с размером 0 должны иметь первый кластер 0. Записи VFAT LFN также имеют значение 0; на томах FAT12 и FAT16 это можно использовать как часть механизма обнаружения, чтобы различать ожидающие удаления файлы в DELWATCH и VFAT LFN; см. выше. | ||||||||||||||||||||||||||||||||||||||||||
0x1C | 4 | Размер файла в байтах. Записи с установленным флагом Метка тома или Поддиректория должны иметь размер 0. Записи VFAT LFN никогда не сохраняют значение 0x00000000 здесь. Это можно использовать как часть механизма обнаружения, чтобы различать ожидающие удаления файлы в DELWATCH и VFAT LFN; см. выше. |
FlexOS -На операционные системы IBM 4680 OS и IBM 4690 OS поддержка уникальное распределение атрибутов , хранящихся в некоторых битов ранее зарезервированных областей в записях каталога: [68]
- Локальный: не распространять файл, а хранить его только на локальном контроллере. [№ 14]
- Зеркальное отображение файла при обновлении: распространять файл на сервер только при обновлении файла.
- Зеркально отразить файл при закрытии: распространять файл на сервер только при закрытии файла.
- Составной файл при обновлении: распространить файл на все контроллеры при обновлении файла.
- Составной файл при закрытии: распространить файл на все контроллеры при закрытии файла. [69]
Некоторые несовместимые расширения, обнаруженные в некоторых операционных системах, включают:
Смещение байта | Длина (байты) | Система | Описание |
---|---|---|---|
0x0C | 2 | ОС RISC | Тип файла, 0x0000 - 0x0FFF |
0x0C | 4 | Петрова ДОСФС | Адрес загрузки файла |
0x0E | 2 | ANDOS | Адрес файла в памяти |
0x10 | 4 | Петрова ДОСФС | Адрес исполнения файла |
Длинные имена файлов VFAT
Длинные имена файлов VFAT (LFN) хранятся в файловой системе FAT с помощью уловки: добавления дополнительных записей в каталог перед обычной записью файла. Дополнительные записи отмечены атрибутами Volume Label, System, Hidden и Read Only (что дает 0x0F ), что является комбинацией, которая не ожидается в среде MS-DOS и поэтому игнорируется программами MS-DOS и сторонними утилитами. Примечательно, что каталог, содержащий только метки томов, считается пустым и может быть удален; такая ситуация возникает, если файлы, созданные с длинными именами, удаляются из простой DOS. Этот метод очень похож на метод DELWATCH для использования атрибута тома, чтобы скрыть ожидающие удаления файлы для возможного будущего восстановления, начиная с DR DOS 6.0 (1991) и выше. Это также похоже на метод, который публично обсуждался для хранения длинных имен файлов на Ataris и Linux в 1992 году. [70] [71]
Поскольку более старые версии DOS могли ошибочно принимать имена LFN в корневом каталоге за метку тома, VFAT был разработан для создания пустой метки тома в корневом каталоге перед добавлением каких-либо записей имени LFN (если метка тома еще не существовала). [№ 13]
Каждая фальшивая запись может содержать до 13 символов UCS-2 (26 байтов) с использованием полей в записи, которые содержат размер файла или отметки времени (но не поле начального кластера, для совместимости с дисковыми утилитами поле начального кластера установлено на значение 0. Дополнительные пояснения см. в разделе 8.3 filename ). Можно объединить до 20 из этих 13-значных записей, поддерживая максимальную длину 255 символов UCS-2. [61]
После последнего символа UCS-2 появляется 0x0000 добавлен. Остальные неиспользуемые символы заполняются 0xFFFF .
Записи LFN имеют следующий формат:
Смещение байта | Длина (байты) | Описание |
---|---|---|
0x00 | 1 | Порядковый номер (бит 6: последняя логическая, первая физическая запись LFN, бит 5: 0; биты 4-0: номер 0x01 .. 0x14 ( 0x1F ), удаленная запись: 0xE5 ) |
0x01 | 10 | Именные символы (пять символов UCS-2 ) |
0x0B | 1 | Атрибуты (всегда 0x0F ) |
0x0C | 1 | Тип (всегда 0x00 для VFAT LFN, другие значения зарезервированы для использования в будущем; для специального использования битов 4 и 3 в SFN см. далее) |
0x0D | 1 | Контрольная сумма имени файла DOS |
0x0E | 12 | Именные символы (шесть символов UCS-2 ) |
0x1A | 2 | Первый кластер (всегда 0x0000 ) |
0x1C | 4 | Именные символы (два символа UCS-2 ) |
Если для представления имени файла требуется несколько записей LFN, первой идет запись, представляющая конец имени файла. Порядковый номер этой записи имеет бит 6 ( 0x40 ) установлен, чтобы представить, что это последняя логическая запись LFN, и она имеет наивысший порядковый номер. Порядковый номер уменьшается в следующих записях. Запись, представляющая начало имени файла, имеет порядковый номер 1. Значение 0xE5 используется, чтобы указать, что запись удалена.
На томах FAT12 и FAT16 тестирование значений на 0x1A равняется нулю и при Ненулевое значение 0x1C можно использовать для различения LFN VFAT и ожидающих удаления файлов в DELWATCH.
Например, имя файла типа «Файл с очень длинным именем файла.ext» будет отформатировано следующим образом:
Последовательность чисел | Входные данные |
---|---|
0x43 | "me.ext" |
0x02 | "y long filena" |
0x01 | "Файл с версией" |
??? | Нормальная запись 8,3 |
Контрольная сумма также позволяет проверить, соответствует ли длинное имя файла имени 8.3; такое несоответствие могло произойти, если файл был удален и воссоздан с использованием DOS в той же позиции каталога. Контрольная сумма рассчитывается по приведенному ниже алгоритму. (pFCBName - это указатель на имя в том виде, в каком оно появляется в обычной записи каталога, т. е. первые восемь символов - это имя файла, а последние три - расширение. Точка неявная. Любое неиспользуемое пространство в имени файла дополняется пробелами. (ASCII 0x20 ). Например, "Readme.txt" будет " README␠␠TXT
".)
беззнаковый символ lfn_checksum ( const unsigned char * pFCBName ) { int i ; беззнаковая сумма символов = 0 ; for ( i = 11 ; i ; i - ) sum = (( sum & 1 ) << 7 ) + ( sum >> 1 ) + * pFCBName ++ ; сумма возврата ; }
Если имя файла содержит только строчные буквы или представляет собой комбинацию базового имени в нижнем регистре с расширением в верхнем регистре , или наоборот; и не имеет специальных символов и соответствует ограничениям 8.3, запись VFAT не создается в Windows NT и более поздних версиях Windows, таких как XP. Вместо этого два бита в байтах 0x0C записи каталога используются, чтобы указать, что имя файла следует рассматривать как полностью или частично в нижнем регистре. В частности, бит 4 означает расширение в нижнем регистре,а бит 3 в нижнем регистре базового имени , что позволяет использовать такие комбинации, как "example.TXT
" или "HELLO.txt
", но не "Mixed.txt
". Некоторые другие операционные системы поддерживают его. Это создает проблему обратной совместимости со старыми версиями Windows (Windows 95/98/98 SE / ME), которые видят имена файлов в верхнем регистре, если это расширение использовалось, и, следовательно, могут изменить имя файла при его переносе между операционными системы, например, на USB-накопителе. Текущие версии Linux 2.6.x распознают это расширение при чтении (источник: ядро 2.6.18/fs/fat/dir.c
иfs/vfat/namei.c
); опция монтированияshortname
определяет, используется ли эта функция при записи. [72]
Смотрите также
- Сравнение файловых систем
- Назначение буквы диска
- exFAT
- Расширенная загрузочная запись (EBR)
- Файловая система FAT и Linux
- Список файловых систем
- Основная загрузочная запись (MBR)
- Тип перегородки
- Хронология операционных систем DOS
- Безопасная для транзакций файловая система FAT
- Турбо FAT
- Объем загрузочной записи (VBR)
Заметки
- ^ a b Это причина, почему 0xE5 имел особое значение в записях каталога.
- ^ a b c Одной из утилит, позволяющих указать желаемое значение заполнения формата для жестких дисков, является FDISK R2.31 DR-DOS с дополнительным параметром очистки
/W:246
. В отличие от других утилит FDISK , DR-DOS FDISK является не только инструментом для создания разделов, но также может форматировать только что созданные разделы как FAT12 , FAT16 или FAT32 . Это снижает риск случайного форматирования неправильных томов. - ^ a b c Для максимальной совместимости с MS-DOS / PC DOS и DR-DOS операционные системы, пытающиеся определить формат гибкого диска, должны тестировать все упомянутые последовательности кодов операций со смещением сектора. 0x000 в дополнение к поиску действительного байта дескриптора носителя при смещении сектора 0x015 перед тем, как предположить наличие BPB . Хотя дискеты PC DOS 1.0 не содержат BPB, они начинаются с 0xEB , но не показывает 0x90 по смещению 0x002 . Дискеты PC DOS 1.10 даже начинаются с 0xEB 0x ?? 0x90 , хотя они по-прежнему не поддерживают BPB. В обоих случаях проверка на действительный дескриптор носителя по смещению 0x015 завершится ошибкой (значение 0x00 вместо допустимых дескрипторов мультимедиа 0xF0 и выше). Если эти тесты терпят неудачу, DOS проверяет наличие байта дескриптора носителя в первом байте первой FAT в секторе, следующем за загрузочным сектором (логический сектор 1 на дискетах FAT12 / FAT16).
- ^ a b c d e Подпись по смещению 0x1FE в загрузочных секторах 0x55 0xAA , то есть 0x55 по смещению 0x1FE и 0xAA по смещению 0x1FF . Поскольку в контексте компьютеров, совместимых с IBM PC, должно предполагаться представление с прямым порядком байтов , его можно записать как 16-битное слово 0xAA55 в программах для процессоров x86 (обратите внимание на порядок замены ), тогда как его нужно было бы записать как 0x55AA в программах для других архитектур ЦП с прямым порядком байтов . Поскольку это много раз было перепутано в книгах и даже в исходных справочных документах Microsoft, в этой статье используется побайтовое представление на диске на основе смещения, чтобы избежать любой возможной неверной интерпретации.
- ^ a b c Запись контрольной суммы в загрузочных секторах Atari содержит значение выравнивания, а не само магическое значение . Магическая ценность 0x1234 нигде на диске не хранится. В отличие от процессоров Intel x86, процессоры Motorola 680x0 , используемые в машинах Atari, используют представление памяти с прямым порядком байтов, и поэтому при вычислении контрольной суммы необходимо использовать представление с прямым порядком байтов. Как следствие этого, для кода проверки контрольной суммы, запущенного на машинах x86, пары байтов должны быть заменены местами перед 16-битным сложением.
- ^ DR-DOS может загружаться с логических секторных носителей FAT12 / FAT16 с размером логических секторов до 1024 байтов.
- ^ a b Следующие функции 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 создает такие гибридные диски при переформатировании дисков ZIP-100, отформатированных с FAT16B, в формат FAT32. Полученные тома были FAT32 по формату, но по-прежнему использовали FAT16B EBPB. (Непонятно, как Windows определяет расположение корневого каталога на томах FAT32, если использовалась только FAT16 EBPB.)
- ^ Для поддержки сосуществования DR-DOS с PC DOS и нескольких параллельных установок DR-DOS, расширение имени
IBMBIO␠␠COM
загрузочного файлапо умолчанию "" может быть изменено с помощьюSYS /DR:ext
параметра, где ext представляет новое расширение. Другие потенциальные имена файлов загрузки DR-DOS, которые следует ожидать в особых сценариях, - это "DRBIOS␠␠SYS
", "DRDOS␠␠␠SYS
", "IO␠␠␠␠␠␠SYS
", "JO␠␠␠␠␠␠SYS
". - ^ Если флаг грязного завершения работы тома все еще сброшен при запуске, том не был правильно размонтирован. Это, например, заставит Windows 98 WIN.COM запустить SCANDISK для проверки и исправления потенциальных логических ошибок файловой системы. Если флаг сбойного сектора снят, то также будет выполнено сканирование поверхности. Это можно отключить, установив AUTOSCAN = 0 в разделе [OPTIONS]файла MSDOS.SYS .
- ^ a b c d См. другие ссылки для специальных мер предосторожности в отношении появления кластерного значения 0xFF0 на томах FAT12 под MS-DOS / PC DOS 3.3 и выше.
- ^ a b Некоторые версии FORMAT, начиная с MS-DOS 1.25 и PC DOS 2.0, поддерживали опцию
/O
(для старых ) для заполнения первого байта всех записей каталога с помощью 0xE5 вместо использования маркера конца 0x00 . Тем самым. том оставался доступным под PC DOS 1.0 - 1.1 , в то время как форматирование занимало несколько больше времени, и более новые версии DOS не могли воспользоваться преимуществом значительного ускорения, вызванного использованием маркера конца 0x00 . - ^ a b Чтобы избежать потенциальной неправильной интерпретации меток томов каталогов с записями VFAT LFN операционными системами, не поддерживающими VFAT, известно, что инструменты FDISK и FORMAT DR-DOS 7.07 явно записывают фиктивные "
NO␠NAME␠␠␠␠
" метки томов каталогов, если пользователь пропускает ввод тома. метка. Операционная система по умолчанию будет возвращать ту же строку, если метка тома каталога не может быть найдена в корне тома, но без реальной метки тома, сохраненной в качестве первой записи (после записей каталога), более старые операционные системы могут ошибочно выбрать вместо этого используйте записи VFAT LFN. - ^ Это IBM 4680 OS и 4690 OS распределения типа атрибут должен иметь значение бита на диске 0качестве файлов попадают обратно к этому типукогда атрибуты теряются случайно.
Рекомендации
- ^ «Файловые системы» . Microsoft TechNet . 2001 . Проверено 31 июля 2011 .
- ^ a b Microsoft (15 ноября 2006 г.). Windows 95 CD-ROM Файл CONFIG.TXT Статья 135481, Версия: 1.1, получено 22 декабря 2011 г .: «Для каждого жесткого диска указывает, следует ли записывать дату последнего доступа к файлам. Даты последнего доступа отключены для всех дисков. когда ваш компьютер запущен в безопасном режиме и по умолчанию не поддерживаются для дискет. Синтаксис:
ACCDATE=drive1+|- [drive2+|-]...
" - ^ «Файловая система FAT (Windows Embedded CE 6.0)» . Microsoft. 2010-01-06 . Проверено 7 июля 2013 .
- ^ а б JEIDA / JEITA / CIPA (2010). «Стандарт ассоциации продуктов для камеры и обработки изображений, CIPA DC-009-Translation-2010, Правила проектирования для файловой системы камеры: DCF версии 2.0 (издание 2010 г.)» (PDF) . Архивировано из оригинального (PDF) 30 сентября 2013 года . Проверено 13 апреля 2011 .
- ^ Б с д е е г ч я J K «Объем и файловая структура дисковых картриджей для обмена информацией» . Стандарт ECMA-107 (2-е изд., Июнь 1995 г.) . ECMA . 1995 . Проверено 30 июля 2011 .
- ^ Б с д е е г ч я J K «Информационные технологии - Объем и файловая структура дисковых картриджей для обмена информацией» . ИСО / МЭК 9293: 1994 . Каталог ISO . 1994 . Проверено 6 января 2012 .
- ^ Б с д е е г ч я J K «Обработка информации - Объем и файловая структура гибких дисковых картриджей для обмена информацией» . ISO 9293: 1987 . Каталог ISO . 1987 . Проверено 6 января 2012 .
- ^ Аарон Р. Рейнольдс , Деннис Р. Адлер, Ральф А. Липе, Рэй Д. Педризетти, Джеффри Т. Парсонс, Расипурам В. Арун (1998-05-26). «Общее пространство имен для длинных и коротких имен файлов» . Патент США 5758352 . Проверено 19 января 2012 .CS1 maint: несколько имен: список авторов ( ссылка )
- ^ https://patents.google.com/patent/US5758352
- ^ Б с д е е г ч я J к л м п о "Microsoft Extensible Firmware Initiative FAT32 File System Specification, FAT: General Overview of On-Disk Format" . Microsoft . 2000-12-06 . Проверено 3 июля 2011 .
- ^ а б в г д Шульман, Эндрю; Браун, Ральф Д .; Макси, Дэвид; Michels, Raymond J .; Кайл, Джим (1994) [ноябрь 1993]. Недокументированная DOS: Руководство программиста по зарезервированным функциям и структурам данных MS-DOS - расширено за счет включения MS-DOS 6, Novell DOS и Windows 3.1 (2-е изд.). Ридинг, Массачусетс: Эддисон Уэсли . п. 11 . ISBN 0-201-63287-X. ISBN 978-0-201-63287-3 .(xviii + 856 + vi страниц, 3,5-дюймовая дискета) Исправления: [1] [2]
- ^ а б в г д Хааф, Вильфрид; Миддел, Франк (ноябрь 1987). "Daten auf Scheiben - File- und Diskettenstrukturen unter CP / M, MSDOS and TOS: Dateiverwaltung unter TOS". c't - магазин компьютерной техники . c't Kartei (на немецком языке). Vol. 1987 г. 11. Verlag Heinz Heise GmbH & Co. KG . С. 241–246 [246]. ISSN 0724-8679 .
- ^ Б с д е е г ч я J к л м п о р Чаппелл, Джефф (январь 1994). Шульман, Эндрю; Педерсен, Аморетта (ред.). Внутреннее устройство DOS . Серия программирования Эндрю Шульман (1-е издание, 1-е изд.). Издательство Эддисон Уэсли . ISBN 978-0-201-60835-9. ISBN 0-201-60835-9 .(xxvi + 738 + iv страниц, 3,5 дюйма [3] [4] ) Исправления: [5] [6] [7]
- ^ Б с д е е г ч я J к л м п о р д т ы т у V ш Microsoft MS-DOS 3.1 Programmierhandbuch в Englischer Sprache [ Reference Microsoft MS-DOS 3.1 Руководство программиста на английском языке ]. München: Markt & Technik Verlag (опубликовано в 1986 г.). 1984. ISBN 3-89090-368-1. 8411-310-02, 036-014-012.
Что касается инструкции перехода в начале загрузочного сектора: «Определите, является ли первый байт загрузочного сектора E9H или EBIT (первый байт 3-байтового NEAR или 2-байтового короткого перехода) или EBH ( первый байт 2-байтового перехода, за которым следует NOP). Если это так, то BPB располагается начиная со смещения 3. "
(NB. В этой книге много ошибок.) - ^ a b Дэниел Б. Седори. Загрузочный сектор IBM Personal Computer DOS Version 1.00 (1981) . 2005-08-02 ( [8] ).
- ^ a b Дэниел Б. Седори. Загрузочный сектор IBM Personal Computer DOS Version 1.10 (1982) . 2005-07-29 ( [9] ).
- ^ а б Кальдера (1997). Машиносчитываемый исходный код Caldera OpenDOS 7.01 . Файл DISK.ASM в машиночитаемом исходном пакете показывает, что DR-DOS проверяет значение 0x69 тоже.
- ^ Пол, Матиас Р. (20 февраля 2002 г.). «Нужна DOS 6.22 (не OEM)» . Группа новостей : alt.msdos.programmer . Архивировано 9 сентября 2017 года . Проверено 14 октября 2006 .
- ^ Бас, Уолли (1994-02-14). «Размер кластера» . Группа новостей : comp.os.msdos.programmer . Архивировано 9 сентября 2017 года . Проверено 14 октября 2006 .
- ^ a b c d e f g h Дэйв Уильямс (1992). Технический справочник программиста для MSDOS и IBM PC . ДОСРЕФ, условно-бесплатная версия 01/12/1992. ISBN 1-878830-02-3 . ( [10] , по состоянию на 08.01.2012). Комментарий: автор упоминает, что DOS 4.0 проверяет этикетку OEM, но отрицает, что DOS 3.2 также проверяет ее (хотя и проверяет).
- ^ Пол, Матиас Р. (2004-08-25). «НОВОЛТРК.РЕГ» . www.drdos.org . Архивировано из оригинала на 2016-03-04 . Проверено 17 декабря 2011 . [11]
- ^ а б «Устранение неполадок дисков и файловых систем» . Microsoft TechNet . 2005-11-05 . Проверено 15 июня 2014 .
- ^ IBM (1983). Техническое справочное руководство IBM PC . Комментарий: Включает полный список исходного кода ROM BIOS исходного IBM PC.
- ^ a b c d Ганс-Дитер Янковски, Дитмар Рабич, Джулиан Ф. Решке (1992). Atari Profibuch ST-STE-TT . Sybex, 4-е издание, 12-я партия. ISBN 3-88745-888-5 , ISBN 978-3-88745-888-1 .
- ^ Seagate Technologies, «Переход к жестким дискам с сектором 4K в расширенном формате (заархивировано Wayback Machine @ Archive.org)», 2010 г. ( [12] ).
- ^ а б в г Браун, Ральф Д. (2002-12-29). «Список прерываний x86» . Проверено 14 октября 2011 .
- ^ а б в г де Бойн Поллард, Джонатан (2010) [2006]. «Все о блоках параметров BIOS» . Часто задаваемые ответы . Проверено 2 июня 2014 .
- ^ а б в Справочник программиста Microsoft MS-DOS: версия 5.0 . Пресса Microsoft. 1991. ISBN. 1-55615-329-5.
- ^ Б с д е е г ч я J K «Стандартные форматы гибких дисков, поддерживаемые MS-DOS» . Справка и поддержка Microsoft. 2003-05-12 . Проверено 11 сентября 2012 .
- ^ а б в Microsoft (1987-07). Справочник программиста MS-DOS 3.3.
- ^ а б в Андрис Брауэр (20 сентября 2002). «Файловая система FAT» . Проверено 16 октября 2011 .
- ^ Б с д е е г ч я J к л м п о р д р Патерсон, Тим ; Microsoft (19 декабря 2013 г.) [1983]. «Microsoft DOS V1.1 и V2.0: /msdos/v20source/SKELIO.TXT, /msdos/v20source/HRDDRV.ASM» . Музей истории компьютеров , Microsoft . Проверено 25 марта 2014 .(NB. Хотя издатели утверждают, что это будут MS-DOS 1.1 и 2.0, на самом деле это SCP MS-DOS 1.25 и смесь Altos MS-DOS 2.11 и TeleVideo PC DOS 2.11 .)
- ^ Б с д е е г ч я J Збиковски, Марк ; Аллен, Пол ; Баллмер, Стив ; Борман, Рувим; Борман, Роб; Батлер, Джон; Кэрролл, Чак; Чемберлен, Марк; Челл, Дэвид; Коли, Майк; Кортни, Майк; Драйфус, Майк; Дункан, Рэйчел; Экхардт, Курт; Эванс, Эрик; Фермер, Рик; Гейтс, Билл ; Гири, Майкл; Гриффин, Боб; Хогарт, Дуг; Джонсон, Джеймс У .; Кермаани, Камель; Король, Адриан; Кох, Рид; Ландовски, Джеймс; Ларсон, Крис; Леннон, Томас; Липки, Дэн; Макдональд, Марк ; МакКинни, Брюс; Мартин, Паскаль; Мазерс, Эстель; Мэтьюз, Боб; Мелин, Дэвид; Mergentime, Чарльз; Невин, Рэнди; Ньюэлл, Дэн; Ньюэлл, Тани; Норрис, Дэвид; О'Лири, Майк; О'Рир, Боб ; Олссон, Майк; Остерман, Ларри; Остлинг, Ридж; Пай, Сунил; Патерсон, Тим ; Перес, Гэри; Питерс, Крис; Петцольд, Чарльз ; Поллок, Джон; Рейнольдс, Аарон ; Рубин, Дэррил; Райан, Ральф; Шульмейстер, Карл; Шах, Раджен; Шоу, Барри; Коротко, Энтони; Сливка, Бен; Смирл, Джон; Стиллмейкер, Бетти; Стоддард, Джон; Тиллман, Деннис; Уиттен, Грег; Юнт, Натали; Зек, Стив (1988). «Технические советники». Энциклопедия MS-DOS: версии с 1.0 по 3.2 . Дункан, Рэй; Боствик, Стив; Бургойн, Кейт; Байерс, Роберт А.; Хоган, Том; Кайл, Джим; Летвин, Гордон ; Петцольд, Чарльз ; Рабинович, Чип; Томлин, Джим; Уилтон, Ричард; Волвертон, Ван; Вонг, Уильям; Вудкок, Джоанна (Полностью переработанная ред.). Редмонд, Вашингтон, США: Microsoft Press . ISBN 1-55615-049-0. LCCN 87-21452 . OCLC 16581341 .(xix + 1570 страниц; 26 см) (NB. Это издание было опубликовано в 1988 году после обширной переработки отозванного первого издания 1986 года другим коллективом авторов. [13] )
- ^ а б «Подробное объяснение загрузочного сектора FAT» . База знаний Microsoft . 2003-12-06 . Проверено 16 октября 2011 .
- ^ а б в Лай, Роберт С .; Группа Уэйта (1987). Написание драйверов устройств MS-DOS (2-е изд.). Эддисон Уэсли. ISBN 0-201-60837-5.
- ^ Б с д е е г ч я J к л м п о р а Q R сек т Патерсон, Тим ; Microsoft (19 декабря 2013 г.) [1983]. «Microsoft DOS V1.1 и V2.0: /msdos/v20source/DEVDRIV.txt» . Музей истории компьютеров , Microsoft . Проверено 25 марта 2014 .(NB. Хотя издатели утверждают, что это будут MS-DOS 1.1 и 2.0, на самом деле это SCP MS-DOS 1.25 и смесь Altos MS-DOS 2.11 и TeleVideo PC DOS 2.11 .)
- ^ а б в г д Тим Патерсон (1983). «Взгляд изнутри на MS-DOS» . Байт . Архивировано из оригинала на 2011-07-20 . Проверено 18 июля 2011 .
Нумерация начинается с 2; первые два числа, 0 и 1, зарезервированы.
- ^ a b c d PORT-DOS - Руководство пользователя для Apricot Portable . Руководства пользователя, Великобритания ( [14] ).
- ^ a b c d e Джон К. Эллиотт (1998). Форматы дисков DOSPLUS . ( [15] ).
- ^ а б в г BBC Master 512 . Компьютерные страницы BBC Yellow Pig ( [16] ).
- ^ Digital Equipment Corporation. Rainbow 100 MS-DOS 2.01 Техническая документация Том 1 (QV025-GZ), Список BIOS операционной системы Microsoft MS-DOS (AA-X432A-TV), Универсальный дисковый драйвер, стр. 1-17. 1983 г.
- ^ «Подробное объяснение загрузочного сектора FAT» . DEW Associates Corporation. 2002 . Проверено 16 октября 2011 .
- ^ Даниэль Б. Седори. Подробные сведения о «флаге грязного выключения» под MS-Windows . 2001-12-04. ( [17] ).
- ^ а б в г д «Пакет ресурсов Windows 98 - Глава 10 - Диски и файловые системы» . Microsoft TechNet . 1998 . Проверено 16 июля 2012 .
- ↑ Питер Нортон (1986). Внутри IBM PC, Revised и Enlarged , Брэди. ISBN 0-89303-583-1 , стр. 157.
- ^ а б в Андрис Брауэр . «FAT под Linux» .
- ^ Андрис Брауэр (20 сентября 2002). «ЖИР» . Проверено 11 января 2012 .
- ^ «Ограничения файловой системы FAT32» . База знаний Microsoft . 2007-03-26 . Проверено 21 августа 2011 .
Кластеры не могут быть больше 64 килобайт.
- ^ Дункан, Рэй (1989). «Цели разработки и реализация новой высокопроизводительной файловой системы» . Журнал Microsoft Systems.[NB. Этот конкретный текстовый файл содержит несколько ошибок распознавания текста; например, «Луч» - правильное имя автора; не «Рой», как показано в тексте.]
- ^ Чен, Раймонд (июль 2006 г.). «Microsoft TechNet: краткая и неполная история FAT32» . Журнал Microsoft TechNet.
- ^ а б Les Bell; Associates Pty Ltd (1996-09-02) [1990]. «Высокопроизводительная файловая система OS / 2» . Советник по поддержке ПК . Архивировано из оригинала на 2014-03-01 . Проверено 24 июня 2014 .
- ^ а б Мосты, Дэн (февраль 1996 г.). «Внутри высокопроизводительной файловой системы - Часть 2/6: Введение» . Значимые биты, Brisbug PC User Group Inc . Проверено 24 июня 2014 .
- ^ а б в Сиэтлские компьютерные продукты (1981). «Приложение к SCP 86-DOS 1.0» (PDF) . Проверено 10 марта 2013 .
- ^ a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak Пол, Матиас Р. (1997-07-30) [1994-05-01]. NWDOS-TIPs - Советы и приемы для Novell DOS 7, с подробным описанием, ошибками и обходными путями . MPDOSTIP . Выпуск 157 (на немецком языке) (3-е изд.). Архивировано 5 ноября 2016 года . Проверено 11 января 2012 .(NB. NWDOSTIP.TXT - это комплексная работа по Novell DOS 7 и OpenDOS 7.01 , включая описание многих недокументированных функций и внутренних компонентов. Она является частью еще более обширной коллекции автора MPDOSTIP.ZIP, поддерживаемой до 2001 г. и распространяемой на многих сайтах по адресу время. Приведенная ссылка указывает на старую версию файла, преобразованную в HTML.) [18]
- ^ IBM. Руководство пользователя ОС 4690, версия 5.2 , документ IBM SC30-4134-01, 2008-01-10 ( [19] ).
- ^ а б Патерсон, Тим ; Microsoft (19 декабря 2013 г.) [1983]. «Microsoft DOS V1.1 и V2.0: /msdos/v20source/FORMAT.TXT» . Музей истории компьютеров , Microsoft . Проверено 25 марта 2014 .(NB. Хотя издатели утверждают, что это будут MS-DOS 1.1 и 2.0, на самом деле это SCP MS-DOS 1.25 и смесь Altos MS-DOS 2.11 и TeleVideo PC DOS 2.11 .)
- ^ а б Шустек, Лен (24.03.2014). «Ранний исходный код Microsoft MS-DOS» . Самоцветы программного обеспечения: Серия исторического исходного кода Музея истории компьютеров . Проверено 29 марта 2014 .(NB. Хотя автор утверждает, что это будут MS-DOS 1.1 и 2.0, на самом деле это SCP MS-DOS 1.25 и смесь Altos MS-DOS 2.11 и TeleVideo PC DOS 2.11 .)
- ^ а б Левин, Рой (25 марта 2014 г.). «Microsoft делает исходный код MS-DOS и Word для Windows общедоступным» . Официальный блог Microsoft . Архивировано из оригинала на 2014-03-28 . Проверено 29 марта 2014 .(NB. Хотя автор утверждает, что это будут MS-DOS 1.1 и 2.0, на самом деле это SCP MS-DOS 1.25 и смесь Altos MS-DOS 2.11 и TeleVideo PC DOS 2.11 .)
- ^ Б с д е е г ч я J к л м п о р д Caldera (1997). Машинночитаемый исходный код Caldera OpenDOS 7.01 . Файл FDOS.EQU в машиночитаемом исходном наборе имеет эквиваленты для соответствующих записей каталога.
- ^ Джон С. Эллиотт (1998). Форматы дисков CP / M 4.1 . ( [20] ): «CP / M 4.1 (DOS Plus [1.2]) позволяет использовать две файловые системы - CP / M и DOS. Версия [...], поставляемая с Amstrad PC1512, не может работать с дискетами большего размера, чем 360 КБ. (CP / M) / 1,2 МБ (DOS) или разделы жесткого диска размером более 32 МБ. [...] Файловая система DOS может быть FAT12 или FAT16. Формат точно такой же, как в PCDOS 2.11, за исключением: байта 0Ch из запись каталога [...] содержит четыре «пользовательских атрибута» F1'-F4 '[...] пароли в стиле DRDOS не поддерживаются ».
- ^ а б vinDaci (6 января 1998 г.). «Спецификация длинного имени файла» . Архивировано из оригинала на 2001-04-20 . Проверено 13 марта 2007 .
- ^ Хенк Келдер. FAT32.TXT для FAT32.IFS версии 0.74 . ( «Архивная копия» . Архивировано из оригинала на 2012-03-30 . Проверено 14 января 2012 .CS1 maint: заархивированная копия как заголовок ( ссылка )). Комментарий: в этой старой версии файла README все еще обсуждается старый 0xEA и Магические значения 0xEC .
- ^ Хенк Келдер (2003). FAT32.TXT для FAT32.IFS версии 0.9.13. "( [21] ):" Этот байт [...] не изменяется во время работы Windows 95 и соседствует с SCANDISK или DEFRAG . [...] Если другая программа устанавливает значение на 0x00 для файла с советниками, эти советники больше не будут обнаруживаться с помощью только вызовов DosFindFirst / Next. Другие вызовы OS / 2 для получения EAs (DosQueryPathInfo, DosQueryFileInfo и DosEnumAttribute) не полагаются на этот байт. Также могло произойти [...] обратное. [...] В этом случае снизится только производительность сканирования каталогов. Обе ситуации [...] исправлены CHKDSK ".
- ^ Netlabs. FAT32.IFS Wiki и исходники . ( [22] ).
- ^ а б IBM. Руководство по программированию ОС 4690, версия 5.2 , документ IBM SC30-4137-01, 2007-12-06 ( [23] ).
- ^ Б с д е е г ч я J к л м н Серия справочников разработчика OpenDOS - Руководство по системе и программисту - Руководство программиста . Caldera, Inc., август 1997 г. Деталь Caldera № 200-DODG-003. Архивировано из оригинала на 2017-10-07 . Проверено 20 мая 2014 . (Отпечатано в Великобритании.)
- ^ Боб Игер, Tavi Systems (2000-10-28). Реализация расширенных атрибутов файловой системы FAT . ( [24] ).
- ^ IBM (2003). Информация об уникальных атрибутах распространения файлов ОС 4690 , документ IBM R1001487, 2003-07-30. ( «Архивная копия» . Архивировано из оригинала на 2014-05-21 . Проверено 20 мая 2014 .CS1 maint: заархивированная копия как заголовок ( ссылка )): "[...] типы файлов хранятся в части" Зарезервированные биты "структуры каталогов файлов PC-DOS [...] только 4690 учитывает и сохраняет эти атрибуты. Различные операционные системы, отличные от 4690, выполняют разные действия, если эти биты включаются [...] при копировании с дискеты, созданной в системе 4690. [...] PC-DOS и Windows 2000 Professional копируют файл без ошибок и обнуляют биты. OS / 2 [.. .] 1.2 [...] откажется копировать файл, если [...] сначала не запустите CHKDSK / F для файла. После [...] CHKDSK он скопирует файл и обнулит биты. [.. .] при [...] копировании [...] обратно в систему 4690, [...] файл будет скопирован как локальный файл. "
- ^ IBM. 4690 сохранять и восстанавливать атрибуты распространения файлов . Документ IBM R1000622, 31.08.2010 ( «Архивная копия» . Архивировано из оригинала на 2014-05-21 . Проверено 20 мая 2014 .CS1 maint: заархивированная копия как заголовок ( ссылка )).
- ^ Natuerlich! (1992-03-24). "Получение более длинных имен файлов из GEMDOS" . comp.sys.atari.st.tech . Проверено 5 мая 2014 .
- ^ Торвальдс, Линус (1992-12-23). «Длинные имена файлов» . comp.os.minix . Проверено 5 мая 2014 .
- ^ «mount (8): монтировать файловую систему» . Справочная страница Linux .
Внешние ссылки
- ECMA-107 Объем и файловая структура дисковых картриджей для обмена информацией , идентичны ISO / IEC 9293.
- Microsoft Extensible Firmware Initiative FAT32 File System Specification, FAT: General Overview of On-Disk Format
- Понимание файловых систем FAT32 (объяснено для разработчиков встроенных микропрограмм)
- Понимание FAT, включая много информации о LFN
- Подробное объяснение загрузочного сектора FAT : статья 140418 базы знаний Майкрософт
- Описание файловой системы FAT32 : статья 154997 базы знаний Майкрософт
- Реализация файловой системы FAT12 / FAT16 / FAT32 для * nix : включает библиотеки libfat и fusefat, драйвер файловой системы FUSE
- MS-DOS: ограничения каталогов и подкаталогов : статья 39927 базы знаний Майкрософт
- Обзор файловых систем FAT, HPFS и NTFS : статья 100108 базы знаний Майкрософт
- Ограничения по объему и размеру файлов файловых систем FAT : Microsoft Technet, копия сделана Internet Archive Wayback Machine
- Microsoft TechNet: Краткая и неполная история FAT32 , Раймонд Чен
- FAT32 Formatter : позволяет форматировать тома размером более 32 ГБ с помощью FAT32 в Windows 2000 , Windows XP и Windows Vista.
- Fdisk не распознает жесткие диски размером более 64 ГБ в полный размер : статья 263044 базы знаний Майкрософт.
- Microsoft Windows XP: файловая система FAT32 . Копия, сделанная с помощью Internet Archive Wayback Machine, статьи со сводкой ограничений в FAT32, которая больше не доступна на веб-сайте Microsoft.
- Визуальная схема накопителя FAT16