Из Википедии, бесплатной энциклопедии
  (Перенаправлено с DOS 2.0 BPB )
Перейти к навигации Перейти к поиску

Файл FAT система представляет собой особый тип компьютерной файловой системы архитектуры и семейство стандартных промышленных файловых систем , использующих его.

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

Первоначально разработанная в 1977 году для использования на гибких дисках , FAT вскоре была адаптирована и использовалась почти повсеместно на жестких дисках в эпоху DOS и Windows 9x в течение двух десятилетий. Сегодня файловые системы FAT по-прежнему широко используются на гибких дисках, USB-накопителях , флэш- дисках и других твердотельных картах и модулях памяти , а также на многих портативных и встроенных устройствах. DCF реализует FAT в качестве стандартной файловой системы для цифровых камер с 1998 года. [4] FAT также используется для системного раздела EFI (тип раздела 0xEF ) на этапе загрузкиEFI- совместимые компьютеры.

Для гибких дисков FAT стандартизирован как ECMA- 107 [5] и ISO / IEC  9293: 1994 [6] (заменяющий ISO 9293: 1987 [7] ). Эти стандарты охватывают FAT12 и FAT16 с поддержкой только коротких файлов 8.3 ; длинные имена файлов с VFAT являются частично запатентованы . [8] Согласно патентам Google, статус «Общее пространство имен для длинных и коротких имен файлов» (US5758352A) истек в 2019 году, что может означать, что срок действия патента истек полностью. [9]

Технический обзор [ править ]

Название файловой системы происходит из-за того, что файловая система часто использует индексную таблицу, таблицу размещения файлов , статически выделяемую во время форматирования. Таблица содержит записи для каждого кластера , непрерывной области дискового хранилища. Каждая запись содержит либо номер следующего кластера в файле, либо маркер, указывающий конец файла, неиспользуемое дисковое пространство или специальные зарезервированные области диска. Корневой каталог диска содержит номер первого кластера каждого файла в каталоге; Затем операционная система может просматривать таблицу FAT, ища номер кластера каждой последующей части дискового файла в виде цепочки кластеров до тех пор, пока не будет достигнут конец файла. Во многом таким же образом,подкаталоги реализованы как специальные файлы, содержащие записи каталогов соответствующих файлов.

Первоначально разработанная как 8-битная файловая система, максимальное количество кластеров было значительно увеличено по мере развития дисковых накопителей, и поэтому количество битов, используемых для идентификации каждого кластера, увеличилось. Последовательные основные версии формата FAT названы по количеству битов элемента таблицы: 12 ( FAT12 ), 16 ( FAT16 ) и 32 ( FAT32 ). За исключением исходного 8-битного предшественника FAT , каждый из этих вариантов все еще используется. Стандарт FAT также был расширен другими способами, при этом в целом сохранена обратная совместимость с существующим программным обеспечением.

Макет [ править ]

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

Зарезервированные секторы
Первый зарезервированный сектор (логический сектор 0) - это загрузочный сектор (также называемый загрузочной записью тома или просто VBR ). Он включает область, называемую блоком параметров BIOS ( BPB ), которая содержит некоторую базовую информацию о файловой системе, в частности ее тип и указатели на расположение других разделов, и обычно содержит код загрузчика операционной системы .
Важная информация из загрузочного сектора доступна через структуру операционной системы, называемую блоком параметров диска ( DPB ) в DOS и OS / 2.
Общее количество зарезервированных секторов указано в поле внутри загрузочного сектора и обычно составляет 32 в файловых системах FAT32. [10]
Для файловых систем FAT32 зарезервированные секторы включают в себя информационный сектор файловой системы в логическом секторе 1 и резервный загрузочный сектор в логическом секторе 6.
В то время как многие другие поставщики продолжали использовать односекторную настройку (только логический сектор 0) для загрузчика начальной загрузки, код загрузочного сектора Microsoft с момента введения FAT32 расширился и теперь охватывает логические сектора 0 и 2, причем логический сектор 0 зависит от подпрограммы в логическом секторе 2. Область резервного загрузочного сектора также состоит из трех логических секторов 6, 7 и 8. В некоторых случаях Microsoft также использует сектор 12 области зарезервированных секторов для расширенного загрузчика.
FAT Регион
Обычно он содержит две копии таблицы размещения файлов для проверки избыточности, хотя редко используется даже утилитами восстановления диска.
Это карты области данных, указывающие, какие кластеры используются файлами и каталогами. В FAT12 и FAT16 они сразу следуют за зарезервированными секторами.
Обычно дополнительные копии хранятся в жесткой синхронизации при записи, а при чтении они используются только при возникновении ошибок в первой FAT.
Первые два кластера (кластер 0 и 1 ) на карте содержат специальные значения.
Регион корневого каталога
Это таблица каталогов, в которой хранится информация о файлах и каталогах, расположенных в корневом каталоге. Он используется только с FAT12 и FAT16 и налагает на корневой каталог фиксированный максимальный размер, который предварительно выделяется при создании этого тома. FAT32 хранит корневой каталог в области данных вместе с файлами и другими каталогами, что позволяет ему расти без таких ограничений. Таким образом, для FAT32 область данных начинается здесь.
Область данных
Здесь хранятся фактические данные файла и каталога, которые занимают большую часть раздела. Традиционно неиспользуемые части области данных инициализируются значением заполнения 0xF6 в соответствии с таблицей параметров диска INT 1Eh (DPT) во время форматирования на IBM-совместимых машинах, но также используются в Atari Portfolio . 8-дюймовые дискеты CP / M обычно поставлялись предварительно отформатированными со значением 0xE5 ; [11] посредством Digital Research [12] это значение также использовалось на дискетах формата Atari ST . [NB 1] Amstrad использовали 0xF4 вместо этого. Некоторые современные форматеры стирают жесткие диски со значением 0x00 , тогда как значение 0xFF , значение по умолчанию для незапрограммированного блока флэш-памяти, используется на флэш-дисках для уменьшения износа . Последнее значение обычно также используется на дисках ROM. (Некоторые расширенные инструменты форматирования позволяют настроить байт-заполнитель формата. [Nb 2] )
Размер файлов и подкаталогов можно произвольно увеличивать (до тех пор, пока есть свободные кластеры), просто добавляя дополнительные ссылки в цепочку файлов в FAT. Файлы распределяются в единицах кластеров, поэтому, если файл размером 1 КБ находится в кластере 32 КБ , 31 КБ теряется.
FAT32 обычно начинает таблицу корневого каталога в кластере номер 2: первом кластере области данных.

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

Область зарезервированных секторов [ править ]

Загрузочный сектор [ править ]

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

Общая структура первых 11 байтов, используемых большинством версий FAT для IBM-совместимых x86-машин, начиная с DOS 2.0:

Дискеты Atari ST в формате FAT имеют очень похожую структуру загрузочного сектора:

Тома MSX-DOS в формате FAT12 имеют очень похожую структуру загрузочного сектора:

Блок параметров BIOS [ править ]

Общая структура первых 25 байтов блока параметров BIOS (BPB), используемых версиями FAT, начиная с DOS 2.0 (байты со смещением сектора от 0x00B до 0x017 сохраняются с DOS 2.0, но не всегда используются до DOS 3.2, значения от 0x018 до 0x01B являются используется с DOS 3.0):

DOS 3.0 BPB:

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

DOS 3.2 BPB:

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

DOS 3.31 BPB:

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

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

  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, а также EBPB DOS 4.0 для небольших томов FAT32. Поскольку было обнаружено, что такие тома создаются операционными системами Windows при некоторых странных условиях, операционные системы [nb 8] должны быть готовы к работе с этими гибридными формами.

Исключения [ править ]

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

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

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

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

Реализация одностороннего формата FAT12 размером 315 КБ, используемого в MS-DOS для ПК Apricot и F1e [38], имела разную компоновку загрузочного сектора для соответствия BIOS этого компьютера, несовместимого с IBM. Команда перехода и имя OEM были опущены, а параметры BPB MS-DOS (смещения 0x00B - 0x017 в стандартном загрузочном секторе) были расположены по смещению 0x050 . Портативное , F1 , дуэт ПК и Си FD поддерживают нестандартный двухсторонние 720 КБ формата FAT12 вместо этого. [38]Различия в макете загрузочного сектора и идентификаторах носителей сделали эти форматы несовместимыми со многими другими операционными системами. Параметры геометрии для этих форматов:

  • 315 КБ: байтов на логический сектор: 512 байтов, логических секторов на кластер: 1, зарезервированных логических секторов: 1, количество файлов FAT: 2, записей корневого каталога: 128, всего логических секторов: 630, идентификатор FAT: 0xFC , логических секторов на FAT: 2, физических секторов на дорожку: 9, количество головок: 1. [38] [39]
  • 720 КБ: байтов на логический сектор: 512 байтов, логических секторов на кластер: 2, зарезервированных логических секторов: 1, количество файлов FAT: 2, записей корневого каталога: 176, всего логических секторов: 1440, FAT ID: 0xFE , логических секторов на FAT: 3, физических секторов на дорожку: 9, количество головок: 2. [38]

