Проектирование файловой системы 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 ) |
Идентификаторы разделов | МБР / ЭБР : ФАТ12 : 0x01 еа ФАТ16 : 0x04 0x06 0x0E еа ФАТ32 : 0x0B 0x0C еа exFAT : 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) |
Диапазон дат | С 1 января 1980 г. по 31 декабря 2099 г. ( 31 декабря 2107 г. ) |
Разрешение даты | 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. |
Прозрачный сжатие | FAT12/FAT16: для каждого тома, SuperStor , Stacker , DoubleSpace , DriveSpace. FAT32: Нет |
Прозрачный шифрование | FAT12/FAT16: только для каждого тома с DR-DOS. FAT32: Нет |
Файловая система FAT — это файловая система, используемая в MS-DOS и операционных системах семейства Windows 9x . [3] Она по-прежнему используется на мобильных устройствах и встроенных системах и, таким образом, является хорошо подходящей файловой системой для обмена данными между компьютерами и устройствами практически любого типа и возраста с 1981 года по настоящее время.
Структура
[ редактировать ]Файловая система FAT состоит из четырех областей:
Область | Размер в секторах | Содержание | Примечания |
---|---|---|---|
Зарезервированные сектора | (количество зарезервированных секторов ) | Загрузочный сектор | Первый зарезервированный сектор (логический сектор 0) — это загрузочный сектор (также называемый загрузочной записью тома или просто VBR ). Он включает в себя область, называемую блоком параметров BIOS ( BPB ), которая содержит некоторую базовую информацию о файловой системе, в частности ее тип и указатели на расположение других разделов, и обычно содержит загрузчика код операционной системы.
Важная информация из загрузочного сектора доступна через структуру операционной системы, называемую блоком параметров диска ( DPB ) в DOS и OS/2. Общее количество зарезервированных секторов указывается в поле внутри загрузочного сектора и обычно составляет 32 в файловых системах FAT32. [4] Для файловых систем FAT32 зарезервированные сектора включают сектор информации о файловой системе в логическом секторе 1 и резервный загрузочный сектор в логическом секторе 6. В то время как многие другие поставщики продолжают использовать односекторную настройку (только логический сектор 0) для начальной загрузки. загрузчика, код загрузочного сектора Microsoft с момента появления FAT32 расширился и теперь охватывает логические сектора 0 и 2, причем логический сектор 0 зависит от подпрограмм в логическом секторе 2. Область резервного загрузочного сектора состоит из трех логических секторов 6, 7, и 8 тоже. В некоторых случаях Microsoft также использует сектор 12 зарезервированной области секторов для расширенного загрузчика. |
Информационный сектор FS (только FAT32) | |||
Больше зарезервированных секторов (необязательно) | |||
FAT-регион | (количество FAT) * (секторов на FAT) | Таблица размещения файлов №1 | Обычно он содержит две копии таблицы размещения файлов для проверки избыточности, хотя используется редко, даже утилитами восстановления диска. Это карты области данных, показывающие, какие кластеры используются файлами и каталогами. В FAT12 и FAT16 они следуют сразу за зарезервированными секторами. Обычно дополнительные копии строго синхронизируются при записи, а при чтении они используются только при возникновении ошибок в первой FAT. Первые два кластера (кластер 0 и 1 ) на карте содержат специальные значения. |
Таблица размещения файлов №2... (необязательно) | |||
Регион корневого каталога | (количество корневых записей * 32) / (байты на сектор) | Корневой каталог (только FAT12 и FAT16) | Это таблица каталогов , в которой хранится информация о файлах и каталогах, расположенных в корневом каталоге. Он используется только с FAT12 и FAT16 и устанавливает для корневого каталога фиксированный максимальный размер, который предварительно выделяется при создании этого тома. FAT32 хранит корневой каталог в области данных вместе с файлами и другими каталогами, что позволяет ему расти без таких ограничений. Таким образом, для FAT32 здесь начинается область данных. |
Регион данных | (количество кластеров) * (секторов в кластере) | Область данных (для файлов и каталогов) ... (до конца раздела или диска) | Здесь хранятся фактические данные файлов и каталогов, и они занимают большую часть раздела. FAT32 обычно начинает таблицу корневого каталога с кластера номер 2: первого кластера области данных. |
FAT использует формат с прямым порядком байтов для всех записей в заголовке (за исключением, где это явно указано, некоторых записей в загрузочных секторах Atari ST) и FAT(ов). [5] Можно выделить больше секторов FAT, чем необходимо для количества кластеров. Конец последнего сектора каждой копии FAT может быть неиспользован, если нет соответствующих кластеров. Общее количество секторов (как указано в загрузочной записи) может превышать количество секторов, используемых данными (кластеры × секторы на кластер), FAT (количество FAT × секторы на FAT), корневым каталогом (н/д для FAT32) и скрытые сектора, включая загрузочный сектор: это приведет к появлению неиспользуемых секторов в конце тома. Если раздел содержит больше секторов, чем общее количество секторов, занимаемых файловой системой, это также приведет к появлению неиспользуемых секторов в конце раздела после тома.
Площадь зарезервированных секторов
[ редактировать ]Загрузочный сектор
[ редактировать ]На неразделенных устройствах хранения данных , таких как дискеты , загрузочный сектор ( VBR ) является первым сектором (логический сектор 0 с физическим адресом CHS 0/0/1 или адресом LBA 0). Для многораздельных устройств хранения данных, таких как жесткие диски, загрузочный сектор — это первый сектор раздела, как указано в таблице разделов устройства.
Блок параметров BIOS
[ редактировать ]
ДОС 3.0 БПБ:
Следующие расширения были задокументированы начиная с DOS 3.0, однако они уже поддерживались некоторыми выпусками DOS 2.11. [28] MS-DOS 3.10 по-прежнему поддерживала формат DOS 2.0, но могла использовать и формат DOS 3.0.
Смещение сектора | Смещение BPB | Длина (байты) | Содержание |
---|
ДОС 3.2 БПБ:
Официально MS-DOS 3.20 по-прежнему использовала формат DOS 3.0, но SYS
и FORMAT
уже были адаптированы для поддержки формата длиной 6 байт (из которого использовались не все записи).
Смещение сектора | Смещение BPB | Длина (байты) | Содержание |
---|---|---|---|
0x00B | 0x00 | 19 | ДОС 3.0 БПБ |
0x01E | 0x13 | 2 | Всего логических секторов, включая скрытые сектора. Эта запись DOS 3.2 несовместима с аналогичной записью по смещению. 0x020 в BPB, начиная с DOS 3.31.
Его нельзя использовать, если запись логического сектора по смещению 0x013 равен нулю. |
ДОС 3.31 БПБ:
Некоторые утилиты DOS 3.2, официально представленные в DOS 3.31 и не используемые в DOS 3.2, были разработаны с учетом этого нового формата. Официальная документация рекомендует доверять этим значениям только в том случае, если запись логических секторов находится по смещению. 0x013 равен нулю.
Смещение сектора | Смещение BPB | Длина (байты) | Содержание |
---|
Простая формула переводит заданный номер кластера тома CN
на логический номер сектора LSN
: [24] [25] [26]
- Определить (один раз)
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
в зачете 0x01А . Номер трека TN
, номер головы HN
, и номер сектора SN
соответствуют сектору головки цилиндра : формула дает известный перевод CHS в LBA .
Расширенный блок параметров BIOS
[ редактировать ]Дальнейшая структура, используемая FAT12 и FAT16, начиная с OS/2 1.0 и DOS 4.0, также известная как расширенный блок параметров BIOS (EBPB) (байты ниже смещения сектора). 0x024 такие же, как для DOS 3.31 BPB):
Смещение сектора | Смещение EBPB | Длина (байты) | Содержание |
---|
Расширенный блок параметров BIOS FAT32
[ редактировать ]По сути, FAT32 вставляет 28 байтов в EBPB, за которыми следуют оставшиеся 26 (или иногда только 7) байтов EBPB, как показано выше для FAT12 и FAT16. Операционные системы Microsoft и IBM определяют тип файловой системы FAT, используемой на томе, исключительно по количеству кластеров, а не по используемому формату BPB или указанному типу файловой системы, то есть технически возможно использовать «FAT32 EBPB». также для томов FAT12 и FAT16, а также EBPB DOS 4.0 для небольших томов FAT32. Поскольку было обнаружено, что такие тома создаются операционными системами Windows при некоторых странных условиях, [номер 6] операционные системы должны быть готовы справиться с этими гибридными формами.
Смещение сектора | Смещение FAT32 EBPB | Длина (байты) | Содержание |
---|
Исключения
[ редактировать ]Версии DOS до 3.2 полностью или частично полагались на байт дескриптора носителя в BPB или байт идентификатора FAT в кластере 0 первой FAT для определения форматов дискет FAT12, даже если BPB присутствует. В зависимости от найденного идентификатора FAT и обнаруженного типа диска они по умолчанию используют один из следующих прототипов BPB вместо использования значений, фактически хранящихся в BPB. [номер 1]
Первоначально FAT ID должен был представлять собой битовый флаг со всеми установленными битами, за исключением бита 2, очищенного для обозначения формата с 80 дорожками (против 40 дорожек), бита 1 сброшенного для обозначения формата с 9 секторами (против 8 секторов). и бит 0 очищен, чтобы указать односторонний (а не двусторонний) формат, [7] но этой схеме следовали не все OEM-производители, и она устарела с появлением жестких дисков и форматов высокой плотности. Кроме того, различные 8-дюймовые форматы, поддерживаемые 86-DOS и MS-DOS, не соответствуют этой схеме.
FAT ID (сравнить с идентификатором носителя по смещению BPB) 0x0A ) [22] [23] | 0xFF | 0xFE | 0xFD | 0xFC | 0xFB | 0xFA | 0xF9 | 0xF8 | 0xF0 | 0xED | 0xE5 |
---|
Microsoft рекомендует различать два 8-дюймовых формата FAT ID 0xFE при попытке прочитать адресную метку одинарной плотности. Если это приводит к ошибке, значит, среда должна быть двойной плотности. [23]
В таблице не указан ряд несовместимых форматов 8-дюймовых и 5,25-дюймовых дискет FAT12, поддерживаемых 86-DOS , которые отличаются либо размером записей каталога (16 байт против 32 байтов), либо размером зарезервированного область секторов (несколько целых дорожек вместо одного логического сектора).
Реализация одностороннего формата FAT12 размером 315 КБ, используемого в MS-DOS для ПК Apricot и F1e. [34] имел другую структуру загрузочного сектора, чтобы соответствовать BIOS этого компьютера, не совместимому с IBM. Инструкция перехода и OEM-имя были опущены, а параметры MS-DOS BPB (смещения 0x00B - 0x017 в стандартном загрузочном секторе) располагались по смещению 0x050 . , Вместо этого Portable F1 , PC duo и Xi FD поддерживали нестандартный двусторонний формат FAT12 размером 720 КБ. [34] Различия в макете загрузочного сектора и идентификаторах носителей сделали эти форматы несовместимыми со многими другими операционными системами. Параметры геометрии для этих форматов:
- 315 КБ: байт на логический сектор: 512 байт, логических секторов на кластер: 1, зарезервированные логические секторы: 1, количество FAT: 2, записи корневого каталога: 128, общее количество логических секторов: 630, FAT ID: 0xFC , логических секторов на FAT: 2, физических секторов на дорожку: 9, количество головок: 1. [34] [35]
- 720 КБ: байт на логический сектор: 512 байт, логических секторов на кластер: 2, зарезервированные логические секторы: 1, количество FAT: 2, записи корневого каталога: 176, общее количество логических секторов: 1440, FAT ID: 0xFE , логических секторов на FAT: 3, физических секторов на дорожку: 9, количество головок: 2. [34]
В более поздних версиях Apricot MS-DOS появилась возможность чтения и записи дисков со стандартным загрузочным сектором в дополнение к дискам со стандартным загрузочным сектором Apricot. Эти форматы также поддерживались DOS Plus 2.1e/g для серии Apricot ACT.
Адаптация DOS Plus для BBC Master 512 поддерживала два формата FAT12 на 80-дорожечных двусторонних 5,25-дюймовых дисках двойной плотности, которые вообще не использовали обычные загрузочные сектора. Диски с данными емкостью 800 КБ не включали загрузочный сектор и начинались с один экземпляр FAT. [35] Первый байт перемещенной FAT в логическом секторе 0 использовался для определения емкости диска. Загрузочные диски размером 640 КБ начинались с миниатюрной файловой системы ADFS , содержащей загрузчик, за которой следовала одна FAT. [35] [36] Кроме того, формат 640 КБ отличался использованием номеров физических секторов CHS, начинающихся с 0 (а не 1, как обычно), и увеличением секторов в порядке сектор-дорожка-заголовок (а не сектор-заголовок-дорожка, как обычно). [36] FAT начался в начале следующего трека. Эти различия делают эти форматы нераспознаваемыми другими операционными системами. Параметры геометрии для этих форматов:
- 800 КБ: байт на логический сектор: 1024 байта, логических секторов на кластер: 1, зарезервированные логические секторы: 0, количество FAT: 1, записи корневого каталога: 192, общее количество логических секторов: 800, идентификатор FAT: 0xFD , логических секторов на FAT: 2, физических секторов на дорожку: 5, количество головок: 2. [35] [36]
- 640 КБ: байтов на логический сектор: 256 байт, логических секторов на кластер: 8, зарезервированных логических секторов: 16, количество FAT: 1, записей корневого каталога: 112, всего логических секторов: 2560, FAT ID: 0xFF , логических секторов на FAT: 2, физических секторов на дорожку: 16, количество головок: 2. [35] [36]
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. [37]
Информационный сектор ФС
[ редактировать ]«Информационный сектор ФС» был представлен в FAT32. [38] для ускорения времени доступа к определенным операциям (в частности, получению количества свободного места). Он расположен по номеру логического сектора, указанному в загрузочной записи 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 ) [4] [номер 2] (Все четыре байта должны совпадать, прежде чем содержимое этого сектора будет считаться действительным.) |
Данные сектора могут быть устаревшими и не отражать текущее содержимое носителя, поскольку не все операционные системы обновляют или используют этот сектор, и даже если они это делают, содержимое недействительно, когда носитель был извлечен без надлежащего размонтирования тома или после сбой питания. Поэтому операционные системы должны сначала проверить дополнительные битовые флаги состояния завершения работы тома, находящиеся в записи FAT кластера 1 или FAT32 EBPB по смещению. 0x041 и игнорировать данные, хранящиеся в информационном секторе FS, если эти битовые флаги указывают на то, что том ранее не был должным образом размонтирован. Это не вызывает никаких проблем, кроме возможного снижения скорости при первом запросе свободного пространства или выделении кластера данных; см . фрагментация .
Если этот сектор присутствует в томе FAT32, минимально допустимый размер логического сектора составляет 512 байт, тогда как в противном случае он будет составлять 128 байт. Некоторые реализации FAT32 поддерживают небольшое изменение спецификации Microsoft, делая информационный сектор FS необязательным, указывая значение 0xFFFF [19] (или 0x0000 ) в записи по смещению 0x030 .
FAT-регион
[ редактировать ]Таблица размещения файлов
[ редактировать ]
Карта кластера
[ редактировать ]В этой статье цвета могут использоваться слишком часто или неправильно, что затрудняет ее понимание с дальтонизмом пользователями . |
Область данных тома разделена на кластеры одинакового размера — небольшие блоки непрерывного пространства. Размеры кластеров различаются в зависимости от типа используемой файловой системы FAT и размера диска; типичные размеры кластеров варьируются от 2 до 32 КиБ . [39]
Каждый файл может занимать один или несколько кластеров в зависимости от его размера. Таким образом, файл представлен цепочкой кластеров (называемой односвязным списком ). Эти кластеры не обязательно хранятся рядом друг с другом на поверхности диска, а зачастую фрагментированы по всей области данных.
Каждая версия файловой системы FAT использует разные размеры записей FAT. Меньшие числа приводят к меньшему размеру FAT, но приводят к потере пространства в больших разделах из-за необходимости выделять его в большие кластеры.
Файловая система FAT12 . использует 12 бит на запись FAT, поэтому две записи занимают 3 байта Это последовательно прямой порядок байтов : если эти три байта рассматриваются как одно 24-битное число с прямым порядком байтов, 12 младших битов представляют первую запись (например, кластер 0), а 12 старших битов - вторую (например, кластер 1). . Другими словами, хотя младшие восемь битов первого кластера в строке хранятся в первом байте, старшие четыре бита сохраняются в младшем полубайте второго байта, тогда как младшие четыре бита последующего кластера в строке хранятся в старшем полубайте второго байта и в восьми старших битах третьего байта.
Компенсировать | +0 | +1 | +2 | +3 | +4 | +5 | +6 | +7 | +8 | +9 | +А | +Б | +С | +Д | +Э | +Ф |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
+0000 | Ф0 | Ф Ф | ФФ | 03 | 40 | 00 | 05 | 60 | 00 | 07 | 80 | 00 | ФФ | А Ф | 00 | 14 |
+0010 | С 0 | 00 | 0D | E0 | 00 | 0Ф | 00 | 01 | 11 | F0 0 | ФФ | 00 | F0 0 | ФФ | 15 | 60 |
+0020 | 01 | 19 | 7 0 | ФФ | F7 | А Ф | 01 | ФФ | 0 Ф | 00 | 00 | 7 0 | ФФ | 00 | 00 | 00 |
- FAT ID /маркер порядка байтов (в зарезервированном кластере #0 ), где 0xF0 указывает том на неразмеченном диске супердискеты (должен быть 0xF8 для многораздельных дисков)
- Индикатор конца цепочки/флаги обслуживания (в зарезервированном кластере №1 )
- Вторая цепочка (7 кластеров) для нефрагментированного файла (здесь: №2, №3, №4, №5, №6, №7, №8).
- Третья цепочка (7 кластеров) для фрагментированного, возможно, выросшего файла (здесь: №9, №А, №14, №15, №16, №19, №1А).
- Четвертая цепочка (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 | +А | +Б | +С | +Д | +Э | +Ф |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
+0000 | Ф0 | ФФ | ФФ | ФФ | 03 | 00 | 04 | 00 | 05 | 00 | 06 | 00 | 07 | 00 | 08 | 00 |
+0010 | ФФ | ФФ | 0А | 00 | 14 | 00 | 0С | 00 | 0D | 00 | 0Е | 00 | 0Ф | 00 | 10 | 00 |
+0020 | 11 | 00 | ФФ | ФФ | 00 | 00 | ФФ | ФФ | 15 | 00 | 16 | 00 | 19 | 00 | F7 | ФФ |
+0030 | F7 | ФФ | 1А | 00 | ФФ | ФФ | 00 | 00 | 00 | 00 | F7 | ФФ | 00 | 00 | 00 | 00 |
Файловая система FAT32 использует 32 бита на запись FAT, таким образом , одна запись занимает четыре байта в порядке байтов с прямым порядком байтов. Четыре старших бита каждой записи зарезервированы для других целей; они очищаются во время форматирования и не должны быть изменены в противном случае. Их необходимо замаскировать, прежде чем интерпретировать запись как 28-битный адрес кластера.
Компенсировать | +0 | +1 | +2 | +3 | +4 | +5 | +6 | +7 | +8 | +9 | +А | +Б | +С | +Д | +Э | +Ф |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
+0000 | Ф0 | ФФ | ФФ | 0Ф | ФФ | ФФ | ФФ | 0Ф | ФФ | ФФ | ФФ | 0Ф | 04 | 00 | 00 | 00 |
+0010 | 05 | 00 | 00 | 00 | 06 | 00 | 00 | 00 | 07 | 00 | 00 | 00 | 08 | 00 | 00 | 00 |
+0020 | ФФ | ФФ | ФФ | 0Ф | 0А | 00 | 00 | 00 | 14 | 00 | 00 | 00 | 0С | 00 | 00 | 00 |
+0030 | 0D | 00 | 00 | 00 | 0Е | 00 | 00 | 00 | 0Ф | 00 | 00 | 00 | 10 | 00 | 00 | 00 |
+0040 | 11 | 00 | 00 | 00 | ФФ | ФФ | ФФ | 0Ф | 00 | 00 | 00 | 00 | ФФ | ФФ | ФФ | 0Ф |
+0050 | 15 | 00 | 00 | 00 | 16 | 00 | 00 | 00 | 19 | 00 | 00 | 00 | F7 | ФФ | ФФ | 0Ф |
+0060 | F7 | ФФ | ФФ | 0Ф | 1А | 00 | 00 | 00 | ФФ | ФФ | ФФ | 0Ф | 00 | 00 | 00 | 00 |
+0070 | 00 | 00 | 00 | 00 | F7 | ФФ | ФФ | 0Ф | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 |
- Первая цепочка (1 кластер) для корневого каталога, на которую указывает запись в BPB FAT32 (здесь: № 2).
- Вторая цепочка (6 кластеров) для нефрагментированного файла (здесь: №3, №4, №5, №6, №7, №8).
Таблица размещения файлов ( FAT ) представляет собой непрерывное количество секторов, следующих сразу за областью зарезервированных секторов. Он представляет собой список записей, сопоставленных каждому кластеру тома. Каждая запись записывает одну из четырех вещей:
- номер кластера следующего кластера в цепочке
- специальная запись конца цепочки кластера ( EOC ), указывающая конец цепочки
- специальная запись для обозначения плохого кластера
- ноль, чтобы отметить, что кластер не используется
Чтобы очень ранние версии DOS распознавали файловую систему, система должна быть загружена с тома, или FAT тома должна начинаться со второго сектора тома (логический сектор 1 с физическим адресом CHS 0/0/2 или адресом LBA 1). , то есть сразу после загрузочного сектора. Операционные системы предполагают это жесткое расположение FAT, чтобы найти идентификатор FAT в записи кластера 0 FAT на дискетах FAT DOS 1.0–1.1, где не найден действительный 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, 4 старших бита равны нулю) этой записи всегда равны 1. Эти значения расположены так, чтобы запись также функционировала как ". «trap-all» маркер конца цепочки для всех кластеров данных, имеющих нулевое значение. Кроме того, для идентификаторов FAT, отличных от 0xFF (и 0x00 ) можно определить правильный порядок полубайтов и байтов (который будет использоваться) драйвером файловой системы, однако файловая система FAT официально использует только представление с прямым порядком байтов , и не существует известных реализаций вариантов, использующих обратный порядок байтов. вместо этого ценности. От 86-DOS 0.42 до MS-DOS 1.14 вместо FAT ID использовались профили жесткого диска, но этот байт использовался для различения носителей, отформатированных с помощью 32-байтовых или 16-байтовых записей каталога, поскольку они использовались до 86-DOS 0.42 до MS-DOS 1.14. ДОС 0.42.
Вторая запись (кластер 1 в FAT) номинально хранит маркер конца цепочки кластеров, используемый форматировщиком, но обычно всегда содержит 0xFFF / 0xFFFF / 0x0FFFFFF , то есть, за исключением битов 31–28 на томах FAT32, эти биты обычно всегда установлены. Однако некоторые операционные системы Microsoft устанавливают эти биты, если том не является томом, на котором установлена работающая операционная система (то есть используйте 0xFFFFFFFF вместо 0x0FFFFFF здесь). [40] (В сочетании с альтернативными маркерами конца цепочки младшие биты 2–0 могут стать нулевыми для наименьшего разрешенного маркера конца цепочки. 0xFF8 / 0xFFF8 / 0x?FFFFFF8 ; бит 3 также должен быть зарезервирован, поскольку кластеры 0xFF0 / 0xFFF0 / 0x?FFFFFF0 и выше официально зарезервированы. Некоторые операционные системы не смогут подключить некоторые тома, если какой-либо из этих битов не установлен, поэтому маркер конца цепочки по умолчанию не следует изменять.) Для DOS 1 и 2 запись была задокументирована как зарезервированная для будущего использования. .
Начиная с DOS 7.1, два старших бита этой записи кластера могут содержать два дополнительных битовых флага, представляющих текущее состояние тома на FAT16 и FAT32, но не на томах FAT12. Эти битовые флаги поддерживаются не всеми операционными системами, но операционные системы, поддерживающие эту функцию, будут устанавливать эти биты при завершении работы и очищать самый старший бит при запуске:
Если бит 15 (в FAT16) или бит 27 (в FAT32) [41] не задан при монтировании тома, том не был должным образом отключен перед выключением или извлечением и, следовательно, находится в неизвестном и, возможно, «грязном» состоянии. [27] На томах FAT32 информационный сектор FS может содержать устаревшие данные, поэтому его не следует использовать. В этом случае операционная система обычно запускает SCANDISK или CHKDSK при следующем запуске. [номер 9] [41] (но не при вставке съемного носителя), чтобы обеспечить и, возможно, восстановить целостность тома.
Если бит 14 (в FAT16) или бит 26 (в FAT32) [41] очищается, операционная система обнаружила ошибки дискового ввода-вывода при запуске, [41] возможный признак плохих секторов. Операционные системы, знающие об этом расширении, интерпретируют это как рекомендацию выполнить сканирование поверхности ( SCANDISK ) при следующей загрузке. [27] [41] (Аналогичный набор битовых флагов существует в EBPB FAT12/FAT16 по смещению 0x1A или EBPB FAT32 по смещению 0x36 . Хотя запись кластера 1 доступна драйверам файловой системы после того, как они смонтировали том, запись EBPB доступна, даже если том не смонтирован, и, таким образом, ее легче использовать драйверами блочных устройств диска или инструментами разбиения на разделы.)
Если количество FAT в BPB не установлено равным 2, вторая запись кластера в первом FAT (кластер 1) также может отражать состояние тома TFAT для операционных систем, поддерживающих TFAT. Если запись кластера 1 в этой FAT содержит значение 0, это может указывать на то, что вторая FAT представляет последнее известное допустимое состояние транзакции и должна быть скопирована в первую FAT, тогда как первая FAT должна быть скопирована во вторую FAT, если все биты установлены.
Некоторые нестандартные реализации FAT12/FAT16 используют запись кластера 1 для хранения начального кластера корневого каталога переменного размера (обычно 2 [33] ). Это может произойти, если количество записей корневого каталога в BPB равно 0, а EBPB FAT32 не найден (нет подписи). 0x29 или 0x28 по смещению 0x042 ). [20] Однако это расширение не поддерживается основными операционными системами. [20] поскольку это противоречит другим возможным вариантам использования записи кластера 1. Большинство конфликтов можно исключить, если это расширение разрешено только для FAT12 с размером менее Тома 0xFEF и FAT16 с размером менее Кластеры 0x3FEF и 2 FAT.
Поскольку эти первые две записи FAT хранят специальные значения, кластеры данных 0 или 1 отсутствуют. Первый кластер данных (после корневого каталога, если FAT12/FAT16) — это кластер 2, [33] отмечая начало области данных.
Ценности кластера
[ редактировать ]Значения записи FAT:
FAT12 | FAT16 | FAT32 | Описание |
---|---|---|---|
0x000 | 0x0000 | 0x?0000000 | Бесплатный кластер; также используется DOS для ссылки на стартовый кластер родительского каталога в записях «..» подкаталогов корневого каталога на томах FAT12/FAT16. [42] [6]
В противном случае, если это значение встречается в цепочках кластеров (например, в записях каталога нулевой длины или в удаленных файлах), реализации файловой системы должны рассматривать это как маркер конца цепочки. [7] |
0x001 | 0x0001 | 0x?0000001 | Зарезервировано для внутренних целей; MS-DOS/PC DOS использует это значение кластера в качестве индикатора временного несвободного кластера при построении цепочек кластеров во время выделения файлов (видно только на диске, если в середине этого процесса произошел сбой или сбой питания). [42] [6]
Если это значение встречается в цепочках кластеров на диске, реализации файловой системы должны рассматривать это как маркер конца цепочки. |
0x002 - 0xFEF | 0x0002 – 0xFFEF (0x0002 – 0x7FFF) | 0x?0000002 - 0x?FFFFFFEF | Используется в качестве кластеров данных; значение указывает на следующий кластер. MS-DOS/PC DOS принимает значения до 0xFEF / 0xFFEF / 0x0FFFFFFEF (иногда больше; см. ниже), тогда как для Atari GEMDOS используются только значения до 0x7FFF разрешены на томах FAT16. |
0xFF0 [номер 10] - 0xFF5 (0xFF1 - 0xFF5) | 0xFFF0 - 0xFFF5 | 0x?FFFFFF0 - 0x?FFFFFF5 | Зарезервировано в некоторых контекстах, [43] или также используется [24] [25] [26] [4] [44] как кластеры данных в некоторых нестандартных системах. Следует избегать размеров томов, в которых эти значения будут использоваться в качестве кластеров данных, но если эти значения встречаются в существующих томах, файловая система должна рассматривать их как обычные кластеры данных в цепочках кластеров (в идеале с применением дополнительных проверок работоспособности), аналогично тому, что MS- DOS, PC DOS и DR-DOS делают, [6] и в противном случае следует избегать выделения их для файлов.
MS-DOS/PC DOS 3.3 и выше обрабатывают значение 0xFF0 [номер 10] [6] на томах FAT12 (но не на FAT16 или FAT32) в качестве дополнительного маркера конца цепи, аналогичного 0xFF8 - 0xFFF . [6] Для совместимости с MS-DOS/PC DOS файловым системам следует избегать использования кластера данных. 0xFF0 в цепочках кластеров на томах FAT12 (то есть воспринимайте его как зарезервированный кластер, аналогичный 0xFF7 ). (Примечание. Соответствие младшего байта номера кластера значениям FAT ID и медиа-дескриптора является причиной того, почему эти значения кластера зарезервированы.) |
0xFF6 | 0xFFF6 | 0x?FFFFFF6 | Сдержанный; не используйте. [24] [25] [26] [4] [21] [44] (Примечание. Соответствует значению заполнителя формата по умолчанию. 0xF6 на IBM-совместимых компьютерах.) Не следует создавать тома, которые будут использовать это значение в качестве кластера данных, но если это значение встречается в существующих томах, файловая система должна рассматривать его как обычный кластер данных в цепочках кластеров (в идеале с применением дополнительных проверок работоспособности). ), и в противном случае следует избегать выделения его для файлов. [7] |
0xFF7 | 0xFFF7 | 0x?FFFFFF7 | Плохой сектор в кластере или зарезервированном кластере (начиная с DOS 2.0).
Значения переключения для максимального количества кластеров для файловых систем FAT12 и FAT16 определяются так, чтобы максимально возможные значения кластера данных ( 0xFF5 и 0xFFF5 , [6] соответственно) всегда будет меньше этого значения. [6] Следовательно, это значение обычно не может встречаться в цепочках кластеров, но если оно встречается, его можно рассматривать как обычный кластер данных, поскольку 0xFF7 мог быть нестандартным кластером данных на томах FAT12 до появления маркера плохого кластера в DOS 2.0 или появления FAT16 в DOS 3.0. [7] и 0xFFF7 мог быть нестандартным кластером данных на томах FAT16 до появления FAT32 с DOS 7.10. Теоретически, 0x0FFFFFF7 может быть частью допустимой цепочки кластеров на томах FAT32, но дисковым утилитам следует избегать создания томов FAT32, где может возникнуть такое условие. Файловая система не должна выделять этот кластер для файлов. [7] Дисковые утилиты не должны пытаться восстановить «потерянные кластеры», содержащие это значение в FAT, а считать их неисправными кластерами. |
0xFF8 — 0xFFF (и опционально 0xFF0; [номер 10] см. примечание) | 0xFFF8 - 0xFFFF | 0x?FFFFFF8 - 0x?FFFFFFFF | Последний кластер в файле (EOC). Реализации файловой системы должны одновременно рассматривать все эти значения как маркеры конца цепочки. [7] Большинство реализаций файловой системы (включая 86-DOS, MS-DOS, PC DOS и DR-DOS) используют 0xFFF [7] / 0xFFFF [7] / 0x0FFFFFFFF как маркер конца файла при выделении файлов, но используются версии Linux до 2.5.40. 0xFF8 / 0xFFF8 / 0x0FFFFFF8 . [45] Версии mkdosfs ( dosfstools до 3.0.26) продолжают использовать 0x0FFFFFF8 для корневого каталога на томах FAT32, тогда как некоторые инструменты восстановления и дефрагментации диска используют другие значения в наборе (например, SCANDISK может использовать 0xFF8 / 0xFFF8 / вместо этого 0x0FFFFFF8 ). В то время как в исходной реализации 8-битной FAT в Microsoft Standalone Disk BASIC используются разные конечные маркеры ( 0xC0 .. 0xCD ) использовались для обозначения количества секторов (от 0 до 13), использованных в последнем кластере, занятом файлом, различные конечные маркеры были перепрофилированы в DOS для обозначения разных типов носителей, [7] с используемым в настоящее время конечным маркером, указанным в записи кластера 1 , однако эта концепция, похоже, не нашла широкого применения на практике — и до такой степени, что в некоторых сценариях тома могут не распознаваться некоторыми операционными системами, если некоторые из младшие биты значения, хранящегося в кластере 1, не установлены. Кроме того, некоторые ошибочные реализации файловой системы принимают только 0xFFF / 0xFFFF / 0x?FFFFFFF как действительный маркер конца цепочки.
Реализации файловой системы должны проверять значения кластера в цепочках кластеров на соответствие максимально допустимому значению кластера, рассчитанному по фактическому размеру тома, и обрабатывать более высокие значения, как если бы они также были маркерами конца цепочки. (Младший байт номера кластера концептуально соответствует значениям FAT ID и дескриптора носителя ; [7] см. примечание выше для специального использования MS-DOS/PC DOS. 0xFF0 [номер 10] на томах FAT12. [6] ) |
FAT32 использует 28 бит для номеров кластеров. Остальные 4 бита в 32-битной записи FAT обычно равны нулю, но они зарезервированы и их следует оставлять нетронутыми. Драйвер или инструмент обслуживания файловой системы, соответствующий стандарту FAT32, не должен полагаться на то, что старшие 4 бита равны нулю, и он должен удалить их перед оценкой номера кластера, чтобы справиться с возможными будущими расширениями, когда эти биты могут использоваться для других целей. Они не должны очищаться драйвером файловой системы при выделении новых кластеров, но должны быть очищены во время переформатирования.
Область корневого каталога
[ редактировать ]Таблица корневых каталогов в файловых системах FAT12 и FAT16 занимает специальное местоположение региона корневого каталога .
Регион данных
[ редактировать ]За исключением таблицы корневого каталога в файловых системах FAT12 и FAT16, которая занимает специальное местоположение региона корневого каталога , все таблицы каталогов хранятся в области данных. Фактическое количество записей в каталоге, хранящемся в области данных, может увеличиться за счет добавления еще одного кластера в цепочку в FAT.
Таблица каталогов
[ редактировать ]Таблица каталогов — это особый тип файла, который представляет каталог (также известный как папка). Начиная с 86-DOS 0.42 , [46] каждый файл или (начиная с MS-DOS 1.40 и PC DOS 2.0) подкаталог, хранящийся в нем, представлен 32-байтовой записью в таблице. В каждой записи записываются имя, расширение, атрибуты ( архив , каталог, скрытый, только для чтения, система и том), адрес первого кластера данных файла/каталога, размер файла/каталога и дата. [46] и (начиная с PC DOS 1.1) также время последней модификации. Более ранние версии 86-DOS использовали только 16-байтовые записи каталога, не поддерживая файлы размером более 16 МБ и время последней модификации. [46]
Сама файловая система FAT не накладывает никаких ограничений на глубину дерева подкаталогов, пока существуют свободные кластеры для размещения подкаталогов, однако внутренняя структура текущих каталогов (CDS) в MS-DOS/PC DOS ограничивает абсолютный путь к каталогу длиной до 66 символов (включая букву диска, но без учета байтового разделителя NUL), [24] [25] [26] тем самым ограничивая максимальную поддерживаемую глубину подкаталогов до 32, что бы ни произошло раньше. Concurrent DOS, Multiuser DOS и DR DOS версий 3.31–6.0 (вплоть до обновлений 1992–11 гг.) не сохраняют внутри себя абсолютные пути к рабочим каталогам и, следовательно, не отображают это ограничение. [47] То же самое относится и к Atari GEMDOS, но Atari Desktop не поддерживает более 8 уровней подкаталогов. Большинство приложений, знающих об этом расширении, поддерживают пути длиной не менее 127 байт. FlexOS, 4680 OS и 4690 OS также поддерживают длину до 127 байт, что позволяет уменьшить глубину до 60 уровней. [48] PalmDOS, DR DOS 6.0 (начиная с BDOS 7.1) и выше, Novell DOS и OpenDOS имеют CDS, совместимый с 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
". Операционная система удалит один [47] (а также две — начиная с DR-DOS 7.02) точки с запятой и ожидающие пароли из имен файлов перед их сохранением на диске. (Командный процессор 4DOS использует точки с запятой для включаемых списков и требует, чтобы точка с запятой удваивалась для файлов, защищенных паролем, с любыми командами, поддерживающими подстановочные знаки. [47] )
Символ at ( @
) используется для списков файлов многими командами DR-DOS, PalmDOS, Novell DOS, OpenDOS и Multiuser DOS, System Manager и REAL/32, а также 4DOS, и поэтому иногда его может быть сложно использовать в именах файлов. [47]
В многопользовательском DOS и REAL/32 восклицательный знак (!) не является допустимым символом имени файла, поскольку он используется для разделения нескольких команд в одной командной строке. [47]
В ОС IBM 4680 и 4690 в именах файлов не допускаются следующие символы:
? * : . ; , [ ] ! + = < > " - / \ |
Кроме того, следующие специальные символы не допускаются в первом, четвертом, пятом и восьмом символе имени файла, поскольку они конфликтуют с командным процессором хоста (HCP) и именами файлов построения таблицы входных последовательностей:
@ # ( ) { } $ &
Имена файлов DOS имеют текущий набор символов OEM : это может иметь неожиданные последствия, если символы, обрабатываемые одним способом для данной кодовой страницы, интерпретируются по-разному для другой кодовой страницы (команда DOS CHCP
) в отношении нижнего и верхнего регистра, сортировки или допустимости символа имени файла.
Запись в каталоге
[ редактировать ]До того, как Microsoft добавила поддержку длинных имен файлов и меток времени создания/доступа, байты 0x0C – 0x15 записи каталога использовались другими операционными системами для хранения дополнительных метаданных, в первую очередь операционные системы семейства Digital Research хранили там пароли файлов, права доступа, идентификаторы владельцев и данные об удалении файлов. Хотя новые расширения Microsoft по умолчанию не полностью совместимы с этими расширениями, большинство из них могут сосуществовать в сторонних реализациях FAT (по крайней мере, на томах FAT12 и FAT16).
32-байтовые записи каталога как в корневом каталоге, так и в подкаталогах имеют следующий формат (см. также имя файла 8.3 ):
Компенсация обмена | Длина (байты) | Содержание |
---|
Операционные системы FlexOS на базе IBM 4680 OS и IBM 4690 поддерживают уникальные атрибуты распределения, хранящиеся в некоторых битах ранее зарезервированных областей в записях каталога: [62]
- Локальный: не распространять файл, а хранить только на локальном контроллере. [номер 14]
- Зеркальное отображение файла при обновлении: Распространять файл на сервер только при обновлении файла.
- Зеркальное отображение файла при закрытии: Распространять файл на сервер только после закрытия файла.
- Составной файл при обновлении: Распространение файла на все контроллеры при обновлении файла.
- Составной файл при закрытии: Распространение файла на все контроллеры при закрытии файла. [63]
Некоторые несовместимые расширения, обнаруженные в некоторых операционных системах, включают:
Компенсация обмена | Длина (байты) | Система | Описание |
---|
Ограничения по размеру
[ редактировать ]Варианты файловых систем FAT12, FAT16, FAT16B и FAT32 имеют четкие ограничения, основанные на количестве кластеров и количестве секторов в кластере (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 до 65524 кластеров: от 16 до 256 секторов на копию FAT
Диапазон FAT32: от 65 525 до 268 435 444 кластеров: от 512 до 2 097 152 секторов на копию FAT
Минимум FAT12: 1 сектор на кластер × 1 кластер = 512 байт (0,5 КиБ).
Минимум FAT16: 1 сектор на кластер × 4085 кластеров = 2091520 байт (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 кластера = 2 147 090 432 байта (≈2 047 МБ)
[Максимум FAT16: 128 секторов на кластер × 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 ГБ)
[Максимум FAT32: 32 сектора на кластер × 134 152 181 кластер = 2 197 949 333 504 байта (≈ 2 047 ГБ)]
[Максимум FAT32: 64 сектора на кластер × 67 092 469 кластеров = 2 198 486 024 192 байта (≈ 2 047 ГБ)]
[Максимум FAT32: 128 секторов на кластер × 33 550 325 кластеров = 2 198 754 099 200 байт (≈2 047 ГБ)]
- Легенда: 268435444+3 есть 0x0FFFFFF7 , поскольку FAT32 версии 0 использует только 28 бит в 32-битных номерах кластеров, номера кластеров 0x0FFFFFF7 до 0x0FFFFFFF указывает на плохие кластеры или конец файла, номер кластера 0 указывает на свободный кластер, а номер кластера 1 не используется. [33] Аналогично 65524+3 0xFFF7 для FAT16 и 4084+3 0xFF7 для FAT12. Количество секторов в кластере — это степень 2, умещающаяся в один байт, наименьшее значение — 1 ( 0x01 ), самое большое значение — 128 ( 0x80 ). Линии в квадратных скобках обозначают необычный размер кластера 128, а для FAT32 — больший, чем необходимо, размер кластера 32 или 64. [64]
Поскольку каждая запись 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 байт. ДОС 5 RMDIR
/ RD
команда удаляет начальный " .
" (этот каталог) и " ..
" (родительский каталог) записи непосредственно в подкаталогах, поэтому размер сектора 32 на RAM-диске возможен для FAT12, но требует 2 или более секторов на кластер. Загрузочный сектор FAT12 без расширений DOS 4 требует 29 байт перед первым ненужным FAT16B 32 -битное количество скрытых секторов, это оставляет три байта для (на неиспользуемом RAM-диске) загрузочного кода и магического 0x55 0xAA в конце всех загрузочных секторов. В Windows NT наименьший поддерживаемый размер сектора — 128.
В Windows NT операционных системах FORMAT
параметры команды /A:128K
и /A:256K
соответствуют максимальному размеру кластера 0x80
(128) с размером сектора 1024 и 2048 соответственно. Для общего сектора размером 512 /A:64K
дает 128 секторов на кластер.
Обе версии каждого ECMA-107. [24] и ИСО/МЭК 9293 [25] [26] укажите максимальное число кластеров MAX
определяется по формуле MAX=1+trunc((TS-SSA)/SC)
и зарезервируйте номера кластеров MAX+1
до 4086 ( 0xFF6 , FAT12) и более поздних версий 65526 ( 0xFFF6 , FAT16) для будущей стандартизации.
Спецификация Microsoft EFI FAT32 [4] утверждает, что любая файловая система FAT с числом кластеров менее 4085 — это FAT12, в противном случае любая файловая система FAT с числом кластеров менее 65 525 — это FAT16, а в противном случае — FAT32. Запись для кластера 0 в начале FAT должна быть идентична байту дескриптора носителя, найденному в BPB, тогда как запись для кластера 1 отражает значение конца цепочки, используемое форматировщиком для цепочек кластеров ( 0xFFF , 0xFFFF или 0x0FFFFFF ). Записи для номеров кластеров 0 и 1 заканчиваются на границе байта даже для FAT12, например: 0xF9FFFF для дескриптора мультимедиа 0xF9 .
Первый кластер данных равен 2, [33] и, следовательно, последний кластер MAX
получает номер MAX+1
. В результате получаются номера кластеров данных 2...4085 ( 0xFF5 ) для FAT12, 2...65525 ( 0xFFF5 ) для FAT16 и 2...268435445 ( 0x0FFFFFF5 ) для FAT32.
Таким образом, единственными доступными значениями, зарезервированными для будущей стандартизации, являются 0xFF6 (FAT12) и 0xFFF6 (FAT16). Как отмечено ниже, «менее 4085» также используется для реализаций Linux. [44] или, как Microsoft FAT: это указано в спецификации [4]
...когда говорится <, это не означает <=. Также обратите внимание, что цифры верны. Первое число для FAT12 — 4085; второе число для FAT16 — 65525. Эти цифры и знаки «<» не являются ошибочными».
Фрагментация
[ редактировать ]
Файловая система FAT не содержит встроенных механизмов, предотвращающих разброс вновь записанных файлов по разделу. [65] На томах, где файлы часто создаются и удаляются или их длина часто меняется, носитель со временем становится все более фрагментированным.
Хотя конструкция файловой системы FAT не приводит к каким-либо организационным накладным расходам в дисковых структурах или уменьшению объема свободного места хранения при увеличении степени фрагментации , как это происходит при внешней фрагментации , время, необходимое для чтения и записи фрагментированных файлов, будет увеличиваться по мере увеличения количества фрагментированных файлов. операционная система должна будет следовать цепочкам кластеров в FAT (при этом части должны быть сначала загружены в память, особенно на больших объемах) и читать соответствующие данные, физически разбросанные по всей среде, что снижает вероятность использования драйвера блочного устройства низкого уровня. для выполнения многосекторного дискового ввода-вывода или инициации более крупных передач DMA, тем самым эффективно увеличивая накладные расходы протокола ввода-вывода, а также время движения руки и времени стабилизации головки внутри дисковода. Кроме того, файловые операции станут медленнее с ростом фрагментации, поскольку операционной системе потребуется все больше времени для поиска файлов или свободных кластеров.
Другие файловые системы, например, HPFS или exFAT , используют растровые изображения свободного пространства , которые указывают используемые и доступные кластеры, которые затем можно быстро просмотреть, чтобы найти свободные смежные области. Другое решение — объединение всех свободных кластеров в один или несколько списков (как это сделано в файловых системах Unix ). Вместо этого FAT необходимо сканировать как массив для поиска свободных кластеров, что может привести к снижению производительности при работе с большими дисками.
Фактически, поиск файлов в больших подкаталогах или вычисление свободного дискового пространства на томах FAT — одна из наиболее ресурсоемких операций, поскольку требует линейного чтения таблиц каталогов или даже всей FAT. Поскольку общее количество кластеров и размер их записей в FAT все еще были небольшими на томах FAT12 и FAT16, большую часть времени с этим все еще можно было мириться на томах FAT12 и FAT16, учитывая, что введение более сложных дисковых структур потребовало бы большего. также увеличили сложность и объем памяти операционных систем реального режима с их минимальными общими требованиями к памяти 128 КБ или меньше (например, в DOS), для которых FAT изначально был разработан и оптимизирован.
С появлением FAT32 длительное время поиска и сканирования стало более очевидным, особенно на очень больших томах. Возможным оправданием, предложенным Рэймондом Ченом из Microsoft для ограничения максимального размера разделов FAT32, создаваемых в Windows, было время, необходимое для выполнения " DIR
» операция, которая всегда отображает свободное место на диске в последней строке. [66] Отображение этой строки занимало все больше и больше времени по мере увеличения количества кластеров. Поэтому в FAT32 введен специальный сектор информации о файловой системе, в котором ранее вычисленный объем свободного пространства сохраняется в течение циклов включения и выключения, так что счетчик свободного пространства необходимо пересчитывать только тогда, когда съемный носитель в формате FAT32 извлекается без предварительного его размонтирования или если система выключается без надлежащего завершения работы операционной системы. Эта проблема чаще всего заметна на компьютерах до ATX -типа, в простых системах DOS и некоторых потребительских продуктах с батарейным питанием.
Из-за огромных размеров кластера (16 КБ, 32 КБ, 64 КБ), вызванных большими разделами FAT, внутренняя фрагментация в виде непроизводительной траты дискового пространства из-за нехватки файлов из-за перевеса кластера (поскольку файлы редко кратны размеру кластера) становится проблемой. тоже проблема, особенно когда мелких файлов очень много.
Различные оптимизации и настройки реализации драйверов файловой системы FAT, драйверов блочных устройств и дисковых инструментов были разработаны для преодоления большинства узких мест производительности в конструкции файловой системы без необходимости изменения структуры структур на диске. [67] [68] Их можно разделить на онлайновые и автономные методы, и они работают, пытаясь в первую очередь избежать фрагментации файловой системы, развертывая методы, позволяющие лучше справляться с существующей фрагментацией, а также переупорядочивая и оптимизируя структуры на диске. При наличии оптимизации производительность томов FAT часто может достигать производительности более сложных файловых систем в практических сценариях, сохраняя в то же время преимущество доступности даже на очень маленьких или старых системах.
DOS 3.0 и выше не будет немедленно повторно использовать дисковое пространство удаленных файлов для новых выделений, а вместо этого будет искать ранее неиспользованное пространство, прежде чем начать использовать также дисковое пространство ранее удаленных файлов. Это не только помогает сохранять целостность удаленных файлов как можно дольше, но также ускоряет выделение файлов и позволяет избежать фрагментации, поскольку никогда ранее выделенное дисковое пространство не было всегда нефрагментировано. DOS достигает этого, сохраняя в памяти указатель на последний выделенный кластер на каждом смонтированном томе и начинает поиск свободного места от этого места вверх, а не в начале FAT, как это все еще делалось в DOS 2.x. [13] Если достигнут конец FAT, поиск продолжится в начале FAT до тех пор, пока либо не будет найдено свободное пространство, либо пока исходная позиция не будет достигнута снова без обнаружения свободного места. [13] Эти указатели инициализируются так, чтобы указывать на начало файлов FAT после загрузки. [13] но на томах FAT32 DOS 7.1 и выше попытается получить последнюю позицию из информационного сектора FS . Однако этот механизм терпит неудачу, если приложение часто удаляет и воссоздает временные файлы, поскольку в этом случае операционная система будет пытаться сохранить целостность пустых данных, что в конечном итоге приведет к еще большей фрагментации. [13] В некоторых версиях DOS во избежание этой проблемы можно использовать специальную функцию API для создания временных файлов.
Кроме того, записи каталога удаленных файлов будут отмечены 0xE5 начиная с DOS 3.0. [42] DOS 5.0 и выше начнут повторно использовать эти записи только тогда, когда ранее неиспользованные записи каталога будут израсходованы в таблице, и в противном случае системе придется расширить таблицу самостоятельно. [6]
Начиная с DOS 3.3, операционная система предоставляет средства для повышения производительности файловых операций с FASTOPEN
отслеживая положение недавно открытых файлов или каталогов в различных формах списков (MS-DOS/PC DOS) или хеш-таблиц (DR-DOS), что может значительно сократить время поиска и открытия файлов. До DOS 5.0 необходимо соблюдать особую осторожность при использовании таких механизмов вместе с программным обеспечением для дефрагментации диска в обход файловой системы или драйверов диска.
Windows NT заранее выделяет дисковое пространство для файлов в FAT, выбирая большие смежные области, но в случае сбоя добавляемые файлы будут выглядеть больше, чем они когда-либо были записаны, с большим количеством случайных данных в конце.
Другие механизмы высокого уровня могут считывать и обрабатывать более крупные части или полную FAT при запуске или по требованию, когда это необходимо, и динамически создавать в памяти древовидные представления файловых структур тома, отличные от структур на диске. [67] [68] На томах с большим количеством свободных кластеров это может занимать даже меньше памяти, чем образ самой FAT. В частности, на сильно фрагментированных или заполненных томах поиск становится намного быстрее, чем при линейном сканировании фактической FAT, даже если образ FAT будет храниться в памяти. Кроме того, работая на логически высоком уровне файлов и цепочек кластеров, а не на уровне секторов или дорожек, становится возможным в первую очередь избежать некоторой степени фрагментации файлов или выполнить локальную дефрагментацию файлов и переупорядочение записей каталога на основе их имена или шаблоны доступа в фоновом режиме.
Некоторые из предполагаемых проблем с фрагментацией файловых систем FAT также являются результатом ограничений производительности базовых драйверов блочных устройств , которые становятся тем более заметными, чем меньше памяти доступно для буферизации секторов и блокировки/деблокирования дорожек:
В то время как однозадачная DOS имела возможности для многосекторного чтения и блокировки/разблокировки дорожек, операционная система и традиционная архитектура жесткого диска ПК ( только один выполняющийся запрос ввода/вывода одновременно и отсутствие передачи DMA ) изначально не содержали механизмов что могло бы облегчить фрагментацию за счет асинхронной предварительной выборки следующих данных, пока приложение обрабатывало предыдущие фрагменты. Такие возможности стали доступны позже. Более поздние версии DOS также обеспечивали встроенную поддержку буферизации секторов с упреждающим просмотром и поставлялись с динамически загружаемыми программами дискового кэширования, работающими на уровне физических или логических секторов, часто использующими память EMS или XMS , а иногда предоставляющими стратегии адаптивного кэширования или даже работающими в защищенном режиме через DPMS или Cloaking для повышения производительности за счет прямого доступа к кэшированным данным в линейной памяти, а не через обычные API-интерфейсы DOS.
Кэширование с отложенной записью часто не включалось по умолчанию в программном обеспечении Microsoft (если оно имеется) из-за проблемы потери данных в случае сбоя питания или сбоя, что упрощалось из-за отсутствия аппаратной защиты между приложениями и системой.
Длинные имена файлов VFAT
[ редактировать ]
Длинные имена файлов VFAT (LFN) сохраняются в файловой системе FAT с помощью хитрости: добавление дополнительных записей в каталог перед обычной записью файла. Дополнительные записи помечаются атрибутами «Метка тома», «Система», «Скрытый» и «Только чтение» (что дает 0x0F ), эта комбинация не ожидается в среде MS-DOS и поэтому игнорируется программами MS-DOS и сторонними утилитами. Примечательно, что каталог, содержащий только метки томов, считается пустым и его можно удалить; такая ситуация возникает, если файлы, созданные с длинными именами, удаляются из обычного DOS. Этот метод очень похож на метод DELWATCH, позволяющий использовать атрибут тома для сокрытия файлов, ожидающих удаления, для возможного восстановления в будущем, начиная с DR DOS 6.0 (1991) и выше. Это также похоже на публично обсуждавшийся метод хранения длинных имен файлов в Ataris и Linux в 1992 году. [69] [70]
Поскольку более старые версии DOS могли ошибочно принимать имена LFN в корневом каталоге за метку тома, VFAT был разработан для создания пустой метки тома в корневом каталоге перед добавлением каких-либо записей имени LFN (если метка тома еще не существовала). [номер 13]
Каждая фальшивая запись может содержать до 13 символов UCS-2 (26 байтов) при использовании полей в записи, которые содержат размер файла или отметки времени (но не поле начального кластера; для совместимости с дисковыми утилитами поле начального кластера установлено на значение 0. см. в разделе 8.3 «Имя файла» Дополнительные пояснения ). До 20 из этих 13-значных записей могут быть объединены в цепочку, поддерживая максимальную длину 255 символов UCS-2. [55]
Если позиция последнего символа LFN не находится на границе записи каталога (13, 26, 39, ...), то Терминатор 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 Ненулевое значение можно использовать для различения VFAT LFN и файлов, ожидающих удаления в DELWATCH.
Например, имя файла типа «Файл с очень длинным именем файла.ext» будет отформатировано следующим образом:
Порядковый номер | Вводные данные |
---|---|
0x03 | "me.ext" |
0x02 | "Я длинная филена" |
0x01 | "Файл с версией" |
??? | Обычная запись 8.3 |
Контрольная сумма также позволяет проверить, соответствует ли длинное имя файла имени 8.3; такое несоответствие могло произойти, если файл был удален и заново создан с помощью DOS в той же позиции каталога. Контрольная сумма рассчитывается по приведенному ниже алгоритму. (pFCBName — это указатель на имя, которое появляется в обычной записи каталога, т. е. первые восемь символов — это имя файла, а последние три — расширение. Точка является неявной. Любой неиспользуемый пробел в имени файла дополняется пробелами. (ASCII 0x20 ). Например, «Readme.txt» будет « README␠␠TXT
".)
unsigned char lfn_checksum(const unsigned char *pFCBName)
{
int i;
unsigned char sum = 0;
for (i = 11; i; i--)
sum = ((sum & 1) << 7) + (sum >> 1) + *pFCBName++;
return sum;
}
Если имя файла содержит только строчные буквы или представляет собой комбинацию нижнего регистра с расширением в верхнем регистре или наоборот; и не имеет специальных символов и соответствует ограничениям 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
определяет, используется ли эта функция при записи. [71]
См. также
[ редактировать ]- Сравнение файловых систем
- Назначение буквы диска
- exFAT
- Расширенная загрузочная запись (EBR)
- Файловая система FAT и Linux
- Список файловых систем
- Основная загрузочная запись (MBR)
- Тип раздела
- Хронология операционных систем DOS
- Транзакционно-безопасная файловая система FAT
- Турбо ЖИР
- Загрузочная запись тома (VBR)
Примечания
[ редактировать ]- ^ Jump up to: а б с Для максимальной совместимости с 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).
- ^ Jump up to: а б с д и Подпись в зачете 0x1FE в загрузочных секторах 0x55 0xAA , то есть 0x55 по смещению 0x1FE и 0xAA по смещению 0x1FF . Поскольку , необходимо предполагать представление с прямым порядком байтов в контексте компьютеров, совместимых с IBM PC , это можно записать как 16-битное слово. 0xAA55 в программах для процессоров x86 (обратите внимание на порядок перестановки), тогда как его нужно было бы записать как 0x55AA в программах для других архитектур ЦП, использующих представление с прямым порядком байтов . Поскольку это неоднократно путалось в книгах и даже в оригинальных справочных документах Microsoft, в этой статье используется побайтовое представление на диске на основе смещения, чтобы избежать любой возможной неправильной интерпретации.
- ^ Jump up to: а б с Запись контрольной суммы в загрузочных секторах Atari содержит значение выравнивания, а не само магическое значение . Магическая ценность 0x1234 нигде на диске не хранится. В отличие от процессоров Intel x86 , процессоры Motorola 680x0 , используемые в машинах Atari, используют представление памяти с прямым порядком байтов , и поэтому при вычислении контрольной суммы необходимо учитывать представление с прямым порядком байтов. Как следствие этого, для кода проверки контрольной суммы, работающего на машинах x86, пары байтов необходимо поменять местами перед 16-битным сложением.
- ^ DR-DOS может загружать носители с логическими секторами FAT12/FAT16 с размерами логических секторов до 1024 байт.
- ^ Jump up to: а б Следующие функции 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, если использовалась только EBPB FAT16.)
- ^ Jump up to: а б Одной из утилит, позволяющей указать желаемое значение заполнителя формата для жестких дисков, является FDISK R2.31 DR-DOS с дополнительным параметром очистки.
/W:246
. В отличие от других утилит FDISK , DR-DOS FDISK является не только инструментом создания разделов, но также может форматировать недавно созданные разделы как FAT12 , FAT16 или FAT32 . Это снижает риск случайного форматирования неправильных томов. - ^ Чтобы поддержать сосуществование 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 .
- ^ Jump up to: а б с д См. другие ссылки, чтобы узнать о специальных мерах предосторожности в отношении возникновения кластерного значения 0xFF0 на томах FAT12 под MS-DOS/PC DOS 3.3 и выше.
- ^ Jump up to: а б Некоторые версии FORMAT , начиная с MS-DOS 1.25 и PC DOS 2.0, поддерживают эту опцию.
/O
(для старых первый байт всех записей каталога ), чтобы заполнить 0xE5 вместо использования конечного маркера 0x00 . Тем самым. том оставался доступным в PC DOS 1.0–1.1 , тогда как форматирование занимало несколько больше времени, и более новые версии DOS не могли воспользоваться значительным ускорением, вызванным использованием конечного маркера. 0x00 . - ^ Вот причина, почему 0xE5 имел особое значение в записях каталога.
- ^ Jump up to: а б Чтобы избежать потенциальной неправильной интерпретации меток тома каталога с записями VFAT LFN операционными системами, не поддерживающими VFAT, известно, что инструменты DR-DOS 7.07 FDISK и FORMAT явно записывают фиктивные "
NO␠NAME␠␠␠␠
" метки тома каталога, если пользователь пропускает ввод метки тома. По умолчанию операционная система будет возвращать ту же строку, если в корне тома не найдена метка тома каталога, но без реальной метки тома, сохраненной в качестве первой записи. (после записей каталога) старые операционные системы могли вместо этого ошибочно воспринимать записи VFAT LFN. - ^ Этот тип атрибута распространения ОС IBM 4680 и 4690 должен иметь значение бита на диске, равное 0, поскольку файлы возвращаются к этому типу, когда атрибуты случайно теряются.
Ссылки
[ редактировать ]- ^ «Файловые системы» . Microsoft TechNet . 2001. Архивировано из оригинала 12 августа 2011 г. Проверено 31 июля 2011 г.
- ^ Jump up to: а б Microsoft (15 ноября 2006 г.). Файл CONFIG.TXT на компакт-диске Windows 95, заархивированный 28 января 2013 г. по адресу archive.today. Статья 135481, редакция: 1.1, получено 22 декабря 2011 г.: «Для каждого жесткого диска указывается, следует ли записывать дату последнего доступа к файлам». Даты последнего доступа отключаются для всех дисков при запуске компьютера в безопасном режиме и не сохраняются для дискет по умолчанию.
ACCDATE=drive1+|- [drive2+|-]...
" - ^ Бхат, Вашингтон (2010). «Обзор структуры данных FAT файловой системы FAT32». S2CID 58178285 .
{{cite web}}
: Отсутствует или пусто|url=
( помощь ) - ^ Jump up to: а б с д и ж г час я дж к л м н тот «Спецификация файловой системы FAT32, инициатива Microsoft Extensible Firmware Initiative, FAT: общий обзор формата на диске» . Майкрософт . 06.12.2000. Архивировано из оригинала 23 июля 2021 г. Проверено 3 июля 2011 г.
- ^ Jump up to: а б с д Хааф, Вильфрид; Миддел, Фрэнк (ноябрь 1987 г.). «Данные на дисках — структуры файлов и дискет в CP/M, MSDOS и TOS: управление файлами в TOS». c't - журнал по компьютерным технологиям . c't картотека (на немецком языке). Том 1987, № 11. Verlag Heinz Heise GmbH & Co. KG . С. 241–246 [246]. ISSN 0724-8679 .
- ^ Jump up to: а б с д и ж г час я дж к л м н тот п Чаппелл, Джефф (январь 1994 г.). Шульман, Эндрю; Педерсен, Аморетт (ред.). Внутреннее устройство DOS . Серия программ Эндрю Шульмана (1-е издание, 1-е изд.). Издательская компания Аддисон Уэсли . ISBN 978-0-201-60835-9 . (xxvi+738+iv страниц, 3,5-дюймовая дискета [1] [2] ) Исправления: [3] [4] [5]
- ^ Jump up to: а б с д и ж г час я дж к л м н тот п д р с т в v В Руководство по программированию Microsoft MS-DOS 3.1 на английском языке [ Справочное руководство программиста Microsoft MS-DOS 3.1 на английском языке ]. Мюнхен: 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».
(Примечание. Эта книга содержит много ошибок.) - ^ Jump up to: а б Дэниел Б. Седори. Загрузочный сектор персонального компьютера IBM DOS версии 1.00 (1981 г.) . 2 августа 2005 г. ( [6] Архивировано 21 мая 2014 г. в Wayback Machine ).
- ^ Jump up to: а б Дэниел Б. Седори. Загрузочный сектор персонального компьютера IBM DOS версии 1.10 (1982 г.) . 29 июля 2005 г. ( [7] Архивировано 21 мая 2014 г. в Wayback Machine ).
- ^ Jump up to: а б Кальдера (1997). Машиночитаемый исходный код Caldera OpenDOS 7.01 . Файл DISK.ASM в машиночитаемом исходном коде показывает, что DR-DOS проверяет значение 0x69 тоже.
- ^ Пол, Матиас Р. (20 февраля 2002 г.). «Нужна DOS 6.22 (не OEM)» . Группа новостей : alt.msdos.programmer . Архивировано из оригинала 9 сентября 2017 г. Проверено 14 октября 2006 г.
- ^ Басс, Уолли (14 февраля 1994 г.). «Размер кластера» . Группа новостей : comp.os.msdos.programmer . Архивировано из оригинала 9 сентября 2017 г. Проверено 14 октября 2006 г.
- ^ Jump up to: а б с д и ж г час Дэйв Уильямс (1992). Технический справочник программиста для MSDOS и IBM PC . ДОСРЭФ, условно-бесплатная версия от 12.01.1992. ISBN 1-878830-02-3 . ( [8] Архивировано 20 мая 2014 г. на Wayback Machine , доступ осуществлен 8 января 2012 г.). Комментарий: Автор упоминает, что DOS 4.0 проверяет OEM-маркировку, но отрицает, что DOS 3.2 тоже ее проверяет (хотя это так).
- ^ Пол, Матиас Р. (25 августа 2004 г.). «НОВОЛТРК.РЕГ» . www.drdos.org . Архивировано из оригинала 4 марта 2016 г. Проверено 17 декабря 2011 г. [9]
- ^ Jump up to: а б «Устранение неполадок дисков и файловых систем» . Microsoft TechNet . 05.11.2005. Архивировано из оригинала 7 июня 2014 г. Проверено 15 июня 2014 г.
- ^ IBM (1983). Технический справочник IBM PC . Комментарий: включает полный список исходного кода ПЗУ BIOS оригинального IBM PC.
- ^ Jump up to: а б с д Ханс-Дитер Янковски, Дитмар Рабих, Джулиан Ф. Решке (1992). Профессиональная книга Atari ST-STE-TT . Сайбекс, 4-е издание, 12-я партия. ISBN 3-88745-888-5 , ISBN 978-3-88745-888-1 .
- ^ Seagate Technologies, «Переход на жесткие диски расширенного формата с сектором 4 КБ (архивировано Wayback Machine @Archive.org)», 2010 г. ( [10] ).
- ^ Jump up to: а б с д Браун, Ральф Д. (29 декабря 2002 г.). «Список прерываний x86» . Архивировано из оригинала 16 июня 2016 г. Проверено 14 октября 2011 г.
- ^ Jump up to: а б с д де Бойн Поллард, Джонатан (2010) [2006]. «Все о блоках параметров BIOS» . Часто встречающиеся ответы . Архивировано из оригинала 26 августа 2016 г. Проверено 2 июня 2014 г.
- ^ Jump up to: а б с Справочник программиста Microsoft MS-DOS: версия 5.0 . Майкрософт пресс. 1991. ISBN 1-55615-329-5 .
- ^ Jump up to: а б с д и ж г час я дж к «Стандартные форматы гибких дисков, поддерживаемые MS-DOS» . Справка и поддержка Microsoft. 12 мая 2003 г. Архивировано из оригинала 9 января 2015 г. Проверено 11 сентября 2012 г.
- ^ Jump up to: а б с Майкрософт (1987–07). Справочник программиста MS-DOS 3.3.
- ^ Jump up to: а б с д и ж г час я дж «Объем и файловая структура дисковых картриджей для обмена информацией» . Стандарт ECMA-107 (2-е изд., июнь 1995 г.) . ЭКМА . 1995. Архивировано из оригинала 07 октября 2018 г. Проверено 30 июля 2011 г.
- ^ Jump up to: а б с д и ж г час я дж «Информационные технологии -- Объем и файловая структура дисковых картриджей для обмена информацией» . ИСО/МЭК 9293:1994 . ИСО Каталог . 1994. Архивировано из оригинала 17 января 2012 г. Проверено 6 января 2012 г.
- ^ Jump up to: а б с д и ж г час я дж «Обработка информации. Объем и файловая структура гибких дисковых картриджей для обмена информацией» . ИСО 9293:1987 . ИСО Каталог . 1987. Архивировано из оригинала 17 января 2012 г. Проверено 6 января 2012 г.
- ^ Jump up to: а б с Андрис Брауэр (20 сентября 2002 г.). «Файловая система FAT» . Архивировано из оригинала 6 октября 2011 г. Проверено 16 октября 2011 г.
- ^ Jump up to: а б с д и ж г час я дж к л м н тот п д р Патерсон, Тим ; Microsoft (19 декабря 2013 г.) [1983]. «Microsoft DOS V1.1 и V2.0: /msdos/v20source/SKELIO.TXT, /msdos/v20source/HRDDRV.ASM» . ЧМ . Музей истории компьютеров , Microsoft . Архивировано из оригинала 14 августа 2019 г. Проверено 25 марта 2014 г. (Примечание: хотя издатели утверждают, что это будут MS-DOS 1.1 и 2.0, на самом деле это SCP MS-DOS 1.25 и смесь Altos MS-DOS 2.11 и TeleVideo PC DOS 2.11 .)
- ^ Jump up to: а б с д и ж г час я дж Збиковски, Марк ; Аллен, Пол ; Балмер, Стив ; Борман, Рубен; Борман, Роб; Батлер, Джон; Кэрролл, Чак; Чемберлен, Марк; Челл, Дэвид; Коули, Майк; Кортни, Майк; Драйфус, Майк; Дункан, Рэйчел; Экхардт, Курт; Эванс, Эрик; Фермер, Рик; Гейтс, Билл ; Гири, Майкл; Гриффин, Боб; Хогарт, Дуг; Джонсон, Джеймс В.; Кермаани, Каамель; Король, Адриан; Кох, Рид; Ландовски, Джеймс; Ларсон, Крис; Леннон, Томас; Липки, Дэн; Макдональд, Марк ; МакКинни, Брюс; Мартин, Паскаль; Мазерс, Эстель; Мэтьюз, Боб; Мелин, Дэвид; Мергентайм, Чарльз; Невин, Рэнди; Ньюэлл, Дэн; Ньюэлл, Тани; Норрис, Дэвид; О'Лири, Майк; О'Рир, Боб ; Олссон, Майк; Остерман, Ларри; Остлинг, Ридж; Пай, Сунил; Патерсон, Тим ; Перес, Гэри; Питерс, Крис; Петцольд, Чарльз ; Поллок, Джон; Рейнольдс, Аарон ; Рубин, Дэррил; Райан, Ральф; Шульмейстерс, Карл; Шах, Раджен; Шоу, Барри; Коротко, Энтони; Сливка, Бен; Смирл, Джон; Стиллмейкер, Бетти; Стоддард, Джон; Тиллман, Деннис; Уиттен, Грег; Йонт, Натали; Зек, Стив (1988). «Технические консультанты». Энциклопедия MS-DOS: версии с 1.0 по 3.2 . Дункан, Рэй; Боствик, Стив; Бургойн, Кейт; Байерс, Роберт А.; Хоган, Том; Кайл, Джим; Летвин, Гордон ; Петцольд, Чарльз ; Рабиновиц, Чип; Томлин, Джим; Уилтон, Ричард; Вулвертон, Ван; Вонг, Уильям; Вудкок, Джоанн (Полностью переработанное издание). Редмонд, Вашингтон, США: Microsoft Press . ISBN 1-55615-049-0 . LCCN 87-21452 . OCLC 16581341 . (xix+1570 страниц; 26 см) (Примечание. Это издание было опубликовано в 1988 году после обширной переработки отозванного первого издания 1986 года другой группой авторов. [11] Архивировано 14 октября 2018 г. в Wayback Machine )
- ^ Jump up to: а б «Подробное объяснение загрузочного сектора FAT» . База знаний Майкрософт . 06 декабря 2003 г. Архивировано из оригинала 28 ноября 2011 г. Проверено 16 октября 2011 г.
- ^ Jump up to: а б с Лай, Роберт С.; Группа Уэйта (1987). Написание драйверов устройств MS-DOS (2-е изд.). Эддисон Уэсли. ISBN 0-201-60837-5 .
- ^ Jump up to: а б с д и ж г час я дж к л м н тот п д р с т Патерсон, Тим ; Microsoft (19 декабря 2013 г.) [1983]. «Microsoft DOS V1.1 и V2.0: /msdos/v20source/DEVDRIV.txt» . Музей истории компьютеров , Microsoft . Архивировано из оригинала 14 августа 2019 г. Проверено 25 марта 2014 г. (Примечание: хотя издатели утверждают, что это будут MS-DOS 1.1 и 2.0, на самом деле это SCP MS-DOS 1.25 и смесь Altos MS-DOS 2.11 и TeleVideo PC DOS 2.11 .)
- ^ Jump up to: а б с д и Тим Патерсон (1983). «Взгляд изнутри на MS-DOS» . Байт . Архивировано из оригинала 20 июля 2011 г. Проверено 18 июля 2011 г.
Нумерация начинается с 2; первые две цифры, 0 и 1, зарезервированы.
- ^ Jump up to: а б с д PORT-DOS — Руководство пользователя для Apricot Portable . Руководства для пользователя, Великобритания ( [12] Архивировано 22 мая 2013 г. в Wayback Machine ).
- ^ Jump up to: а б с д и Джон К. Эллиотт (1998). Форматы дисков DOSPLUS . ( [13] Архивировано 7 июня 2013 г. в Wayback Machine ).
- ^ Jump up to: а б с д Мастер BBC 512 . Компьютерные страницы BBC Yellow Pig ( [14] Архивировано 21 мая 2014 г. в Wayback Machine ).
- ^ Корпорация цифрового оборудования. Техническая документация Rainbow 100 MS-DOS 2.01, том 1 (QV025-GZ), список BIOS операционной системы Microsoft MS-DOS (AA-X432A-TV), универсальный драйвер диска, стр. 1–17. 1983.
- ^ «Подробное объяснение загрузочного сектора FAT» . Корпорация DEW Associates. 2002. Архивировано из оригинала 26 сентября 2011 г. Проверено 16 октября 2011 г.
- ^ Тьяги, Тарун (31 октября 2004 г.). «Размер кластеров в файловых системах FAT и NTFS». Восстановление данных с программированием и без него . Нью-Дели, Индия: Книги Гарднера. п. 4. ISBN 978-81-7656-922-4 . Архивировано из оригинала 3 декабря 2021 г. Проверено 3 декабря 2021 г.
- ^ Дэниел Б. Седори. Подробные примечания к «флагу неправильного завершения работы» в MS-Windows . 04.12.2001. ( [15] Архивировано 21 мая 2014 г. в Wayback Machine ).
- ^ Jump up to: а б с д и «Windows 98 Resource Kit — Глава 10 — Диски и файловые системы» . Microsoft TechNet . 1998. Архивировано из оригинала 1 мая 2012 г. Проверено 16 июля 2012 г.
- ^ Jump up to: а б с д Шульман, Эндрю; Браун, Ральф Д .; Макси, Дэвид; Михелс, Раймонд Дж.; Кайл, Джим (1994) [ноябрь 1993 г.]. Недокументированная DOS: Руководство программиста по зарезервированным функциям и структурам данных MS-DOS - расширено и включает MS-DOS 6, Novell DOS и Windows 3.1 (2-е изд.). Ридинг, Массачусетс: Эддисон Уэсли . п. 11 . ISBN 0-201-63287-Х . (xviii+856+vi страниц, 3,5-дюймовая дискета) Исправления: [16] [17]
- ^ Питер Нортон (1986). Внутри IBM PC, переработанное и расширенное , Брейди. ISBN 0-89303-583-1 , с. 157.
- ^ Jump up to: а б с Андрис Брауэр . «FAT под Linux» . Архивировано из оригинала 1 июля 2014 г. Проверено 20 мая 2014 г.
- ^ Андрис Брауэр (20 сентября 2002 г.). "ТОЛСТЫЙ" . Архивировано из оригинала 17 декабря 2017 г. Проверено 11 января 2012 г.
- ^ Jump up to: а б с Компьютерные продукты Сиэтла (1981). «Дополнение к SCP 86-DOS 1.0» (PDF) . Архивировано (PDF) из оригинала 3 октября 2012 г. Проверено 10 марта 2013 г.
- ^ Jump up to: а б с д и ж г час я дж к л м н тот п д р с т в v В х и С аа аб и объявление но из в ах есть также и Пол, Матиас Р. (30 июля 1997 г.) [1 мая 1994 г.]. NWDOS-TIPs — советы и подсказки для Novell DOS 7, с просмотром недокументированных подробностей, ошибок и обходных путей . MPDOSTIP (на немецком языке) (3-е изд.). Архивировано из оригинала 5 ноября 2016 г. Проверено 11 января 2012 г. (Примечание. NWDOSTIP.TXT — это всеобъемлющая работа по Novell DOS 7 и OpenDOS 7.01 , включая описание многих недокументированных функций и внутренних устройств. Это часть еще более обширной авторской коллекции MPDOSTIP.ZIP, которая поддерживалась до 2001 года и распространялась на многих сайтах по адресу: время. Предоставленная ссылка указывает на более старую версию файла, преобразованную в HTML.) [18]
- ^ IBM. Руководство пользователя ОС 4690, версия 5.2 , документ IBM SC30-4134-01, 10 января 2008 г. ( [19] Архивировано 25 января 2022 г. на Wayback Machine ).
- ^ Jump up to: а б Патерсон, Тим ; Microsoft (19 декабря 2013 г.) [1983]. «Microsoft DOS V1.1 и V2.0: /msdos/v20source/FORMAT.TXT» . Музей истории компьютеров , Microsoft . Архивировано из оригинала 14 августа 2019 г. Проверено 25 марта 2014 г. (Примечание: хотя издатели утверждают, что это будут MS-DOS 1.1 и 2.0, на самом деле это SCP MS-DOS 1.25 и смесь Altos MS-DOS 2.11 и TeleVideo PC DOS 2.11 .)
- ^ Jump up to: а б Шустек, Лен (24 марта 2014 г.). «Ранний исходный код Microsoft MS-DOS» . Жемчужины программного обеспечения: серия исторических исходных кодов Музея компьютерной истории. Архивировано из оригинала 10 августа 2019 г. Проверено 29 марта 2014 г. (Примечание. Хотя автор утверждает, что это будут MS-DOS 1.1 и 2.0, на самом деле это SCP MS-DOS 1.25 и смесь Altos MS-DOS 2.11 и TeleVideo PC DOS 2.11 .)
- ^ Jump up to: а б Левин, Рой (25 марта 2014 г.). «Microsoft делает исходный код MS-DOS и Word для Windows общедоступным» . Официальный блог Microsoft . Архивировано из оригинала 28 марта 2014 г. Проверено 29 марта 2014 г. (Примечание. Хотя автор утверждает, что это будут MS-DOS 1.1 и 2.0, на самом деле это SCP MS-DOS 1.25 и смесь Altos MS-DOS 2.11 и TeleVideo PC DOS 2.11 .)
- ^ JEIDA/JEITA/CIPA (2010). «Стандарт Ассоциации производителей камер и продуктов обработки изображений, CIPA DC-009-Translation-2010, Правила проектирования файловой системы камеры: DCF, версия 2.0 (издание 2010 г.)» (PDF) . Архивировано из оригинала (PDF) 30 сентября 2013 г. Проверено 13 апреля 2011 г.
- ^ Jump up to: а б с д и ж г час я дж к л м н тот п д Кальдера (1997). Машиночитаемый исходный код Caldera OpenDOS 7.01 . Файл FDOS.EQU в машиночитаемом исходном коде имеет эквиваленты для соответствующих записей каталога.
- ^ Джон К. Эллиотт (1998). Форматы дисков CP/M 4.1 . ( [20] Архивировано 26 августа 2014 г. на Wayback Machine ): «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 не поддерживаются».
- ^ Jump up to: а б винДачи (06 января 1998 г.). «Спецификация длинного имени файла» . Архивировано из оригинала 20 апреля 2001 г. Проверено 13 марта 2007 г.
- ^ Хенк Келдер. FAT32.TXT для FAT32.IFS версии 0.74 . ( «@Макарло, Инк» . Архивировано из оригинала 30 марта 2012 г. Проверено 14 января 2012 г. ). Комментарий: В этой старой версии файла README все еще обсуждается старый 0xEA и Магические значения 0xEC .
- ^ Хенк Келдер (2003). FAT32.TXT для FAT32.IFS версии 0.9.13." ( [21] Архивировано 25 января 2022 г. на Wayback Machine ): "Этот байт [...] не изменяется при работе в Windows 95 и более поздних версиях с помощью SCANDISK или DEFRAG. . [...] Если другая программа устанавливает значение 0x00 для файла, содержащего советники, эти советники больше не будут найдены только с помощью вызовов DosFindFirst/Next. Другие вызовы OS/2 для получения EA (DosQueryPathInfo, DosQueryFileInfo и DosEnumAttribute) не полагаются на этот байт. Также может произойти и обратное. [...] В этой ситуации снизится только производительность сканирования каталогов. Обе ситуации [...] исправляются CHKDSK ».
- ^ Нетлабс. FAT32.IFS Wiki и исходные коды . ( [22] Архивировано 11 мая 2013 г. в Wayback Machine ).
- ^ Jump up to: а б ИБМ. Руководство по программированию ОС 4690, версия 5.2 , документ IBM SC30-4137-01, 6 декабря 2007 г. ( [23] Архивировано 25 января 2022 г. на Wayback Machine ).
- ^ Jump up to: а б с д и ж г час я дж к л м н Серия справочников для разработчиков OpenDOS — Руководство по системе и программисту — Руководство программиста . Caldera, Inc., август 1997 г. Номер детали Caldera 200-DODG-003. Архивировано из оригинала 07.10.2017 . Проверено 20 мая 2014 г. (Напечатано в Великобритании.)
- ^ Боб Игер, Tavi Systems (28 октября 2000 г.). Реализация расширенных атрибутов файловой системы FAT . ( [24] Архивировано 13 июня 2006 г. в Wayback Machine ).
- ^ IBM (2003). Информация об уникальных атрибутах распределения файлов ОС 4690 , документ IBM R1001487, 30 июля 2003 г. ( «Информация IBM об уникальных атрибутах распространения файлов ОС 4690 — США» . Архивировано из оригинала 21 мая 2014 г. Проверено 20 мая 2014 г. ): «[...] типы файлов хранятся в части «Зарезервированные биты» структуры каталогов файлов PC-DOS [...] только 4690 уважает и сохраняет эти атрибуты. Различные операционные системы, отличные от 4690, предпринимают разные действия, если эти биты включаются [...] при копировании с дискеты, созданной в системе 4690 [...] PC-DOS и Windows 2000 Professional скопируют файл без ошибок и обнулят биты OS/2 [.. .] 1.2 [...] откажется копировать файл, если [...] сначала не запустить CHKDSK /F для файла. После [...] CHKDSK он скопирует файл и обнулит биты [.. .] при [...] копировании [...] обратно в систему 4690, [...] файл будет скопирован как локальный файл».
- ^ IBM. 4690 сохранять и восстанавливать атрибуты распределения файлов . Документ IBM R1000622, 31 августа 2010 г. ( «IBM 4690 сохраняет и восстанавливает атрибуты распространения файлов — США» . Архивировано из оригинала 21 мая 2014 г. Проверено 20 мая 2014 г. ).
- ^ «Ограничения файловой системы FAT32» . База знаний Майкрософт . 26 марта 2007 г. Архивировано из оригинала 15 августа 2011 г. Проверено 21 августа 2011 г.
Кластеры не могут иметь размер 64 килобайта или больше.
- ^ Дункан, Рэй (1989). «Цели разработки и реализация новой высокопроизводительной файловой системы» . Системный журнал Microsoft. Архивировано из оригинала 16 июля 2011 г. Проверено 20 мая 2014 г. [Примечание. Этот конкретный текстовый файл содержит ряд ошибок оптического распознавания символов; например, «Рэй» — правильное имя автора; а не «Рой», как показано в тексте.]
- ^ Чен, Раймонд (июль 2006 г.). «Microsoft TechNet: краткая и неполная история FAT32» . Журнал Microsoft TechNet. Архивировано из оригинала 18 ноября 2008 г. Проверено 20 мая 2014 г.
- ^ Jump up to: а б Лес Белл; Associates Pty Ltd (02.09.1996) [1990]. «Высокопроизводительная файловая система OS/2» . Консультант по поддержке ПК . Архивировано из оригинала 1 марта 2014 г. Проверено 24 июня 2014 г.
- ^ Jump up to: а б Бриджес, Дэн (февраль 1996 г.). «Внутри высокопроизводительной файловой системы. Часть 2/6: Введение» . Значительные биты, Brisbug PC User Group Inc. Архивировано из оригинала 23 сентября 2015 г. Проверено 24 июня 2014 г.
- ^ Натюрлих! (24 марта 1992 г.). «Получение более длинных имен файлов из GEMDOS» . comp.sys.atari.st.tech. Архивировано из оригинала 24 апреля 2014 г. Проверено 5 мая 2014 г.
- ^ Торвальдс, Линус (23 декабря 1992 г.). «Длинные имена файлов» . комп.os.minix. Архивировано из оригинала 23 апреля 2014 г. Проверено 5 мая 2014 г.
- ^ «mount(8): смонтировать файловую систему» . Справочная страница Linux . Архивировано из оригинала 5 мая 2014 г. Проверено 20 мая 2014 г.
Внешние ссылки
[ редактировать ]- ECMA-107 Том и файловая структура дисковых картриджей для обмена информацией , идентичные ISO/IEC 9293.
- Спецификация файловой системы FAT32, инициатива Microsoft Extensible Firmware Initiative, FAT: общий обзор формата на диске
- Понимание файловых систем FAT32 (поясняется для разработчиков встроенного ПО)
- Понимание FAT, включая много информации о LFN.
- Подробное объяснение загрузочного сектора FAT : статья 140418 базы знаний Microsoft.
- Описание файловой системы FAT32 : статья 154997 базы знаний Microsoft.
- Реализация файловой системы FAT12/FAT16/FAT32 для *nix : включает библиотеки libfat и usefat, драйвер файловой системы FUSE.
- MS-DOS: ограничения каталогов и подкаталогов : статья 39927 базы знаний Microsoft
- Обзор файловых систем FAT, HPFS и NTFS : статья 100108 базы знаний Microsoft
- Ограничения на объем и размер файлов файловых систем FAT : Microsoft Technet, копия сделана Internet Archive Wayback Machine
- Microsoft TechNet: Краткая и неполная история FAT32 Рэймонда Чена
- Средство форматирования FAT32, заархивировано 21 июля 2009 г. на Wayback Machine : позволяет форматировать тома размером более 32 ГБ с помощью FAT32 под Windows 2000 , Windows XP и Windows Vista.
- Fdisk не распознает полный размер жестких дисков объемом более 64 ГБ : статья 263044 базы знаний Microsoft, копия сделана Internet Archive Wayback Machine . Объясняет невозможность работы с очень большими томами под Windows 95/98.
- Microsoft Windows XP: файловая система FAT32 . сделанная Internet Archive Wayback Machine , которая больше не доступна на веб-сайте Microsoft. Копия статьи с кратким описанием ограничений FAT32,
- Визуальное расположение диска FAT16