Таблица размещения файлов ( FAT ) — файловая система , разработанная для персональных компьютеров и являвшаяся файловой системой по умолчанию для операционных систем MS-DOS и Windows 9x . [3] Первоначально разработанный в 1977 году для использования на дискетах , он был адаптирован для использования на жестких дисках и других устройствах. Увеличение емкости дисков потребовало трех основных вариантов: FAT12, FAT16 и FAT32. FAT была заменена NTFS в качестве файловой системы по умолчанию в операционных системах Microsoft, начиная с Windows XP . [4] Тем не менее, FAT продолжает использоваться на флэш-памяти и других твердотельных картах и модулях памяти (включая USB-накопители ), многих портативных и встраиваемых устройствах из-за ее совместимости и простоты реализации. [5]
FAT также использовалась на жестких дисках в эпоху DOS и Windows 9x . Microsoft представила NTFS вместе с платформой Windows NT в 1993 году, но FAT оставалась стандартом для домашних пользователей до появления Windows XP в 2001 году. Windows Me была последней версией Windows , использовавшей FAT в качестве файловой системы по умолчанию.
Для дискет FAT стандартизирована как ECMA -107 [6] и ISO / IEC 9293:1994 [7] (заменяющая ISO 9293:1987 [8] ). Эти стандарты охватывают FAT12 и FAT16 с поддержкой только коротких имен файлов 8.3 ; длинные имена файлов с VFAT были частично запатентованы. [9] Хотя FAT12 используется на дискетах, FAT16 и FAT32 обычно встречаются на носителях большего размера.
FAT используется внутри системного раздела EFI на этапе загрузки компьютеров, совместимых с EFI . [10] Скрытые файловые системы FAT также используются в загрузочном разделе UEFI на современных ПК.
FAT по-прежнему используется на дисках, которые, как ожидается, будут использоваться несколькими операционными системами, например, в общих средах Windows, Linux и DOS. Microsoft Windows дополнительно поставляется с предустановленным инструментом для прямого преобразования файловой системы FAT в NTFS без необходимости перезаписи всех файлов, хотя это нелегко отменить. [11] Файловая система FAT используется на съемных носителях, таких как дискеты , супердискеты , карты памяти и флэш-памяти или USB-накопители . FAT поддерживается портативными устройствами, такими как КПК , цифровые камеры , видеокамеры , медиаплееры и мобильные телефоны. [3]
Файловая система DCF , принятая почти во всех цифровых камерах с 1998 года, определяет логическую файловую систему с 8.3 именами файлов и делает обязательным использование FAT12, FAT16, FAT32 или exFAT для ее физического уровня для обеспечения совместимости. [12]
Файловая система использует индексную таблицу, хранящуюся на устройстве, для идентификации цепочек областей хранения данных, связанных с файлом, — таблицу размещения файлов ( FAT ). FAT статически выделяется во время форматирования. Таблица представляет собой связанный список записей для каждого кластера — непрерывной области дискового хранилища. Каждая запись содержит либо номер следующего кластера в файле, либо маркер, указывающий на конец файла, неиспользуемое дисковое пространство или специальные зарезервированные области диска. Корневой каталог диска содержит номер первого кластера каждого файла в этом каталоге. Затем операционная система может пройти через FAT, просматривая номер кластера каждой последующей части дискового файла в виде цепочки кластеров, пока не будет достигнут конец файла. Подкаталоги реализованы как специальные файлы, содержащие записи каталогов соответствующих файлов.
Каждая запись в связанном списке FAT имеет фиксированное количество бит: 12, 16 или 32. Максимальный размер файла или диска, к которому можно получить доступ, является произведением наибольшего числа, которое может храниться в записях (меньше несколько значений, зарезервированных для обозначения нераспределенного пространства или конца списка) и размера дискового кластера. Даже если для расширения файла необходим только один байт памяти, для него должен быть выделен целый кластер, и любой отдельный кластер не может содержать более одного файла, поэтому большие кластеры тратят много дискового пространства, если имеется большое количество маленьких файлов. .
Первоначально разработанная как 8-битная файловая система, максимальное количество кластеров должно увеличиваться по мере увеличения емкости диска, поэтому количество битов, используемых для идентификации каждого кластера, выросло. Последовательные основные варианты формата FAT названы по количеству битов элементов таблицы: 12 (FAT12), 16 (FAT16) и 32 (FAT32).
Существует несколько вариантов файловой системы FAT (например, FAT12, FAT16 и FAT32). FAT16 относится как к исходной группе файловых систем FAT с записями кластера шириной 16 бит, так и к более поздним вариантам. «VFAT» — это дополнительное расширение для длинных имен файлов, которое может работать поверх любой файловой системы FAT. Тома, использующие длинные имена файлов VFAT, также могут быть прочитаны операционными системами, не поддерживающими расширение VFAT.
Исходная файловая система FAT (или структура FAT , как она называлась изначально) была спроектирована и реализована Марком Макдональдом [15] на основе серии дискуссий между Макдональдом и Биллом Гейтсом . [15]
Он был представлен с 8-битными элементами таблицы [13] [14] [15] (и допустимыми номерами кластеров данных до 0xBF
[13] [14] ) в предшественнике Microsoft Standalone Disk BASIC- 80 для Преемник терминала ввода данных NCR 7200 модели VI на базе 8080 [nb 2], оснащенный 8-дюймовыми (200 мм) дискетами, в 1977 году [ 16 ] или 1978 году
. [nb 2] В 1978 году был выпущен Standalone Disk BASIC- 80 была перенесена на 8086 с помощью эмулятора на DEC PDP - 10 [17], поскольку в то время реальных систем 8086 не было. Файловая система FAT также использовалась в Microsoft MDOS/MIDAS , [15] операционной системе для платформ 8080/Z80, написанной McDonald с 1979 года. Версия Standalone Disk BASIC поддерживала три FAT, [13] [14] [18], тогда как эта был параметром для MIDAS. Сообщается, что MIDAS также был готов поддерживать 10-битные, 12-битные и 16-битные варианты FAT. В то время как размер записей каталога в Standalone Disk BASIC составлял 16 байт , [13] [14] MIDAS вместо этого занимал 32 байта на запись.
Тим Патерсон из Seattle Computer Products (SCP) впервые познакомился со структурой FAT Microsoft, когда он помог Бобу О'Риру адаптировать порт эмулятора Standalone Disk BASIC-86 к прототипу платы процессора SCP с шиной S-100 8086 во время гостевой недели в Microsoft в мае. 1979. [17] Конечный продукт был показан на стенде Lifeboat Associates на Национальной компьютерной конференции в Нью-Йорке [17] 4–7 июня 1979 года, где Патерсон узнал о более сложной реализации FAT в MDOS/MIDAS [15]. ] и Макдональд поговорили с ним о конструкции файловой системы. [16]
В период с апреля по август 1980 года, заимствуя концепцию FAT для собственной операционной системы SCP 8086 QDOS 0.10 , [17] Тим Патерсон расширил элементы таблицы до 12 бит , [19] сократил количество FAT до двух, переопределил семантику некоторых из зарезервированные значения кластера и изменил структуру диска, так что корневой каталог теперь располагался между FAT и областью данных для его реализации FAT12 . Патерсон также увеличил ограничение длины имени файла из девяти символов (6.3) [13] [14] до одиннадцати символов для поддержки имен файлов 8.3 в стиле CP / M и блоков управления файлами . Формат, используемый в предшественнике 8-битной файловой системы Microsoft Standalone Disk BASIC, не поддерживался QDOS. К августу 1980 года QDOS была переименована в 86-DOS . [20] Начиная с 86-DOS 0.42 , размер и расположение записей каталога были изменены с 16 байтов на 32 байта [21] , чтобы добавить отметку даты файла [21] и увеличить теоретический предел размера файла сверх предыдущего предела. объемом 16 МБ. [21] 86-DOS 1.00 стала доступна в начале 1981 года. Позже, в 1981 году, 86-DOS превратилась в Microsoft MS-DOS и IBM PC DOS . [15] [19] [22] Возможность чтения ранее отформатированных томов с 16-байтовыми записями каталога [21] была исключена в MS-DOS 1.20 .
FAT12 использовала 12-битные записи для адресов кластера; некоторые значения были зарезервированы для обозначения конца цепочки кластеров, для обозначения неиспользуемых областей диска или для других целей, поэтому максимальное количество кластеров было ограничено 4078. [23] [24] Для экономии дискового пространства два 12-битные записи FAT использовали на диске три последовательных 8-битных байта, что требовало манипуляций для распаковки 12-битных значений. Этого было достаточно для оригинальных дисководов для гибких дисков и небольших жестких дисков объемом до 32 мегабайт. Версия FAT16B, доступная в DOS 3.31, поддерживала 32-битные номера секторов и поэтому увеличивала предел размера тома.
Все структуры управления помещаются внутри первой дорожки, чтобы избежать движения головки во время операций чтения и записи. Любой поврежденный сектор в области управляющих структур сделает диск непригодным для использования. Инструмент форматирования DOS полностью отвергал такие диски. Плохие сектора допускались только в области данных файла. Кластеры, содержащие сбойные сектора, были помечены как непригодные для использования с зарезервированным значением 0xFF7
в FAT.
В то время как 86-DOS поддерживала три формата дисков (250,25 КБ, 616 КБ и 1232 КБ, с идентификаторами FAT 0xFF
и 0xFE
) на 8-дюймовых (200 мм) дисководах, IBM PC DOS 1.0 , выпущенная вместе с оригинальным персональным компьютером IBM в 1981 году, поддерживала только 8-секторный формат дискет с форматированной емкостью 160 КБ (FAT ID 0xFE
) для односторонних 5,25-дюймовых дисководов, а в PC DOS 1.1 добавлена поддержка двустороннего формата с 320 КБ (FAT ID 0xFF
). В PC DOS 2.0 появилась поддержка 9-секторных форматов дискет размером 180 КБ (FAT ID 0xFC
) и 360 КБ (FAT ID 0xFD
).
Записи каталога 86-DOS 1.00 и PC DOS 1.0 содержали только одну дату - дату последнего изменения. В PC DOS 1.1 добавлено время последнего изменения. Атрибуты файла PC DOS 1.x включали скрытый бит и системный бит, а остальные шесть битов не определены. В то время DOS не поддерживала подкаталоги, но обычно на дискете было всего несколько десятков файлов .
PC XT был первым компьютером с жестким диском, поставляемым IBM, и PC DOS 2.0 поддерживал этот жесткий диск с файловой системой FAT12 ( FAT ID 0xF8
). Фиксированное предположение о 8 секторах на кластер на жестких дисках практически ограничивало максимальный размер раздела до 16 МБ для секторов по 512 байт и кластеров по 4 КБ.
Блок параметров BIOS ( BPB ) также был представлен в PC DOS 2.0, и в этой версии также добавлены биты атрибутов только для чтения, архива , метки тома и каталога для иерархических подкаталогов. [25]
В MS-DOS 3.0 появилась поддержка 5,25-дюймовых дискет высокой плотности емкостью 1,2 МБ (дескриптор носителя 0xF9
), которые, в частности, имели 15 секторов на дорожку, следовательно, больше места для файлов FAT.
FAT12 по-прежнему используется на всех распространенных дискетах , включая диски емкостью 1,44 МБ и более поздних версий 2,88 МБ (байт дескриптора носителя 0xF0
).
В 1984 году IBM выпустила PC AT , для которого требовалась PC DOS 3.0 для доступа к жесткому диску объемом 20 МБ. [26] [27] Microsoft параллельно представила MS-DOS 3.0. Адреса кластеров были увеличены до 16-битных, что позволяет использовать до 65 526 кластеров на том. Однако максимально возможное количество секторов и максимальный размер раздела в 32 МБ не изменились. Хотя адреса кластеров были 16-битными, этот формат не был тем, что сегодня обычно понимается как FAT16 . Тип раздела 0x04
указывает на эту форму FAT16 с количеством секторов менее 65 536 (менее 32 МБ для размера сектора 512). Преимуществом FAT16 было использование кластеров меньшего размера, что делало использование диска более эффективным, особенно для большого количества файлов размером всего в несколько сотен байт.
Поскольку MS-DOS 3.0 отформатировала все разделы размером от 16 до 32 МБ в формате FAT16, жесткий диск емкостью 20 МБ, отформатированный в MS-DOS 3.0, был недоступен для MS-DOS 2.0. [28] От MS-DOS 3.0 до MS-DOS 3.30 по-прежнему можно было получить доступ к разделам FAT12 размером менее 15 МБ, но требовалось, чтобы все разделы размером от 16 до 32 МБ были FAT16, и поэтому не могли получить доступ к разделам MS-DOS 2.0 в этом диапазоне размеров. MS-DOS 3.31 и выше снова может получить доступ к разделам FAT12 размером от 16 до 32 МБ.
Реализации FAT12 и FAT16 для MS-DOS и PC DOS не могли получить доступ к разделам диска размером более 32 мегабайт. Некоторые производители разработали свои собственные варианты FAT в своих OEM-версиях MS-DOS. [29]
Некоторые поставщики ( AST и NEC [29] ) поддерживали восемь записей основных разделов вместо стандартных четырех в своей расширенной основной загрузочной записи ( MBR ) и адаптировали MS-DOS для использования более одного основного раздела.
Другие поставщики обошли ограничения размера тома, налагаемые записями 16-битных секторов, увеличив видимый размер секторов, с которыми работает файловая система. Эти логические сектора были больше (до 8192 байт), чем размер физического сектора (все еще 512 байт) на диске. DOS-BIOS или системный BIOS затем объединяли несколько физических секторов в логические сектора для работы файловой системы.
Эти изменения были прозрачны для реализации файловой системы в ядре DOS. Базовый DOS-BIOS преобразовал эти логические сектора в физические сектора в соответствии с информацией о разделах и физической геометрией диска.
Недостатком этого подхода было увеличение памяти, используемой для буферизации и разблокировки секторов. Поскольку более старые версии DOS не могли использовать большие логические сектора, производители оборудования ввели новые идентификаторы разделов для своих вариантов FAT, чтобы скрыть их от готовых проблем MS-DOS и PC DOS. Известные идентификаторы разделов для FAT с логическими секторами включают: 0x08
( Commodore MS-DOS 3.x), 0x11
( Leading Edge MS-DOS 3.x), 0x14
(AST MS-DOS 3.x), 0x24
(NEC MS-DOS 3.30 [29] ). , 0x56
( AT&T MS-DOS 3.x), 0xE5
( Tandy MS-DOS), 0xF2
( Sperry IT MS-DOS 3.x, Unisys MS-DOS 3.3 - также используется Digital Research DOS Plus 2.1). [30] OEM-версии, такие как Toshiba MS-DOS, Wyse MS-DOS 3.2 и 3.3, [31] , а также Zenith MS-DOS, также известны тем, что используют логическое секторирование. [32]
Хотя эти варианты FAT нестандартны и неоптимальны, они вполне допустимы в соответствии со спецификациями самой файловой системы. [ нужна цитация ] Поэтому, даже если проблемы MS-DOS и PC DOS по умолчанию не могут справиться с ними, большинство этих вариантов FAT12 и FAT16, специфичных для конкретного поставщика, могут быть смонтированы с помощью более гибких реализаций файловой системы в операционных системах, таких как DR. -DOS, просто изменив идентификатор раздела на один из распознаваемых типов. [nb 3] Кроме того, если им больше не нужно распознавать исходные операционные системы, существующие разделы можно «конвертировать» в тома FAT12 и FAT16, более совместимые с версиями MS-DOS/PC DOS 4.0–6.3, которые не поддерживать размеры секторов, отличные от 512 байт, [33] путем переключения на BPB с 32-битной записью количества секторов, как это было введено начиная с DOS 3.31 (см. FAT16B ниже), сохраняя размер кластера и уменьшая размер логического сектора в BPB уменьшен до 512 байт, одновременно увеличивая количество логических секторов на кластер, зарезервированных логических секторов, общее количество логических секторов и логических секторов на FAT в тот же коэффициент.
Параллельным развитием MS-DOS/PC DOS, которое позволило увеличить максимально возможный размер FAT, было введение нескольких разделов FAT на жестком диске. Чтобы обеспечить возможность совместимого использования большего количества разделов FAT, в PC DOS 3.2 (1986 г.) был введен новый тип раздела — расширенный раздел (EBR), [15] который представляет собой контейнер для дополнительного раздела, называемого логическим диском . Начиная с версии PC DOS 3.3 (апрель 1987 г.), существует еще один необязательный расширенный раздел, содержащий следующий логический диск и так далее. MBR жесткого диска может определять до четырех основных разделов или расширенный раздел в дополнение к трем основным разделам .
В ноябре 1987 года в DOS 3.31 для персональных компьютеров Compaq (модифицированная OEM-версия MS-DOS 3.3, выпущенная Compaq вместе со своими машинами) был представлен то, что сегодня просто известно как формат FAT16 , с расширением числа 16-битных секторов диска до 32. бит в BPB. Хотя изменения на диске были незначительными, весь драйвер диска DOS пришлось преобразовать для использования 32-битных номеров секторов — задача, осложняющаяся тем, что он был написан на 16-битном языке ассемблера . Результат изначально назывался DOS 3.31 Large File System . Инструмент MicrosoftDSKPROBE
называет тип 0x06
BigFAT [ 35] , тогда как в некоторых старых версиях FDISK
он описывается как BIGDOS . Технически она известна как FAT16B .
Поскольку более старые версии DOS не были рассчитаны на работу с более чем 65 535 секторами, было необходимо ввести новый тип раздела для этого формата, чтобы скрыть его от проблем DOS до версии 3.31. Исходная форма FAT16 (с количеством секторов менее 65 536) имела тип раздела 0x04
. Для дисков большего размера 0x06
был введен тип, обозначающий 65 536 или более секторов. В дополнение к этому, драйвер диска был расширен и теперь поддерживает более 65 535 секторов. Единственное другое различие между исходным форматом FAT16 и новым форматом FAT16B — это использование нового формата BPB с 32-битной записью сектора. Таким образом, новые операционные системы, поддерживающие формат FAT16B, могут работать и с исходным форматом FAT16 без каких-либо необходимых изменений.
Если разделы, которые будут использоваться в выпусках DOS до DOS 3.31, необходимо создавать с помощью современных инструментов, единственными критериями, которым теоретически необходимо соответствовать, являются количество секторов менее 65536 и использование старого идентификатора раздела ( 0x04
). Однако на практике тип 0x01
и 0x04
основные разделы не должны физически располагаться за пределами первых 32 МБ диска из-за других ограничений в MS-DOS 2.x, которая иначе не могла бы с ними справиться.
В 1988 году улучшение FAT16B стало более доступным в DR DOS 3.31, PC DOS 4.0, OS/2 1.1 и MS-DOS 4.0. Ограничение на размер раздела было продиктовано 8-битным знаковым количеством секторов в кластере, которое изначально имело максимальное значение степени двойки 64. При стандартном размере сектора жесткого диска в 512 байт это дает максимум 32. Размер кластера КБ, тем самым фиксируя «окончательный» предел размера раздела FAT16 на уровне 2 ГБ для размера сектора 512. На магнитооптических носителях, которые могут иметь секторы 1 или 2 КБ вместо 0,5 КБ, этот предел размера пропорционально больше.
Намного позже Windows NT увеличила максимальный размер кластера до 64 КБ, считая количество секторов в кластере беззнаковым. Однако полученный формат не был совместим ни с одной другой реализацией FAT того времени и приводил к большей внутренней фрагментации . Windows 98 , SE и ME также поддерживали чтение и запись этого варианта, но дисковые утилиты с ним не работали, а некоторые службы FCB недоступны для таких томов. Это приводит к запутанной ситуации с совместимостью.
До 1995 года версии DOS обращались к диску только через адресацию CHS . Когда в Windows 95 (MS-DOS 7.0) появился доступ к диску LBA , разделы могли физически располагаться за пределами первого c. 8 ГБ этого диска и, следовательно, вне досягаемости традиционной схемы адресации CHS. Поэтому разделы, частично или полностью расположенные за пределами барьера CHS, приходилось скрывать от операционных систем, не поддерживающих LBA, используя 0x0E
вместо этого новый тип раздела в таблице разделов. Разделы FAT16, использующие этот тип разделов, также называются FAT16X . [36] Единственное отличие от предыдущих разделов FAT16 заключается в том, что некоторые записи геометрии, связанные с CHS, в записи BPB, а именно количество секторов на дорожку и количество головок, могут отсутствовать или содержать вводящие в заблуждение значения и не должны содержать использоваться.
Количество записей корневого каталога, доступных для FAT12 и FAT16, определяется при форматировании тома и сохраняется в 16-битном поле. Для заданного числа RDE
и размера сектора SS
количество RDS
секторов корневого каталога равно RDS = ceil((RDE × 32) / SS)
и RDE
обычно выбирается для заполнения этих секторов, RDE × 32 = RDS × SS
т.е. Носители FAT12 и FAT16 обычно используют 512 записей корневого каталога на недискетных носителях. Некоторые сторонние инструменты, такие как mkdosfs, позволяют пользователю устанавливать этот параметр. [37]
Чтобы преодолеть ограничение размера тома FAT16 и в то же время позволить коду реального режима DOS обрабатывать этот формат, Microsoft разработала новую версию файловой системы FAT32 , которая поддерживала увеличенное количество возможных кластеров, но могла повторно использовать большую часть существующего кода, так что обычный объем памяти под DOS увеличился менее чем на 5 КБ. [38] Значения кластера представлены 32-битными числами, из которых 28 бит используются для хранения номера кластера.
Загрузочный сектор FAT32 использует 32-битное поле для количества секторов, ограничивая максимальный размер тома FAT32 2 терабайтами при размере сектора 512 байт . Максимальный размер тома FAT32 составляет 16 ТБ с размером сектора 4096 байт. [39] [40] Встроенный инструмент форматирования дисков оболочки Windows в Windows NT произвольно поддерживает только тома размером до 32 ГБ, [nb 4], но Windows поддерживает чтение и запись в уже существующие большие тома FAT32, и их можно создать с помощью командную строку , PowerShell или сторонние инструменты, [42] или отформатировав том в системе, отличной от Windows, или в системе Windows 9x с поддержкой FAT32, а затем перенеся его в систему Windows NT.
Максимально возможный размер файла на томе FAT32 составляет 4 ГБ минус 1 байт или 4 294 967 295 (2 32 − 1) байт. Это ограничение является следствием записи о длине файла в 4 байта в таблице каталогов и также затронет относительно большие разделы FAT16, поддерживаемые достаточным размером сектора.
Подобно FAT12 и FAT16, FAT32 не включает прямую встроенную поддержку длинных имен файлов, но тома FAT32 могут дополнительно содержать длинные имена файлов VFAT в дополнение к коротким именам файлов точно так же, как длинные имена файлов VFAT были дополнительно реализованы для томов FAT12 и FAT16. .
FAT32 была представлена в Windows 95 OSR2 (MS-DOS 7.1) в 1996 году, хотя для ее использования требовалось переформатирование, а DriveSpace 3 (версия, поставляемая с Windows 95 OSR2 и Windows 98) никогда ее не поддерживала. В Windows 98 появилась утилита для преобразования существующих жестких дисков из FAT16 в FAT32 без потери данных.
В линейке Windows NT встроенная поддержка FAT32 появилась в Windows 2000 . Бесплатный драйвер FAT32 для Windows NT 4.0 был доступен у Winternals , компании, позже приобретенной Microsoft. Приобретение драйвера из официальных источников больше невозможно. С 1998 года динамически загружаемый драйвер DRFAT32 от Caldera можно было использовать для включения поддержки FAT32 в DR-DOS. [43] [44] Первой версией DR-DOS, которая изначально поддерживала доступ к FAT32 и LBA, была OEM DR-DOS 7.04 в 1999 году. В том же году IMS представила встроенную поддержку FAT32 в REAL/32 7.90, а в ОС IBM 4690 добавили поддержку FAT32. с версией 2. [45] Ahead Software предоставила еще один динамически загружаемый драйвер FAT32.EXE для DR-DOS 7.03 с Nero Burning ROM в 2004 году. IBM представила встроенную поддержку FAT32 в OEM-ПК DOS 7.1 в 1999 году.
Для разделов FAT32 зарезервировано два типа разделов 0x0B
: 0x0C
. Последний тип также называется FAT32X , чтобы указать на использование доступа к диску LBA вместо CHS. [43] [46] [47] [48] [49] В таких разделах геометрические записи, связанные с CHS, а именно адреса секторов CHS в MBR, а также количество секторов на дорожку и количество головок в EBPB. запись может не содержать значений или содержать вводящие в заблуждение значения и не должна использоваться. [50] [48] [49]
OS/2 сильно зависит от расширенных атрибутов (EA) и хранит их в скрытом файле с именем " EA␠DATA.␠SF
" в корневом каталоге тома FAT12 или FAT16. Этот файл индексируется двумя ранее зарезервированными байтами в записи каталога файла (или каталога) по смещению 0x14. [51] В формате FAT32 эти байты содержат старшие 16 бит начального номера кластера файла или каталога, что делает невозможным сохранение EA OS/2 в FAT32 с использованием этого метода.
Однако сторонний драйвер устанавливаемой файловой системы FAT32 (IFS) FAT32.IFS версии 0.70 и выше от Henk Kelder & Netlabs для OS/2, eComStation и ArcaOS сохраняет расширенные атрибуты в дополнительных файлах, к именам которых добавляется строка " ␠EA.␠SF
". обычное имя файла, которому они принадлежат. Драйвер также использует байт по смещению 0x0Cв записях каталога для хранения специального байта метки, указывающего наличие расширенных атрибутов, что помогает ускорить работу. [52] [53] (Это расширение критически несовместимо с методом FAT32+ для хранения файлов размером более 4 ГБ минус 1 на томах FAT32.) [34]
Расширенные атрибуты доступны через рабочий стол Workplace Shell , через сценарии REXX и многие системные утилиты с графическим интерфейсом и командной строки (например, 4OS2 ). [54]
Чтобы соответствовать своей подсистеме OS/2 , Windows NT поддерживает обработку расширенных атрибутов в HPFS , NTFS , FAT12 и FAT16. Он хранит EA в FAT12, FAT16 и HPFS, используя точно ту же схему, что и OS/2, но не поддерживает другие виды ADS , которые хранятся на томах NTFS. При попытке скопировать файл с любым ADS, кроме EA, из тома NTFS в том FAT или HPFS выдается предупреждающее сообщение с именами ADS, которые будут потеряны. Он не поддерживает метод FAT32.IFS для хранения советников на томах FAT32.
Windows 2000 и более поздние версии действуют точно так же, как Windows NT, за исключением того, что она игнорирует EA при копировании в FAT32 без какого-либо предупреждения (но показывает предупреждение для других ADS, таких как «Информация Macintosh Finder» и «Вилка ресурсов Macintosh»).
CygwinEA␠DATA.␠SF
также использует файлы " ".
Одной из целей разработчиков Windows 95 , направленных на улучшение пользовательского опыта , была возможность использовать длинные имена файлов (LFN — до 255 кодовых единиц UTF-16 ) [nb 1] в дополнение к классическим именам файлов 8.3 (SFN). Для обратной и прямой совместимости LFN были реализованы как дополнительное расширение поверх существующих структур файловой системы FAT с использованием обходного пути в расположении записей каталога.
Этот прозрачный метод хранения длинных имен файлов в существующих файловых системах FAT без изменения их структур данных обычно известен как VFAT (что означает «Виртуальный FAT») в честь драйвера виртуального устройства Windows 95 . [номер 5]
Операционные системы, не поддерживающие VFAT, по-прежнему могут без ограничений получать доступ к файлам под их короткими именами; однако связанные длинные имена файлов могут быть потеряны, если файлы с длинными именами копируются в операционных системах, не поддерживающих VFAT.
В Windows NT поддержка длинных имен файлов VFAT началась с версии 3.5 .
Linux предоставляет драйвер файловой системы VFAT для работы с томами FAT с длинными именами файлов VFAT. В течение некоторого времени был доступен драйвер UVFAT , обеспечивающий комбинированную поддержку разрешений в стиле UMSDOS с длинными именами файлов VFAT.
OS/2 добавила поддержку длинных имен файлов в FAT с использованием расширенных атрибутов (EA) до появления VFAT. Таким образом, длинные имена файлов VFAT невидимы для OS/2, а длинные имена файлов EA невидимы для Windows; поэтому опытным пользователям обеих операционных систем придется переименовывать файлы вручную.
Human68K поддерживал до 18,3 имен файлов и символов кандзи ( Shift JIS ) в собственном варианте файловой системы FAT.
Для поддержки приложений Java в ОС IBM 4690 версии 2 на базе FlexOS была представлена собственная архитектура виртуальной файловой системы (VFS) для хранения длинных имен файлов в файловой системе FAT обратно совместимым способом. Если этот параметр включен, виртуальные имена файлов (VFN) доступны под отдельными буквами логических дисков, тогда как реальные имена файлов (RFN) остаются доступными под исходными буквами дисков. [55]
Сама файловая система FAT не предназначена для поддержки альтернативных потоков данных (ADS), но некоторые операционные системы, которые сильно от них зависят, разработали различные методы их обработки на томах FAT. Такие методы либо сохраняют дополнительную информацию в дополнительных файлах и каталогах ( классические Mac OS и macOS ), либо придают новую семантику ранее неиспользованным полям структур данных FAT на диске ( OS/2 и Windows NT ).
Mac OS, использующая PC Exchange, хранит различные даты, атрибуты файлов и длинные имена файлов в скрытом файле под названием " FINDER.DAT
", а ветки ресурсов (обычный Mac OS ADS) в подкаталоге под названием " RESOURCE.FRK
" в каждом каталоге, где они используются. Начиная с версии PC Exchange 2.1, они сохраняют длинные имена файлов Mac OS как стандартные длинные имена файлов FAT и преобразуют имена файлов FAT длиной более 31 символа в уникальные 31-символьные имена файлов, которые затем можно сделать видимыми для приложений Macintosh.
macOS хранит ветки ресурсов и метаданные (атрибуты файлов, другие ADS) в формате AppleDouble в скрытом файле с именем, составленным из имени файла-владельца с префиксом " ._
", а Finder сохраняет некоторые метаданные папок и файлов в скрытом файле с именем " .DS_Store
" (но обратите внимание, что Finder использует HFS+.DS_Store
даже в собственной файловой системе macOS ).
Ранние дистрибутивы Linux также поддерживали формат, известный как UMSDOS , вариант FAT с атрибутами файла Unix (такими как длинное имя файла и права доступа), хранящимися в отдельном файле с именем " --linux-.---
". UMSDOS вышла из употребления после выпуска VFAT, и она не включена по умолчанию в Linux , начиная с версии 2.5.7. [56] В течение некоторого времени Linux также обеспечивал комбинированную поддержку разрешений в стиле UMSDOS и длинных имен файлов VFAT через UVFAT .
В 2007 году в открытом проекте FAT+ было предложено хранить файлы большего размера (до 256 ГБ минус 1 байт, или 274 877 906 943 (2 38 - 1) байт) на слегка модифицированных и обратно совместимых томах FAT32, [34] , но это создает риск, что диск инструменты или реализации FAT32, не знающие об этом расширении, могут обрезать или удалять файлы, размер которых превышает обычный предел размера файла FAT32. Поддержка FAT32+ и FAT16+ ограничена некоторыми версиями DR-DOS и недоступна в основных операционных системах. [57] (Это расширение критически несовместимо с /EAS
возможностью метода FAT32.IFS хранить расширенные атрибуты OS/2 на томах FAT32.)
В своей файловой системе NetWare ( NWFS ) Novell реализовала сильно модифицированный вариант файловой системы FAT для операционной системы NetWare . Для файлов большего размера использовалась функция повышения производительности Turbo FAT .
FATX — это семейство файловых систем, разработанное для жестких дисков и карт памяти игровых приставок Microsoft Xbox , [58] [59], представленное в 2001 году .
Несмотря на то, что дисковые структуры FATX16 и FATX32 напоминают те же базовые дизайнерские идеи, что и FAT16 и FAT32, они упрощены , но принципиально несовместимы с обычными файловыми системами FAT16 и FAT32, что делает невозможным монтирование таких томов обычными драйверами файловой системы FAT.
Незагрузочный сектор суперблока имеет размер 4 КБ и содержит структуру, подобную BPB, размером 18 байт, полностью отличающуюся от обычных BPB . Кластеры обычно имеют размер 16 КБ, и на Xbox имеется только одна копия FAT. Записи каталога имеют размер 64 байта вместо обычных 32 байтов . Файлы могут иметь имена длиной до 42 символов с использованием набора символов OEM и иметь размер до 4 ГБ минус 1 байт. Временные метки на диске содержат даты и время создания, изменения и доступа, но отличаются от FAT: в FAT эпоха — 1980 год ; в FATX эпоха — 2000 год . На Xbox 360 эпоха — 1980 год. [60]
exFAT — это файловая система, представленная в Windows Embedded CE 6.0 в ноябре 2006 года и добавленная в семейство Windows NT с пакетом обновления 1 для Vista и пакетом обновления 3 для Windows XP (или с отдельной установкой обновления Windows XP KB955704). Он основан на архитектуре таблицы размещения файлов, но несовместим, проприетарен и защищен патентами. [61]
exFAT предназначен для использования на флэш-накопителях и картах памяти , таких как SDXC и Memory Stick XC , где в противном случае используется FAT32. Поставщики обычно предварительно форматируют с его помощью карты SDXC. Его основным преимуществом является превышение ограничения размера файла в 4 ГБ, поскольку ссылки на размер файла хранятся в восьми байтах вместо четырех, что увеличивает предел до 2 64 − 1 байт.
Утилиты Microsoft с графическим пользовательским интерфейсом и форматированием командной строки предлагают ее в качестве альтернативы NTFS (а для небольших разделов - FAT16B и FAT32). Тип раздела MBR ( тот же, что используется для IFS , HPFS и NTFS). Информация о логической геометрии, расположенная в VBR , хранится в формате, не напоминающем какой-либо BPB.0x07
В начале 2010 года файловая система была реконструирована Институтом SANS . [62] 28 августа 2019 г. Microsoft опубликовала техническую спецификацию exFAT, чтобы ее можно было использовать в ядре Linux и других операционных системах. [63]
В середине 1990-х годов Microsoft подала заявку и получила серию патентов на ключевые части файловой системы FAT. Все четыре относятся к расширениям длинных имен файлов для FAT, впервые появившимся в Windows 95 : патент США 5 579 517, [64] патент США 5 745 902, [65] патент США 5 758 352, [66] патент США 6 286 013 (срок действия всех истек с 2013 года). [67]
3 декабря 2003 года Microsoft объявила [68] , что она будет предлагать лицензии на использование своей спецификации FAT и «связанной интеллектуальной собственности» по цене роялти в размере 0,25 доллара США за проданную единицу, при этом максимальный гонорар в размере 250 000 долларов США за лицензию. соглашение. [69] С этой целью Microsoft сослалась на четыре патента на файловую систему FAT в качестве основания для своих претензий на интеллектуальную собственность.
В спецификации EFI FAT32 [10] Microsoft специально предоставляет ряд прав, которые многие читатели интерпретируют как разрешение производителям операционных систем реализовывать FAT. [70] Патенты, не принадлежащие Microsoft, влияющие на FAT, включают: патент США 5,367,671, касающийся атрибутов расширенных объектов OS/2 (истёк срок действия в 2011 году). [71]
Общественный патентный фонд (PUBPAT) представил в Управление по патентам и товарным знакам США (USPTO) в 2004 году доказательства, оспаривающие действительность патента США 5579517, [64] включая ссылки на предшествующий уровень техники от Xerox и IBM. [72] ВПТЗ США начало расследование и завершилось отклонением всех претензий в патенте. [73] В следующем году USPTO объявило, что после процесса повторной экспертизы оно подтвердило отклонение патента '517 и дополнительно признало патент США № 5,758,352 [66] недействительным на том основании, что у патента были неверные правопреемники.
Однако в 2006 году USPTO постановило, что особенности реализации системы FAT Microsoft были «новыми и неочевидными», отменив оба предыдущих решения и оставив патенты действительными. [74]
В феврале 2009 года Microsoft подала иск о нарушении патентных прав против TomTom , утверждая, что продукты производителя устройств нарушают патенты, связанные с длинными именами файлов VFAT. Поскольку некоторые продукты TomTom основаны на Linux , это была первая попытка Microsoft применить свои патенты против платформы Linux. [75] Иск был урегулирован во внесудебном порядке в следующем месяце с соглашением о том, что Microsoft будет предоставлен доступ к четырем патентам TomTom, что TomTom прекратит поддержку длинных имен файлов VFAT в своих продуктах и что взамен Microsoft не будет обращаться в суд. против TomTom в течение пятилетнего срока действия мирового соглашения. [76]
В октябре 2010 года Microsoft подала иск о нарушении патентных прав против Motorola , утверждая, что несколько патентов (включая два патента VFAT) не были лицензированы для использования в операционной системе Android . [77] Они также подали жалобу в ИТЦ . [78] Разработчики программного обеспечения с открытым исходным кодом разработали методы, позволяющие обойти патенты Microsoft. [79] [80]
В 2013 году патент EP0618540 «Общее пространство имен для длинных и коротких имен файлов» (срок действия которого истек в 2014 году [81] ) был признан недействительным в Германии. [82] После отзыва апелляции данное решение вступило в законную силу 28 октября 2015 г. [83]
ACCDATE=drive1+|- [drive2+|-]...
"... можно адресовать только 2^12 (то есть 4096) единиц выделения или кластеров. На самом деле это число меньше этого, поскольку 000h и 001h не используются, а от FF0h до FFFh зарезервированы или используются для других целей, оставляя диапазон возможных кластеров от 002h до FEFh (от 2 до 4079).
Нумерация начинается с 2;
первые две цифры, 0 и 1, зарезервированы.
Кластеры не могут иметь размер 64 килобайта (
КБ
) или больше.
0x00
0xEA
и 0xEC
магические значения.{{cite web}}
: CS1 maint: bot: исходный статус URL неизвестен ( ссылка )