В более поздних версиях Apricot MS-DOS появилась возможность читать и записывать диски со стандартным загрузочным сектором в дополнение к дискам с Apricot. Эти форматы также поддерживались DOS Plus 2.1e / g для серии Apricot ACT.

Адаптация DOS Plus для BBC Master 512 поддерживала два формата FAT12 на 80-дорожечных двусторонних 5,25-дюймовых накопителях с двойной плотностью, которые вообще не использовали обычные загрузочные секторы. На дисках данных 800 КБ не был загрузочный сектор, и они начинались с единственная копия FAT. [39] Для определения емкости диска использовался первый байт перемещенной FAT в логическом секторе 0. Загрузочные диски размером 640 КБ начинались с миниатюрной файловой системы ADFS, содержащей загрузчик, за которой следовала единственная файловая система FAT . [39] [40] Кроме того, формат 640 КБ отличался использованием физических номеров секторов CHS, начинающихся с 0 (а не 1, как обычно), и увеличения секторов в порядке сектор-заголовок (не сектор-заголовок-дорожка, как общий). [40]FAT стартовал в начале следующего трека. Эти различия делают эти форматы нераспознаваемыми другими операционными системами. Параметры геометрии для этих форматов:

  • 800 КБ: байтов на логический сектор: 1024 байта, логических секторов на кластер: 1, зарезервированных логических секторов: 0, количество FAT: 1, записей корневого каталога: 192, всего логических секторов: 800, FAT ID: 0xFD , логических секторов на FAT: 2, физических секторов на дорожку: 5, количество головок: 2. [39] [40]
  • 640 КБ: байтов на логический сектор: 256 байтов, логических секторов на кластер: 8, зарезервированных логических секторов: 16, количество файлов FAT: 1, записей корневого каталога: 112, всего логических секторов: 2560, FAT ID: 0xFF , логических секторов на FAT: 2, физических секторов на дорожку: 16, количество головок: 2. [39] [40]

DOS Plus для Master 512 может также получить доступ к стандартным дискам ПК, отформатированным до 180 или 360 КБ , используя первый байт FAT в логическом секторе 1 для определения емкости.

DEC Rainbow 100 (все варианты) поддерживает один формат FAT12 на 80-дорожечных односторонних 5,25-дюймовых накопителях с четырехканальной плотностью. Первые две дорожки были зарезервированы для загрузчика, но не содержали MBR или BPB ( MS-DOS вместо этого использовала статический BPB в памяти). Загрузочный сектор (дорожка 0, сторона 0, сектор 1) представлял собой код Z80, начинающийся с DI 0xF3 . Загрузочная программа 8088 была загружена Z80. Дорожка 1, сторона 0, сектор 2 начинается с байта идентификатора Media / FAT 0xFA . Неформатированные диски используют 0xE5.вместо. Файловая система начинается на дорожке 2, сторона 0, сектор 1. В корневом каталоге есть 2 копии FAT и 96 записей. Кроме того, существует отображение физических и логических дорожек для осуществления перемежения секторов 2: 1. Диски были отформатированы с физическими секторами в порядке пронумерованных от 1 до 10 на каждой дорожке после зарезервированных дорожек, но логические сектора от 1 до 10 были сохранены в физических секторах 1, 6, 2, 7, 3, 8, 4, 9. , 5, 10. [41]

Информационный сектор ФС [ править ]

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

Данные сектора могут быть устаревшими и не отражать текущее содержимое мультимедиа, потому что не все операционные системы обновляют или используют этот сектор, и даже если они это делают, содержимое недействительно, когда носитель был извлечен без надлежащего размонтирования тома или после сбой питания. Следовательно, операционные системы должны сначала проверить дополнительные битовые флаги состояния выключения тома, находящиеся в записи FAT кластера 1 или FAT32 EBPB по смещению 0x041, и игнорировать данные, хранящиеся в информационном секторе FS, если эти битовые флаги указывают, что том не был правильно размонтирован. перед. Это не вызывает никаких проблем, кроме возможного снижения скорости для первого запроса свободного пространства или выделения кластера данных; увидеть фрагментацию .

Если этот сектор присутствует на томе FAT32, минимально допустимый размер логического сектора составляет 512 байтов, тогда как в противном случае он был бы 128 байтов. Некоторые реализации FAT32 поддерживают небольшую вариацию спецификации Microsoft, делая информационный сектор FS необязательным путем указания значения 0xFFFF [26] (или 0x0000 ) в записи со смещением 0x030 .

Таблица размещения файлов [ править ]

Карта кластера [ править ]

Область данных тома разделена на кластеры одинакового размера - небольшие блоки непрерывного пространства. Размеры кластера различаются в зависимости от типа используемой файловой системы FAT и размера раздела; типичный размер кластера составляет от 2 до 32 КБ . [ необходима цитата ]

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

Каждая версия файловой системы FAT использует разный размер для записей FAT. Меньшие числа приводят к меньшему размеру FAT, но тратят пространство в больших разделах из-за необходимости выделения в больших кластерах.

