stringtranslate.com

Проектирование файловой системы FAT

Файловая система FAT — это файловая система, используемая в операционных системах семейства MS-DOS и Windows 9x . [3] Она продолжает использоваться на мобильных устройствах и встраиваемых системах и, таким образом, является хорошо подходящей файловой системой для обмена данными между компьютерами и устройствами практически любого типа и возраста с 1981 года по настоящее время.

Структура

Файловая система FAT состоит из четырех областей:

FAT использует формат little-endian для всех записей в заголовке (за исключением, где это явно указано, некоторых записей в загрузочных секторах Atari ST) и FAT(s). [5] Можно выделить больше секторов FAT, чем необходимо для количества кластеров. Конец последнего сектора каждой копии FAT может быть неиспользованным, если нет соответствующих кластеров. Общее количество секторов (как указано в загрузочной записи) может быть больше, чем количество секторов, используемых данными (кластеры × секторы на кластер), FAT (количество FAT × секторы на FAT), корневой каталог (n/a для FAT32) и скрытые секторы, включая загрузочный сектор: это приведет к неиспользуемым секторам в конце тома. Если раздел содержит больше секторов, чем общее количество секторов, занятых файловой системой, это также приведет к неиспользуемым секторам в конце раздела, после тома.

Зона зарезервированных секторов

Загрузочный сектор

На неразделенных устройствах хранения данных , таких как дискеты , загрузочный сектор ( VBR ) является первым сектором (логический сектор 0 с физическим адресом CHS 0/0/1 или адресом LBA 0). Для разделенных устройств хранения данных, таких как жесткие диски, загрузочный сектор является первым сектором раздела, как указано в таблице разделов устройства.

Блок параметров BIOS

DOS 3.0 БПБ:

Следующие расширения были задокументированы со времен DOS 3.0, однако они уже поддерживались некоторыми выпусками DOS 2.11. [28] MS-DOS 3.10 по-прежнему поддерживала формат DOS 2.0, но могла использовать и формат DOS 3.0.

DOS 3.2 БПБ:

Официально MS-DOS 3.20 по-прежнему использовала формат DOS 3.0, но SYSбыла FORMATадаптирована для поддержки уже на 6 байт длиннее формата (из которого не все записи были использованы).

ДОС 3.31 БПБ:

Официально представленный в DOS 3.31 и не используемый в DOS 3.2, некоторые утилиты DOS 3.2 были разработаны так, чтобы знать об этом новом формате. Официальная документация рекомендует доверять этим значениям только в том случае, если запись логических секторов по смещению 0x013 равна нулю.

Простая формула переводит заданный номер кластера тома CNв логический номер сектора LSN: [24] [25] [26]

  1. Определите (один раз) , где зарезервированное количество секторов хранится по смещению 0x00E , количество FAT по смещению 0x010 , секторы на FAT по смещению 0x016 (FAT12/FAT16) или 0x024 (FAT32), записи корневого каталога по смещению 0x011 , размер сектора по смещению 0x00B и округлите до целого числа.SSA=RSC+FN×SF+ceil((32×RDE)/SS)RSCFNSFRDESSceil(x)
  2. Определите , где хранятся сектора в кластере по смещению 0x00D .LSN=SSA+(CN−2)×SCSC

На неразделенных носителях число скрытых секторов тома равно нулю, и поэтому LSNи LBAадреса становятся одинаковыми до тех пор, пока логический размер сектора тома идентичен физическому размеру сектора базового носителя. При этих условиях также просто выполнять преобразование между CHSадресами и LSNsтакже:

LSN=SPT×(HN+(NOS×TN))+SN−1, где секторы на дорожку SPTхранятся по смещению 0x018 , а количество сторон по смещению 0x01A . Номер дорожки , номер головки и номер сектора соответствуют цилиндру-головке-сектору : формула дает известное преобразование CHS в LBA .NOSTNHNSN

Расширенный блок параметров BIOS

Дальнейшая структура, используемая FAT12 и FAT16, начиная с OS/2 1.0 и DOS 4.0, также известная как расширенный блок параметров BIOS (EBPB) (байты ниже смещения сектора 0x024 такие же, как для DOS 3.31 BPB):

Расширенный блок параметров BIOS FAT32

По сути, FAT32 вставляет 28 байт в EBPB, за которыми следуют оставшиеся 26 (или иногда только 7) байт EBPB, как показано выше для FAT12 и FAT16. Операционные системы Microsoft и IBM определяют тип файловой системы FAT, используемой на томе, исключительно по количеству кластеров, а не по используемому формату BPB или указанному типу файловой системы, то есть технически возможно использовать "FAT32 EBPB" также для томов FAT12 и FAT16, а также DOS 4.0 EBPB для небольших томов FAT32. Поскольку было обнаружено, что такие тома создаются операционными системами Windows при некоторых странных условиях, [nb 6] операционные системы должны быть готовы справиться с этими гибридными формами.

Исключения

Версии DOS до 3.2 полностью или частично полагались на байт дескриптора носителя в BPB или байт FAT ID в кластере 0 первой FAT для определения форматов дискет FAT12, даже если присутствует BPB. В зависимости от найденного FAT ID и обнаруженного типа привода они по умолчанию используют один из следующих прототипов BPB вместо использования значений, фактически сохраненных в BPB. [nb 1]

Первоначально FAT ID должен был быть битовым флагом со всеми установленными битами, за исключением очищенного бита 2 для указания формата 80 дорожек (вместо 40 дорожек), очищенного бита 1 для указания формата 9 секторов (вместо 8 секторов) и очищенного бита 0 для указания одностороннего формата (вместо двухстороннего) [7], но эта схема не была принята всеми OEM-производителями и устарела с появлением жестких дисков и форматов высокой плотности. Кроме того, различные 8-дюймовые форматы, поддерживаемые 86-DOS и MS-DOS, не соответствуют этой схеме.

Microsoft рекомендует различать два 8-дюймовых формата для FAT ID 0xFE , пытаясь прочитать адресную метку одинарной плотности. Если это приводит к ошибке, носитель должен быть двойной плотности. [23]

В таблице не перечислен ряд несовместимых форматов 8-дюймовых и 5,25-дюймовых дискет FAT12, поддерживаемых 86-DOS , которые различаются либо размером записей каталога (16 байт против 32 байт), либо размером зарезервированной области секторов (несколько целых дорожек против одного логического сектора).

