Таблица размещения файлов ( FAT ) — файловая система , разработанная для персональных компьютеров и являвшаяся файловой системой по умолчанию для операционных систем MS-DOS и Windows 9x . [ требуется ссылка ] Первоначально разработанная в 1977 году для использования на дискетах , она была адаптирована для использования на жестких дисках и других устройствах. Увеличение емкости дисковых накопителей потребовало четырех основных вариантов: FAT12, FAT16, FAT32 и ExFAT . FAT была заменена на NTFS в качестве файловой системы по умолчанию в операционных системах Microsoft, начиная с Windows XP . [3] Тем не менее, FAT продолжает использоваться на флэш-памяти и других твердотельных картах и модулях памяти (включая USB-флеш-накопители ), многих портативных и встраиваемых устройствах из-за ее совместимости и простоты внедрения. [4]
FAT также использовалась на жестких дисках в эпоху DOS и Windows 9x . Microsoft представила NTFS с платформой Windows NT в 1993 году, но FAT оставалась стандартом для домашних пользователей до появления Windows XP в 2001 году. Windows Me была последней версией Windows , которая использовала FAT в качестве файловой системы по умолчанию.
Для дискет FAT была стандартизирована как ECMA -107 [5] и ISO / IEC 9293:1994 [6] (заменяющий ISO 9293:1987 [7] ). Эти стандарты охватывают FAT12 и FAT16 только с поддержкой коротких имен файлов 8.3 ; длинные имена файлов с VFAT были частично запатентованы. [8] В то время как FAT12 используется на дискетах, FAT16 и FAT32 обычно встречаются на более крупных носителях.
FAT используется внутри для системного раздела EFI на этапе загрузки компьютеров, совместимых с EFI . [9] Скрытые файловые системы FAT также используются в загрузочном разделе UEFI на современных ПК.
FAT по-прежнему используется в дисках, которые, как ожидается, будут использоваться несколькими операционными системами, например, в общих средах Windows, Linux и DOS. Microsoft Windows дополнительно поставляется с предустановленным инструментом для преобразования файловой системы FAT в NTFS напрямую без необходимости переписывать все файлы, хотя это не может быть легко отменено. [10] Файловая система FAT используется в съемных носителях, таких как дискеты , супердискеты , карты памяти и флэш-памяти или USB-флеш-накопители . FAT поддерживается портативными устройствами, такими как КПК , цифровые камеры , видеокамеры , медиаплееры и мобильные телефоны. [ требуется цитата ]
Файловая система DCF , принятая почти всеми цифровыми камерами с 1998 года, определяет логическую файловую систему с именами файлов 8.3 и делает использование FAT12, FAT16, FAT32 или exFAT обязательным для ее физического уровня для совместимости. [11]
Файловая система использует индексную таблицу, хранящуюся на устройстве, для идентификации цепочек областей хранения данных, связанных с файлом, таблицу размещения файлов ( 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 , как она изначально называлась) была разработана и реализована Марком Макдональдом [14] на основе серии дискуссий между Макдональдом и Биллом Гейтсом . [14]
Он был представлен с 8-битными элементами таблицы [12] [13] [14] (и допустимыми номерами кластеров данных до 0xBF
[12] [13] ) в предшественнике Microsoft Standalone Disk BASIC-80 для преемника на базе 8080 [nb 2] терминала ввода данных NCR 7200 model VI , оснащенного 8-дюймовыми (200 мм) дискетами, в 1977 [15] или 1978 году. [nb 2]
В 1978 году Standalone Disk BASIC-80 был портирован на 8086 с помощью эмулятора на DEC PDP-10 [16] , поскольку в то время не было настоящих систем 8086. Файловая система FAT также использовалась в MDOS/MIDAS от Microsoft , [14] операционной системе для платформ 8080/Z80, написанной Макдональдом с 1979 года. Версия Standalone Disk BASIC поддерживала три FAT, [12] [13] [17] тогда как для MIDAS это был параметр. Как сообщается, MIDAS также был готов поддерживать 10-, 12- и 16-битные варианты FAT. В то время как размер записей каталога составлял 16 байт в Standalone Disk BASIC , [12] [13] MIDAS вместо этого занимал 32 байта на запись.
Тим Патерсон из Seattle Computer Products (SCP) впервые познакомился со структурой FAT от Microsoft, когда он помогал Бобу О'Риру адаптировать порт эмулятора Standalone Disk BASIC-86 на прототип платы процессора SCP S-100 bus 8086 во время гостевой недели в Microsoft в мае 1979 года. [16] Окончательный продукт был показан на стенде Lifeboat Associates на Национальной компьютерной конференции в Нью-Йорке [16] 4–7 июня 1979 года, где Патерсон узнал о более сложной реализации FAT в MDOS/MIDAS [14] , а Макдональд поговорил с ним о конструкции файловой системы. [15]
В период с апреля по август 1980 года, заимствуя концепцию FAT для собственной операционной системы SCP 8086 QDOS 0.10 , [16] Тим Патерсон расширил элементы таблицы до 12 бит , [18] сократил количество FAT до двух, переопределил семантику некоторых зарезервированных значений кластера и изменил структуру диска, так что корневой каталог теперь располагался между FAT и областью данных для его реализации FAT12 . Патерсон также увеличил ограничение длины имени файла в девять символов (6.3) [12] [13] до одиннадцати символов для поддержки имен файлов 8.3 в стиле CP/M и блоков управления файлами . Формат, используемый в 8-битной файловой системе-предшественнике Microsoft Standalone Disk BASIC, не поддерживался QDOS. К августу 1980 года QDOS была переименована в 86-DOS . [19] Начиная с 86-DOS 0.42 , размер и расположение записей каталога были изменены с 16 байт до 32 байт [20] для того, чтобы добавить отметку даты файла [20] и увеличить теоретический предел размера файла сверх предыдущего предела в 16 МБ. [20] 86-DOS 1.00 стал доступен в начале 1981 года. Позже в 1981 году 86-DOS превратился в MS-DOS от Microsoft и IBM PC DOS . [14] [18] [21] Возможность чтения ранее отформатированных томов с 16-байтовыми записями каталога [20] была исключена в MS-DOS 1.20 .
FAT12 использовала 12-битные записи для адресов кластеров; некоторые значения были зарезервированы для обозначения конца цепочки кластеров, для обозначения неиспользуемых областей диска или для других целей, поэтому максимальное количество кластеров было ограничено 4078. [22] [23] Для экономии дискового пространства две 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, и эта версия также добавила биты атрибутов «только для чтения», «архив» , «метка тома» и «каталог» для иерархических подкаталогов. [24]
В MS-DOS 3.0 появилась поддержка 5,25-дюймовых дискет высокой плотности (дескриптор носителя 0xF9
) объемом 1,2 МБ, которые, в частности, имели 15 секторов на дорожку, а значит, больше места для FAT.
FAT12 по-прежнему используется на всех распространенных дискетах , включая диски емкостью 1,44 МБ и более поздние — 2,88 МБ (байт дескриптора носителя 0xF0
).
В 1984 году IBM выпустила PC AT , которому для доступа к жесткому диску объемом 20 МБ требовался PC DOS 3.0. [25] [26] Параллельно 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. [27] 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. [28]
Некоторые поставщики ( AST и NEC [28] ) поддерживали восемь , вместо стандартных четырёх , записей первичных разделов в своей пользовательской расширенной главной загрузочной записи ( MBR ), и они адаптировали MS-DOS для использования более одного первичного раздела.
Другие производители обходили ограничения размера тома, налагаемые 16-битными записями секторов, увеличивая видимый размер секторов, с которыми работала файловая система. Эти логические секторы были больше (до 8192 байт), чем размер физического сектора (все еще 512 байт) на диске. Затем DOS-BIOS или системный BIOS объединяли несколько физических секторов в логические секторы для работы файловой системы.
Эти изменения были прозрачны для реализации файловой системы в ядре DOS. Базовый DOS-BIOS переводил эти логические сектора в физические сектора в соответствии с информацией о разделах и физической геометрией диска.
Недостатком этого подхода было увеличение памяти, используемой для буферизации секторов и деблокирования. Поскольку старые версии DOS не могли использовать большие логические сектора, OEM-производители ввели новые идентификаторы разделов для своих вариантов 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 [28] ), 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). [29] Известно , что OEM-версии, такие как Toshiba MS-DOS, Wyse MS-DOS 3.2 и 3.3, [30] а также Zenith MS-DOS также использовали логическую секторизацию. [31]
Хотя эти варианты FAT нестандартны и неоптимальны, они вполне допустимы в соответствии со спецификациями самой файловой системы. [ требуется ссылка ] Поэтому, даже если проблемы по умолчанию в MS-DOS и PC DOS не смогли с ними справиться, большинство из этих специфичных для поставщика вариантов FAT12 и FAT16 можно смонтировать с помощью более гибких реализаций файловых систем в операционных системах, таких как DR-DOS, просто изменив идентификатор раздела на один из распознаваемых типов. [nb 3] Кроме того, если они больше не должны распознаваться исходными операционными системами, существующие разделы можно «преобразовать» в тома FAT12 и FAT16, более совместимые с версиями MS-DOS/PC DOS 4.0–6.3, которые не поддерживают размеры секторов, отличные от 512 байт, [32] переключившись на BPB с 32-битной записью для количества секторов, как это было введено с DOS 3.31 (см. FAT16B ниже), сохранив размер кластера и уменьшив размер логического сектора в BPB до 512 байт, в то же время увеличив количество логических секторов на кластер, зарезервированных логических секторов, общего количества логических секторов и логических секторов на FAT во столько же раз.
Параллельным развитием в MS-DOS / PC DOS, которое позволило увеличить максимально возможный размер FAT, стало введение нескольких разделов FAT на жестком диске. Чтобы разрешить использование большего количества разделов FAT совместимым образом, в PC DOS 3.2 (1986) был введен новый тип раздела, расширенный раздел (EBR), [14] который является контейнером для дополнительного раздела, называемого логическим диском . Начиная с PC DOS 3.3 (апрель 1987), есть еще один, необязательный расширенный раздел, содержащий следующий логический диск , и так далее. MBR жесткого диска может либо определять до четырех основных разделов, либо расширенный раздел в дополнение к трем основным разделам.
В ноябре 1987 года Compaq Personal Computer DOS 3.31 (модифицированная OEM-версия MS-DOS 3.3, выпущенная Compaq вместе со своими машинами) представила то, что сегодня просто известно как формат FAT16 , с расширением 16-битного количества секторов диска до 32 бит в BPB. Хотя изменения на диске были незначительными, весь драйвер диска DOS пришлось преобразовать для использования 32-битных номеров секторов, задача усложнялась тем фактом, что он был написан на 16-битном языке ассемблера . Результат изначально назывался DOS 3.31 Large File System . Инструмент MicrosoftDSKPROBE
называет тип 0x06
BigFAT , [ 34] тогда как некоторые старые версии 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 , разделы могли начать физически располагаться за пределами первых 8 ГБ этого диска и, таким образом, быть вне досягаемости традиционной схемы адресации CHS. Разделы, частично или полностью расположенные за барьером CHS, поэтому приходилось скрывать от операционных систем, не поддерживающих LBA, используя 0x0E
вместо этого новый тип раздела в таблице разделов. Разделы FAT16, использующие этот тип раздела, также называются FAT16X . [35] Единственное отличие по сравнению с предыдущими разделами FAT16 заключается в том, что некоторые записи геометрии, связанные с CHS, в записи BPB, а именно количество секторов на дорожку и количество головок, могут не содержать или содержать вводящие в заблуждение значения и не должны использоваться.
Количество записей корневого каталога, доступных для FAT12 и FAT16, определяется при форматировании тома и хранится в 16-битном поле. Для заданного числа RDE
и размера сектора SS
количество RDS
секторов корневого каталога равно RDS = ceil((RDE × 32) / SS)
, и RDE
обычно выбирается для заполнения этих секторов, т. е. RDE × 32 = RDS × SS
. Носители FAT12 и FAT16 обычно используют 512 записей корневого каталога на недискетных носителях. Некоторые сторонние инструменты, такие как mkdosfs, позволяют пользователю устанавливать этот параметр. [36]
Чтобы преодолеть ограничение на размер тома FAT16, в то же время позволяя коду реального режима DOS обрабатывать этот формат, Microsoft разработала новую версию файловой системы FAT32 , которая поддерживала увеличенное количество возможных кластеров, но могла повторно использовать большую часть существующего кода, так что обычный объем памяти был увеличен менее чем на 5 КБ под DOS. [37] Значения кластера представлены 32-битными числами, из которых 28 бит используются для хранения номера кластера.
Загрузочный сектор FAT32 использует 32-битное поле для количества секторов, ограничивая максимальный размер тома FAT32 до 2 терабайт с размером сектора 512 байт . Максимальный размер тома FAT32 составляет 16 ТБ с размером сектора 4096 байт. [38] [39] Встроенный инструмент форматирования диска оболочки Windows в Windows NT произвольно поддерживает только размеры томов до 32 ГБ, [nb 4] но Windows поддерживает чтение и запись на уже существующие большие тома FAT32, и их можно создать с помощью командной строки , PowerShell или сторонних инструментов, [41] или путем форматирования тома в системе, отличной от Windows, или в системе Windows 9x с поддержкой FAT32, а затем перенести его в систему Windows NT. Спустя 30 лет Microsoft увеличила FAT32 с 32 ГБ до 2 ТБ. [42]
Максимально возможный размер файла на томе 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 OS добавила поддержку FAT32 с версией 2. [45] Ahead Software предоставила еще один динамически загружаемый драйвер FAT32.EXE для DR-DOS 7.03 с Nero Burning ROM в 2004 году. IBM представила собственную поддержку FAT32 с OEM PC DOS 7.1 в 1999 году.
Для разделов FAT32 зарезервированы два типа разделов, 0x0B
и 0x0C
. Последний тип также называется FAT32X , чтобы указать на использование доступа к диску LBA вместо CHS. [43] [46] [47] [48] [49] На таких разделах записи геометрии, связанные с CHS, а именно адреса секторов CHS в MBR, а также количество секторов на дорожку и количество головок в записи EBPB, могут не содержать или содержать вводящие в заблуждение значения и не должны использоваться. [50] [48] [49]
OS/2 в значительной степени зависит от расширенных атрибутов (EAs) и хранит их в скрытом файле с именем " EA␠DATA.␠SF
" в корневом каталоге тома FAT12 или FAT16. Этот файл индексируется двумя ранее зарезервированными байтами в записи каталога файла (или каталога) по смещению 0x14. [51] В формате FAT32 эти байты содержат верхние 16 бит начального номера кластера файла или каталога, что делает невозможным хранение OS/2 EAs в FAT32 с использованием этого метода.
Однако сторонний драйвер устанавливаемой файловой системы FAT32 (IFS) FAT32.IFS версии 0.70 и выше от Henk Kelder & Netlabs для OS/2, eComStation и ArcaOS хранит расширенные атрибуты в дополнительных файлах с именами файлов, имеющими строку " ␠EA.␠SF
", добавленную к обычному имени файла, к которому они принадлежат. Драйвер также использует байт по смещению 0x0Cв записях каталога для хранения специального байта метки, указывающего на наличие расширенных атрибутов, что помогает ускорить работу. [52] [53] (Это расширение критически несовместимо с методом FAT32+ для хранения файлов размером более 4 ГБ минус 1 на томах FAT32.) [33]
Расширенные атрибуты доступны через рабочий стол 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 для хранения EA на томах FAT32.
Windows 2000 и более поздние версии работают точно так же, как Windows NT, за исключением того, что игнорируют EA при копировании в FAT32 без предупреждения (но показывают предупреждение для других ADS, таких как «Macintosh Finder Info» и «Macintosh Resource Fork»).
CygwinEA␠DATA.␠SF
также использует файлы " ".
Одной из целей пользовательского опыта для разработчиков Windows 95 была возможность использовать длинные имена файлов (LFN — до 255 кодовых единиц UTF-16 ), [nb 1] в дополнение к классическим именам файлов 8.3 (SFN). Для обратной и прямой совместимости LFN были реализованы как необязательное расширение поверх существующих структур файловой системы FAT с использованием обходного пути в способе расположения записей каталога.
Этот прозрачный метод хранения длинных имен файлов в существующих файловых системах FAT без изменения их структур данных обычно известен как VFAT (от «Virtual 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 OS версии 2 на базе FlexOS была введена собственная архитектура виртуальной файловой системы (VFS) для хранения длинных имен файлов в файловой системе FAT в обратно совместимом режиме. Если эта опция включена, виртуальные имена файлов (VFN) доступны под отдельными буквами логических дисков, тогда как реальные имена файлов (RFN) остаются доступными под исходными буквами дисков. [55]
Сама файловая система FAT не предназначена для поддержки альтернативных потоков данных (ADS), но некоторые операционные системы, которые сильно зависят от них, разработали различные методы для их обработки на томах FAT. Такие методы либо сохраняют дополнительную информацию в дополнительных файлах и каталогах ( классические Mac OS и macOS ), либо придают новую семантику ранее неиспользуемым полям структур данных FAT на диске ( OS/2 и Windows NT ).
Mac OS с помощью PC Exchange хранит свои различные даты, атрибуты файлов и длинные имена файлов в скрытом файле с именем " FINDER.DAT
", а вилки ресурсов (обычный ADS Mac OS) в подкаталоге с именем " RESOURCE.FRK
" в каждом каталоге, где они используются. Начиная с PC Exchange 2.1, они хранят длинные имена файлов Mac OS как стандартные длинные имена файлов FAT и преобразуют имена файлов FAT длиннее 31 символа в уникальные имена файлов из 31 символа, которые затем можно сделать видимыми для приложений Macintosh.
macOS хранит ветки ресурсов и метаданные (атрибуты файлов, другие ADS) с использованием формата AppleDouble в скрытом файле с именем, составленным из имени файла владельца с префиксом « ._
», а Finder хранит некоторые метаданные папок и файлов в скрытом файле с именем « .DS_Store
» (но обратите внимание, что Finder использует .DS_Store
даже собственную файловую систему macOS, HFS+ ).
Ранние дистрибутивы 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, [33] но налагает риск того, что дисковые инструменты или реализации FAT32, не знающие об этом расширении, могут обрезать или удалить файлы, превышающие обычный предел размера файла FAT32. Поддержка FAT32+ и FAT16+ ограничена некоторыми версиями DR-DOS и недоступна в основных операционных системах. [57] (Это расширение критически несовместимо с /EAS
опцией метода FAT32.IFS для хранения расширенных атрибутов OS/2 на томах FAT32.)
В своей файловой системе NetWare File System ( NWFS ) Novell реализовала сильно модифицированный вариант файловой системы FAT для операционной системы NetWare . Для больших файлов она использовала функцию повышения производительности Turbo FAT .
FATX — это семейство файловых систем, разработанное для жестких дисков и карт памяти игровой консоли Xbox компании Microsoft , [58] [59] представленное в 2001 году.
Несмотря на то, что базовые идеи конструкции FATX16 и FATX32 напоминают FAT16 и FAT32, дисковые структуры FATX16 и FATX32 упрощены, но принципиально несовместимы с обычными файловыми системами FAT16 и FAT32, что делает невозможным монтирование таких томов обычными драйверами файловой системы FAT.
Незагрузочный сектор суперблока имеет размер 4 КБ и содержит 18-байтовую структуру, похожую на BPB, полностью отличную от обычных 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 с Vista Service Pack 1 и Windows XP Service Pack 3 (или отдельной установкой Windows XP Update KB955704). Она основана на архитектуре File Allocation Table, но несовместима, является частной собственностью и защищена патентами. [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]
Microsoft подала заявку и получила ряд патентов на ключевые части файловой системы FAT в середине 1990-х годов. Все четыре относятся к длинным расширениям имен файлов 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 [9] Microsoft специально предоставляет ряд прав, которые многие читатели интерпретировали как разрешение поставщикам операционных систем внедрять FAT. [70] Патенты, не принадлежащие Microsoft, влияющие на FAT, включают: патент США 5,367,671, относящийся к расширенным атрибутам объектов OS/2 (истек в 2011 году). [71]
В 2004 году Патентный фонд США (PUBPAT) представил в Патентное и товарное ведомство США (USPTO) доказательства, оспаривающие действительность патента США 5 579 517, [64] включая ссылки на предшествующий уровень техники от Xerox и IBM. [72] Патентное ведомство США начало расследование и в итоге отклонило все требования патента. [73] В следующем году Патентное ведомство США также объявило, что после процесса повторной экспертизы оно подтвердило отклонение патента 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] Они также подали жалобу в ITC . [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
файла, который имеет EA , эти EA больше не будут найдены с помощью вызовов DosFindFirst/Next. Другие вызовы OS/2 для извлечения EA (DosQueryPathInfo, DosQueryFileInfo и DosEnumAttribute) не полагаются на этот байт. Также может произойти обратное [...]. [...] В этой ситуации снизится только производительность сканирования каталогов. Обе ситуации [...] исправляются с помощью CHKDSK ".0xEA
и 0xEC
магические значения.{{cite web}}
: CS1 maint: бот: исходный статус URL неизвестен ( ссылка )