FAT12 файловая система использует 12 бит на входе FAT, таким образом , две записи охватывают 3 байта. Он последовательно является прямым порядком байтов : если эти три байта рассматриваются как одно 24-битное число с прямым порядком байтов, 12 младших битов представляют первую запись (например, кластер 0), а 12 старших битов - вторую (например, кластер 1). . Другими словами, в то время как младшие восемь бит первого кластера в строке хранятся в первом байте, верхние четыре бита хранятся в младшем полубайте второго байта, тогда как младшие четыре бита последующего кластера в строке хранятся в старшем полубайте второго байта и его старших восьми битах в третьем байте.

  • Маркер FAT ID / endianness (в зарезервированном кластере № 0 ), где 0xF0 указывает том на несекционированном дисководе Superfloppy ( для разделенных дисков должно быть 0xF8 )
  • Индикатор конца цепочки / флаги обслуживания (в зарезервированном кластере №1 )
  • Вторая цепочка (7 кластеров) для нефрагментированного файла (здесь: # 2, # 3, # 4, # 5, # 6, # 7, # 8)
  • Третья цепочка (7 кластеров) для фрагментированного, возможно, выросшего файла (здесь: # 9, #A, # 14, # 15, # 16, # 19, # 1A)
  • Четвертая цепочка (7 кластеров) для нефрагментированного, возможно, усеченного файла (здесь: #B, #C, #D, #E, #F, # 10, # 11)
  • Пустые кластеры (здесь: # 12, # 1B, # 1C, # 1E, # 1F)
  • Пятая цепочка (1 кластер) для подкаталога (здесь: # 13)
  • Плохие кластеры (3 кластера) (здесь: # 17, # 18, # 1D)

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

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

  • Первая цепочка (1 кластер) для корневого каталога, на которую указывает запись в FAT32 BPB (здесь: # 2)
  • Вторая цепочка (6 кластеров) для нефрагментированного файла (здесь: # 3, # 4, # 5, # 6, # 7, # 8)

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

  • номер следующего кластера в цепочке
  • запись о конце цепочки кластера ( EOC ), которая указывает конец цепочки
  • специальная запись, чтобы отметить плохой кластер
  • ноль, чтобы отметить, что кластер не используется

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

Особые записи [ править ]

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

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

Вторая запись (кластер 1 в FAT) номинально хранит маркер конца цепочки кластера, используемый форматером, но обычно всегда содержит 0xFFF / 0xFFFF / 0x0FFFFFFF , то есть, за исключением битов 31-28 в FAT32. Обычно эти биты устанавливаются всегда. Однако некоторые операционные системы Microsoft устанавливают эти биты, если том не является томом, содержащим работающую операционную систему (то есть здесь используется 0xFFFFFFFF вместо 0x0FFFFFFF ). [43] (В сочетании с альтернативными маркерами конца цепочки младшие биты 2-0 могут стать нулевыми для самого низкого разрешенного маркера конца цепочки 0xFF8 / 0xFFF8 / 0x? FFFFFF8; бит 3 также должен быть зарезервирован, учитывая, что кластеры 0xFF0 / 0xFFF0 / 0x? FFFFFF0 и выше официально зарезервированы. Некоторые операционные системы могут не иметь возможности монтировать некоторые тома, если какой-либо из этих битов не установлен, поэтому маркер конца цепочки по умолчанию не следует изменять.) Для DOS 1 и 2 запись была задокументирована как зарезервированная для использования в будущем. .

Начиная с DOS 7.1, два наиболее значимых бита этой записи кластера могут содержать два необязательных битовых флага, представляющих текущий статус тома в FAT16 и FAT32, но не в томах FAT12. Эти битовые флаги поддерживаются не всеми операционными системами, но операционные системы, поддерживающие эту функцию, будут устанавливать эти биты при завершении работы и сбрасывать наиболее значимый бит при запуске:
если бит 15 (в FAT16) или бит 27 (в FAT32) [44] не установлен. установленный при монтировании тома, том не был должным образом размонтирован перед выключением или извлечением и, таким образом, находится в неизвестном и, возможно, «грязном» состоянии. [31] На томах FAT32 информационный сектор FS может содержать устаревшие данные, поэтому его не следует использовать. В этом случае операционная система обычно запускает SCANDISK илиCHKDSK при следующем запуске [nb 10] [44] (но не при вставке съемного носителя), чтобы гарантировать и, возможно, восстановить целостность тома.
Если бит 14 (в FAT16) или бит 26 (в FAT32) [44] очищен, операционная система обнаружила ошибки дискового ввода-вывода при запуске [44], что может указывать на наличие сбойных секторов. Операционные системы, знающие об этом расширении, будут интерпретировать это как рекомендацию выполнить сканирование поверхности ( SCANDISK ) при следующей загрузке. [31] [44] (Аналогичный набор битовых флагов существует в FAT12 / FAT16 EBPB со смещением 0x1A или в FAT32 EBPB со смещением 0x36. Хотя запись кластера 1 может быть доступна драйверам файловой системы после того, как они смонтировали том, запись EBPB доступна, даже если том не смонтирован, и, таким образом, ее проще использовать драйверам блочных устройств диска или инструментам разделения.)

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

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

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

Значения кластера [ править ]

Значения записи FAT:

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

Ограничения по размеру [ править ]

Варианты FAT12, FAT16, FAT16B и FAT32 файловых систем FAT имеют четкие ограничения, основанные на количестве кластеров и количестве секторов в кластере (1, 2, 4, ..., 128). Для типичного значения 512 байт на сектор:

Требования FAT12: 3 сектора на каждую копию FAT на каждые 1024 кластера
Требования FAT16: 1 сектор на каждую копию FAT на каждые 256 кластеров
Требования FAT32: 1 сектор на каждую копию FAT на каждые 128 кластеров

Диапазон FAT12: от 1 до 4084 кластера:
От 1 до 12 секторов на копию FAT Диапазон FAT16: от 4085 до 65 524 кластеров: от 16 до 256 секторов на копию FAT
Диапазон FAT32: от 65 525 до 268 435 444 кластера: от 512 до 2097 152 секторов на копию FAT

FAT12 минимум: 1 сектор на кластер × 1 кластер = 512 байт (0,5 КБ)
Минимум FAT16: 1 сектор на кластер × 4085 кластеров = 2 091 520 байт (2042,5 КБ)
Минимум FAT32: 1 сектор на кластер × 65 525 кластеров = 33 548 800 байт (32 762,5 КБ)

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

Максимум FAT16: 64 сектора на кластер × 65 524 кластера = 2147 090 432 байтов (≈ 2047 МБ)
[максимум FAT16: 128 секторов на кластер × 65 524 кластера = 4294 180 864 байта (≈ 4095 МБ)]

Максимум FAT32: 8 секторов на кластер × 268 435 444 кластера = 1099 511 578 624 байта (≈1 024 ГБ)
Максимум FAT32: 16 секторов на кластер × 268 173 557 кластеров = 2 196 877 778 944 байта (≈ 2046 ГБ)
[максимум FAT32: 32 сектора на кластер × 134 152 181 кластер = 2 197 949 333 504 байта (≈ 2047 ГБ)]
[Максимум FAT32: 64 сектора на кластер × 67 092 469 кластеров = 2 198 486 024 192 байта (≈ 2047 ГБ)]
[Максимум FAT32: 128 секторов на кластер × 33 550 325 кластеров = 2 198 754 099 200 байт (≈ 2047 ГБ)]

Обозначения: 268435444 + 3 - 0x0FFFFFF7 , потому что FAT32 версии 0 использует только 28 битов в 32-битных номерах кластеров, номера кластеров от 0x0FFFFFF7 до 0x0FFFFFFF указывают на плохие кластеры или конец файла, номер кластера 0 отмечает свободный кластер и кластер номер 1 не используется. [37] Аналогично, 65524 + 3 - это 0xFFF7 для FAT16, а 4084 + 3 - 0xFF7 для FAT12. Количество секторов в кластере представляет собой степень двойки, подходящую для одного байта, наименьшее значение - 1 ( 0x01 ), наибольшее значение - 128 ( 0x80 ). Строки в квадратных скобках указывают на необычный размер кластера 128, а для FAT32 размер кластера больше необходимого 32 или 64. [48]

Поскольку каждая запись FAT32 занимает 32 бита (4 байта), максимальное количество кластеров (268435444) требует 2097152 сектора FAT для размера сектора 512 байтов. 2097152 - это 0x200000 , и для хранения этого значения требуется более двух байтов. Следовательно, FAT32 представила новое 32-битное значение в загрузочном секторе FAT32 сразу после 32-битного значения для общего количества секторов, представленных в варианте FAT16B.

Расширения загрузочной записи, представленные в DOS 4.0, начинаются с магического 40 ( 0x28 ) или 41 ( 0x29 ). Обычно драйверы FAT смотрят только на количество кластеров, чтобы различать FAT12, FAT16 и FAT32: удобочитаемые строки, идентифицирующие вариант FAT в загрузочной записи, игнорируются, поскольку они существуют только для носителей, отформатированных с помощью DOS 4.0 или более поздних версий.

Определить количество записей каталога на кластер несложно. Каждая запись занимает 32 байта; в результате получается 16 записей на сектор при размере сектора 512 байт. Команда DOS 5 RMDIR/ RDудаляет начальные записи « .» (этот каталог) и « ..» (родительский каталог) в подкаталогах напрямую, поэтому размер сектора 32 на RAM-диске возможен для FAT12, но требует 2 или более секторов на кластер. Загрузочному сектору FAT12 без расширений DOS 4 требуется 29 байтов до первого ненужного 32-разрядного числа скрытых секторов FAT16B , это оставляет три байта для (на неиспользуемом RAM-диске) загрузочный код и магический 0x55 0xAA в конце всего. загрузочные секторы. В Windows NT минимальный поддерживаемый размер сектора - 128.

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

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

Спецификация Microsoft EFI FAT32 [10] утверждает, что любая файловая система FAT с менее чем 4085 кластерами - это FAT12, в противном случае любая файловая система FAT с менее чем 65525 кластерами - это FAT16, а в противном случае - FAT32. Запись для кластера 0 в начале FAT должна быть идентична байту дескриптора носителя, найденному в BPB, тогда как запись для кластера 1 отражает значение конца цепочки, используемое программой форматирования для цепочек кластеров ( 0xFFF , 0xFFFF или 0x0FFFFFFF ). Записи для номеров кластеров 0 и 1 заканчиваются на границе байта даже для FAT12, например, 0xF9FFFF для дескриптора мультимедиа 0xF9 .

Первый кластер данных - 2, [37] и, следовательно, последний кластер MAXполучает номер MAX+1. Это приводит к номерам кластеров данных 2 ... 4085 ( 0xFF5 ) для FAT12, 2 ... 65525 ( 0xFFF5 ) для FAT16 и 2 ... 268435445 ( 0x0FFFFFF5 ) для FAT32.

Поэтому единственными доступными значениями, зарезервированными для будущей стандартизации, являются 0xFF6 (FAT12) и 0xFFF6 (FAT16). Как указано ниже, «менее 4085» также используется для реализаций Linux [46] или, как указано в спецификации Microsoft FAT: [10]

... когда он говорит <, это не означает <=. Также обратите внимание, что числа верны. Первое число для FAT12 - 4085; второе число для FAT16 - 65525. Эти числа и знаки «<» правильные.

Фрагментация [ править ]

Файловая система FAT не содержит встроенных механизмов, предотвращающих рассыпание вновь записанных файлов по разделу. [49] На томах, где файлы часто создаются и удаляются или их длина часто меняется, носитель со временем будет становиться все более фрагментированным.

Хотя конструкция файловой системы FAT не вызывает каких-либо организационных издержек в дисковых структурах и не уменьшает объем свободного дискового пространства с увеличением степени фрагментации , как это происходит с внешней фрагментациейвремя, необходимое для чтения и записи фрагментированных файлов, будет увеличиваться, поскольку операционная система должна будет следовать цепочкам кластеров в FAT (с частями, которые должны быть сначала загружены в память, особенно на больших объемах) и читать соответствующие данные, физически разбросанные по вся среда снижает шансы для низкоуровневого драйвера блочного устройства выполнять многосекторный дисковый ввод-вывод или инициировать более крупные передачи DMA, тем самым эффективно увеличивая накладные расходы протокола ввода-вывода, а также время перемещения рычага и время установки головки внутри дисковода. Кроме того, файловые операции станут медленнее по мере роста фрагментации, поскольку операционной системе требуется все больше времени для поиска файлов или свободных кластеров.

Другие файловые системы, например HPFS или exFAT , используют битовые карты свободного пространства, которые указывают используемые и доступные кластеры, которые затем можно быстро просмотреть, чтобы найти свободные смежные области. Другое решение - объединение всех свободных кластеров в один или несколько списков (как это сделано в файловых системах Unix ). Вместо этого FAT необходимо сканировать как массив, чтобы найти свободные кластеры, что может привести к снижению производительности при работе с большими дисками.

Фактически, поиск файлов в больших подкаталогах или вычисление свободного дискового пространства на томах FAT - одна из самых ресурсоемких операций, так как требует линейного чтения таблиц каталогов или даже всей FAT. Поскольку общее количество кластеров и размер их записей в FAT по-прежнему были небольшими на томах FAT12 и FAT16, большую часть времени это можно было допустить на томах FAT12 и FAT16, учитывая, что введение более сложных дисковых структур повлечет за собой также увеличилась сложность и объем памяти операционных систем реального режима с их минимальными требованиями к общей памяти 128 КБ или меньше (например, с DOS), для которых FAT была разработана и оптимизирована изначально.

С появлением FAT32 долгое время поиска и сканирования стало более очевидным, особенно на очень больших объемах. Возможным оправданием, предложенным Раймондом Ченом из Microsoft для ограничения максимального размера разделов FAT32, создаваемых в Windows, было время, необходимое для выполнения DIRоперации, которая всегда отображает свободное дисковое пространство в последней строке. [50]Отображение этой строки занимало все больше и больше времени по мере увеличения количества кластеров. Поэтому в FAT32 был введен специальный информационный сектор файловой системы, в котором ранее вычисленный объем свободного пространства сохраняется во время циклов включения питания, поэтому счетчик свободного пространства необходимо пересчитывать только тогда, когда съемный носитель в формате FAT32 извлекается без предварительного размонтирования или если система выключается без надлежащего завершения работы операционной системы, проблема в основном видна на ПК до ATX- стиля, на простых системах DOS и некоторых потребительских товарах с батарейным питанием.

Из-за огромных размеров кластера (16 КБ, 32 КБ, 64 КБ), вызванных большими разделами FAT, внутренняя фрагментация в виде потери дискового пространства из-за нехватки файлов из-за нависания кластера (поскольку файлы редко бывают точными кратными размеру кластера) начинает снижаться. тоже проблема, особенно когда файлов очень много.

Различные оптимизации и настройки для реализации драйверов файловой системы FAT, драйверов блочных устройств и дисковых инструментов были разработаны для преодоления большинства узких мест в производительности, присущих структуре файловой системы, без необходимости изменения компоновки структур на диске. [51] [52] Их можно разделить на интерактивные и автономные методы, и они работают, в первую очередь, пытаясь избежать фрагментации в файловой системе, развертывая методы, чтобы лучше справиться с существующей фрагментацией, а также переупорядочивая и оптимизируя на дисковых структурах. При оптимизации производительность томов FAT часто может достигать производительности более сложных файловых систем в практических сценариях, в то же время сохраняя преимущество доступности даже на очень маленьких или старых системах.

DOS 3.0 и выше не будет немедленно повторно использовать дисковое пространство удаленных файлов для нового распределения, а вместо этого будет искать ранее неиспользуемое пространство перед тем, как начать использовать дисковое пространство ранее удаленных файлов. Это не только помогает поддерживать целостность удаленных файлов как можно дольше, но также ускоряет выделение файлов и позволяет избежать фрагментации, поскольку никогда ранее выделенное дисковое пространство всегда не фрагментировалось. DOS выполняет это, сохраняя указатель на последний выделенный кластер на каждом смонтированном томе в памяти и начинает поиск свободного места с этого места вверх, а не с начала FAT, как это все еще выполнялось в DOS 2.x. [20]Если достигнут конец FAT, поиск продолжится до начала FAT до тех пор, пока не будет найдено свободное место или пока не будет достигнута исходная позиция, не найдя свободного места. [20] Эти указатели инициализируются так, чтобы указывать на начало файловой системы FAT после загрузки, [20] но на томах FAT32 DOS 7.1 и выше будет пытаться получить последнюю позицию из информационного сектора FS . Однако этот механизм не работает, если приложение часто удаляет и воссоздает временные файлы, поскольку операционная система затем пытается поддерживать целостность пустых данных, что в конечном итоге приводит к еще большей фрагментации. [20] В некоторых версиях DOS можно использовать специальную функцию API для создания временных файлов, чтобы избежать этой проблемы.

Кроме того, начиная с DOS 3.0 , записи в каталоге удаленных файлов будут помечены как 0xE5 . [11] DOS 5.0 и выше начнет повторно использовать эти записи только тогда, когда ранее неиспользуемые записи каталога были израсходованы в таблице, и в противном случае системе пришлось бы расширять саму таблицу. [13]

Начиная с DOS 3.3 операционная система предоставляет средства для повышения производительности файловых операций FASTOPEN, отслеживая положение недавно открытых файлов или каталогов в различных формах списков (MS-DOS / PC DOS) или хэш-таблиц (DR-DOS), что может значительно сократить время поиска и открытия файлов. До DOS 5.0 необходимо проявлять особую осторожность при использовании таких механизмов в сочетании с программным обеспечением дефрагментации диска в обход файловой системы или драйверов диска.

Windows NT заранее выделяет дисковое пространство для файлов в FAT, выбирая большие смежные области, но в случае сбоя добавляемые файлы будут казаться больше, чем когда-либо были записаны, с большим количеством случайных данных в конце.

Другие высокоуровневые механизмы могут считывать и обрабатывать более крупные части или полную FAT при запуске или по запросу, когда это необходимо, и динамически создавать в памяти древовидные представления файловых структур тома, отличные от структур на диске. [51] [52]На томах с большим количеством свободных кластеров это может занимать даже меньше памяти, чем образ самой FAT. В частности, на сильно фрагментированных или заполненных томах поиск становится намного быстрее, чем при линейном сканировании фактического FAT, даже если образ FAT будет храниться в памяти. Кроме того, работая на логически высоком уровне файлов и цепочек кластеров, а не на уровне секторов или дорожек, становится возможным в первую очередь избежать некоторой степени фрагментации файлов или выполнить локальную дефрагментацию файлов и переупорядочение записей каталога на основе их имена или шаблоны доступа в фоновом режиме.

Некоторые из предполагаемых проблем с фрагментацией файловых систем FAT также являются результатом ограничений производительности базовых драйверов блочных устройств , которые становятся более заметными, чем меньше памяти доступно для буферизации секторов и блокировки / снятия блокировки отслеживания:

В то время как однозадачная DOS имела положения для многосекторного чтения и блокировки / снятия блокировки слежения, операционная система и традиционная архитектура жесткого диска ПК ( только один ожидающий запрос ввода / вывода за один раз и никаких передач DMA ) изначально не содержали механизмов который может уменьшить фрагментацию за счет асинхронной предварительной выборки следующих данных, пока приложение обрабатывает предыдущие фрагменты. Такие возможности стали доступны позже. Более поздние версии DOS также обеспечивали встроенную поддержку упреждающей буферизации секторов и поставлялись с динамически загружаемыми программами кэширования диска, работающими на уровне физического или логического сектора, часто с использованием памяти EMS или XMS и иногда обеспечивающими стратегии адаптивного кэширования или даже запускаемыми взащищенный режим с помощью DPMS или маскировки для повышения производительности за счет получения прямого доступа к кэшированным данным в линейной памяти, а не через обычные API-интерфейсы DOS.

Кэширование с отложенной записью часто не было включено по умолчанию в программном обеспечении Microsoft (если оно есть) из-за проблемы потери данных в случае сбоя питания или сбоя, что упрощается из-за отсутствия аппаратной защиты между приложениями и системой.

Таблица каталога [ править ]

Таблица каталога представляет собой специальный тип файла , который представляет собой каталог (также известный как папка). Начиная с 86-DOS 0.42 , [53] каждый файл или (начиная с MS-DOS 1.40 и PC DOS 2.0) подкаталог, хранящийся в нем, представлен 32-байтовой записью в таблице. Каждая запись записывает имя, расширение, атрибуты ( архив , каталог, скрытый, доступный только для чтения, система и том), адрес первого кластера данных файла / каталога, размер файла / каталога и дату [ 53] и (начиная с PC DOS 1.1) также время последней модификации. Более ранние версии 86-DOS использовали только 16-байтовые записи каталога, не поддерживали файлы размером более 16 МБ и не указывали время последней модификации. [53]

Помимо таблицы корневого каталога в файловых системах FAT12 и FAT16, которая занимает особое место в области корневого каталога , все таблицы каталогов хранятся в области данных. Фактическое количество записей в каталоге, хранящемся в области данных, может увеличиваться за счет добавления еще одного кластера в цепочку в FAT.

Сама файловая система FAT не накладывает никаких ограничений на глубину дерева подкаталогов до тех пор, пока есть свободные кластеры, доступные для размещения подкаталогов, однако внутренняя текущая структура каталогов (CDS) в MS-DOS / PC DOS ограничивает абсолютный путь к каталогу до 66 символов (включая букву диска, но исключая разделитель байтов NUL), [5] [6] [7], тем самым ограничивая максимальную поддерживаемую глубину подкаталогов 32, независимо от того, что происходит раньше. Concurrent DOS, Multiuser DOS и DR DOS 3.31–6.0 (вплоть до обновлений 1992-11 гг.) Не хранят абсолютные пути к рабочим каталогам внутри и поэтому не демонстрируют это ограничение. [54]То же самое относится к Atari GEMDOS, но Atari Desktop не поддерживает более 8 уровней подкаталогов. Большинство приложений, знающих об этом расширении, поддерживают пути длиной не менее 127 байт. FlexOS, ОС 4680 и ОС 4690 также поддерживают длину до 127 байт, что позволяет уменьшить глубину до 60 уровней. [55] PalmDOS, DR DOS 6.0 (начиная с BDOS 7.1) и выше, Novell DOS и OpenDOS содержат компакт-диски, совместимые с MS-DOS, и поэтому имеют те же ограничения по длине, что и MS-DOS / PC DOS.

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

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

  • Заглавные буквы A-Z
  • Цифры 0-9
  • Пробел (хотя конечные пробелы в базовом имени или расширении считаются заполнением, а не частью имени файла; также имена файлов с пробелами в них не могли легко использоваться в командной строке DOS до Windows 95 из-за отсутствие подходящей системы эвакуации ). Другим исключением являются внутренние команды MKDIR/ MDи RMDIR/ RDв DR-DOS, которые принимают отдельные аргументы и, следовательно, позволяют вводить пробелы.
  • ! # $ % & ' ( ) - @ ^ _ ` { } ~
  • Персонажи 128–228
  • Персонажи 230–255

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

  • " * / : < > ? \ |
    Windows / MS-DOS не имеет escape-символа оболочки
  • + , . ; = [ ]
    Допускается только в длинных именах файлов
  • Строчные буквы a- z
    Сохраняются как A- Z; разрешено в длинных именах файлов
  • Управляющие символы 0–31
  • Символ 127 (DEL)

Символ 229 ( 0xE5 ) не был разрешен в качестве первого символа в имени файла в DOS 1 и 2 из-за его использования в качестве маркера свободной записи. Для обхода этого ограничения в DOS 3.0 и выше был добавлен специальный случай.

Следующие дополнительные символы разрешены в GEMDOS от Atari, но их следует избегать для совместимости с MS-DOS / PC DOS:

  • " + , ; < = > [ ] |

;Следует избегать использования точки с запятой ( ) в именах файлов в DR DOS 3.31 и выше, PalmDOS, Novell DOS, OpenDOS, Concurrent DOS, Multiuser DOS, System Manager и REAL / 32, поскольку это может конфликтовать с синтаксисом при указании паролей файлов и каталогов: " ...\DIRSPEC.EXT;DIRPWD\FILESPEC.EXT;FILEPWD". Операционная система удалит одну [54] (а также две - начиная с DR-DOS 7.02) точки с запятой и ожидающие пароли из имен файлов перед сохранением их на диске. (Командный процессор 4DOS использует точки с запятой для списков включения и требует, чтобы точка с запятой удваивалась для файлов, защищенных паролем, с любыми командами, поддерживающими подстановочные знаки. [54] )

Знак "at" ( @) используется для списков файлов многими командами DR-DOS, PalmDOS, Novell DOS, OpenDOS и многопользовательской DOS, System Manager и REAL / 32, а также 4DOS, и поэтому иногда его трудно использовать в именах файлов. . [54]

В многопользовательской DOS и REAL / 32 восклицательный знак (!) Не является допустимым символом имени файла, поскольку он используется для разделения нескольких команд в одной командной строке. [54]

В операционных системах IBM 4680 и 4690 в именах файлов нельзя использовать следующие символы:

  • ? * : . ; , [ ] ! + = < > " - / \ |

Кроме того, следующие специальные символы не допускаются в первом, четвертом, пятом и восьмом символе имени файла, поскольку они конфликтуют с командным процессором хоста (HCP) и именами файлов построения таблицы входной последовательности:

  • @ # ( ) { } $ &

Имена файлов DOS находятся в текущем наборе символов OEM : это может иметь неожиданные последствия, если символы, обрабатываемые одним способом для данной кодовой страницы, интерпретируются по-разному для другой кодовой страницы (команда DOS CHCP) в отношении нижнего и верхнего регистра, сортировки или валидность как символ имени файла.

Запись в каталоге [ править ]

До того, как Microsoft добавила поддержку длинных имен файлов и меток времени создания / доступа, байты 0x0C - 0x15 записи каталога использовались другими операционными системами для хранения дополнительных метаданных, в первую очередь операционными системами семейства Digital Research, хранящими пароли файлов, права доступа и т. Д. там есть идентификаторы владельцев и данные об удалении файлов. Хотя новые расширения Microsoft по умолчанию не полностью совместимы с этими расширениями, большинство из них могут сосуществовать в сторонних реализациях FAT (по крайней мере, на томах FAT12 и FAT16).

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

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

  1. Локальный: не распространять файл, а хранить его только на локальном контроллере. [№ 14]
  2. Зеркальное отображение файла при обновлении: распространять файл на сервер только при обновлении файла.
  3. Зеркально отразить файл при закрытии: распространять файл на сервер только после закрытия файла.
  4. Составной файл при обновлении: распространить файл на все контроллеры при обновлении файла.
  5. Составной файл при закрытии: распространить файл на все контроллеры при закрытии файла. [69]

Некоторые несовместимые расширения, обнаруженные в некоторых операционных системах, включают:

Длинные имена файлов 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 году. [70] [71]

Поскольку более старые версии DOS могли ошибочно принимать имена LFN в корневом каталоге за метку тома, VFAT был разработан для создания пустой метки тома в корневом каталоге перед добавлением каких-либо записей имени LFN (если метка тома еще не существовала). [№ 13]

Каждая фальшивая запись может содержать до 13 символов UCS-2 (26 байтов) с использованием полей в записи, которые содержат размер файла или отметки времени (но не поле начального кластера, для совместимости с дисковыми утилитами поле начального кластера установлено на значение 0. Дополнительные пояснения см. в разделе 8.3 filename ). Можно объединить до 20 из этих 13-значных записей, поддерживая максимальную длину 255 символов UCS-2. [61]

После последнего символа UCS-2 добавляется 0x0000 . Оставшиеся неиспользуемые символы заполняются 0xFFFF .

Записи LFN имеют следующий формат:

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

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

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

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

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

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

См. Также [ править ]

  • Сравнение файловых систем
  • Назначение буквы диска
  • exFAT
  • Расширенная загрузочная запись (EBR)
  • Файловая система FAT и Linux
  • Список файловых систем
  • Основная загрузочная запись (MBR)
  • Тип перегородки
  • Хронология операционных систем DOS
  • Безопасная для транзакций файловая система FAT
  • Турбо FAT
  • Объем загрузочной записи (VBR)

Заметки [ править ]

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

Ссылки [ править ]

  1. ^ «Файловые системы» . Microsoft TechNet . 2001 . Проверено 31 июля 2011 .
  2. ^ a b Microsoft (15 ноября 2006 г.). Windows 95 CD-ROM Файл CONFIG.TXT Статья 135481, Версия: 1.1, получено 22 декабря 2011 г .: «Для каждого жесткого диска указывает, следует ли записывать дату последнего доступа к файлам. Даты последнего доступа отключены для всех дисков. когда ваш компьютер запущен в безопасном режиме и по умолчанию не поддерживаются для дискет. Синтаксис: ACCDATE=drive1+|- [drive2+|-]..."
  3. ^ «Файловая система FAT (Windows Embedded CE 6.0)» . Microsoft. 2010-01-06 . Проверено 7 июля 2013 .
  4. ^ а б JEIDA / JEITA / CIPA (2010). «Стандарт ассоциации продуктов для камеры и обработки изображений, CIPA DC-009-Translation-2010, Правила проектирования для файловой системы камеры: DCF версии 2.0 (издание 2010 г.)» (PDF) . Архивировано из оригинального (PDF) 30 сентября 2013 года . Проверено 13 апреля 2011 .
  5. ^ a b c d e f g h i j k "Объем и файловая структура дисковых картриджей для обмена информацией" . Стандарт ECMA-107 (2-е изд., Июнь 1995 г.) . ECMA . 1995 . Проверено 30 июля 2011 .
  6. ^ a b c d e f g h i j k "Информационные технологии - Объем и файловая структура дисковых картриджей для обмена информацией" . ИСО / МЭК 9293: 1994 . Каталог ISO . 1994 . Проверено 6 января 2012 .
  7. ^ a b c d e f g h i j k "Обработка информации - Объем и файловая структура гибких дисковых картриджей для обмена информацией" . ISO 9293: 1987 . Каталог ISO . 1987 . Проверено 6 января 2012 .
  8. ^ Аарон Р. Рейнольдс , Деннис Р. Адлер, Ральф А. Липе, Рэй Д. Педризетти, Джеффри Т. Парсонс, Расипурам В. Арун (1998-05-26). «Общее пространство имен для длинных и коротких имен файлов» . Патент США 5758352 . Проверено 19 января 2012 .CS1 maint: несколько имен: список авторов ( ссылка )
  9. ^ https://patents.google.com/patent/US5758352
  10. ^ a b c d e f g h i j k l m n o "Спецификация файловой системы FAT32 инициативы Microsoft Extensible Firmware Initiative, FAT: Общий обзор формата на диске" . Microsoft . 2000-12-06 . Проверено 3 июля 2011 .
  11. ^ a b c d e Шульман, Эндрю; Браун, Ральф Д .; Макси, Дэвид; Michels, Raymond J .; Кайл, Джим (1994) [ноябрь 1993]. Недокументированная DOS: Руководство программиста по зарезервированным функциям и структурам данных MS-DOS - расширено за счет включения MS-DOS 6, Novell DOS и Windows 3.1 (2-е изд.). Ридинг, Массачусетс: Эддисон Уэсли . п. 11 . ISBN 0-201-63287-X. ISBN 978-0-201-63287-3 . (xviii + 856 + vi страниц, 3,5-дюймовая дискета) Исправления: [1] [2]
  12. ^ a b c d e Хааф, Вильфрид; Миддел, Франк (ноябрь 1987). "Daten auf Scheiben - File- und Diskettenstrukturen unter CP / M, MSDOS and TOS: Dateiverwaltung unter TOS". c't - магазин компьютерной техники . c't Kartei (на немецком языке). Vol. 1987 г. 11. Verlag Heinz Heise GmbH & Co. KG . С. 241–246 [246]. ISSN 0724-8679 . 
  13. ^ a b c d e f g h i j k l m n o p Чаппелл, Джефф (январь 1994 г.). Шульман, Эндрю; Педерсен, Аморетта (ред.). Внутреннее устройство DOS . Серия программирования Эндрю Шульман (1-е издание, 1-е изд.). Издательство Эддисон Уэсли . ISBN 978-0-201-60835-9. ISBN 0-201-60835-9 . (xxvi + 738 + iv страниц, 3,5 дюйма [3] [4] ) Исправления: [5] [6] [7]
  14. ^ Б с д е е г ч я J к л м п о р Q R сек т у V ш Microsoft MS-DOS 3.1 Programmierhandbuch в Englischer Sprache [ Microsoft MS-DOS 3.1 программиста Справочное руководство на английском языке ]. München: Markt & Technik Verlag (опубликовано в 1986 г.). 1984. ISBN 3-89090-368-1. 8411-310-02, 036-014-012. Что касается инструкции перехода в начале загрузочного сектора: «Определите, является ли первый байт загрузочного сектора E9H или EBIT (первый байт 3-байтового NEAR или 2-байтового короткого перехода) или EBH ( первый байт 2-байтового перехода, за которым следует NOP). Если это так, то BPB располагается начиная со смещения 3. " (NB. В этой книге много ошибок.)
  15. ^ a b Дэниел Б. Седори. Загрузочный сектор IBM Personal Computer DOS Version 1.00 (1981) . 2005-08-02 ( [8] ).
  16. ^ a b Дэниел Б. Седори. Загрузочный сектор IBM Personal Computer DOS Version 1.10 (1982) . 2005-07-29 ( [9] ).
  17. ^ а б Кальдера (1997). Машиносчитываемый исходный код Caldera OpenDOS 7.01 . Файл DISK.ASM в машиночитаемом исходном пакете показывает, что DR-DOS также проверяет значение 0x69 .
  18. Пол, Матиас Р. (20 февраля 2002). «Нужна DOS 6.22 (не OEM)» . Группа новостейalt.msdos.programmer . Архивировано 9 сентября 2017 года . Проверено 14 октября 2006 .
  19. ^ Bass, Уолли (1994-02-14). «Размер кластера» . Группа новостейcomp.os.msdos.programmer . Архивировано 9 сентября 2017 года . Проверено 14 октября 2006 .
  20. ^ a b c d e f g h Дэйв Уильямс (1992). Технический справочник программиста для MSDOS и IBM PC . ДОСРЕФ, условно-бесплатная версия 01/12/1992. ISBN 1-878830-02-3 . ( [10] , по состоянию на 08.01.2012). Комментарий: автор упоминает, что DOS 4.0 проверяет этикетку OEM, но отрицает, что DOS 3.2 также проверяет ее (хотя и проверяет). 
  21. ^ Пол, Матиас Р. (2004-08-25). «НОВОЛТРК.РЕГ» . www.drdos.org . Архивировано из оригинала на 2016-03-04 . Проверено 17 декабря 2011 . [11]
  22. ^ a b «Устранение неполадок дисков и файловых систем» . Microsoft TechNet . 2005-11-05 . Проверено 15 июня 2014 .
  23. ^ IBM (1983). Техническое справочное руководство IBM PC . Комментарий: Включает полный список исходного кода ROM BIOS исходного IBM PC.
  24. ^ a b c d Ганс-Дитер Янковски, Дитмар Рабич, Джулиан Ф. Решке (1992). Atari Profibuch ST-STE-TT . Sybex, 4-е издание, 12-я партия. ISBN 3-88745-888-5 , ISBN 978-3-88745-888-1 .  
  25. ^ Seagate Technologies, «Переход к жестким дискам с сектором 4K в расширенном формате (заархивировано Wayback Machine @ Archive.org)», 2010 г. ( [12] ).
  26. ^ a b c d Браун, Ральф Д. (2002-12-29). «Список прерываний x86» . Проверено 14 октября 2011 .
  27. ^ a b c d де Бойн Поллард, Джонатан (2010) [2006]. «Все о блоках параметров BIOS» . Часто задаваемые ответы . Проверено 2 июня 2014 .
  28. ^ a b c Справочник программиста Microsoft MS-DOS: версия 5.0 . Пресса Microsoft. 1991. ISBN. 1-55615-329-5.
  29. ^ a b c d e f g h i j k «Стандартные форматы гибких дисков, поддерживаемые MS-DOS» . Справка и поддержка Microsoft. 2003-05-12 . Проверено 11 сентября 2012 .
  30. ^ а б в Microsoft (1987-07). Справочник программиста MS-DOS 3.3.
  31. ^ a b c Андрис Брауэр (20 сентября 2002). «Файловая система FAT» . Проверено 16 октября 2011 .
  32. ^ a b c d e f g h i j k l m n o p q r Патерсон, Тим ; Microsoft (19 декабря 2013 г.) [1983]. «Microsoft DOS V1.1 и V2.0: /msdos/v20source/SKELIO.TXT, /msdos/v20source/HRDDRV.ASM» . Музей истории компьютеров , Microsoft . Проверено 25 марта 2014 .(NB. Хотя издатели утверждают, что это будут MS-DOS 1.1 и 2.0, на самом деле это SCP MS-DOS 1.25 и смесь Altos MS-DOS 2.11 и TeleVideo PC DOS 2.11 .)
  33. ^ a b c d e f g h i j Збиковски, Марк ; Аллен, Пол ; Баллмер, Стив ; Борман, Рувим; Борман, Роб; Батлер, Джон; Кэрролл, Чак; Чемберлен, Марк; Челл, Дэвид; Коли, Майк; Кортни, Майк; Драйфус, Майк; Дункан, Рэйчел; Экхардт, Курт; Эванс, Эрик; Фермер, Рик; Гейтс, Билл ; Гири, Майкл; Гриффин, Боб; Хогарт, Дуг; Джонсон, Джеймс У .; Кермаани, Камель; Король, Адриан; Кох, Рид; Ландовски, Джеймс; Ларсон, Крис; Леннон, Томас; Липки, Дэн; Макдональд, Марк; МакКинни, Брюс; Мартин, Паскаль; Мазерс, Эстель; Мэтьюз, Боб; Мелин, Дэвид; Mergentime, Чарльз; Невин, Рэнди; Ньюэлл, Дэн; Ньюэлл, Тани; Норрис, Дэвид; О'Лири, Майк; О'Рир, Боб ; Олссон, Майк; Остерман, Ларри; Остлинг, Ридж; Пай, Сунил; Патерсон, Тим ; Перес, Гэри; Питерс, Крис; Петцольд, Чарльз ; Поллок, Джон; Рейнольдс, Аарон ; Рубин, Дэррил; Райан, Ральф; Шульмейстер, Карл; Шах, Раджен; Шоу, Барри; Коротко, Энтони; Сливка, Бен; Смирл, Джон; Стиллмейкер, Бетти; Стоддард, Джон; Тиллман, Деннис; Уиттен, Грег; Юнт, Натали; Зек, Стив (1988). «Технические советники». Энциклопедия MS-DOS: версии с 1.0 по 3.2. Дункан, Рэй; Боствик, Стив; Бургойн, Кейт; Байерс, Роберт А.; Хоган, Том; Кайл, Джим; Летвин, Гордон ; Петцольд, Чарльз ; Рабинович, Чип; Томлин, Джим; Уилтон, Ричард; Волвертон, Ван; Вонг, Уильям; Вудкок, Джоанна (Полностью переработанная ред.). Редмонд, Вашингтон, США: Microsoft Press . ISBN 1-55615-049-0. LCCN  87-21452 . OCLC  16581341 .(xix + 1570 страниц; 26 см) (NB. Это издание было опубликовано в 1988 году после обширной доработки изъятого первого издания 1986 года другим коллективом авторов. [13] )
  34. ^ a b «Подробное описание загрузочного сектора FAT» . База знаний Microsoft . 2003-12-06 . Проверено 16 октября 2011 .
  35. ^ a b c Lai, Роберт С .; Группа Уэйта (1987). Написание драйверов устройств MS-DOS (2-е изд.). Эддисон Уэсли. ISBN 0-201-60837-5.
  36. ^ Б с д е е г ч я J к л м п о р д т ы т Патерсон, Тим ; Microsoft (19 декабря 2013 г.) [1983]. «Microsoft DOS V1.1 и V2.0: /msdos/v20source/DEVDRIV.txt» . Музей истории компьютеров , Microsoft . Проверено 25 марта 2014 .(NB. Хотя издатели утверждают, что это будут MS-DOS 1.1 и 2.0, на самом деле это SCP MS-DOS 1.25 и смесь Altos MS-DOS 2.11 и TeleVideo PC DOS 2.11 .)
  37. ^ а б в г д Тим Патерсон (1983). «Взгляд изнутри на MS-DOS» . Байт . Архивировано из оригинала на 2011-07-20 . Проверено 18 июля 2011 . Нумерация начинается с 2; первые два числа, 0 и 1, зарезервированы.
  38. ^ a b c d PORT-DOS - Руководство пользователя для Apricot Portable . Руководства пользователя, Великобритания ( [14] ).
  39. ^ a b c d e Джон К. Эллиотт (1998). Форматы дисков DOSPLUS . ( [15] ).
  40. ^ а б в г BBC Master 512 . Компьютерные страницы BBC Yellow Pig ( [16] ).
  41. ^ Digital Equipment Corporation. Rainbow 100 MS-DOS 2.01 Техническая документация Том 1 (QV025-GZ), Список BIOS операционной системы Microsoft MS-DOS (AA-X432A-TV), Универсальный дисковый драйвер, стр. 1-17. 1983 г.
  42. ^ «Подробное объяснение загрузочного сектора FAT» . DEW Associates Corporation. 2002 . Проверено 16 октября 2011 .
  43. ^ Даниэль Б. Седори. Подробные сведения о «флаге грязного выключения» под MS-Windows . 2001-12-04. ( [17] ).
  44. ^ a b c d e «Пакет ресурсов Windows 98 - Глава 10 - Диски и файловые системы» . Microsoft TechNet . 1998 . Проверено 16 июля 2012 .
  45. Питер Нортон (1986). Внутри IBM PC, Revised и Enlarged , Брэди. ISBN 0-89303-583-1 , стр. 157. 
  46. ^ a b c Андрис Брауэр . «FAT под Linux» .
  47. ^ Andries Брауэр (2002-09-20). «ЖИР» . Проверено 11 января 2012 .
  48. ^ «Ограничения файловой системы FAT32» . База знаний Microsoft . 2007-03-26 . Проверено 21 августа 2011 . Кластеры не могут быть больше 64 килобайт.
  49. ^ Дункан, Рэй (1989). «Цели разработки и реализация новой высокопроизводительной файловой системы» . Журнал Microsoft Systems.[NB. Этот конкретный текстовый файл содержит несколько ошибок распознавания текста; например, «Луч» - правильное имя автора; не «Рой», как показано в тексте.]
  50. Перейти ↑ Chen, Raymond (июль 2006 г.). «Microsoft TechNet: краткая и неполная история FAT32» . Журнал Microsoft TechNet.
  51. ^ a b Les Bell; Associates Pty Ltd (1996-09-02) [1990]. «Высокопроизводительная файловая система OS / 2» . Советник по поддержке ПК . Архивировано из оригинала на 2014-03-01 . Проверено 24 июня 2014 .
  52. ^ Б Bridges, Dan (февраль 1996). «Внутри высокопроизводительной файловой системы - Часть 2/6: Введение» . Значимые биты, Brisbug PC User Group Inc . Проверено 24 июня 2014 .
  53. ^ a b c Сиэтлские компьютерные продукты (1981). «Приложение к SCP 86-DOS 1.0» (PDF) . Проверено 10 марта 2013 .
  54. ^ a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak Paul, Matthias R. (1997-07-30) [1994-05-01]. NWDOS-TIPs - Советы и приемы для Novell DOS 7, с подробным описанием, ошибками и обходными путями . MPDOSTIP . Выпуск 157 (на немецком языке) (3-е изд.). В архивеиз оригинала от 05.11.2016 . Проверено 11 января 2012 .(NB. NWDOSTIP.TXT - это комплексная работа по Novell DOS 7 и OpenDOS 7.01 , включая описание многих недокументированных функций и внутренних компонентов. Она является частью еще более обширной коллекции автора MPDOSTIP.ZIP, поддерживаемой до 2001 г. и распространяемой на многих сайтах по адресу время. Приведенная ссылка указывает на старую версию файла, преобразованную в HTML.) [18]
  55. ^ IBM. Руководство пользователя ОС 4690, версия 5.2 , документ IBM SC30-4134-01, 2008-01-10 ( [19] ).
  56. ^ a b Патерсон, Тим ; Microsoft (19 декабря 2013 г.) [1983]. «Microsoft DOS V1.1 и V2.0: /msdos/v20source/FORMAT.TXT» . Музей истории компьютеров , Microsoft . Проверено 25 марта 2014 .(NB. Хотя издатели утверждают, что это будут MS-DOS 1.1 и 2.0, на самом деле это SCP MS-DOS 1.25 и смесь Altos MS-DOS 2.11 и TeleVideo PC DOS 2.11 .)
  57. ^ a b Шустек, Лен (2014-03-24). «Ранний исходный код Microsoft MS-DOS» . Самоцветы программного обеспечения: Серия исторического исходного кода Музея истории компьютеров . Проверено 29 марта 2014 .(NB. Хотя автор утверждает, что это будут MS-DOS 1.1 и 2.0, на самом деле это SCP MS-DOS 1.25 и смесь Altos MS-DOS 2.11 и TeleVideo PC DOS 2.11 .)
  58. ^ a b Левин, Рой (2014-03-25). «Microsoft делает исходный код MS-DOS и Word для Windows общедоступным» . Официальный блог Microsoft . Архивировано из оригинала на 2014-03-28 . Проверено 29 марта 2014 .(NB. Хотя автор утверждает, что это будут MS-DOS 1.1 и 2.0, на самом деле это SCP MS-DOS 1.25 и смесь Altos MS-DOS 2.11 и TeleVideo PC DOS 2.11 .)
  59. ^ Б с д е е г ч я J к л м п о р д Caldera (1997). Машиносчитываемый исходный код Caldera OpenDOS 7.01 . Файл FDOS.EQU в машиночитаемом исходном наборе имеет эквиваленты для соответствующих записей каталога.
  60. ^ Джон С. Эллиотт (1998). Форматы дисков CP / M 4.1 . ( [20] ): «CP / M 4.1 (DOS Plus [1.2]) позволяет использовать две файловые системы - CP / M и DOS. Версия [...], поставляемая с Amstrad PC1512, не может работать с дискетами большего размера, чем 360 КБ. (CP / M) / 1,2 МБ (DOS) или разделы жесткого диска размером более 32 МБ. [...] Файловая система DOS может быть либо FAT12, либо FAT16. Формат точно такой же, как в PCDOS 2.11, за исключением: байта 0Ch из запись каталога [...] содержит четыре «пользовательских атрибута» F1'-F4 '[...] пароли в стиле DRDOS не поддерживаются ».
  61. ^ a b vinDaci (6 января 1998 г.). «Спецификация длинного имени файла» . Архивировано из оригинала на 2001-04-20 . Проверено 13 марта 2007 .
  62. ^ Хенк Келдер. FAT32.TXT для FAT32.IFS версии 0.74 . ( «Заархивированная копия» . Архивировано из оригинала 30 марта 2012 года . Дата обращения 14 января 2012 года .CS1 maint: заархивированная копия как заголовок ( ссылка )). Комментарий: Это старая версия файла README еще обсуждается старые 0xEA и 0xEC значение магии.
  63. ^ Хенк Келдер (2003). FAT32.TXT для FAT32.IFS версии 0.9.13. "( [21] ):" Этот байт [...] не изменяется во время работы под Windows 95 и выполняется SCANDISK или DEFRAG . [...] Если другая программа устанавливает значение 0x00 для файла с советниками, эти советники больше не будут найдены с использованием только вызовов DosFindFirst / Next. Другие вызовы OS / 2 для получения EAs (DosQueryPathInfo, DosQueryFileInfo и DosEnumAttribute) не полагаются на этот байт. Также могло произойти [...] обратное. [...] В этом случае снизится только производительность сканирования каталогов. Обе ситуации [...] исправлены CHKDSK ".
  64. ^ Netlabs. FAT32.IFS Wiki и исходники . ( [22] ).
  65. ^ а б IBM. Руководство по программированию ОС 4690, версия 5.2 , документ IBM SC30-4137-01, 2007-12-06 ( [23] ).
  66. ^ a b c d e f g h i j k l m n Серия справочников разработчика OpenDOS - Руководство по системе и программисту - Руководство программиста . Caldera, Inc., август 1997 г. Деталь Caldera № 200-DODG-003. Архивировано из оригинала на 2017-10-07 . Проверено 20 мая 2014 . (Отпечатано в Великобритании.)
  67. ^ Боб Игер, Tavi Systems (2000-10-28). Реализация расширенных атрибутов файловой системы FAT . ( [24] ).
  68. ^ IBM (2003). Информация об уникальных атрибутах распространения файлов ОС 4690 , документ IBM R1001487, 2003-07-30. ( «Архивная копия» . Архивировано из оригинала на 2014-05-21 . Retrieved 2014-05-20 .CS1 maint: заархивированная копия как заголовок ( ссылка )): "[...] типы файлов хранятся в части" Зарезервированные биты "структуры каталогов файлов PC-DOS, [...] только 4690 учитывает и сохраняет эти атрибуты. Различные операционные системы, отличные от 4690, выполняют разные действия, если эти биты включаются [...] при копировании с дискеты, созданной в системе 4690. [...] PC-DOS и Windows 2000 Professional будут копировать файл без ошибок и обнулять биты. OS / 2 [.. .] 1.2 [...] откажется копировать файл, если [...] сначала не запустите CHKDSK / F для файла. После [...] CHKDSK он скопирует файл и обнулит биты. [.. .] при [...] копировании [...] обратно в систему 4690, [...] файл будет скопирован как локальный файл. "
  69. ^ IBM. 4690 сохранять и восстанавливать атрибуты распространения файлов . IBM документ R1000622, 2010-08-31 ( "архивная копия" . Архивированы из оригинала на 2014-05-21 . Retrieved 2014-05-20 .CS1 maint: заархивированная копия как заголовок ( ссылка )).
  70. ^ Natuerlich! (1992-03-24). "Получение более длинных имен файлов из GEMDOS" . comp.sys.atari.st.tech . Проверено 5 мая 2014 .
  71. ^ Торвальдс, Линус (1992-12-23). «Длинные имена файлов» . comp.os.minix . Проверено 5 мая 2014 .
  72. ^ "mount (8): монтировать файловую систему" . Справочная страница Linux .

Внешние ссылки [ править ]

  • ECMA-107 Объем и файловая структура дисковых картриджей для обмена информацией , идентичны ISO / IEC 9293.
  • Microsoft Extensible Firmware Initiative FAT32 File System Specification, FAT: General Overview of On-Disk Format
  • Понимание файловых систем FAT32 (объяснено для разработчиков встроенных микропрограмм)
  • Понимание FAT, включая много информации о LFN
  • Подробное объяснение загрузочного сектора FAT : статья 140418 базы знаний Майкрософт
  • Описание файловой системы FAT32 : статья 154997 базы знаний Майкрософт
  • Реализация файловой системы FAT12 / FAT16 / FAT32 для * nix : включает библиотеки libfat и fusefat, драйвер файловой системы FUSE
  • MS-DOS: ограничения каталогов и подкаталогов : статья 39927 базы знаний Майкрософт
  • Обзор файловых систем FAT, HPFS и NTFS : статья 100108 базы знаний Майкрософт
  • Ограничения по объему и размеру файлов файловых систем FAT : Microsoft Technet, копия сделана Internet Archive Wayback Machine
  • Microsoft TechNet: Краткая и неполная история FAT32 , Раймонд Чен
  • FAT32 Formatter : позволяет форматировать тома размером более 32 ГБ с помощью FAT32 в Windows 2000 , Windows XP и Windows Vista.
  • Fdisk не распознает жесткие диски размером более 64 ГБ в полный размер : статья 263044 базы знаний Майкрософт.
  • Microsoft Windows XP: файловая система FAT32 . Копия, сделанная с помощью Internet Archive Wayback Machine, статьи со сводкой ограничений в FAT32, которая больше не доступна на веб-сайте Microsoft.
  • Визуальная схема накопителя FAT16