Реализация одностороннего формата FAT12 размером 315 КБ, используемого в MS-DOS для Apricot PC и F1e [34], имела другую структуру загрузочного сектора, чтобы соответствовать несовместимому с IBM BIOS этого компьютера. Инструкция перехода и имя OEM были опущены, а параметры MS-DOS BPB (смещения 0x00B - 0x017 в стандартном загрузочном секторе) были расположены по смещению 0x050 . Portable , F1, PC duo и Xi FD вместо этого поддерживали нестандартный двухсторонний формат FAT12 размером 720 КБ. [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 начиналась в начале следующей дорожки. Эти различия делают эти форматы нераспознаваемыми другими операционными системами. Параметры геометрии для этих форматов являются:

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 начинается с байта идентификатора носителя/FAT 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]

Информационный сектор ФС

«Информационный сектор FS» был введен в FAT32 [38] для ускорения времени доступа к некоторым операциям (в частности, получения объема свободного места). Он расположен в логическом секторе, номер которого указан в загрузочной записи FAT32 EBPB в позиции 0x030 (обычно логический сектор 1, сразу после самой загрузочной записи).

Данные сектора могут быть устаревшими и не отражать текущее содержимое носителя, поскольку не все операционные системы обновляют или используют этот сектор, и даже если они это делают, содержимое недействительно, если носитель был извлечен без надлежащего размонтирования тома или после сбоя питания. Поэтому операционные системы должны сначала проверить необязательные битовые флаги состояния выключения тома, находящиеся в записи 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 байта. Это последовательно little-endian : если эти три байта рассматривать как одно little-endian 24-битное число, 12 младших значащих бит представляют первую запись (например, кластер 0), а 12 старших значащих бит — вторую (например, кластер 1). Другими словами, в то время как младшие восемь бит первого кластера в строке хранятся в первом байте, старшие четыре бита хранятся в младшем полубайте второго байта, тогда как младшие четыре бита последующего кластера в строке хранятся в старшем полубайте второго байта, а его старшие восемь бит — в третьем байте.

Файловая система FAT16 использует 16 бит на запись FAT, таким образом , одна запись охватывает два байта в порядке байтов от младшего к старшему:

Файловая система FAT32 использует 32 бита на запись FAT, таким образом, одна запись охватывает четыре байта в порядке little-endian. Четыре верхних бита каждой записи зарезервированы для других целей; они очищаются во время форматирования и не должны изменяться в противном случае. Они должны быть замаскированы перед интерпретацией записи как 28-битного адреса кластера.

Таблица размещения файлов ( FAT ) — это непрерывный ряд секторов, следующих сразу за областью зарезервированных секторов. Она представляет собой список записей, которые сопоставляются с каждым кластером на томе. Каждая запись записывает одну из четырех вещей:

Для самых ранних версий DOS, чтобы распознать файловую систему, система должна была быть загружена с тома, или FAT тома должна начинаться со второго сектора тома (логический сектор 1 с физическим адресом CHS 0/0/2 или адресом LBA 1), то есть сразу после загрузочного сектора. Операционные системы предполагают это жестко зашитое расположение FAT, чтобы найти идентификатор FAT в записи кластера 0 FAT на дискетах DOS 1.0-1.1 FAT, где не найдено допустимого BPB.

Специальные записи

Первые две записи в FAT хранят специальные значения:

Первая запись (кластер 0 в FAT) содержит идентификатор FAT со времен MS-DOS 1.20 и PC DOS 1.1 (допустимые значения 0xF0 - 0xFF с зарезервированными 0xF1 - 0xF7 ) в битах 7-0, который также копируется в BPB загрузочного сектора, смещение 0x015 со времен DOS 2.0. Оставшиеся 4 бита (если FAT12), 8 бит (если FAT16) или 20 бит (если FAT32, 4 бита MSB равны нулю) этой записи всегда равны 1. Эти значения были организованы таким образом, чтобы запись также функционировала как маркер конца цепочки "trap-all" для всех кластеров данных, содержащих нулевое значение. Кроме того, для идентификаторов FAT, отличных от 0xFF0x00 ), можно определить правильный порядок полубайтов и байтов, который будет использоваться драйвером файловой системы, однако официально файловая система FAT использует только представление с прямым порядком байтов , и нет известных реализаций вариантов, использующих значения с обратным порядком байтов . 86-DOS 0.42 вплоть до MS-DOS 1.14 использовали жестко заданные профили дисков вместо идентификатора FAT, но использовали этот байт для различения носителей, отформатированных с 32-байтовыми или 16-байтовыми записями каталогов, как это было до 86-DOS 0.42.

Вторая запись (кластер 1 в FAT) номинально хранит маркер конца цепочки кластеров, используемый форматером, но обычно всегда содержит 0xFFF / 0xFFFF / 0x0FFFFFFF , то есть, за исключением битов 31-28 на томах FAT32, эти биты обычно всегда установлены. Однако некоторые операционные системы Microsoft устанавливают эти биты, если том не является томом, содержащим работающую операционную систему (то есть, используйте здесь 0xFFFFFFFF вместо 0x0FFFFFFF ). [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 при следующем запуске [nb 9] [41] (но не при вставке съемного носителя), чтобы обеспечить и, возможно, восстановить целостность тома.
Если бит 14 (в FAT16) или бит 26 (в FAT32) [41] очищен, операционная система обнаружила ошибки ввода-вывода диска при запуске, [41] что может быть признаком наличия поврежденных секторов. Операционные системы, знающие об этом расширении, будут интерпретировать это как рекомендацию выполнить сканирование поверхности ( SCANDISK ) при следующей загрузке. [27] [41] (Похожий набор битовых флагов существует в FAT12/FAT16 EBPB по смещению 0x1A или FAT32 EBPB по смещению 0x36 . В то время как запись кластера 1 может быть доступна драйверам файловой системы после того, как они смонтировали том, запись EBPB доступна, даже если том не смонтирован, и, таким образом, ее проще использовать драйверам блочных устройств диска или инструментам разбиения на разделы.)

Если количество FAT в BPB не установлено равным 2, вторая запись кластера в первой FAT (кластер 1) может также отражать статус тома TFAT для операционных систем, поддерживающих TFAT. Если запись кластера 1 в этой FAT содержит значение 0, это может означать, что вторая FAT представляет собой последнее известное допустимое состояние транзакции и должна быть скопирована поверх первой FAT, тогда как первая FAT должна быть скопирована поверх второй FAT, если установлены все биты.

Некоторые нестандартные реализации FAT12/FAT16 используют запись кластера 1 для хранения начального кластера корневого каталога переменного размера (обычно 2 [33] ). Это может произойти, когда количество записей корневого каталога в BPB имеет значение 0 и не найдено ни одного FAT32 EBPB (нет сигнатуры 0x29 или 0x28 по смещению 0x042 ). [20] Однако это расширение не поддерживается основными операционными системами, [20] поскольку оно конфликтует с другими возможными использованиями записи кластера 1. Большинство конфликтов можно исключить, если это расширение разрешено только для FAT12 с кластерами менее 0xFEF и томов FAT16 с кластерами менее 0x3FEF и 2 FAT.

Поскольку эти первые две записи FAT хранят специальные значения, кластеров данных 0 или 1 нет. Первый кластер данных (после корневого каталога, если FAT12/FAT16) — это кластер 2, [33] отмечающий начало области данных.

Кластерные значения

Значения ввода FAT:

FAT32 использует 28 бит для номеров кластеров. Оставшиеся 4 бита в 32-битной записи FAT обычно равны нулю, но зарезервированы и должны оставаться нетронутыми. Стандартный совместимый драйвер файловой системы FAT32 или инструмент обслуживания не должен полагаться на то, что верхние 4 бита равны нулю, и он должен отбросить их перед оценкой номера кластера, чтобы справиться с возможными будущими расширениями, где эти биты могут использоваться для других целей. Они не должны очищаться драйвером файловой системы при выделении новых кластеров, но должны очищаться во время переформатирования.

Область корневого каталога

Таблица корневого каталога в файловых системах FAT12 и FAT16 занимает специальное местоположение области корневого каталога .

Регион данных

За исключением таблицы корневого каталога в файловых системах FAT12 и FAT16, которая занимает специальное местоположение Root Directory Region , все таблицы каталогов хранятся в регионе данных. Фактическое количество записей в каталоге, хранящемся в регионе данных, может увеличиваться путем добавления еще одного кластера в цепочку в 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 поддерживают совместимый с MS-DOS CDS и, следовательно, имеют те же ограничения по длине, что и MS-DOS/PC DOS.

Каждой записи могут предшествовать «поддельные записи» для поддержки длинного имени файла VFAT (LFN); см. подробнее ниже.

Допустимые символы для коротких имен файлов DOS включают в себя следующие:

Это исключает следующие символы ASCII :

Символ 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 добавила поддержку длинных имен файлов и временных меток создания/доступа, байты 0x0C0x15 записи каталога использовались другими операционными системами для хранения дополнительных метаданных, в частности, операционные системы семейства Digital Research хранили там пароли файлов, права доступа, идентификаторы владельцев и данные об удалении файлов. Хотя новые расширения Microsoft по умолчанию не полностью совместимы с этими расширениями, большинство из них могут сосуществовать в сторонних реализациях FAT (по крайней мере, на томах FAT12 и FAT16).

32-байтовые записи каталога, как в области корневого каталога, так и в подкаталогах, имеют следующий формат (см. также 8.3 имя_файла ):

Операционные системы IBM 4680 OS и IBM 4690 OS на базе FlexOS поддерживают уникальные атрибуты распределения, хранящиеся в некоторых битах ранее зарезервированных областей в записях каталога: [62]

  1. Локально: Не распространять файл, а хранить только на локальном контроллере. [nb 14]
  2. Зеркальное отображение файла при обновлении: передача файла на сервер только после его обновления.
  3. Зеркальное копирование файла при закрытии: передача файла на сервер только после его закрытия.
  4. Составной файл при обновлении: Распространить файл на все контроллеры после обновления файла.
  5. Составной файл при закрытии: Распространить файл на все контроллеры при закрытии файла. [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: от 65525 до 268435444 кластеров: от 512 до 2097152 секторов на копию FAT

Минимум FAT12: 1 сектор на кластер × 1 кластер = 512 байт (0,5 КиБ)
Минимум FAT16: 1 сектор на кластер × 4085 кластеров = 2091520 байт (2042,5 КБ)
Минимум FAT32: 1 сектор на кластер × 65525 кластеров = 33548800 байт (32762,5 КБ)

Максимум FAT12: 64 сектора на кластер × 4084 кластера = 133824512 байт (≈127 МБ)
[Максимум FAT12: 128 секторов на кластер × 4084 кластера = 267694024 байт (≈255 МБ)]

Максимум FAT16: 64 сектора на кластер × 65524 кластера = 2147090432 байт (≈2047 МБ)
[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 байт. Команда DOS 5 RMDIR/ RDудаляет начальные записи " ." (этот каталог) и " .." (родительский каталог) в подкаталогах напрямую, поэтому размер сектора 32 на RAM-диске возможен для FAT12, но требует 2 или более секторов на кластер. Загрузочный сектор FAT12 без расширений DOS 4 требует 29 байт перед первым ненужным 32-битным числом скрытых секторов FAT16B, это оставляет три байта для (на неиспользуемом RAM-диске) загрузочного кода и магических 0x55 0xAA в конце всех загрузочных секторов. В Windows NT наименьший поддерживаемый размер сектора составляет 128.

В операционных системах Windows NTFORMAT параметры команды /A:128Kи /A:256Kсоответствуют максимальному размеру кластера 0x80(128) с размером сектора 1024 и 2048 соответственно. Для общего размера сектора 512 /A:64Kполучается 128 секторов на кластер.

В обеих редакциях стандартов ECMA-107 [24] и ISO/IEC 9293 [25] [26] указано максимальное число кластеров, MAX определяемое по формуле , и зарезервированы числа кластеров до 4086 ( 0xFF6 , FAT12) и более поздние 65526 ​​( 0xFFF6 , FAT16) для будущей стандартизации.MAX=1+trunc((TS-SSA)/SC)MAX+1

Спецификация EFI FAT32 от Microsoft [4] гласит, что любая файловая система FAT с менее чем 4085 кластерами является FAT12, в противном случае любая файловая система FAT с менее чем 65 525 кластерами является FAT16, в противном случае это FAT32. Запись для кластера 0 в начале FAT должна быть идентична байту дескриптора носителя, найденному в BPB, тогда как запись для кластера 1 отражает значение конца цепочки, используемое форматером для цепочек кластеров ( 0xFFF , 0xFFFF или 0x0FFFFFFF ). Записи для номеров кластеров 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] или, как это сформулировано в спецификации FAT от Microsoft : [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

Структура каталогов FAT32 с тремя файлами, два из которых используют длинные имена файлов VFAT.

Длинные имена файлов VFAT (LFN) хранятся в файловой системе FAT с помощью трюка: добавления дополнительных записей в каталог перед обычной записью файла. Дополнительные записи помечаются атрибутами Volume Label, System, Hidden и Read Only (что приводит к 0x0F ), что является комбинацией, которая не ожидается в среде MS-DOS, и поэтому игнорируется программами MS-DOS и сторонними утилитами. В частности, каталог, содержащий только метки томов, считается пустым и может быть удален; такая ситуация возникает, если файлы, созданные с длинными именами, удаляются из обычного DOS. Этот метод очень похож на метод DELWATCH для использования атрибута тома для скрытия ожидающих удаления файлов для возможного восстановления в будущем, начиная с DR DOS 6.0 (1991) и выше. Он также похож на метод, публично обсуждавшийся для хранения длинных имен файлов в Ataris и под Linux в 1992 году. [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 используют следующий формат:

Если для представления имени файла требуется несколько записей LFN, запись, представляющая конец имени файла, идет первой. Порядковый номер этой записи имеет бит 6 ( 0x40 ), установленный для представления того, что это последняя логическая запись LFN, и она имеет наивысший порядковый номер. Порядковый номер уменьшается в следующих записях. Запись, представляющая начало имени файла, имеет порядковый номер 1. Значение 0xE5 используется для указания того, что запись удалена.

На томах FAT12 и FAT16 проверка значений 0x1A на равенство нулю и значений 0x1C на ненулевое значение может использоваться для различения VFAT LFN и ожидающих удаления файлов в DELWATCH.

Например, имя файла «Файл с очень длинным именем.ext» будет отформатировано следующим образом:

Контрольная сумма также позволяет проверить, соответствует ли длинное имя файла имени 8.3; такое несоответствие может возникнуть, если файл был удален и создан заново с помощью DOS в той же позиции каталога. Контрольная сумма вычисляется с использованием алгоритма ниже. (pFCBName — это указатель на имя, как оно отображается в обычной записи каталога, т. е. первые восемь символов — это имя файла, а последние три — расширение. Точка подразумевается. Любое неиспользуемое пространство в имени файла заполняется пробелами (ASCII 0x20 ). Например, "Readme.txt" будет иметь вид " ".)README␠␠TXT

беззнаковый символ lfn_checksum ( const беззнаковый символ * pFCBName ) { int i ; беззнаковый символ sum = 0 ;             для ( i = 11 ; i ; i -- ) сумма = (( сумма & 1 ) << 7 ) + ( сумма >> 1 ) + * pFCBName ++ ;                   вернуть сумму ; } 

Если имя файла содержит только строчные буквы или представляет собой комбинацию нижнего регистра базового имени с заглавным расширением или наоборот; и не имеет специальных символов и соответствует ограничениям 8.3, запись VFAT не создается в Windows NT и более поздних версиях Windows, таких как XP. Вместо этого два бита в байте 0x0C записи каталога используются для указания того, что имя файла следует считать полностью или частично строчным. В частности, бит 4 означает нижнее расширение , а бит 3 — нижнее регистровое базовое имя , что допускает такие комбинации, как " " или " ", но не " ". Немногие другие операционные системы поддерживают это. Это создает проблему обратной совместимости со старыми версиями Windows (Windows 95 / 98 / 98 SE / ME), которые видят имена файлов, состоящие полностью из заглавных букв, если использовалось это расширение, и, следовательно, могут изменить имя файла при его переносе между операционными системами, например, на флэш-накопителе USB. Текущие версии Linux 2.6.x распознают это расширение при чтении (источник: ядро ​​2.6.18 и ); параметр монтирования определяет, будет ли эта функция использоваться при записи. [71]example.TXTHELLO.txtMixed.txt/fs/fat/dir.cfs/vfat/namei.cshortname

Смотрите также

Примечания

  1. ^ abc Для максимальной совместимости с 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).
  2. ^ abcde Сигнатура по смещению 0x1FE в загрузочных секторах равна 0x55 0xAA , то есть 0x55 по смещению 0x1FE и 0xAA по смещению 0x1FF . Поскольку в контексте совместимых с IBM PC машин необходимо предполагать представление little-endian , в программах для процессоров x86 это можно записать как 16-битное слово 0xAA55 (обратите внимание на поменянный порядок), тогда как в программах для других архитектур ЦП, использующих представление big-endian , это должно быть записано как 0x55AA . Поскольку это много раз путалось в книгах и даже в оригинальных справочных документах Microsoft, в этой статье используется представление на основе смещения побайтово на диске, чтобы избежать любой возможной неверной интерпретации.
  3. ^ abc Запись контрольной суммы в загрузочных секторах Atari содержит значение выравнивания, а не само магическое значение . Магическое значение 0x1234 не хранится нигде на диске. В отличие от процессоров Intel x86 , процессоры Motorola 680x0 , используемые в машинах Atari, используют представление памяти с обратным порядком байтов , и поэтому при вычислении контрольной суммы необходимо предполагать представление с обратным порядком байтов. Вследствие этого для кода проверки контрольной суммы, работающего на машинах x86, пары байтов должны быть поменяны местами перед 16-битным сложением.
  4. ^ DR-DOS может загружаться с носителей с логическими секторами FAT12/FAT16 с размером логического сектора до 1024 байт.
  5. ^ ab Следующие функции DOS возвращают эти значения регистров: INT 21h/AH=2Ah "Получить системную дату" вернула значения: CX = год ( 1980 .. 2099 ), DH = месяц (1..12), DL = день (1..31). INT 21h/AH=2Ch "Получить системное время" вернула значения: CH = час (0..23), CL = минута (0..59), DH = секунда (0..59), DL = 1/100 секунды (0..99).
  6. ^ Было замечено, что Windows XP создает такие гибридные диски при переформатировании дисков ZIP-100, отформатированных в FAT16B, в формат FAT32. Полученные тома были FAT32 по формату, но все еще использовали FAT16B EBPB. (Неясно, как Windows определяет местоположение корневого каталога на томах FAT32, если использовался только FAT16 EBPB.)
  7. ^ ab Одной из утилит, предоставляющих возможность указать желаемое значение заполнителя формата для жестких дисков, является DR-DOS' FDISK R2.31 с его необязательным параметром очистки /W:246. В отличие от других утилит FDISK , DR-DOS FDISK не только инструмент для разбиения на разделы, но и может форматировать свежесозданную разделы как FAT12 , FAT16 или FAT32 . Это снижает риск случайного форматирования неправильных томов.
  8. ^ Для поддержки сосуществования DR-DOS с PC DOS и нескольких параллельных установок DR-DOS расширение IBMBIO␠␠COMимени загрузочного файла по умолчанию " " можно изменить с помощью SYS /DR:extпараметра, где ext представляет новое расширение. Другие потенциальные имена загрузочных файлов DR-DOS, которые можно ожидать в особых сценариях, это " DRBIOS␠␠SYS", " DRDOS␠␠␠SYS", " IO␠␠␠␠␠␠SYS", " JO␠␠␠␠␠␠SYS".
  9. ^ Если флаг грязного выключения тома все еще сброшен при запуске, том не был правильно размонтирован. Это, например, может привести к тому, что Windows 98 WIN.COM запустит SCANDISK для проверки и исправления потенциальных логических ошибок файловой системы. Если флаг плохого сектора сброшен, это также заставит выполнить сканирование поверхности. Это можно отключить, установив AUTOSCAN=0 в разделе [OPTIONS] в файле MSDOS.SYS .
  10. ^ abcd См. другие ссылки для получения информации о мерах предосторожности в отношении появления значения кластера 0xFF0 на томах FAT12 под MS-DOS/PC DOS 3.3 и выше.
  11. ^ ab Некоторые версии FORMAT , начиная с MS-DOS 1.25 и PC DOS 2.0, поддерживали опцию /O(для old ) заполнения первого байта всех записей каталога значением 0xE5 вместо использования конечного маркера 0x00 . Таким образом, том оставался доступным в PC DOS 1.0 - 1.1 , в то время как форматирование занимало несколько больше времени, а более новые версии DOS не могли воспользоваться значительным ускорением, вызванным использованием конечного маркера 0x00 .
  12. ^ Вот почему 0xE5 имел особое значение в записях каталога.
  13. ^ ab Чтобы избежать потенциальной неверной интерпретации меток томов каталогов с записями VFAT LFN операционными системами, не поддерживающими VFAT, инструменты DR-DOS 7.07 FDISK и FORMAT, как известно, явно записывают фиктивные NO␠NAME␠␠␠␠метки томов каталогов " ", если пользователь пропускает ввод метки тома. Операционная система по умолчанию будет возвращать ту же строку, если метка тома каталога не может быть найдена в корне тома, но без реальной метки тома, сохраненной в качестве первой записи (после записей каталога), старые операционные системы могут ошибочно выбирать записи VFAT LFN вместо этого.
  14. ^ Этот тип атрибута распределения ОС IBM 4680 и 4690 должен иметь значение бита на диске, равное 0, поскольку файлы возвращаются к этому типу при случайной потере атрибутов.

Ссылки

  1. ^ "File Systems". Microsoft TechNet . 2001. Архивировано из оригинала 2011-08-12 . Получено 2011-07-31 .
  2. ^ ab Microsoft (2006-11-15). Файл Windows 95 CD-ROM CONFIG.TXT Архивировано 28.01.2013 в archive.today Статья 135481, редакция: 1.1, извлечено 22.12.2011: "Для каждого жесткого диска указывает, следует ли записывать дату последнего доступа к файлам. Даты последнего доступа отключаются для всех дисков, когда компьютер запускается в безопасном режиме, и по умолчанию не сохраняются для дискет. Синтаксис: ACCDATE=drive1+|- [drive2+|-]..."
  3. ^ Бхат, WA (2010). «Обзор структуры данных FAT файловой системы FAT32». S2CID  58178285. {{cite web}}: Отсутствует или пусто |url=( помощь )
  4. ^ abcdefghijklmno "Спецификация файловой системы FAT32 от Microsoft Extensible Firmware Initiative, FAT: Общий обзор формата на диске". Microsoft . 2000-12-06. Архивировано из оригинала 2021-07-23 . Получено 2011-07-03 .
  5. ^ abcd Хааф, Уилфрид; Миддел, Фрэнк (ноябрь 1987 г.). «Datan auf Scheiben – File- und Diskettenstrukturen unter CP/M, MSDOS и TOS: Dateiverwaltung unter TOS». c't - магазин компьютерной техники . c't Kartei (на немецком языке). Том. 1987, нет. 11. Верлаг Хайнц Хайзе ГмбХ и Ко. КГ . С. 241–246 [246]. ISSN  0724-8679.
  6. ^ abcdefghijklmnop Chappell, Geoff (январь 1994). Schulman, Andrew; Pedersen, Amorette (ред.). DOS Internals . Серия программирование Эндрю Шульмана (1-е издание, 1-е изд.). Addison Wesley Publishing Company . ISBN 978-0-201-60835-9.(xxvi+738+iv страниц, 3,5-дюймовая дискета [1][2]) Опечатки: [3][4][5]
  7. ^ abcdefghijklmnopqrstu vw Microsoft MS-DOS 3.1 Programmierhandbuch на английском языке [ Справочное руководство программиста 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».(Примечание. В этой книге много ошибок.)
  8. ^ Дэниел Б. Сидори. Загрузочный сектор персонального компьютера IBM DOS версии 1.00 (1981) . 2005-08-02 ([6] Архивировано 21 мая 2014 г. на Wayback Machine ).
  9. ^ Дэниел Б. Сидори. Загрузочный сектор персонального компьютера IBM DOS версии 1.10 (1982) . 2005-07-29 ([7] Архивировано 21 мая 2014 года на Wayback Machine ).
  10. ^ ab Caldera (1997). Caldera OpenDOS Machine Readable Source Kit 7.01 . Файл DISK.ASM в машиночитаемом исходном наборе показывает, что DR-DOS также проверяет значение 0x69 .
  11. ^ Пол, Маттиас Р. (2002-02-20). "Нужна DOS 6.22 (не OEM)". Группа новостей : alt.msdos.programmer. Архивировано из оригинала 2017-09-09 . Получено 2006-10-14 .
  12. ^ Басс, Уолли (1994-02-14). "Размер кластера". Группа новостей : comp.os.msdos.programmer. Архивировано из оригинала 2017-09-09 . Получено 2006-10-14 .
  13. ^ abcdefgh Дэйв Уильямс (1992). Технический справочник программиста по MSDOS и IBM PC . DOSREF, Shareware версия 01/12/1992. ISBN 1-878830-02-3 . ([8] Архивировано 20 мая 2014 г. на Wayback Machine , просмотрено 08 января 2012 г.). Комментарий: Автор упоминает, что DOS 4.0 проверяет метку OEM, но отрицает, что DOS 3.2 тоже проверяет ее (хотя это так). 
  14. ^ Пол, Маттиас Р. (2004-08-25). "NOVOLTRK.REG". www.drdos.org . Архивировано из оригинала 2016-03-04 . Получено 2011-12-17 .[9]
  15. ^ ab "Устранение неполадок дисков и файловых систем". Microsoft TechNet . 2005-11-05. Архивировано из оригинала 2014-06-07 . Получено 2014-06-15 .
  16. ^ IBM (1983). IBM PC Technical Reference Handbook . Комментарий: Включает полный листинг исходного кода ROM BIOS оригинального IBM PC.
  17. ^ abcd Ханс-Дитер Янковски, Дитмар Рабих, Джулиан Ф. Решке (1992). Atari Profibuch СТ-СТЭ-ТТ . Сайбекс, 4-е издание, 12-я партия. ISBN 3-88745-888-5 , ISBN 978-3-88745-888-1 .  
  18. ^ Seagate Technologies, «Переход на жесткие диски с секторами 4 КБ расширенного формата (архив Wayback Machine @Archive.org)», 2010 ([10]).
  19. ^ abcd Браун, Ральф Д. (29.12.2002). "Список прерываний x86". Архивировано из оригинала 16.06.2016 . Получено 14.10.2011 .
  20. ^ abcd de Boyne Pollard, Jonathan (2010) [2006]. "Все о блоках параметров BIOS". Часто задаваемые ответы . Архивировано из оригинала 2016-08-26 . Получено 2014-06-02 .
  21. ^ abc Справочник программиста Microsoft MS-DOS: версия 5.0. Microsoft press. 1991. ISBN 1-55615-329-5.
  22. ^ abcdefghijk "Стандартные форматы дискет, поддерживаемые MS-DOS". Справка и поддержка Microsoft. 2003-05-12. Архивировано из оригинала 2015-01-09 . Получено 2012-09-11 .
  23. ^ abc Microsoft (1987-07). Справочник программиста MS-DOS 3.3.
  24. ^ abcdefghij "Объем и структура файлов дисковых картриджей для обмена информацией". Стандарт ECMA-107 (2-е изд., июнь 1995 г.) . ECMA . 1995. Архивировано из оригинала 2018-10-07 . Получено 2011-07-30 .
  25. ^ abcdefghij "Информационные технологии. Объем и структура файлов дисковых картриджей для обмена информацией". ISO/IEC 9293:1994 . Каталог ISO . 1994. Архивировано из оригинала 2012-01-17 . Получено 2012-01-06 .
  26. ^ abcdefghij "Обработка информации. Объем и структура файлов картриджей гибких дисков для обмена информацией". ISO 9293:1987 . Каталог ISO . 1987. Архивировано из оригинала 2012-01-17 . Получено 2012-01-06 .
  27. ^ abc Andries Brouwer (2002-09-20). "Файловая система FAT". Архивировано из оригинала 2011-10-06 . Получено 2011-10-16 .
  28. ^ abcdefghijklmnopqr Патерсон, Тим ; Microsoft (2013-12-19) [1983]. "Microsoft DOS V1.1 и V2.0: /msdos/v20source/SKELIO.TXT, /msdos/v20source/HRDDRV.ASM". CHM . Музей истории компьютеров , Microsoft . Архивировано из оригинала 2019-08-14 . Получено 2014-03-25 .(Примечание. Хотя издатели утверждают, что это MS-DOS 1.1 и 2.0, на самом деле это SCP MS-DOS 1.25 и смесь Altos MS-DOS 2.11 и TeleVideo PC DOS 2.11 .)
  29. ^ abcdefghij Збиковски, Марк ; Аллен, Пол ; Баллмер, Стив ; Борман, Рубен; Борман, Роб; Батлер, Джон; Кэрролл, Чак; Чемберлен, Марк; Челл, Дэвид; Коули, Майк; Кортни, Майк; Драйфус, Майк; Дункан, Рэйчел; Экхардт, Курт; Эванс, Эрик; Фармер, Рик; Гейтс, Билл ; Гири, Майкл; Гриффин, Боб; Хогарт, Дуг; Джонсон, Джеймс У.; Кермани, Камел; Кинг, Адриан; Кох, Рид; Ландовски, Джеймс; Ларсон, Крис; Леннон, Томас; Липки, Дэн; Макдональд, Марк ; Маккинни, Брюс; Мартин, Паскаль; Мазерс, Эстель; Мэтьюз, Боб; Мелин, Дэвид; Мергентайм, Чарльз; Невин, Рэнди; Ньюэлл, Дэн; Ньюэлл, Тани; Норрис, Дэвид; О'Лири, Майк; О'Риар, Боб ; Олссон, Майк; Остерман, Ларри; Остлинг, Ридж; Пай, Сунил; Патерсон, Тим ; Перес, Гари; Питерс, Крис; Петцольд, Чарльз ; Поллок, Джон; Рейнольдс, Аарон ; Рубин, Даррил; Райан, Ральф; Шульмейстерс, Карл; Шах, Раджен; Шоу, Барри; Шорт, Энтони; Сливка, Бен; Смирл, Джон; Стиллмейкер, Бетти; Стоддард, Джон; Тиллман, Деннис; Уиттен, Грег; Йонт, Натали; Зек, Стив (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 )
  30. ^ ab "Подробное объяснение загрузочного сектора FAT". База знаний Microsoft . 2003-12-06. Архивировано из оригинала 2011-11-28 . Получено 2011-10-16 .
  31. ^ abc Lai, Robert S.; The Waite Group (1987). Написание драйверов устройств MS-DOS (2-е изд.). Addison Wesley. ISBN 0-201-60837-5.
  32. ^ abcdefghijklmnopqrst Патерсон, Тим ; Microsoft (2013-12-19) [1983]. "Microsoft DOS V1.1 и V2.0: /msdos/v20source/DEVDRIV.txt". Музей истории компьютеров , Microsoft . Архивировано из оригинала 2019-08-14 . Получено 2014-03-25 .(Примечание. Хотя издатели утверждают, что это MS-DOS 1.1 и 2.0, на самом деле это SCP MS-DOS 1.25 и смесь Altos MS-DOS 2.11 и TeleVideo PC DOS 2.11 .)
  33. ^ abcde Тим Патерсон (1983). "Взгляд изнутри на MS-DOS". Byte . Архивировано из оригинала 2011-07-20 . Получено 18-07-2011 . Нумерация начинается с 2; первые две цифры, 0 и 1, зарезервированы.
  34. ^ abcd PORT-DOS - Руководство по пользовательским подсказкам для Apricot Portable . Руководства по пользовательским подсказкам, Великобритания ([12] Архивировано 22.05.2013 на Wayback Machine ).
  35. ^ abcde Джон К. Эллиотт (1998). Форматы дисков DOSPLUS . ([13] Архивировано 07.06.2013 на Wayback Machine ).
  36. ^ abcd BBC Master 512. Страницы Yellow Pig на BBC Computer ([14] Архивировано 21 мая 2014 г. на Wayback Machine ).
  37. ^ Digital Equipment Corporation. Rainbow 100 MS-DOS 2.01 Техническая документация Том 1 (QV025-GZ), Листинг BIOS операционной системы Microsoft MS-DOS (AA-X432A-TV), Универсальный драйвер диска, страницы 1-17. 1983.
  38. ^ "Подробное объяснение загрузочного сектора FAT". DEW Associates Corporation. 2002. Архивировано из оригинала 2011-09-26 . Получено 2011-10-16 .
  39. ^ Tyagi, Tarun (2004-10-31). "Размер кластеров в файловых системах FAT и NTFS". Восстановление данных с программированием и без него. Нью-Дели, Индия: Gardners Books. стр. 4. ISBN 978-81-7656-922-4. Архивировано из оригинала 2021-12-03 . Получено 2021-12-03 .
  40. ^ Дэниел Б. Сидори. Подробные заметки о «флаге грязного выключения» в MS-Windows . 2001-12-04. ([15] Архивировано 2014-05-21 на Wayback Machine ).
  41. ^ abcde "Windows 98 Resource Kit - Глава 10 - Диски и файловые системы". Microsoft TechNet . 1998. Архивировано из оригинала 2012-05-01 . Получено 2012-07-16 .
  42. ^ abcd Шульман, Эндрю; Браун, Ральф Д .; Макси, Дэвид; Михельс, Рэймонд Дж.; Кайл, Джим (1994) [ноябрь 1993]. Недокументированная DOS: руководство программиста по зарезервированным функциям и структурам данных MS-DOS — расширено для включения MS-DOS 6, Novell DOS и Windows 3.1 (2-е изд.). Reading, Массачусетс: Addison Wesley . стр. 11. ISBN 0-201-63287-X.(xviii+856+vi страниц, 3,5-дюймовая дискета) Опечатки: [16][17]
  43. ^ Питер Нортон (1986). Внутри IBM PC, пересмотренное и расширенное , Брэди. ISBN 0-89303-583-1 , стр. 157. 
  44. ^ abc Andries Brouwer . "FAT под Linux". Архивировано из оригинала 2014-07-01 . Получено 2014-05-20 .
  45. ^ Андрис Брауэр (2002-09-20). "FAT". Архивировано из оригинала 2017-12-17 . Получено 2012-01-11 .
  46. ^ abc Seattle Computer Products (1981). "SCP 86-DOS 1.0 Addendum" (PDF) . Архивировано (PDF) из оригинала 2012-10-03 . Получено 2013-03-10 .
  47. ^ abcdefghijklmnopqrstu vwxyz aa ab ac ad ae af ag ah ai aj ak Пол, Матиас Р. (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]
  48. ^ IBM. Руководство пользователя ОС 4690, версия 5.2 , документ IBM SC30-4134-01, 10.01.2008 ([19]).
  49. ^ ab Paterson, Tim ; Microsoft (2013-12-19) [1983]. "Microsoft DOS V1.1 и V2.0: /msdos/v20source/FORMAT.TXT". Computer History Museum , Microsoft . Архивировано из оригинала 2019-08-14 . Получено 2014-03-25 .(Примечание. Хотя издатели утверждают, что это MS-DOS 1.1 и 2.0, на самом деле это SCP MS-DOS 1.25 и смесь Altos MS-DOS 2.11 и TeleVideo PC DOS 2.11 .)
  50. ^ ab Shustek, Len (2014-03-24). "Ранний исходный код Microsoft MS-DOS". Software Gems: The Computer History Museum Historical Source Code Series. Архивировано из оригинала 2019-08-10 . Получено 2014-03-29 .(Примечание. Хотя автор утверждает, что это MS-DOS 1.1 и 2.0, на самом деле это SCP MS-DOS 1.25 и смесь Altos MS-DOS 2.11 и TeleVideo PC DOS 2.11 .)
  51. ^ ab Левин, Рой (2014-03-25). "Microsoft делает исходный код MS-DOS и Word для Windows общедоступным". Официальный блог Microsoft . Архивировано из оригинала 2014-03-28 . Получено 2014-03-29 .(Примечание. Хотя автор утверждает, что это MS-DOS 1.1 и 2.0, на самом деле это SCP MS-DOS 1.25 и смесь Altos MS-DOS 2.11 и TeleVideo PC DOS 2.11 .)
  52. ^ JEIDA/JEITA/CIPA (2010). "Стандарт Ассоциации камер и устройств обработки изображений, CIPA DC-009-Translation-2010, Правила проектирования файловой системы камеры: DCF версии 2.0 (издание 2010 г.)" (PDF) . Архивировано из оригинала (PDF) 2013-09-30 . Получено 2011-04-13 .
  53. ^ abcdefghijklmnopq Caldera (1997). Caldera OpenDOS Machine Readable Source Kit 7.01 . Файл FDOS.EQU в машиночитаемом исходном наборе имеет эквиваленты для соответствующих записей каталога.
  54. ^ Джон К. Эллиотт (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 не поддерживаются".
  55. ^ ab vinDaci (1998-01-06). "Спецификация длинных имен файлов". Архивировано из оригинала 2001-04-20 . Получено 13-03-2007 .
  56. ^ Хенк Келдер. FAT32.TXT для FAT32.IFS версии 0.74 . ( "@Macarlo, Inc". Архивировано из оригинала 2012-03-30 . Получено 2012-01-14 .). Комментарий: В этой старой версии файла README по-прежнему обсуждаются старые магические значения 0xEA и 0xEC .
  57. ^ Хенк Келдер (2003). FAT32.TXT для FAT32.IFS версии 0.9.13." ([21] Архивировано 25.01.2022 на Wayback Machine ): "Этот байт [...] не изменяется при работе Windows 95 и выше с помощью SCANDISK или DEFRAG. [...] Если другая программа устанавливает значение 0x00 для файла, который имеет EA, эти EA больше не будут найдены с помощью только вызовов DosFindFirst/Next. Другие вызовы OS/2 для извлечения EA (DosQueryPathInfo, DosQueryFileInfo и DosEnumAttribute) не полагаются на этот байт. Также может произойти обратное [...]. [...] В этой ситуации снизится только производительность сканирования каталогов. Обе ситуации [...] исправляются с помощью CHKDSK ".
  58. ^ Netlabs. FAT32.IFS Wiki и источники . ([22] Архивировано 11 мая 2013 г. на Wayback Machine ).
  59. ^ ab IBM. Руководство по программированию ОС 4690, версия 5.2 , документ IBM SC30-4137-01, 2007-12-06 ([23]).
  60. ^ abcdefghijklmn Справочная серия разработчиков OpenDOS — Руководство по системе и программисту — Руководство программиста. Caldera, Inc. Август 1997 г. Номер детали Caldera 200-DODG-003. Архивировано из оригинала 2017-10-07 . Получено 2014-05-20 .(Напечатано в Великобритании.)
  61. ^ Боб Игер, Tavi Systems (28.10.2000). Реализация расширенных атрибутов в файловой системе FAT . ([24] Архивировано 13.06.2006 на Wayback Machine ).
  62. ^ IBM (2003). Информация об уникальных атрибутах распределения файлов ОС 4690 , документ IBM R1001487, 2003-07-30. ( «Информация IBM об уникальных атрибутах распределения файлов ОС 4690 — США». Архивировано из оригинала 21-05-2014 . Получено 20-05-2014 .): "[...] типы файлов хранятся в разделе "Зарезервированные биты" структуры каталогов файлов PC-DOS [...] только 4690 уважает и сохраняет эти атрибуты. Различные операционные системы, отличные от 4690, выполняют различные действия, если эти биты включены [...] при копировании с дискеты, созданной в системе 4690. [...] PC-DOS и Windows 2000 Professional скопируют файл без ошибок и обнулят биты. OS/2 [...] 1.2 [...] откажется копировать файл, если [...] сначала не запустить CHKDSK /F для файла. После [...] CHKDSK он скопирует файл и обнулит биты. [...] при [...] копировании [...] обратно в систему 4690 [...] файл будет скопирован как локальный файл".
  63. ^ IBM. 4690 сохранение и восстановление атрибутов распределения файлов . Документ IBM R1000622, 2010-08-31 ( "IBM 4690 сохранение и восстановление атрибутов распределения файлов - Соединенные Штаты". Архивировано из оригинала 2014-05-21 . Получено 2014-05-20 .).
  64. ^ "Ограничения файловой системы FAT32". База знаний Microsoft . 2007-03-26. Архивировано из оригинала 2011-08-15 . Получено 2011-08-21 . Кластеры не могут быть 64 килобайта или больше
  65. ^ Дункан, Рэй (1989). «Цели проектирования и реализация новой высокопроизводительной файловой системы». Microsoft Systems Journal. Архивировано из оригинала 2011-07-16 . Получено 2014-05-20 .[Примечание. В этом текстовом файле имеется ряд ошибок OCR; например, «Рэй» — правильное имя автора, а не «Рой», как указано в тексте.]
  66. ^ Чен, Рэймонд (июль 2006 г.). «Microsoft TechNet: Краткая и неполная история FAT32». Журнал Microsoft TechNet. Архивировано из оригинала 2008-11-18 . Получено 2014-05-20 .
  67. ^ ab Les Bell; Associates Pty Ltd (1996-09-02) [1990]. "OS/2 High Performance File System". PC Support Advisor . Архивировано из оригинала 2014-03-01 . Получено 2014-06-24 .
  68. ^ ab Bridges, Dan (февраль 1996 г.). "Внутри высокопроизводительной файловой системы - Часть 2/6: Введение". Значительные биты, Brisbug PC User Group Inc. Архивировано из оригинала 2015-09-23 . Получено 2014-06-24 .
  69. ^ Natuerlich! (1992-03-24). "Получение длинных имен файлов из GEMDOS". comp.sys.atari.st.tech. Архивировано из оригинала 2014-04-24 . Получено 2014-05-05 .
  70. ^ Торвальдс, Линус (1992-12-23). ​​"Длинные имена файлов". comp.os.minix. Архивировано из оригинала 2014-04-23 . Получено 2014-05-05 .
  71. ^ "mount(8): mount file system". Страница руководства Linux . Архивировано из оригинала 2014-05-05 . Получено 2014-05-20 .

Внешние ссылки